diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..346275536 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,28 @@ +.git +.dockerignore +.gitignore +.circleci +.github +.env + +docs +extra + +Dockerfile +**/*.md +azure-pipelines.yml +tsconfig.json + +# Autogenerated files +client/node_modules +server/env +server/static/js +server/static/css + +# From .gitignore +server/planarallyserver.log +server/planar.save* +server/planar.sqlite* +server/server_config.cfg + +**/.idea/** \ No newline at end of file diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml new file mode 100644 index 000000000..21306e169 --- /dev/null +++ b/.github/workflows/pull_request.yaml @@ -0,0 +1,27 @@ +on: pull_request +name: PR +jobs: + PR_flow: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Use Node.js 10.x + uses: actions/setup-node@v1 + with: + version: 10.x + - name: npm i + working-directory: client + run: | + npm install + - name: lint + working-directory: client + run: | + npm run lint + - name: test + working-directory: client + run: | + npm run test + - name: build + working-directory: client + run: | + npm run build \ No newline at end of file diff --git a/.gitignore b/.gitignore index 12c016c10..360040bd1 100644 --- a/.gitignore +++ b/.gitignore @@ -13,9 +13,8 @@ server/dist/** server/build/** # JS +client/coverage/** client/node_modules/** -server/client/src/*.js -sever/client/src/*.js.map # PlanarAlly server/planarallyserver.log diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e11d1cda..0eb018280 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,51 @@ All notable changes to this project will be documented in this file. ## Unreleased +## [0.18.0] - 2019-09-11 + +### Added + +- Option to set custom units of length (defaults to ft) +- Ping tool +- Option to change the location of tokens/shapes +- Option to edit shapes in groups (move to other layer, move to other location, move to top/bottom, add initiative) +- Option to Ctrl-select tokens/shapes +- Default right click menu to all tools that didnt have it +- Colour in the location bar to show current location +- Polygon tool options + - brush size (defaults to 1 grid cell in width) + - closed/open polygon toggle, when enable automatically connects first and last point. +- Escape cancels draw tool actions + +### Changed + +- Pasted shapes are now pasted relative to the screen position +- Login page now autofocusses on the username input field. +- All shapes on the FOW layer are now invisible while not on the FOW layer. +- Circle borders (including basic tokens) are now inset, so that they fit within their squares. +- Basic token text scaling has been changed slightly to have more uniformly sized characters. + +- [tech] Mousemove events are now throttled, so that they don't fire a gazillion events. +- [tech] tslint swapped out for eslint +- [tech] Refactor Layer.draw to use Shape.drawSelection +- [tech] Refactor most uses of forEach to for..of + +### Fixed + +- [DM] Session lock state not being shown correctly upon joining. +- Sessions with a slash in their name do not work +- Ruler width not being the same at all zoom levels. +- Brushhelper sticking around on layer change. +- Temporary shapes not being properly cleared on player disconnect. +- Private shape auras, trackers, labels and name being revealed during movement. +- Fix light auras clipping over walls. +- Fix bug with circle draws using negative radii. +- Polygon preview segment always showing up as black. + +- [tech] Improved docker image creation script + - Faster compilation and smaller final size + - Now the frontend is also compiled inside a container + ## [0.17.1] - 2019-06-17 ### Fixed @@ -18,12 +63,12 @@ All notable changes to this project will be documented in this file. ### Changed - The DM options menu is now a proper dialog. - - Options are sorted by catecory. - - A list of players with access to the session is shown with an option to kick them. - - A url is shown for the invite url so you no longer have to figure this out yourself. - - A button to refresh the invite url is now present. - - A button to remove the session is added. - - A button to (un)lock the session is added. + - Options are sorted by catecory. + - A list of players with access to the session is shown with an option to kick them. + - A url is shown for the invite url so you no longer have to figure this out yourself. + - A button to refresh the invite url is now present. + - A button to remove the session is added. + - A button to (un)lock the session is added. ### Fixed @@ -36,15 +81,15 @@ All notable changes to this project will be documented in this file. - Option to listen on a socket instead of HOST:PORT. - Vision tool to change active tokens. - Vision lock button to initiative to only show vision of current actor. - - This only applies to tokens the player owns for other tokens the normal vision is restored. - - This is purely client side and can thus be chosen by player/DM separately. + - This only applies to tokens the player owns for other tokens the normal vision is restored. + - This is purely client side and can thus be chosen by player/DM separately. - Camera lock button to initiative to automatically center on current actor. - - It will center when an actor begins its turn and the client is owner of that actor. - - It does not prevent camera movement after the initial center action. + - It will center when an actor begins its turn and the client is owner of that actor. + - It does not prevent camera movement after the initial center action. - Automatic build of windows executables on azure pipelines for all tags - - These will also create a github release automatically + - These will also create a github release automatically - Fake player button to DM Settings to disable all DM functions except DM settings. - - You can control which player(s) you want to emulate with the vision tool. + - You can control which player(s) you want to emulate with the vision tool. ### Changed @@ -71,8 +116,8 @@ All notable changes to this project will be documented in this file. - Keybinding to copy selection to clipboard (ctrl+c). - Keybinding to paste clipboard to board (ctrl+v). - Labeling system. - - You can add labels to shapes. - - You can filter the gameboard on these labels. + - You can add labels to shapes. + - You can filter the gameboard on these labels. ### Changed @@ -86,7 +131,7 @@ All notable changes to this project will be documented in this file. - Groupselect will only select your own tokens. - Some minor style changes to the edit asset dialog - Shape names can now be hidden from other users. -- Default vision mode changed to triangle mode. Legacy vision mode (bvh) can still be selected in the DM options. +- Default vision mode changed to triangle mode. Legacy vision mode (bvh) can still be selected in the DM options. ### Fixed diff --git a/Dockerfile b/Dockerfile index 9796cbb88..2b16113bf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,40 @@ +################################ +# Build stage for the frontend # +################################ +FROM node:12-alpine as BUILDER + +WORKDIR /usr/src/client +# Copy first package.json so changes in code dont require to reinstall all npm modules +COPY client/package.json client/package-lock.json ./ +RUN npm i + +COPY . /usr/src +RUN npm run build + +# Added here to avoid an extra layer in the final stage +COPY Dockerfiles/server_config_docker.cfg /usr/src/server/server_config.cfg + +############### +# Final stage # +############### FROM python:3.6-slim MAINTAINER Kruptein EXPOSE 8000 -WORKDIR /usr/src/app +WORKDIR /planarally -VOLUME /usr/src/app/data -VOLUME /usr/src/app/static/assets +VOLUME /planarally/data +VOLUME /planarally/static/assets ENTRYPOINT ["/usr/bin/dumb-init", "--"] - -COPY server/ . +# Copy first requirements.txt so changes in code dont require to reinstall python requirements +COPY --from=BUILDER /usr/src/server/requirements.txt . RUN apt-get update && apt-get install dumb-init curl -y && \ rm -rf /var/lib/apt/lists/* && \ pip install --no-cache-dir -r requirements.txt - -COPY Dockerfiles/server_config_docker.cfg server_config.cfg +# Copy the final server files +COPY --from=BUILDER /usr/src/server/ . CMD [ "python", "-u", "planarserver.py"] diff --git a/README.md b/README.md index bc7debff5..6ca9c23d1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Total Github Download Count](https://img.shields.io/github/downloads/kruptein/planarally/total.svg)](https://github.com/Kruptein/PlanarAlly/releases) + # PlanarAlly _This project is still in early development; multiple bugs or structure changes can and will happen_ @@ -19,12 +21,20 @@ Some key features are: This tool is provided free to use and is open source. +# Downloads + +_Typically only one person in your group should download and install PA, or even nobody if you use a publicly hosted version._ + +Releases of PlanarAlly can be found on [the release page](https://github.com/Kruptein/PlanarAlly/releases). + +For more information on how to use/install PA, see the documentation. + # Documentation -User documentation can be found [here](https://planarally.readthedocs.io/en/dev/). -This is still a work in progress, so some elements may still be undocumented. +User documentation can be found [here](https://planarally.io/docs/). + +This is still a work in progress, so some elements may still be undocumented or outdated. -Installation instructions for DM's can also be found in the link above. As a player you won't have to install anything. # Contributing @@ -34,5 +44,5 @@ If you simply have feedback, or found a bug, go to the issues tab above. First s If you want to contribute to the actual codebase, you can read more about how to setup a development environment in the CONTRIBUTING document. -![Example view of a player with a light source](https://planarally.readthedocs.io/en/dev/_images/player-base.png) +![Example view of a player with a light source](https://github.com/Kruptein/PlanarAlly/blob/dev/extra/player_light_example.png?raw=true) _Credits to Gogots for the background map used [source](https://gogots.deviantart.com/art/City-of-Moarkaliff-702295905)_ diff --git a/client/.eslintignore b/client/.eslintignore new file mode 100644 index 000000000..2555b0205 --- /dev/null +++ b/client/.eslintignore @@ -0,0 +1,4 @@ +node_modules/* +jest.config.js +vue.config.js +src/shims/* \ No newline at end of file diff --git a/client/.eslintrc.js b/client/.eslintrc.js new file mode 100644 index 000000000..6549690dc --- /dev/null +++ b/client/.eslintrc.js @@ -0,0 +1,28 @@ +module.exports = { + root: true, + env: { + node: true, + }, + extends: ["plugin:@typescript-eslint/recommended", "plugin:vue/essential", "@vue/typescript", "@vue/prettier"], + rules: { + // "no-console": process.env.NODE_ENV === "production" ? "error" : "off", + "no-console": "off", + "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off", + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-angle-bracket-type-assertion": "off", + "@typescript-eslint/explicit-member-accessibility": [2, { accessibility: "no-public" }], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-function-return-type": [2, { allowExpressions: true }], + "@typescript-eslint/no-use-before-define": 0, + "no-constant-condition": "off", + "@typescript-eslint/no-unused-vars": [2, { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }], + "no-unused-vars": "off", + "no-dupe-class-members": "off", + }, + parserOptions: { + parser: "@typescript-eslint/parser", + ecmaFeatures: { + jsx: false, + }, + }, +}; diff --git a/client/.prettierrc.json b/client/.prettierrc.json index c24d92fa5..85adefd0f 100644 --- a/client/.prettierrc.json +++ b/client/.prettierrc.json @@ -1,7 +1,7 @@ { - "parser": "typescript", - "singleQuote": false, - "trailingComma": "all", + "htmlWhitespaceSensitivity": "ignore", "printWidth": 120, - "tabWidth": 4 - } \ No newline at end of file + "singleQuote": false, + "tabWidth": 4, + "trailingComma": "all" +} diff --git a/client/babel.config.js b/client/babel.config.js new file mode 100644 index 000000000..6431b568c --- /dev/null +++ b/client/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: ["@vue/cli-plugin-babel/preset"], +}; diff --git a/client/jest.config.js b/client/jest.config.js new file mode 100644 index 000000000..8f9f39cb2 --- /dev/null +++ b/client/jest.config.js @@ -0,0 +1,21 @@ +module.exports = { + moduleFileExtensions: ["js", "json", "vue", "ts"], + transform: { + "^.+\\.vue$": "vue-jest", + ".+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$": "jest-transform-stub", + "^.+\\.ts$": "ts-jest", + }, + transformIgnorePatterns: ["/node_modules/(?!@babel)"], + moduleNameMapper: { + "^@/(.*)$": "/src/$1", + }, + snapshotSerializers: ["jest-serializer-vue"], + testMatch: ["**/tests/unit/**/*.test.(js|ts)|**/__tests__/*.(js|ts)"], + testURL: "http://localhost/", + watchPlugins: ["jest-watch-typeahead/filename", "jest-watch-typeahead/testname"], + globals: { + "ts-jest": { + babelConfig: true, + }, + }, +}; diff --git a/client/package-lock.json b/client/package-lock.json index c7363589f..a0af7d8a2 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,10425 +1,16077 @@ { - "name": "planarally-client", - "version": "0.17.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - } - } - }, - "@hapi/address": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.0.0.tgz", - "integrity": "sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw==", - "dev": true - }, - "@hapi/hoek": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz", - "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==", - "dev": true - }, - "@hapi/joi": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.0.3.tgz", - "integrity": "sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig==", - "dev": true, - "requires": { - "@hapi/address": "2.x.x", - "@hapi/hoek": "6.x.x", - "@hapi/topo": "3.x.x" - } - }, - "@hapi/topo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.0.tgz", - "integrity": "sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww==", - "dev": true, - "requires": { - "@hapi/hoek": "6.x.x" - } - }, - "@intervolga/optimize-cssnano-plugin": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", - "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", - "dev": true, - "requires": { - "cssnano": "^4.0.0", - "cssnano-preset-default": "^4.0.0", - "postcss": "^7.0.0" - } - }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", - "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "name": "planarally-client", + "version": "0.18.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "@babel/core": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz", + "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helpers": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.7.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + } + } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "@babel/generator": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.0.tgz", + "integrity": "sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA==", + "dev": true, + "requires": { + "@babel/types": "^7.6.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "@babel/helper-annotate-as-pure": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz", + "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/lodash": { - "version": "4.14.134", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.134.tgz", - "integrity": "sha512-2/O0khFUCFeDlbi7sZ7ZFRCcT812fAeOLm7Ev4KbwASkZ575TDrDcY7YyaoHdTOzKcNbfiwLYZqPmoC4wadrsw==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/node": { - "version": "12.0.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.8.tgz", - "integrity": "sha512-b8bbUOTwzIY3V5vDTY1fIJ+ePKDUBqt2hC2woVGotdQQhG/2Sh62HOKHrT7ab+VerXAcPyAiTEipPu/FsreUtg==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "@types/q": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", - "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", - "dev": true - }, - "@types/socket.io-client": { - "version": "1.4.32", - "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.32.tgz", - "integrity": "sha512-Vs55Kq8F+OWvy1RLA31rT+cAyemzgm0EWNeax6BWF8H7QiiOYMJIdcwSDdm5LVgfEkoepsWkS+40+WNb7BUMbg==", - "dev": true - }, - "@types/tinycolor2": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-PeHg/AtdW6aaIO2a+98Xj7rWY4KC1E6yOy7AFknJQ7VXUGNrMlyxDFxJo7HqLtjQms/ZhhQX52mLVW/EX3JGOw==", - "dev": true - }, - "@types/vue-color": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@types/vue-color/-/vue-color-2.4.2.tgz", - "integrity": "sha512-AwzdmfNI6axlVBVxeVr3Nw3BBLbz+oz3YkYfqNwY5EmhuMAb3VVsXSCb5ETlHVBKk7/m5qfq1Rq7S66Z2j3rrw==", - "dev": true, - "requires": { - "vue": ">=2.0.0" - } - }, - "@types/webpack-env": { - "version": "1.13.9", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.9.tgz", - "integrity": "sha512-p8zp5xqkly3g4cCmo2mKOHI9+Z/kObmDj0BmjbDDJQlgDTiEGTbm17MEwTAusV6XceCy+bNw9q/ZHXHyKo3zkg==", - "dev": true - }, - "@vue/cli-overlay": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-3.8.0.tgz", - "integrity": "sha512-4hY/+r9OwpMb7BPFnQGKftMC8CrfbV00REEFOij52+L4swQw+m879+5zX3Z0xHfPftw6JyaqJB0rmQ0ILI6Ovw==", - "dev": true - }, - "@vue/cli-plugin-typescript": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-typescript/-/cli-plugin-typescript-3.8.1.tgz", - "integrity": "sha512-CAD19+Z46OtUHYkZaLFeDJPuQWVLFJ+1rSL3PdESVQ9Pm0ZVVsCCZYGeQAGyAbHNWtvY7Gt0CbxsZTj+5ChSpw==", - "dev": true, - "requires": { - "@types/webpack-env": "^1.13.9", - "@vue/cli-shared-utils": "^3.8.0", - "fork-ts-checker-webpack-plugin": "^0.5.2", - "globby": "^9.2.0", - "ts-loader": "^5.3.3", - "tslint": "^5.15.0", - "webpack": ">=4 < 4.29" - } - }, - "@vue/cli-service": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.8.3.tgz", - "integrity": "sha512-NXmulT/Tu2NnqMx3kiJmxxQ32kVrAe+EpaRoGAYaqAzRZQYg/AjyDFsgam2Es8QtkIOJ7odObpf7ikrgiEQYNA==", - "dev": true, - "requires": { - "@intervolga/optimize-cssnano-plugin": "^1.0.5", - "@soda/friendly-errors-webpack-plugin": "^1.7.1", - "@vue/cli-overlay": "^3.8.0", - "@vue/cli-shared-utils": "^3.8.0", - "@vue/component-compiler-utils": "^2.6.0", - "@vue/preload-webpack-plugin": "^1.1.0", - "@vue/web-component-wrapper": "^1.2.0", - "acorn": "^6.1.1", - "acorn-walk": "^6.1.1", - "address": "^1.0.3", - "autoprefixer": "^9.5.1", - "browserslist": "^4.5.4", - "cache-loader": "^2.0.1", - "case-sensitive-paths-webpack-plugin": "^2.2.0", - "chalk": "^2.4.2", - "cli-highlight": "^2.1.0", - "clipboardy": "^2.0.0", - "cliui": "^5.0.0", - "copy-webpack-plugin": "^4.6.0", - "css-loader": "^1.0.1", - "cssnano": "^4.1.10", - "current-script-polyfill": "^1.0.0", - "debug": "^4.1.1", - "default-gateway": "^4.2.0", - "dotenv": "^7.0.0", - "dotenv-expand": "^5.1.0", - "escape-string-regexp": "^1.0.5", - "file-loader": "^3.0.1", - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "hash-sum": "^1.0.2", - "html-webpack-plugin": "^3.2.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.0", - "lodash.mapvalues": "^4.6.0", - "lodash.transform": "^4.6.0", - "mini-css-extract-plugin": "^0.6.0", - "minimist": "^1.2.0", - "ora": "^3.4.0", - "portfinder": "^1.0.20", - "postcss-loader": "^3.0.0", - "read-pkg": "^5.0.0", - "semver": "^6.0.0", - "slash": "^2.0.0", - "source-map-url": "^0.4.0", - "ssri": "^6.0.1", - "string.prototype.padend": "^3.0.0", - "terser-webpack-plugin": "^1.2.3", - "thread-loader": "^2.1.2", - "url-loader": "^1.1.2", - "vue-loader": "^15.7.0", - "webpack": ">=4 < 4.29", - "webpack-bundle-analyzer": "^3.3.0", - "webpack-chain": "^4.11.0", - "webpack-dev-server": "^3.4.1", - "webpack-merge": "^4.2.1", - "yorkie": "^2.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", - "dev": true + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.0.tgz", + "integrity": "sha512-Cd8r8zs4RKDwMG/92lpZcnn5WPQ3LAMQbCw42oqUh4s7vsSN5ANUZjMel0OOnxDLq57hoDDbai+ryygYfCTOsw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "@babel/helper-call-delegate": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.0.tgz", + "integrity": "sha512-Su0Mdq7uSSWGZayGMMQ+z6lnL00mMCnGAbO/R0ZO9odIdB/WNU/VfQKqMQU0fdIsxQYbRjDM4BixIa93SQIpvw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "@babel/helper-create-class-features-plugin": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz", + "integrity": "sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-member-expression-to-functions": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", - "dev": true - } - } - }, - "@vue/cli-shared-utils": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-3.8.0.tgz", - "integrity": "sha512-wn1L8pmQnotfftHOYm0VeXs2+cQTySd73uhWXwyO6pT0ehjqlY5c2RTipClmFF3Q+YCYjwlNpsV650F3l1tV8w==", - "dev": true, - "requires": { - "@hapi/joi": "^15.0.1", - "chalk": "^2.4.1", - "execa": "^1.0.0", - "launch-editor": "^2.2.1", - "lru-cache": "^5.1.1", - "node-ipc": "^9.1.1", - "open": "^6.3.0", - "ora": "^3.4.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.7", - "semver": "^6.0.0", - "string.prototype.padstart": "^3.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } + "@babel/helper-create-regexp-features-plugin": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz", + "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==", + "dev": true, + "requires": { + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } }, - "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", - "dev": true - } - } - }, - "@vue/component-compiler-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz", - "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==", - "dev": true, - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.14", - "postcss-selector-parser": "^5.0.0", - "prettier": "1.16.3", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "dependencies": { - "prettier": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz", - "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==", - "dev": true + "@babel/helper-define-map": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.0.tgz", + "integrity": "sha512-kPKWPb0dMpZi+ov1hJiwse9dWweZsz3V9rP4KdytnX1E7z3cTNmFGglwklzFPuqIcHLIY3bgKSs4vkwXXdflQA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.0", + "@babel/types": "^7.7.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "@vue/preload-webpack-plugin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.0.tgz", - "integrity": "sha512-rcn2KhSHESBFMPj5vc5X2pI9bcBNQQixvJXhD5gZ4rN2iym/uH2qfDSQfUS5+qwiz0a85TCkeUs6w6jxFDudbw==", - "dev": true - }, - "@vue/web-component-wrapper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", - "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", - "integrity": "sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", - "integrity": "sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", - "integrity": "sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", - "integrity": "sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", - "integrity": "sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.7.11" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", - "integrity": "sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", - "integrity": "sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg==", - "dev": true - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", - "integrity": "sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", - "integrity": "sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", - "integrity": "sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", - "integrity": "sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.1" - } - }, - "@webassemblyjs/utf8": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", - "integrity": "sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", - "integrity": "sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/helper-wasm-section": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-opt": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "@webassemblyjs/wast-printer": "1.7.11" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", - "integrity": "sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", - "integrity": "sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-buffer": "1.7.11", - "@webassemblyjs/wasm-gen": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", - "integrity": "sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-wasm-bytecode": "1.7.11", - "@webassemblyjs/ieee754": "1.7.11", - "@webassemblyjs/leb128": "1.7.11", - "@webassemblyjs/utf8": "1.7.11" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", - "integrity": "sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/floating-point-hex-parser": "1.7.11", - "@webassemblyjs/helper-api-error": "1.7.11", - "@webassemblyjs/helper-code-frame": "1.7.11", - "@webassemblyjs/helper-fsm": "1.7.11", - "@xtuc/long": "4.2.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", - "integrity": "sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/wast-parser": "1.7.11", - "@xtuc/long": "4.2.1" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", - "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", - "dev": true - }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "dependencies": { - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", - "dev": true + "@babel/helper-explode-assignable-expression": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.0.tgz", + "integrity": "sha512-CDs26w2shdD1urNUAji2RJXyBFCaR+iBEGnFz3l7maizMkQe3saVw9WtjG1tz8CwbjvlFnaSLVhgnu1SWaherg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "dev": true, - "requires": { - "mime-db": "1.40.0" - } - } - } - }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", - "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", - "dev": true, - "requires": { - "acorn": "^5.0.0" - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", - "dev": true - }, - "address": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.0.tgz", - "integrity": "sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==", - "dev": true - }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, - "ajv": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", - "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", - "dev": true - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.0.tgz", - "integrity": "sha512-kuip9YilBqhirhHEGHaBTZKXL//xxGnzvsD0FtBQa6z+A69qZD6s/BAX9VzDF1i9VKDquTJDQaPLSEhOnL6FvQ==", - "dev": true, - "requires": { - "browserslist": "^4.6.1", - "caniuse-lite": "^1.0.30000971", - "chalk": "^2.4.2", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.16", - "postcss-value-parser": "^3.3.1" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "axios": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz", - "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", - "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } + "@babel/helper-hoist-variables": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.0.tgz", + "integrity": "sha512-LUe/92NqsDAkJjjCEWkNe+/PcpnisvnqdlRe19FahVapa4jndeuJ+FBiTX1rcAKWKcJGE+C3Q3tuEuxkSmCEiQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" - } - } - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "@babel/helper-member-expression-to-functions": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.0.tgz", + "integrity": "sha512-QaCZLO2RtBcmvO/ekOLp8p7R5X2JriKRizeDpm5ChATAFWrrYDcDxPuCIBXKyBjY+i1vYSdcUTMIb8psfxHDPA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "@babel/helper-module-imports": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz", + "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "@babel/helper-module-transforms": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz", + "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.0", + "@babel/helper-simple-access": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "@babel/helper-optimise-call-expression": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.0.tgz", + "integrity": "sha512-48TeqmbazjNU/65niiiJIJRc5JozB8acui1OS7bSd6PgxfuovWsvjfWSzlgx+gPFdVveNzUdpdIg5l56Pl5jqg==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/helper-remap-async-to-generator": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz", + "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.7.0", + "@babel/helper-wrap-function": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/helper-replace-supers": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.0.tgz", + "integrity": "sha512-5ALYEul5V8xNdxEeWvRsBzLMxQksT7MaStpxjJf9KsnLxpAKBtfw5NeMKZJSYDa0lKdOcy0g+JT/f5mPSulUgg==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" - } - }, - "bfj": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.1.tgz", - "integrity": "sha512-+GUNvzHR4nRyGybQc2WpNJL4MJazMuvf92ueIyA0bIkPRwhhQu3IfZQ2PSoVPpCBJfmoSdOxu5rnotfFLlvYRQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "check-types": "^7.3.0", - "hoopy": "^0.1.2", - "tryer": "^1.0.0" - } - }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "~2.0.0" - } - }, - "bluebird": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", - "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.2.tgz", - "integrity": "sha512-2neU/V0giQy9h3XMPwLhEY3+Ao0uHSwHvU8Q1Ea6AgLVL1sXbX3dzPrJ8NWe5Hi4PoTkCYXOtVR9rfRLI0J/8Q==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000974", - "electron-to-chromium": "^1.3.150", - "node-releases": "^1.1.23" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", - "dev": true, - "requires": { - "bluebird": "^3.5.3", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "cache-loader": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-2.0.1.tgz", - "integrity": "sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.0", - "normalize-path": "^3.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } - } - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30000974", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz", - "integrity": "sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==", - "dev": true - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz", - "integrity": "sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "check-types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", - "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==", - "dev": true - }, - "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clamp": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", - "integrity": "sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ=" - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-highlight": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.1.tgz", - "integrity": "sha512-0y0VlNmdD99GXZHYnvrQcmHxP8Bi6T00qucGgBgGv4kJ0RyDthNnnFPupHV7PYv/OXSVk+azFbOeaW6+vGmx9A==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "highlight.js": "^9.6.0", - "mz": "^2.4.0", - "parse5": "^4.0.0", - "yargs": "^13.0.0" - } - }, - "cli-spinners": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.1.0.tgz", - "integrity": "sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA==", - "dev": true - }, - "clipboardy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.0.0.tgz", - "integrity": "sha512-XbVjHMsss0giNUkp/tV/3eEAZe8i1fZTLzmPKqjE1RGIAWOTiF5D014f6R+g53ZAq0IK3cPrJXFvqE8eQjhFYQ==", - "dev": true, - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "@babel/helper-simple-access": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz", + "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==", + "dev": true, + "requires": { + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } + "@babel/helper-wrap-function": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz", + "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", - "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.0", - "shallow-clone": "^1.0.0" - } - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", - "dev": true, - "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, - "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", - "dev": true, - "requires": { - "mime-db": ">= 1.40.0 < 2" - }, - "dependencies": { - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", - "dev": true - } - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dev": true, - "requires": { - "bluebird": "^3.1.1" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dev": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", - "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", - "dev": true, - "requires": { - "cacache": "^10.0.4", - "find-cache-dir": "^1.0.0", - "globby": "^7.1.1", - "is-glob": "^4.0.0", - "loader-utils": "^1.1.0", - "minimatch": "^3.0.4", - "p-limit": "^1.0.0", - "serialize-javascript": "^1.4.0" - }, - "dependencies": { - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", - "dev": true, - "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" - } + "@babel/helpers": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz", + "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==", + "dev": true, + "requires": { + "@babel/template": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", + "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", + "dev": true, + "requires": { + "@babel/types": "^7.7.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/traverse": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", + "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.2", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "@babel/parser": "^7.7.2", + "@babel/types": "^7.7.2", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } + "@babel/parser": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.0.tgz", + "integrity": "sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.0.tgz", + "integrity": "sha512-ot/EZVvf3mXtZq0Pd0+tSOfGWMizqmOohXmNZg6LNFjHOV+wOPv7BvVYh8oPR8LhpIP3ye8nNooKL50YRWxpYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.7.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" + } }, - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } + "@babel/plugin-proposal-class-properties": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.0.tgz", + "integrity": "sha512-tufDcFA1Vj+eWvwHN+jvMN6QsV5o+vUlytNKrbMiCeDL0F2j92RURzUsUMWE5EJkLyWxjdUslCsMQa9FWth16A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true + "@babel/plugin-proposal-decorators": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.7.0.tgz", + "integrity": "sha512-dMCDKmbYFQQTn1+VJjl5hbqlweuHl5oDeMU9B1Q7oAWi0mHxjQQDHdJIK6iW76NE1KJT3zA6dDU3weR1WT5D4A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-decorators": "^7.2.0" + } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } + "@babel/plugin-proposal-dynamic-import": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.0.tgz", + "integrity": "sha512-7poL3Xi+QFPC7sGAzEIbXUyYzGJwbc2+gSD0AkiC5k52kH2cqHdqxm5hNFfLW3cRSTcx9bN0Fl7/6zWcLLnKAQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0" + } }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-json-strings": "^7.2.0" + } }, - "mississippi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^2.0.1", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + } }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + } }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.0.tgz", + "integrity": "sha512-mk34H+hp7kRBWJOOAR0ZMGCydgKMD4iN9TpDRp3IIcbunltxEY89XSimc6WbtSLCDrwcdy/EEw7h5CFCzxTchw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true + "@babel/plugin-syntax-async-generators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } + "@babel/plugin-syntax-decorators": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz", + "integrity": "sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true + "@babel/plugin-syntax-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.1" - } - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz", - "integrity": "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "css-selector-tokenizer": "^0.7.0", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash": "^4.17.11", - "postcss": "^6.0.23", - "postcss-modules-extract-imports": "^1.2.0", - "postcss-modules-local-by-default": "^1.2.0", - "postcss-modules-scope": "^1.1.0", - "postcss-modules-values": "^1.3.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } + "@babel/plugin-syntax-jsx": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", + "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-select": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", - "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^2.1.2", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "dev": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - } - } - }, - "css-tree": { - "version": "1.0.0-alpha.28", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.28.tgz", - "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==", - "dev": true, - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - }, - "css-unit-converter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", - "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", - "dev": true - }, - "css-url-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-url-regex/-/css-url-regex-1.1.0.tgz", - "integrity": "sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=", - "dev": true - }, - "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "dev": true - }, - "cssesc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", - "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", - "dev": true - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", - "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", - "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", - "dev": true, - "requires": { - "css-tree": "1.0.0-alpha.29" - }, - "dependencies": { - "css-tree": { - "version": "1.0.0-alpha.29", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", - "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", - "dev": true, - "requires": { - "mdn-data": "~1.1.0", - "source-map": "^0.5.3" - } - } - } - }, - "current-script-polyfill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", - "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=", - "dev": true - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true - }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } + "@babel/plugin-syntax-top-level-await": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.0.tgz", + "integrity": "sha512-hi8FUNiFIY1fnUI2n1ViB1DR0R4QeK4iHcTlW6aJkrPoTdb8Rf1EMQ6GT3f67DDkYyWgew9DFoOZ6gOoEsdzTA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "dotenv": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-7.0.0.tgz", - "integrity": "sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "easy-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", - "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.158", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.158.tgz", - "integrity": "sha512-wJsJaWsViNQ129XPGmyO5gGs1jPMHr9vffjHAhUje1xZbEzQcqbENdvfyRD9q8UF0TgFQFCCUbaIpJarFbvsIg==", - "dev": true - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "dev": true, - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "engine.io-client": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", - "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~6.1.0", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } + "@babel/plugin-transform-async-to-generator": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.0.tgz", + "integrity": "sha512-vLI2EFLVvRBL3d8roAMqtVY0Bm9C1QzLkdS57hiKrjUBSqsQYrBsMCeOg/0KK7B0eK9V71J5mWcha9yyoI2tZw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.7.0" + } }, - "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", - "requires": { - "async-limiter": "~1.0.0" - } - } - } - }, - "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz", - "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==", - "dev": true, - "requires": { - "stackframe": "^1.0.4" - } - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", - "dev": true - }, - "eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "dev": true - }, - "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", - "dev": true - }, - "eventsource": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", - "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dev": true, - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "@babel/plugin-transform-block-scoping": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", + "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.13" + } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "@babel/plugin-transform-classes": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.0.tgz", + "integrity": "sha512-/b3cKIZwGeUesZheU9jNYcwrEA7f/Bo4IdPmvp7oHgvks2majB5BoT5byAql44fiNQYOPzhk2w8DbgfuafkMoA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.7.0", + "@babel/helper-define-map": "^7.7.0", + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", + "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/plugin-transform-computed-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "@babel/plugin-transform-destructuring": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - } - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", - "dev": true - }, - "file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", - "dev": true, - "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", - "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", - "dev": true, - "requires": { - "debug": "^3.2.6" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "@babel/plugin-transform-dotall-regex": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.0.tgz", + "integrity": "sha512-3QQlF7hSBnSuM1hQ0pS3pmAbWLax/uGNCbPBND9y+oJ4Y776jsyujG2k0Sn2Aj2a0QwVOiOFL5QVPA7spjvzSA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "fork-ts-checker-webpack-plugin": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.5.2.tgz", - "integrity": "sha512-a5IG+xXyKnpruI0CP/anyRLAoxWtp3lzdG6flxicANnoSzz64b12dJ7ASAVRrI2OaWwZR2JyBaMHFQqInhWhIw==", - "dev": true, - "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "chokidar": "^2.0.4", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "tapable": "^1.0.0" - } - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-duplicate-keys": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", + "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } + "@babel/plugin-transform-for-of": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.0.tgz", + "integrity": "sha512-P5HKu0d9+CzZxP5jcrWdpe7ZlFDe24bmqP6a6X8BHEBl/eizAsY8K6LX8LASZL0Jxdjm5eEfzp+FIrxCm/p8bA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" + }, + "dependencies": { + "@babel/helper-function-name": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", + "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.0", + "@babel/template": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", + "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", + "dev": true, + "requires": { + "@babel/types": "^7.7.0" + } + }, + "@babel/parser": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", + "dev": true + }, + "@babel/template": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", + "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/types": "^7.7.0" + } + }, + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-modules-amd": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", + "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-modules-commonjs": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz", + "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.7.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-modules-systemjs": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.0.tgz", + "integrity": "sha512-ZAuFgYjJzDNv77AjXRqzQGlQl4HdUM6j296ee4fwKVZfhDR9LAGxfvXjBkb06gNETPnN0sLqRm9Gxg4wZH6dXg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-modules-umd": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.0.tgz", + "integrity": "sha512-u7eBA03zmUswQ9LQ7Qw0/ieC1pcAkbp5OQatbWUzY1PaBccvuJXUkYzoN1g7cqp7dbTu6Dp9bXyalBvD04AANA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.0.tgz", + "integrity": "sha512-+SicSJoKouPctL+j1pqktRVCgy+xAch1hWWTMy13j0IflnyNjaoskj+DwRQFimHbLqO3sq2oN2CXMvXq3Bgapg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.0" + } }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } + "@babel/plugin-transform-new-target": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } + "@babel/plugin-transform-object-super": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", + "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5" + } }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-parameters": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } + "@babel/plugin-transform-regenerator": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.0.tgz", + "integrity": "sha512-AXmvnC+0wuj/cFkkS/HFHIojxH3ffSXE+ttulrqWjZZRaUOonfJc60e1wSNT4rV8tIunvu/R3wCp71/tLAa9xg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-runtime": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz", + "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-spread": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true + "@babel/plugin-transform-template-literals": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } + "@babel/plugin-transform-unicode-regex": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz", + "integrity": "sha512-RrThb0gdrNwFAqEAAx9OWgtx6ICK69x7i9tCnMdVrxQwSDp/Abu9DXFU5Hh16VP33Rmxh04+NGW28NsIkFvFKA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0" + } }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } + "@babel/preset-env": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.1.tgz", + "integrity": "sha512-/93SWhi3PxcVTDpSqC+Dp4YxUu3qZ4m7I76k0w73wYfn7bGVuRIO4QUz95aJksbS+AD1/mT1Ie7rbkT0wSplaA==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.7.0", + "@babel/plugin-proposal-dynamic-import": "^7.7.0", + "@babel/plugin-proposal-json-strings": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.6.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@babel/plugin-syntax-top-level-await": "^7.7.0", + "@babel/plugin-transform-arrow-functions": "^7.2.0", + "@babel/plugin-transform-async-to-generator": "^7.7.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.6.3", + "@babel/plugin-transform-classes": "^7.7.0", + "@babel/plugin-transform-computed-properties": "^7.2.0", + "@babel/plugin-transform-destructuring": "^7.6.0", + "@babel/plugin-transform-dotall-regex": "^7.7.0", + "@babel/plugin-transform-duplicate-keys": "^7.5.0", + "@babel/plugin-transform-exponentiation-operator": "^7.2.0", + "@babel/plugin-transform-for-of": "^7.4.4", + "@babel/plugin-transform-function-name": "^7.7.0", + "@babel/plugin-transform-literals": "^7.2.0", + "@babel/plugin-transform-member-expression-literals": "^7.2.0", + "@babel/plugin-transform-modules-amd": "^7.5.0", + "@babel/plugin-transform-modules-commonjs": "^7.7.0", + "@babel/plugin-transform-modules-systemjs": "^7.7.0", + "@babel/plugin-transform-modules-umd": "^7.7.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.0", + "@babel/plugin-transform-new-target": "^7.4.4", + "@babel/plugin-transform-object-super": "^7.5.5", + "@babel/plugin-transform-parameters": "^7.4.4", + "@babel/plugin-transform-property-literals": "^7.2.0", + "@babel/plugin-transform-regenerator": "^7.7.0", + "@babel/plugin-transform-reserved-words": "^7.2.0", + "@babel/plugin-transform-shorthand-properties": "^7.2.0", + "@babel/plugin-transform-spread": "^7.6.2", + "@babel/plugin-transform-sticky-regex": "^7.2.0", + "@babel/plugin-transform-template-literals": "^7.4.4", + "@babel/plugin-transform-typeof-symbol": "^7.2.0", + "@babel/plugin-transform-unicode-regex": "^7.7.0", + "@babel/types": "^7.7.1", + "browserslist": "^4.6.0", + "core-js-compat": "^3.1.1", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", + "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } + "@babel/runtime": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", + "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true + "@babel/runtime-corejs3": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.7.2.tgz", + "integrity": "sha512-odQQZpujq0AHttKrvp4n2KGjK5b5cuq7LeEcsdadwZOemMkmJnlgTXMCf5fIixLLaBxUypwn0krKK51vVMA5cg==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.2" + } }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true + "@babel/template": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", + "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0" + } }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } + "@babel/traverse": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.0.tgz", + "integrity": "sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.6.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "@babel/types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", + "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "@cnakazawa/watch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } + "@hapi/address": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.1.tgz", + "integrity": "sha512-DYuHzu978pP1XW1GD3HGvLnAFjbQTIgc2+V153FGkbS2pgo9haigCdwBnUDrbhaOkgiJlbZvoEqDrcxSLHpiWA==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.2.4.tgz", + "integrity": "sha512-Ze5SDNt325yZvNO7s5C4fXDscjJ6dcqLFXJQ/M7dZRQCewuDj2iDUuBi6jLQt+APbW9RjjVEvLr35FXuOEqjow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true + "@hapi/topo": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.3.tgz", + "integrity": "sha512-JmS9/vQK6dcUYn7wc2YZTqzIKubAQcJKu2KCKAru6es482U5RT5fP1EXCPtlXpiK7PR0On/kpQKI4fRKkzpZBQ==", + "dev": true, + "requires": { + "@hapi/hoek": "8.x.x" + } }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } + "@intervolga/optimize-cssnano-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", + "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==", + "dev": true, + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", + "integrity": "sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "@types/babel__core": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", + "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz", + "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", + "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "24.0.22", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.22.tgz", + "integrity": "sha512-t2OvhNZnrNjlzi2i0/cxbLVM59WN15I2r1Qtb7wDv28PnV9IzrPtagFRey/S9ezdLD0zyh1XGMQIEQND2YEfrw==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "@types/jest-diff": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", + "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", + "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.146", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.146.tgz", + "integrity": "sha512-JzJcmQ/ikHSv7pbvrVNKJU5j9jL9VLf3/gqs048CEnBVVVEv4kve3vLxoPHGvclutS+Il4SBIuQQ087m1eHffw==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "12.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz", + "integrity": "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "dev": true + }, + "@types/socket.io-client": { + "version": "1.4.32", + "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.32.tgz", + "integrity": "sha512-Vs55Kq8F+OWvy1RLA31rT+cAyemzgm0EWNeax6BWF8H7QiiOYMJIdcwSDdm5LVgfEkoepsWkS+40+WNb7BUMbg==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, + "@types/tinycolor2": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.2.tgz", + "integrity": "sha512-PeHg/AtdW6aaIO2a+98Xj7rWY4KC1E6yOy7AFknJQ7VXUGNrMlyxDFxJo7HqLtjQms/ZhhQX52mLVW/EX3JGOw==", + "dev": true + }, + "@types/vue-color": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@types/vue-color/-/vue-color-2.4.2.tgz", + "integrity": "sha512-AwzdmfNI6axlVBVxeVr3Nw3BBLbz+oz3YkYfqNwY5EmhuMAb3VVsXSCb5ETlHVBKk7/m5qfq1Rq7S66Z2j3rrw==", + "dev": true, + "requires": { + "vue": ">=2.0.0" + } + }, + "@types/webpack-env": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.14.1.tgz", + "integrity": "sha512-0Ki9jAAhKDSuLDXOIMADg54Hu60SuBTEsWaJGGy5cV+SSUQ63J2a+RrYYGrErzz39fXzTibhKrAQJAb8M7PNcA==", + "dev": true + }, + "@types/yargs": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz", + "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", + "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz", + "integrity": "sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "1.13.0", + "eslint-utils": "^1.3.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^2.0.1", + "tsutils": "^3.7.0" + }, + "dependencies": { + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz", + "integrity": "sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-scope": "^4.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.13.0.tgz", + "integrity": "sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "1.13.0", + "@typescript-eslint/typescript-estree": "1.13.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz", + "integrity": "sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==", + "dev": true, + "requires": { + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + } + } + }, + "@vue/babel-helper-vue-jsx-merge-props": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz", + "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw==", + "dev": true + }, + "@vue/babel-plugin-transform-vue-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.1.2.tgz", + "integrity": "sha512-YfdaoSMvD1nj7+DsrwfTvTnhDXI7bsuh+Y5qWwvQXlD24uLgnsoww3qbiZvWf/EoviZMrvqkqN4CBw0W3BWUTQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "html-tags": "^2.0.0", + "lodash.kebabcase": "^4.1.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-preset-app": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.0.5.tgz", + "integrity": "sha512-EXq/eqqw0rpQjVNOz1AIC/K6c4/6VNva7PenMK+MmmE/n9wNHn3BFI5t8Dz3tkuKU57Zlln/HUKjfdm29cvrcw==", + "dev": true, + "requires": { + "@babel/core": "^7.6.4", + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.4.4", + "@babel/plugin-proposal-decorators": "^7.6.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.6.2", + "@babel/preset-env": "^7.6.3", + "@babel/runtime": "^7.6.3", + "@babel/runtime-corejs3": "^7.6.3", + "@vue/babel-preset-jsx": "^1.1.1", + "babel-plugin-dynamic-import-node": "^2.2.0", + "babel-plugin-module-resolver": "^3.2.0", + "core-js": "^3.3.2", + "core-js-compat": "^3.3.2" + }, + "dependencies": { + "core-js": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==", + "dev": true + } + } + }, + "@vue/babel-preset-jsx": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.2.tgz", + "integrity": "sha512-zDpVnFpeC9YXmvGIDSsKNdL7qCG2rA3gjywLYHPCKDT10erjxF4U+6ay9X6TW5fl4GsDlJp9bVfAVQAAVzxxvQ==", + "dev": true, + "requires": { + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "@vue/babel-sugar-functional-vue": "^1.1.2", + "@vue/babel-sugar-inject-h": "^1.1.2", + "@vue/babel-sugar-v-model": "^1.1.2", + "@vue/babel-sugar-v-on": "^1.1.2" + } + }, + "@vue/babel-sugar-functional-vue": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.1.2.tgz", + "integrity": "sha512-YhmdJQSVEFF5ETJXzrMpj0nkCXEa39TvVxJTuVjzvP2rgKhdMmQzlJuMv/HpadhZaRVMCCF3AEjjJcK5q/cYzQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-inject-h": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.1.2.tgz", + "integrity": "sha512-VRSENdTvD5htpnVp7i7DNuChR5rVMcORdXjvv5HVvpdKHzDZAYiLSD+GhnhxLm3/dMuk8pSzV+k28ECkiN5m8w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@vue/babel-sugar-v-model": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.1.2.tgz", + "integrity": "sha512-vLXPvNq8vDtt0u9LqFdpGM9W9IWDmCmCyJXuozlq4F4UYVleXJ2Fa+3JsnTZNJcG+pLjjfnEGHci2339Kj5sGg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0", + "html-tags": "^2.0.0", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-sugar-v-on": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.2.tgz", + "integrity": "sha512-T8ZCwC8Jp2uRtcZ88YwZtZXe7eQrJcfRq0uTFy6ShbwYJyz5qWskRFoVsdTi9o0WEhmQXxhQUewodOSCUPVmsQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.1.2", + "camelcase": "^5.0.0" + } + }, + "@vue/cli-overlay": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.0.5.tgz", + "integrity": "sha512-guVLEZoV1QtCEjByutSizgBQin/L0Pvz2siQqU+eOFXzXs7P/MtyUYhbKh07AUHHEQEbqGJOvxSIks/fLfrp4w==", + "dev": true + }, + "@vue/cli-plugin-babel": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.0.5.tgz", + "integrity": "sha512-2B/DDgdWvE6mBRhpUu9tNkaoFLopxr5/2tzXbGLH8Lkr8HToNERZ4RoGSSV1akTsosAxXSER9wGSa9jXhZ41iA==", + "dev": true, + "requires": { + "@babel/core": "^7.6.4", + "@vue/babel-preset-app": "^4.0.5", + "@vue/cli-shared-utils": "^4.0.5", + "babel-loader": "^8.0.6", + "webpack": "^4.0.0" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.0.5.tgz", + "integrity": "sha512-NlNZ4Dx5QcP5uO5fCOLgkN2tbhNan5EcptPvXawW/md18cIpMlKbph6L6lEfJj8vrSvTUf2i/FyoFSh1rV53hw==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.1.0", + "string.prototype.padstart": "^3.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/cli-plugin-eslint": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.0.5.tgz", + "integrity": "sha512-hiPU2+knz3GgSUDniekbp81Iciax9yIFzz1swy1QTJGABXT/3gqakz7Gc0IGgpo+wRkMHk9DyCK8+TpI6wdtWg==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.0.5", + "eslint-loader": "^2.1.2", + "globby": "^9.2.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.0.5.tgz", + "integrity": "sha512-NlNZ4Dx5QcP5uO5fCOLgkN2tbhNan5EcptPvXawW/md18cIpMlKbph6L6lEfJj8vrSvTUf2i/FyoFSh1rV53hw==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.1.0", + "string.prototype.padstart": "^3.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/cli-plugin-router": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.0.5.tgz", + "integrity": "sha512-pSbw7CZZd6fQHomwIsxX/qyMBFeXsxhUOrwjmp1s03qe/VjsyREIsLW+L5BiXoHZQFdqfH2NaOF9Uivxiv2cvQ==", + "dev": true, + "requires": { + "@vue/cli-shared-utils": "^4.0.5" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.0.5.tgz", + "integrity": "sha512-NlNZ4Dx5QcP5uO5fCOLgkN2tbhNan5EcptPvXawW/md18cIpMlKbph6L6lEfJj8vrSvTUf2i/FyoFSh1rV53hw==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.1.0", + "string.prototype.padstart": "^3.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/cli-plugin-typescript": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-typescript/-/cli-plugin-typescript-4.0.5.tgz", + "integrity": "sha512-90F2UvbJxzf9YSeGg+k8jfd8ALGNx4RChKAhko/6JR+A5GW1nYwN5Vcz174aj0obxra2etFgmY+B65AhoGD7Xg==", + "dev": true, + "requires": { + "@types/webpack-env": "^1.13.9", + "@vue/cli-shared-utils": "^4.0.5", + "fork-ts-checker-webpack-plugin": "^1.5.1", + "globby": "^9.2.0", + "ts-loader": "^6.2.0", + "tslint": "^5.16.0", + "webpack": "^4.0.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.0.5.tgz", + "integrity": "sha512-NlNZ4Dx5QcP5uO5fCOLgkN2tbhNan5EcptPvXawW/md18cIpMlKbph6L6lEfJj8vrSvTUf2i/FyoFSh1rV53hw==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.1.0", + "string.prototype.padstart": "^3.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/cli-plugin-unit-jest": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-unit-jest/-/cli-plugin-unit-jest-4.0.5.tgz", + "integrity": "sha512-UfBZO4AHy+eIJDST7yiU+Rl57gj7PNzRPyR6DvBHK9x8niz/nPDeJ8OQaMY0eLLyU041sCNUaOLuCCVdXrvzjg==", + "dev": true, + "requires": { + "@babel/core": "^7.6.4", + "@babel/plugin-transform-modules-commonjs": "^7.6.0", + "@types/jest": "^24.0.18", + "@vue/cli-shared-utils": "^4.0.5", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^24.9.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.2", + "deepmerge": "^4.0.0", + "jest": "^24.9.0", + "jest-environment-jsdom-fifteen": "^1.0.0", + "jest-serializer-vue": "^2.0.2", + "jest-transform-stub": "^2.0.0", + "jest-watch-typeahead": "^0.4.0", + "ts-jest": "^24.1.0", + "vue-jest": "^3.0.5" + }, + "dependencies": { + "@types/jest": { + "version": "24.0.22", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.22.tgz", + "integrity": "sha512-t2OvhNZnrNjlzi2i0/cxbLVM59WN15I2r1Qtb7wDv28PnV9IzrPtagFRey/S9ezdLD0zyh1XGMQIEQND2YEfrw==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "ts-jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.1.0.tgz", + "integrity": "sha512-HEGfrIEAZKfu1pkaxB9au17b1d9b56YZSqz5eCVE8mX68+5reOvlM93xGOzzCREIov9mdH7JBG+s0UyNAqr0tQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.0.5.tgz", + "integrity": "sha512-stppb+Fw5J84EA9EPs2jpclCr1lJbYtJClmEIP8RZZzGm0xGGdwMEK+VUOYjaFo4kMrReteSiMww8jxdRCeijg==", + "dev": true + }, + "@vue/cli-service": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.0.5.tgz", + "integrity": "sha512-ScVaGzbLbtiTqlzFBBpGoYEdw6kZTSsQwgBJ2UjO5GZwVhx6Tbcwusw+pUC2zxUPoFki5FrTdbBZO6lrVkwATw==", + "dev": true, + "requires": { + "@intervolga/optimize-cssnano-plugin": "^1.0.5", + "@soda/friendly-errors-webpack-plugin": "^1.7.1", + "@vue/cli-overlay": "^4.0.5", + "@vue/cli-plugin-router": "^4.0.5", + "@vue/cli-plugin-vuex": "^4.0.5", + "@vue/cli-shared-utils": "^4.0.5", + "@vue/component-compiler-utils": "^3.0.0", + "@vue/preload-webpack-plugin": "^1.1.0", + "@vue/web-component-wrapper": "^1.2.0", + "acorn": "^6.1.1", + "acorn-walk": "^6.1.1", + "address": "^1.1.2", + "autoprefixer": "^9.5.1", + "browserslist": "^4.7.1", + "cache-loader": "^4.1.0", + "case-sensitive-paths-webpack-plugin": "^2.2.0", + "chalk": "^2.4.2", + "cli-highlight": "^2.1.1", + "clipboardy": "^2.0.0", + "cliui": "^5.0.0", + "copy-webpack-plugin": "^5.0.3", + "css-loader": "^3.1.0", + "cssnano": "^4.1.10", + "current-script-polyfill": "^1.0.0", + "debug": "^4.1.1", + "default-gateway": "^5.0.2", + "dotenv": "^8.2.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^4.2.0", + "fs-extra": "^7.0.1", + "globby": "^9.2.0", + "hash-sum": "^1.0.2", + "html-webpack-plugin": "^3.2.0", + "launch-editor-middleware": "^2.2.1", + "lodash.defaultsdeep": "^4.6.1", + "lodash.mapvalues": "^4.6.0", + "lodash.transform": "^4.6.0", + "mini-css-extract-plugin": "^0.8.0", + "minimist": "^1.2.0", + "ora": "^3.4.0", + "portfinder": "^1.0.25", + "postcss-loader": "^3.0.0", + "read-pkg": "^5.1.1", + "semver": "^6.1.0", + "slash": "^3.0.0", + "source-map-url": "^0.4.0", + "ssri": "^6.0.1", + "string.prototype.padend": "^3.0.0", + "terser-webpack-plugin": "^2.1.2", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.7.0", + "webpack": "^4.0.0", + "webpack-bundle-analyzer": "^3.6.0", + "webpack-chain": "^6.0.0", + "webpack-dev-server": "^3.8.2", + "webpack-merge": "^4.2.2" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.0.5.tgz", + "integrity": "sha512-NlNZ4Dx5QcP5uO5fCOLgkN2tbhNan5EcptPvXawW/md18cIpMlKbph6L6lEfJj8vrSvTUf2i/FyoFSh1rV53hw==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.1.0", + "string.prototype.padstart": "^3.0.0" + } + }, + "browserslist": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" + } + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + } + } + }, + "caniuse-lite": { + "version": "1.0.30001008", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001008.tgz", + "integrity": "sha512-b8DJyb+VVXZGRgJUa30cbk8gKHZ3LOZTBLaUEEVr2P4xpmFigOCc62CO4uzquW641Ouq1Rm9N+rWLWdSYDaDIw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "electron-to-chromium": { + "version": "1.3.306", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", + "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", + "dev": true + }, + "find-cache-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.1.0.tgz", + "integrity": "sha512-zw+EFiNBNPgI2NTrKkDd1xd7q0cs6wr/iWnr/oUkI0yF9K9GqQ+riIt4aiyFaaqpaWbxPrJXHI+QvmNUQbX+0Q==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node-releases": { + "version": "1.1.39", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz", + "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "serialize-javascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.0.tgz", + "integrity": "sha512-a/mxFfU00QT88umAJQsNWOnUKckhNCqOl028N48e7wFmo2/EHpTo9Wso+iJJCMrQnmFvcjto5RJdAHEvVhcyUQ==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "terser": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.9.tgz", + "integrity": "sha512-NFGMpHjlzmyOtPL+fDw3G7+6Ueh/sz4mkaUYa4lJCxOPTNzd0Uj0aZJOmsDYoSQyfuVoWDMSWTPU3huyOm2zdA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.2.1.tgz", + "integrity": "sha512-jwdauV5Al7zopR6OAYvIIRcxXCSvLjZjr7uZE8l2tIWb/ryrGN48sJftqGf5k9z09tWhajx53ldp0XPI080YnA==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.0.0", + "jest-worker": "^24.9.0", + "schema-utils": "^2.5.0", + "serialize-javascript": "^2.1.0", + "source-map": "^0.6.1", + "terser": "^4.3.9", + "webpack-sources": "^1.4.3" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.0.5.tgz", + "integrity": "sha512-NlNZ4Dx5QcP5uO5fCOLgkN2tbhNan5EcptPvXawW/md18cIpMlKbph6L6lEfJj8vrSvTUf2i/FyoFSh1rV53hw==", + "dev": true, + "requires": { + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.1", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.1.1", + "node-ipc": "^9.1.1", + "open": "^6.3.0", + "ora": "^3.4.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.7", + "semver": "^6.1.0", + "string.prototype.padstart": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@vue/component-compiler-utils": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.0.2.tgz", + "integrity": "sha512-BSnY2PmW4QwU1AOcGSNYAmEPLjdQ9itl1YpLCWtpwMA5Jy/aqWNuzZ9+ZZ8h6yZJ53W95tVkEP6yrXJ/zUHdEA==", + "dev": true, + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.14", + "postcss-selector-parser": "^5.0.0", + "prettier": "^1.18.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "@vue/eslint-config-prettier": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-5.0.0.tgz", + "integrity": "sha512-OXcH+XWevp3DIdC3BBornC1q6/MNYfca/3HY66awV6aGm+dtkR/hpfBb6fX7nsVjcox13kgG+eSUtUfJ3uxZ8A==", + "dev": true, + "requires": { + "eslint-config-prettier": "^6.0.0" + } + }, + "@vue/eslint-config-typescript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-4.0.0.tgz", + "integrity": "sha512-uSMAMgw4xDgVdZQhpbtJRo8nMV4oOy3Ht8olfOo7xvYFYLMF2JZ1tDRKd9/NSusxA72O2Vma+HzmyzDHg9evcQ==", + "dev": true, + "requires": { + "@typescript-eslint/eslint-plugin": "^1.1.0", + "@typescript-eslint/parser": "^1.1.0" + } + }, + "@vue/preload-webpack-plugin": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz", + "integrity": "sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==", + "dev": true + }, + "@vue/test-utils": { + "version": "1.0.0-beta.29", + "resolved": "https://registry.npmjs.org/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz", + "integrity": "sha512-yX4sxEIHh4M9yAbLA/ikpEnGKMNBCnoX98xE1RwxfhQVcn0MaXNSj1Qmac+ZydTj6VBSEVukchBogXBTwc+9iA==", + "dev": true, + "requires": { + "dom-event-types": "^1.0.0", + "lodash": "^4.17.4" + } + }, + "@vue/web-component-wrapper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.2.0.tgz", + "integrity": "sha512-Xn/+vdm9CjuC9p3Ae+lTClNutrVhsXpzxvoTXXtoys6kVRX9FkueSUAqSWAyZntmVLlR4DosBV4pH8y5Z/HbUw==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.2.tgz", + "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", + "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.7.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.1.tgz", + "integrity": "sha512-w3b5y1PXWlhYulevrTJ0lizkQ5CyqfeU6BIRDbuhsMupstHQOeb1Ur80tcB1zxSu7AwyY/qCQ7Vvqklh31ZBFw==", + "dev": true, + "requires": { + "browserslist": "^4.7.2", + "caniuse-lite": "^1.0.30001006", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.21", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "browserslist": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" + } + }, + "caniuse-lite": { + "version": "1.0.30001008", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001008.tgz", + "integrity": "sha512-b8DJyb+VVXZGRgJUa30cbk8gKHZ3LOZTBLaUEEVr2P4xpmFigOCc62CO4uzquW641Ouq1Rm9N+rWLWdSYDaDIw==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.306", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", + "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", + "dev": true + }, + "node-releases": { + "version": "1.1.39", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz", + "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "axios": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", + "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true + }, + "babel-eslint": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.3.tgz", + "integrity": "sha512-z3U7eMY6r/3f3/JB9mTsLjyxrv0Yb1zb8PCWCLpguxfCzBIZUwy23R1t/XKewP+8mEN2Ck8Dtr4q20z6ce6SoA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-module-resolver": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz", + "integrity": "sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==", + "dev": true, + "requires": { + "find-babel-config": "^1.1.0", + "glob": "^7.1.2", + "pkg-up": "^2.0.0", + "reselect": "^3.0.1", + "resolve": "^1.4.0" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "requires": { + "callsite": "1.0.0" + } + }, + "bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz", + "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", + "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", + "dev": true, + "requires": { + "buffer-json": "^2.0.0", + "find-cache-dir": "^3.0.0", + "loader-utils": "^1.2.3", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.1.0.tgz", + "integrity": "sha512-zw+EFiNBNPgI2NTrKkDd1xd7q0cs6wr/iWnr/oUkI0yF9K9GqQ+riIt4aiyFaaqpaWbxPrJXHI+QvmNUQbX+0Q==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000989", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", + "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz", + "integrity": "sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "check-types": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz", + "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", + "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clamp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", + "integrity": "sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ=" + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.3.tgz", + "integrity": "sha512-0J8L4WOAtC2dqFGCzogKKcZXgjZu67+7gobZlZWEKA9B8VetD2TqVBOpN52pOQHj8oFI6i7sZzjO2CDbT0WryQ==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "highlight.js": "^9.6.0", + "mz": "^2.4.0", + "parse5": "^4.0.0", + "yargs": "^14.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.1.0.tgz", + "integrity": "sha512-Qts4KCLKG+waHc9C4m07weIY8qyeixoS0h6RnbsNVD6Fw+pEZGW3vTyObL3WXpE09Mq4Oi7/lBEyLmOiLtlYWQ==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + } + } + }, + "yargs": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz", + "integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.0" + } + }, + "yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "cli-spinners": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", + "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", + "dev": true + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "clipboardy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.1.0.tgz", + "integrity": "sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==", + "dev": true, + "requires": { + "arch": "^2.1.1", + "execa": "^1.0.0" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + }, + "compressible": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", + "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "dev": true, + "requires": { + "mime-db": ">= 1.40.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "condense-newlines": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/condense-newlines/-/condense-newlines-0.2.1.tgz", + "integrity": "sha1-PemFVTE5R10yUCyDsC9gaE0kxV8=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-whitespace": "^0.3.0", + "kind-of": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.5.tgz", + "integrity": "sha512-7N68eIoQTyudAuxkfPT7HzGoQ+TsmArN/I3HFwG+lVE3FNzqvZKIiaxtYh4o3BIznioxUvx9j26+Rtsc9htQUQ==", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.0", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "serialize-javascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.0.tgz", + "integrity": "sha512-a/mxFfU00QT88umAJQsNWOnUKckhNCqOl028N48e7wFmo2/EHpTo9Wso+iJJCMrQnmFvcjto5RJdAHEvVhcyUQ==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "core-js": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.0.tgz", + "integrity": "sha512-lQxb4HScV71YugF/X28LtePZj9AB7WqOpcB+YztYxusvhrgZiQXPmCYfPC5LHsw/+ScEtDbXU3xbqH3CjBRmYA==" + }, + "core-js-compat": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.4.0.tgz", + "integrity": "sha512-pgQUcgT2+v9/yxHgMynYjNj7nmxLRXv3UC39rjCjDwpe63ev2rioQTju1PKLYUBbPCQQvZNWvQC8tBJd65q11g==", + "dev": true, + "requires": { + "browserslist": "^4.7.2", + "semver": "^6.3.0" + }, + "dependencies": { + "browserslist": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" + } + }, + "caniuse-lite": { + "version": "1.0.30001008", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001008.tgz", + "integrity": "sha512-b8DJyb+VVXZGRgJUa30cbk8gKHZ3LOZTBLaUEEVr2P4xpmFigOCc62CO4uzquW641Ouq1Rm9N+rWLWdSYDaDIw==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.306", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", + "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", + "dev": true + }, + "node-releases": { + "version": "1.1.39", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.39.tgz", + "integrity": "sha512-8MRC/ErwNCHOlAFycy9OPca46fQYUjbJRDcZTHVWIGXIjYLM73k70vv3WkYutVnM4cCo4hE0MqBVVZjP6vjISA==", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.4.0.tgz", + "integrity": "sha512-d49s6GiW3ePYM8vCglfLLo6bueYx+Sff6MYtjohTMSB0AoxVfABXMUSmYHtKAEvW77T9JTKMyHrhE20nZ8gYDA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "http://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.2.0.tgz", + "integrity": "sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.17", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.0", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + }, + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "css-select": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz", + "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^2.1.2", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.37" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "current-script-polyfill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz", + "integrity": "sha1-8xz35PPiGLBybnOMqSoC00iO9hU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", + "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "dev": true + }, + "default-gateway": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.4.tgz", + "integrity": "sha512-RncYZFuHZlB69pT3aAZK/YUjOpllMc3pKm/dIxHR0AyJlhRKSFbLIQbZia1WOrNoY0F1UsqadrHW9mx/lAWAgg==", + "dev": true, + "requires": { + "execa": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.2.0.tgz", + "integrity": "sha512-kJJfVbI/lZE1PZYDI5VPxp8zXPO9rtxOkhpZ0jMKha56AI9y2gGVC6bkukStQf0ka5Rh15BA5m7cCCH4jmHqkw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.0.tgz", + "integrity": "sha512-8eyAOAH+bYXFPSnNnKr3J+yoybe8O87Is5rtAQ8qRczJz1ajcsjg8l2oZqP+Ppx15Ii3S1vUTjQN2h4YO2tWWQ==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz", + "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.1.tgz", + "integrity": "sha512-N7GBZOTswtB9lkQBZA4+zAXrjEIWAUOB93AvzUiudRzRxhUdLURQ7D/gAIMY1gatT/LTbmbcv8SiYazy3eYB7w==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "diff": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", + "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-event-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dom-event-types/-/dom-event-types-1.0.0.tgz", + "integrity": "sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==", + "dev": true + }, + "dom-serializer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", + "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "easy-stack": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", + "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz", + "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.260", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.260.tgz", + "integrity": "sha512-wGt+OivF1C1MPwaSv3LJ96ebNbLAWlx3HndivDDWqwIVSQxmhL17Y/YmwUdEMtS/bPyommELt47Dct0/VZNQBQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io-client": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.3.2.tgz", + "integrity": "sha512-y0CPINnhMvPuwtqXfsGuWE8BB66+B6wTtCofQDRecMQPYX3MYUZXFNKDhdrSe3EVjgOu4V3rxdeqN/Tr91IgbQ==", + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.4.tgz", + "integrity": "sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ==", + "dev": true, + "requires": { + "stackframe": "^1.1.0" + } + }, + "es-abstract": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", + "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.0.0", + "string.prototype.trimright": "^2.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "eslint-config-prettier": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.3.0.tgz", + "integrity": "sha512-EWaGjlDAZRzVFveh2Jsglcere2KK5CJBhkNSa1xs3KfMUGdRiT7lG089eqPdvlzWHpAqaekubOsOMu8W8Yk71A==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + } + } + }, + "eslint-loader": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "dev": true, + "requires": { + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "eslint-plugin-prettier": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.1.tgz", + "integrity": "sha512-A+TZuHZ0KU0cnn56/9mfR7/KjUJ9QNVXUhwvRFSR7PGPe0zQR6PTkmyqg1AtUUEOzTqeRsUwyKFh0oVZKVCrtA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz", + "integrity": "sha512-mGwMqbbJf0+VvpGR5Lllq0PMxvTdrZ/ZPjmhkacrCHbubJeJOt+T6E3HUzAifa2Mxi7RSdJfC9HFpOeSYVMMIw==", + "dev": true, + "requires": { + "vue-eslint-parser": "^5.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extract-from-css": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/extract-from-css/-/extract-from-css-0.4.4.tgz", + "integrity": "sha1-HqffLnx8brmSL6COitrqSG9vj5I=", + "dev": true, + "requires": { + "css": "^2.1.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "^2.0.0" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", + "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dev": true, + "requires": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", + "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.6.0.tgz", + "integrity": "sha512-vqOY5gakcoon2s12V7MMe01OPwfgqulUWFzm+geQaPPOBKjW1I7aqqoBVlU0ECn97liMB0ECs16pRdIGe9qdRw==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^2.0.4", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.0.0.tgz", + "integrity": "sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "dev": true + }, + "handlebars": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.2.tgz", + "integrity": "sha512-29Zxv/cynYB7mkT1rVWQnV7mGX6v7H/miQ6dbEpYTKq5eJBN7PsRB+ViYJlcT6JINTSu4dVB9kOqEun78h6Exg==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "highlight.js": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.16.2.tgz", + "integrity": "sha512-feMUrVLZvjy0oC7FVJQcSQRqbBq9kwqnYE4+Kj9ZjbHh3g+BisiPgF49NyQbVLNdrL/qqZr3Ca9yOKwgn2i/tw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", + "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + }, + "dependencies": { + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + } + } + } + } + }, + "html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", + "dev": true + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", + "dev": true + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-whitespace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-whitespace/-/is-whitespace-0.3.0.tgz", + "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "javascript-stringify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.0.1.tgz", + "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", + "dev": true + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-jsdom-fifteen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fifteen/-/jest-environment-jsdom-fifteen-1.0.0.tgz", + "integrity": "sha512-TNGpp8HUzpvrpweantzipQo6M2YbvmKkj1WGsdf29xpU0fgSa8nrL2fQgZDxpvrh77AexXtuXuwee0cl2iiLvg==", + "dev": true, + "requires": { + "@jest/environment": "^24.3.0", + "@jest/fake-timers": "^24.3.0", + "@jest/types": "^24.3.0", + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^15.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "dev": true + }, + "cssom": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.1.tgz", + "integrity": "sha512-6Aajq0XmukE7HdXUU6IoSWuH1H6gH9z6qmagsstTiN7cW2FNTsb+J2Chs+ufPgZCsV/yo8oaEudQLrb9dGxSVQ==", + "dev": true + }, + "cssstyle": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.0.0.tgz", + "integrity": "sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", + "integrity": "sha512-+SqNqFbwTm/0DC18KYzIsMTnEWpLwJsiasW/O17la4iDRRIO9uaHbvKiAS3AHgTiuuWerK/brj4O6MYZkei9xg==", + "dev": true, + "requires": { + "async-limiter": "^1.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-serializer-vue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jest-serializer-vue/-/jest-serializer-vue-2.0.2.tgz", + "integrity": "sha1-sjjvKGNX7GtIBCG9RxRQUJh9WbM=", + "dev": true, + "requires": { + "pretty": "2.0.0" + } + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jest-transform-stub": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", + "integrity": "sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==", + "dev": true + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + } + }, + "jest-watch-typeahead": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.0.tgz", + "integrity": "sha512-bJR/HPNgOQnkmttg1OkBIrYFAYuxFxExtgQh67N2qPvaWGVC8TCkedRNPKBfmZfVXFD3u2sCH+9OuS5ApBfCgA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.1", + "jest-watcher": "^24.3.0", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "dev": true, + "requires": { + "type-fest": "^0.5.2" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + } + }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-beautify": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz", + "integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~0.5.1", + "nopt": "~4.0.1" + } + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, + "js-message": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", + "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", + "dev": true + }, + "js-queue": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", + "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "dev": true, + "requires": { + "easy-stack": "^1.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "launch-editor": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", + "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "shell-quote": "^1.6.1" + } + }, + "launch-editor-middleware": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", + "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", + "dev": true, + "requires": { + "launch-editor": "^2.2.1" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "loader-fs-cache": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", + "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", + "dev": true + }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", + "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "material-colors": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", + "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.1.tgz", + "integrity": "sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz", + "integrity": "sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-cache": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-4.2.1.tgz", + "integrity": "sha512-BOb67bWg2dTyax5kdef5WfU3X8xu4wPg+zHzkvls0Q/QpYycIFRLEEIdAx9Wma43DxG6Qzn4illdZoYseKWa4A==", + "dev": true, + "requires": { + "clone": "2.x", + "lodash": "^4.17.15" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + } + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-ipc": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", + "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "dev": true, + "requires": { + "event-pubsub": "4.3.0", + "js-message": "1.0.5", + "js-queue": "2.0.0" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz", + "integrity": "sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A==", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true + }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", + "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz", + "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pretty/-/pretty-2.0.0.tgz", + "integrity": "sha1-rbx5YLe7/iiaVX3F9zdhmiINBqU=", + "dev": true, + "requires": { + "condense-newlines": "^0.2.1", + "extend-shallow": "^2.0.1", + "js-beautify": "^1.6.12" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prompts": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", + "integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.3" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react-is": { + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.11.0.tgz", + "integrity": "sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + } + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + } + } }, "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "dev": true, + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "reselect": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-3.0.1.tgz", + "integrity": "sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=", + "dev": true + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true }, "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } }, "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } }, "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } }, "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } }, "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", + "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } }, "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true }, "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sisteransi": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz", + "integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io-client": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", + "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.3.1", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sortablejs": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.1.tgz", + "integrity": "sha512-N6r7GrVmO8RW1rn0cTdvK3JR0BcqecAJ0PmYMCL3ZuqTH3pY+9QyqkmJSkkLyyDvd+AJnwaxTP22Ybr/83V9hQ==" + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", + "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "stackframe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.0.tgz", + "integrity": "sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } }, "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.padend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", + "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "string.prototype.padstart": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.0.0.tgz", + "integrity": "sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.4.3", + "function-bind": "^1.0.2" + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } }, "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } }, "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true }, "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.1.tgz", + "integrity": "sha512-pnzH6dnFEsR2aa2SJaKb1uSCl3QmIsJ8dEkj0Fky+2AwMMcC9doMqLOQIH6wVTEKaVfKVvLSk5qxPBEZT9mywg==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "terser-webpack-plugin": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", + "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.7.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "requires": { - "globule": "^1.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", - "dev": true, - "requires": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, - "gzip-size": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", - "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", - "dev": true, - "requires": { - "duplexer": "^0.1.1", - "pify": "^4.0.1" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", - "dev": true - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "highlight.js": { - "version": "9.15.8", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.8.tgz", - "integrity": "sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-comment-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", - "dev": true - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", - "dev": true, - "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" - }, - "dependencies": { - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - } - } - }, - "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", - "dev": true, - "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", - "dev": true - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "dev": true, - "requires": { - "eventemitter3": "^3.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "dependencies": { + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + } + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", - "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", - "dev": true, - "requires": { - "import-from": "^2.1.0" - } - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-from": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", - "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", - "dev": true - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dev": true, - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", - "integrity": "sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-svg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", - "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", - "dev": true, - "requires": { - "html-comment-regex": "^1.1.0" - } - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "javascript-stringify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-1.6.0.tgz", - "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=", - "dev": true - }, - "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", - "dev": true - }, - "js-message": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", - "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=", - "dev": true - }, - "js-queue": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", - "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", - "dev": true, - "requires": { - "easy-stack": "^1.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "launch-editor": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.2.1.tgz", - "integrity": "sha512-On+V7K2uZK6wK7x691ycSUbLD/FyKKelArkbaAMSSJU8JmqmhwN2+mnJDNINuJWSrh2L0kDk+ZQtbC/gOWUwLw==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "shell-quote": "^1.6.1" - } - }, - "launch-editor-middleware": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.2.1.tgz", - "integrity": "sha512-s0UO2/gEGiCgei3/2UN3SMuUj1phjQN8lcpnvgLSz26fAzNWPQ6Nf/kF5IFClnfU2ehp6LrmKdMU/beveO+2jg==", - "dev": true, - "requires": { - "launch-editor": "^2.2.1" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - }, - "lodash.defaultsdeep": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz", - "integrity": "sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.tail": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", - "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", - "dev": true - }, - "lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" - }, - "lodash.transform": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", - "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loglevel": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz", - "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==", - "dev": true - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lru-cache": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.4.tgz", - "integrity": "sha512-EPstzZ23znHUVLKj+lcXO1KvZkrlw+ZirdwvOmnAnA/1PB4ggyXJ77LRkCqkff+ShQ+cqoxCxLQOh4cKITO5iA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", - "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - } - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - } - }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "dev": true - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, - "requires": { - "mime-db": "~1.37.0" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz", - "integrity": "sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "^2.0.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "normalize-url": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", - "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", - "dev": true, - "requires": { - "prepend-http": "^2.0.0", - "query-string": "^5.0.1", - "sort-keys": "^2.0.0" - } + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "dev": true, - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true - } - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, - "node-forge": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", - "dev": true - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "dev": true, - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "node-ipc": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", - "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", - "dev": true, - "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" - } - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-releases": { - "version": "1.1.23", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz", - "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==", - "dev": true, - "requires": { - "semver": "^5.3.0" - } - }, - "node-sass": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", - "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", - "dev": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.11", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "^2.2.4", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dev": true, + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + } }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", - "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "open": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.3.0.tgz", - "integrity": "sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", - "dev": true - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", - "dev": true - }, - "parallel-transform": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", - "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", - "dev": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "^2.2.0" - } - }, - "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", - "dev": true - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "requires": { - "better-assert": "~1.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "portfinder": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", - "integrity": "sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==", - "dev": true, - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", - "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", - "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", - "dev": true, - "requires": { - "css-unit-converter": "^1.1.1", - "postcss": "^7.0.5", - "postcss-selector-parser": "^5.0.0-rc.4", - "postcss-value-parser": "^3.3.1" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } - }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", - "integrity": "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==", - "dev": true, - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "ts-jest": { + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.1.0.tgz", + "integrity": "sha512-HEGfrIEAZKfu1pkaxB9au17b1d9b56YZSqz5eCVE8mX68+5reOvlM93xGOzzCREIov9mdH7JBG+s0UyNAqr0tQ==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "0.x", + "resolve": "1.x", + "semver": "^5.5", + "yargs-parser": "10.x" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } + "ts-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz", + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "^0.7.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } + "tsconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "requires": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", - "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" - } + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "tslint": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", + "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - } - }, - "postcss-selector-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", - "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", - "dev": true, - "requires": { - "cssesc": "^2.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - }, - "postcss-svgo": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", - "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", - "dev": true, - "requires": { - "is-svg": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, - "prettier": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", - "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==", - "dev": true - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dev": true, - "requires": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-pkg": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.1.1.tgz", - "integrity": "sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^4.0.0", - "type-fest": "^0.4.1" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - }, - "dependencies": { - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } - } - } - }, - "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", - "dev": true - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", - "dev": true, - "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", + "dev": true + }, + "uglify-js": { + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", + "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "dev": true, - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", - "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.0.0", - "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "url-loader": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.2.0.tgz", + "integrity": "sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.4.1" + }, + "dependencies": { + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "^3.0.0" - } - } - } - }, - "sass-loader": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", - "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", - "dev": true, - "requires": { - "clone-deep": "^2.0.1", - "loader-utils": "^1.0.1", - "lodash.tail": "^4.1.1", - "neo-async": "^2.5.0", - "pify": "^3.0.0", - "semver": "^5.5.0" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "^2.1.8", - "source-map": "^0.4.2" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "http://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selfsigned": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", - "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - } - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", - "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", - "dev": true - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", - "dev": true, - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, - "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" - } - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } + "vm-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true + }, + "vue": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", + "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + }, + "vue-class-component": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.1.0.tgz", + "integrity": "sha512-G9152NzUkz0i0xTfhk0Afc8vzdXxDR1pfN4dTwE72cskkgJtdXfrKBkMfGvDuxUh35U500g5Ve4xL8PEGdWeHg==" + }, + "vue-color": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/vue-color/-/vue-color-2.7.0.tgz", + "integrity": "sha512-fak9oPRL3BsYtakTGmWIS2yNRppRYNlMgGGq78CMH34ipU8fLgi/bT9JiSPcscpdTNLGracuOFuZ8OFeml+SQQ==", + "requires": { + "clamp": "^1.0.1", + "lodash.throttle": "^4.0.0", + "material-colors": "^1.0.0", + "tinycolor2": "^1.1.2" + } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "vue-eslint-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-5.0.0.tgz", + "integrity": "sha512-JlHVZwBBTNVvzmifwjpZYn0oPWH2SgWv5dojlZBsrhablDu95VFD+hriB1rQGwbD+bms6g+rAFhQHk6+NyiS6g==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.1.0", + "esquery": "^1.0.1", + "lodash": "^4.17.11" + }, + "dependencies": { + "espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + } + } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-jest": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/vue-jest/-/vue-jest-3.0.5.tgz", + "integrity": "sha512-xWDxde91pDqYBGDlODENZ3ezPgw+IQFoVDtf+5Awlg466w3KvMSqWzs8PxcTeTr+wmAHi0j+a+Lm3R7aUJa1jA==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", + "chalk": "^2.1.0", + "extract-from-css": "^0.4.4", + "find-babel-config": "^1.1.0", + "js-beautify": "^1.6.14", + "node-cache": "^4.1.1", + "object-assign": "^4.1.1", + "source-map": "^0.5.6", + "tsconfig": "^7.0.0", + "vue-template-es2015-compiler": "^1.6.0" + } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "socket.io-client": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.2.0.tgz", - "integrity": "sha512-56ZrkTDbdTLmBIyfFYesgOxsjcLnwAKoN4CiPyTVkMQj3zTUh0QAx3GbvIvLpFEOvQWu92yyWICxB0u7wkVbYA==", - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.3.1", - "has-binary2": "~1.0.2", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "vue-loader": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.7.2.tgz", + "integrity": "sha512-H/P9xt/nkocyu4hZKg5TzPqyCT1oKOaCSk9zs0JCbJuy0Q8KtR0bjJpnT/5R5x/Ckd1GFkkLQnQ1C4x6xXeLZg==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.0.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "socket.io-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", - "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "vue-property-decorator": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-8.3.0.tgz", + "integrity": "sha512-77YtTbZHd5CNiPzbqv51kEgL48yvD2dUDfF28vEyw3MbQ9bBAb/tDyFzskcqjNRbWyXk1vq4oM2CK/LfhxuIBg==", + "requires": { + "vue-class-component": "^7.1.0" + } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } + "vue-router": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.3.tgz", + "integrity": "sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ==" + }, + "vue-slider-component": { + "version": "3.0.42", + "resolved": "https://registry.npmjs.org/vue-slider-component/-/vue-slider-component-3.0.42.tgz", + "integrity": "sha512-dmcGaWxMlBN6ocyjNjFPJuyujhoOXeuGCb/WKCQJqgkgkvG+PD/FzXqPpeTH0U6ivl8+llfr+lQy1zu+skmSsA==", + "requires": { + "vue-property-decorator": "^8.0.0" + } }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } - }, - "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } - }, - "sockjs-client": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", - "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", - "dev": true, - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } + "vue-template-compiler": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz", + "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "sortablejs": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.9.0.tgz", - "integrity": "sha512-Ot6bYJ6PoqPmpsqQYXjn1+RKrY2NWQvQt/o4jfd/UYwVWndyO5EPO8YHbnm5HIykf8ENsm4JUrdAvolPT86yYA==" - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", - "integrity": "sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", - "dev": true - }, - "spdy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", - "integrity": "sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "vuedraggable": { + "version": "2.23.2", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.23.2.tgz", + "integrity": "sha512-PgHCjUpxEAEZJq36ys49HfQmXglattf/7ofOzUrW2/rRdG7tu6fK84ir14t1jYv4kdXewTEa2ieKEAhhEMdwkQ==", + "requires": { + "sortablejs": "^1.10.1" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "vuex": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.1.tgz", + "integrity": "sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg==" + }, + "vuex-module-decorators": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/vuex-module-decorators/-/vuex-module-decorators-0.11.0.tgz", + "integrity": "sha512-mQeH0F9C5eoDvhOxGLxc2eKAA+GT9MvCyauZZtQSvLjN3PX//oj9mlhpmMJH2/q9LOScZ8fBrX1qqd+aOKq/LA==" + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } }, - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", - "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stackframe": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz", - "integrity": "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "string.prototype.padend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", - "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string.prototype.padstart": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.0.0.tgz", - "integrity": "sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.4.3", - "function-bind": "^1.0.2" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", - "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", - "dev": true, - "requires": { - "dot-prop": "^4.1.1", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.2.2.tgz", - "integrity": "sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.28", - "css-url-regex": "^1.1.0", - "csso": "^3.5.1", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "dev": true, - "requires": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "terser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.0.0.tgz", - "integrity": "sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.10" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", - "dev": true, - "requires": { - "cacache": "^11.3.2", - "find-cache-dir": "^2.0.0", - "is-wsl": "^1.1.0", - "loader-utils": "^1.2.3", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", - "source-map": "^0.6.1", - "terser": "^4.0.0", - "webpack-sources": "^1.3.0", - "worker-farm": "^1.7.0" - }, - "dependencies": { - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-loader": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.2.tgz", - "integrity": "sha512-7xpuc9Ifg6WU+QYw/8uUqNdRwMD+N5gjwHKMqETrs96Qn+7BHwECpt2Brzr4HFlf4IAkZsayNhmGdbkBsTJ//w==", - "dev": true, - "requires": { - "loader-runner": "^2.3.1", - "loader-utils": "^1.1.0", - "neo-async": "^2.6.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "thunky": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", - "integrity": "sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tinycolor2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", - "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "dev": true, - "requires": { - "glob": "^7.1.2" - } - }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "ts-loader": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", - "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==", - "dev": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" - } - }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true - }, - "tslint": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.17.0.tgz", - "integrity": "sha512-pflx87WfVoYepTet3xLfDOLDm9Jqi61UXIKePOuca0qoAZyrGWonDG9VTbji58Fy+8gciUn8Bt7y69+KEVjc/w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - } - }, - "tslint-config-prettier": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz", - "integrity": "sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg==", - "dev": true - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-fest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "dependencies": { - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", - "dev": true + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.40.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.40.2.tgz", + "integrity": "sha512-5nIvteTDCUws2DVvP9Qe+JPla7kWPPIDFZv55To7IycHWZ+Z5qBdaBYPyuXWdhggTufZkQwfIK+5rKQTVovm2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + } }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "dev": true, - "requires": { - "mime-db": "1.40.0" - } - } - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.2.tgz", - "integrity": "sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==", - "dev": true - }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true + "webpack-bundle-analyzer": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz", + "integrity": "sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-walk": "^6.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "webpack-chain": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.0.0.tgz", + "integrity": "sha512-NK62XgJOOSmYs4kaXFIKKeClpuOVHY7m6e4XwxbVX/2HAUboH6xFCTVXMVv8+jB6K8o/UGjlo1Cv3XXOyNAAGw==", + "dev": true, + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.0" + } }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", - "dev": true - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - } - } - }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", - "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", - "dev": true - }, - "vue": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", - "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" - }, - "vue-class-component": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-6.3.2.tgz", - "integrity": "sha512-cH208IoM+jgZyEf/g7mnFyofwPDJTM/QvBNhYMjqGB8fCsRyTf68rH2ISw/G20tJv+5mIThQ3upKwoL4jLTr1A==" - }, - "vue-color": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/vue-color/-/vue-color-2.7.0.tgz", - "integrity": "sha512-fak9oPRL3BsYtakTGmWIS2yNRppRYNlMgGGq78CMH34ipU8fLgi/bT9JiSPcscpdTNLGracuOFuZ8OFeml+SQQ==", - "requires": { - "clamp": "^1.0.1", - "lodash.throttle": "^4.0.0", - "material-colors": "^1.0.0", - "tinycolor2": "^1.1.2" - } - }, - "vue-hot-reload-api": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz", - "integrity": "sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==", - "dev": true - }, - "vue-loader": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.7.0.tgz", - "integrity": "sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^2.5.1", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - } - }, - "vue-property-decorator": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-7.3.0.tgz", - "integrity": "sha512-HarXfTQ/Nxm4s/APpAaGIGHq5ZzslApImQy8ZrtkfGamw8rUFAVgMS5C50/AQ80+wfw3Wpnf4bNzbmj75m/k2Q==", - "dev": true, - "requires": { - "vue-class-component": "^6.2.0" - } - }, - "vue-router": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.0.6.tgz", - "integrity": "sha512-Ox0ciFLswtSGRTHYhGvx2L44sVbTPNS+uD2kRISuo8B39Y79rOo0Kw0hzupTmiVtftQYCZl87mwldhh2L9Aquw==" - }, - "vue-slider-component": { - "version": "2.8.16", - "resolved": "https://registry.npmjs.org/vue-slider-component/-/vue-slider-component-2.8.16.tgz", - "integrity": "sha512-06gDoheKMU8TdqjoofIJaYfXw3uuWOXF2I14d/F5yW/8iOxnoI4Ks9WSXy8RWY+gs62GBE6tQXHDSX/H6IOaAw==" - }, - "vue-style-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", - "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", - "dev": true, - "requires": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "vue-template-compiler": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz", - "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "vue-template-es2015-compiler": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", - "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", - "dev": true - }, - "vuedraggable": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.21.0.tgz", - "integrity": "sha512-UDp0epjaZikuInoJA9rlEIJaSTQThabq0R9x7TqBdl0qGVFKKzo6glP6ubfzWBmV4iRIfbSOs2DV06s3B5h5tA==", - "requires": { - "sortablejs": "^1.9.0" - } - }, - "vuex": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.1.tgz", - "integrity": "sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg==" - }, - "vuex-module-decorators": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/vuex-module-decorators/-/vuex-module-decorators-0.9.9.tgz", - "integrity": "sha512-SxCyuv9FEwUc2jKfCtAHaMDwsC0acVLBeZo6OUlrA8e+tzT5qwvnZevrRIpPJY4nfiiBvIBTYFu+3l+c2Bemeg==", - "dev": true - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "version": "4.28.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.28.4.tgz", - "integrity": "sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.7.11", - "@webassemblyjs/helper-module-context": "1.7.11", - "@webassemblyjs/wasm-edit": "1.7.11", - "@webassemblyjs/wasm-parser": "1.7.11", - "acorn": "^5.6.2", - "acorn-dynamic-import": "^3.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^0.4.4", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" - } - }, - "webpack-bundle-analyzer": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz", - "integrity": "sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-walk": "^6.1.1", - "bfj": "^6.1.1", - "chalk": "^2.4.1", - "commander": "^2.18.0", - "ejs": "^2.6.1", - "express": "^4.16.3", - "filesize": "^3.6.1", - "gzip-size": "^5.0.0", - "lodash": "^4.17.10", - "mkdirp": "^0.5.1", - "opener": "^1.5.1", - "ws": "^6.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", - "dev": true - } - } - }, - "webpack-chain": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-4.12.1.tgz", - "integrity": "sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==", - "dev": true, - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^1.6.0" - } - }, - "webpack-dev-middleware": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz", - "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.2", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - } - }, - "webpack-dev-server": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.7.1.tgz", - "integrity": "sha512-GSBjjDMQ+uJI/Rcw/NfXDq5QpfE4HviafCy2SdbJ8Q22MwsnyoHd5TbWRfxgkbklsMx+ZNgWIKK+cB28ynjiDQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.6", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.2.1", - "http-proxy-middleware": "^0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "killable": "^1.0.1", - "loglevel": "^1.6.2", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.20", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.4", - "semver": "^6.1.1", - "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.3.0", - "spdy": "^4.0.0", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.0", - "webpack-log": "^2.0.0", - "yargs": "12.0.5" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "webpack-dev-server": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", + "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.4", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } }, - "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", - "dev": true + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "webpack-merge": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", - "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", - "dev": true, - "requires": { - "lodash": "^4.17.5" - } - }, - "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xmlhttprequest-ssl": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true - }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" - }, - "yorkie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", - "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", - "dev": true, - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + }, + "dependencies": { + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + } + } }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", - "dev": true + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "dev": true, + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } } - } } - } } diff --git a/client/package.json b/client/package.json index 100d67712..d57af478c 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "planarally-client", - "version": "0.17.1", + "version": "0.18.0", "description": "A companion tool for when you travel into the planes.", "scripts": { "serve": "vue-cli-service serve", @@ -8,43 +8,52 @@ "lint": "vue-cli-service lint", "clean": "rimraf ../server/static/js/ && rimraf ../server/static/css/" }, - "repository": { - "type": "git", - "url": "git+https://github.com/Kruptein/PlanarAlly.git" - }, - "bugs": { - "url": "https://github.com/Kruptein/PlanarAlly/issues" - }, - "homepage": "https://github.com/Kruptein/PlanarAlly#readme", "dependencies": { - "axios": "^0.18.1", - "lodash.throttle": "^4.1.1", + "axios": "^0.19.0", + "core-js": "^3.3.2", "socket.io-client": "^2.2.0", "tinycolor2": "^1.4.1", "vue": "^2.6.10", - "vue-class-component": "^6.0.0", + "vue-class-component": "^7.0.2", "vue-color": "^2.7.0", - "vue-router": "^3.0.6", - "vue-slider-component": "^2.8.16", - "vuedraggable": "^2.21.0", - "vuex": "^3.1.1" + "vue-property-decorator": "^8.3.0", + "vue-router": "^3.1.3", + "vue-slider-component": "^3.0.42", + "vuedraggable": "^2.23.2", + "vuex": "^3.0.1", + "vuex-module-decorators": "^0.11.0" }, "devDependencies": { - "@types/lodash": "^4.14.134", + "@types/jest": "^24.0.22", + "@types/lodash": "^4.14.146", "@types/socket.io-client": "^1.4.32", "@types/tinycolor2": "^1.4.2", "@types/vue-color": "^2.4.2", - "@vue/cli-plugin-typescript": "^3.8.1", - "@vue/cli-service": "^3.8.3", - "node-sass": "^4.12.0", - "prettier": "^1.18.2", - "rimraf": "^2.6.3", - "sass-loader": "^7.0.1", - "tslint": "^5.17.0", - "tslint-config-prettier": "^1.18.0", - "typescript": "^3.5.2", - "vue-property-decorator": "^7.3.0", - "vue-template-compiler": "^2.6.10", - "vuex-module-decorators": "^0.9.9" + "@vue/cli-plugin-babel": "^4.0.5", + "@vue/cli-plugin-eslint": "^4.0.5", + "@vue/cli-plugin-typescript": "^4.0.5", + "@vue/cli-plugin-unit-jest": "^4.0.5", + "@vue/cli-service": "^4.0.5", + "@vue/eslint-config-prettier": "^5.0.0", + "@vue/eslint-config-typescript": "^4.0.0", + "@vue/test-utils": "^1.0.0-beta.29", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "^10.0.1", + "eslint": "^5.16.0", + "eslint-plugin-prettier": "^3.1.1", + "eslint-plugin-vue": "^5.2.3", + "prettier": "^1.19.1", + "rimraf": "^3.0.0", + "ts-jest": "^24.1.0", + "typescript": "^3.7.2", + "vue-template-compiler": "^2.6.10" + }, + "bugs": { + "url": "https://github.com/Kruptein/PlanarAlly/issues" + }, + "homepage": "https://github.com/Kruptein/PlanarAlly#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/Kruptein/PlanarAlly.git" } } diff --git a/client/postcss.config.js b/client/postcss.config.js index 961986e2b..a3db8ae97 100644 --- a/client/postcss.config.js +++ b/client/postcss.config.js @@ -1,5 +1,5 @@ module.exports = { - plugins: { - autoprefixer: {} - } -} + plugins: { + autoprefixer: {}, + }, +}; diff --git a/client/src/App.vue b/client/src/App.vue index 659b651ef..a75660af6 100644 --- a/client/src/App.vue +++ b/client/src/App.vue @@ -1,7 +1,7 @@ \ No newline at end of file + diff --git a/client/src/core/components/modals/modal.vue b/client/src/core/components/modals/modal.vue index f6e938663..757a7ba92 100644 --- a/client/src/core/components/modals/modal.vue +++ b/client/src/core/components/modals/modal.vue @@ -1,21 +1,20 @@ - - \ No newline at end of file + diff --git a/client/src/game/ui/initiative/store.ts b/client/src/game/ui/initiative/store.ts new file mode 100644 index 000000000..a90d420ea --- /dev/null +++ b/client/src/game/ui/initiative/store.ts @@ -0,0 +1,57 @@ +import { socket } from "@/game/api/socket"; +import { InitiativeData } from "@/game/comm/types/general"; +import { rootStore } from "@/store"; +import { getModule, Module, Mutation, VuexModule } from "vuex-module-decorators"; + +export function inInitiative(uuid: string): boolean { + return initiativeStore.data.some(d => d.uuid === uuid); +} + +export interface InitiativeState { + data: InitiativeData[]; + currentActor: string | null; + roundCounter: number; +} + +@Module({ dynamic: true, store: rootStore, name: "initiative", namespaced: true }) +class InitiativeStore extends VuexModule implements InitiativeState { + data: InitiativeData[] = []; + currentActor: string | null = null; + roundCounter = 0; + + @Mutation + clear(): void { + this.data = []; + this.currentActor = null; + } + + @Mutation + setCurrentActor(actor: string | null): void { + this.currentActor = actor; + } + + @Mutation + setData(data: InitiativeData[]): void { + this.data = data; + } + + @Mutation + addInitiative(data: InitiativeData): void { + const d = this.data.findIndex(a => a.uuid === data.uuid); + if (d >= 0) return; + if (data.initiative === undefined) data.initiative = 0; + socket.emit("Initiative.Update", data); + } + + @Mutation + setRoundCounter(round: number): void { + this.roundCounter = round; + } + + @Mutation + setTurn(actorId: string | null): void { + this.currentActor = actorId; + } +} + +export const initiativeStore = getModule(InitiativeStore); diff --git a/client/src/game/ui/labels.vue b/client/src/game/ui/labels.vue index c48be52fb..3b4c66d67 100644 --- a/client/src/game/ui/labels.vue +++ b/client/src/game/ui/labels.vue @@ -26,32 +26,29 @@ Del.
- +
@@ -27,39 +44,42 @@ import Vue from "vue"; import Component from "vue-class-component"; +import { mapState } from "vuex"; + import ContextMenu from "@/core/components/contextmenu.vue"; -import Initiative from "@/game/ui/initiative.vue"; -import { getRef } from "@/core/utils"; +import { socket } from "@/game/api/socket"; +import { ServerClient, ServerLocation } from "@/game/comm/types/general"; import { EventBus } from "@/game/event-bus"; import { layerManager } from "@/game/layers/manager"; -import { Shape } from "@/game/shapes/shape"; import { gameStore } from "@/game/store"; +import { cutShapes, deleteShapes, pasteShapes } from "../../shapes/utils"; +import { initiativeStore, inInitiative } from "../initiative/store"; @Component({ components: { ContextMenu, }, + computed: { + ...mapState("game", ["locations", "assets", "notes"]), + }, }) export default class ShapeContext extends Vue { visible = false; x = 0; y = 0; - shape: Shape | null = null; get activeLayer(): string { const layer = layerManager.getLayer(); return layer === undefined ? "" : layer.name; } - open(event: MouseEvent, shape: Shape) { + open(event: MouseEvent) { this.visible = true; this.x = event.pageX; this.y = event.pageY; - this.shape = shape; this.$nextTick(() => (this.$children[0].$el).focus()); } close() { this.visible = false; - this.shape = null; } getLayers() { return layerManager.layers.filter(l => l.selectable && (gameStore.IS_DM || l.playerEditable)); @@ -67,36 +87,63 @@ export default class ShapeContext extends Vue { getActiveLayer() { return layerManager.getLayer(); } + getCurrentLocation() { + return gameStore.locationName; + } getInitiativeWord() { - if (this.shape === null) return ""; - return getRef("initiative").contains(this.shape.uuid) ? "Show" : "Add"; + const layer = layerManager.getLayer()!; + if (layer.selection.length === 1) { + return inInitiative(layer.selection[0].uuid) ? "Show" : "Add"; + } else { + return layer.selection.every(shape => inInitiative(shape.uuid)) ? "Show" : "Add all to"; + } + } + hasSingleShape(): boolean { + const layer = layerManager.getLayer()!; + return layer.selection.length === 1; } setLayer(newLayer: string) { - if (this.shape === null) return; - this.shape.moveLayer(newLayer, true); + const layer = layerManager.getLayer()!; + layer.selection.forEach(shape => shape.moveLayer(newLayer, true)); + this.close(); + } + setLocation(newLocation: string) { + const layer = layerManager.getLayer()!; + cutShapes(); + // Request change to other location + socket.emit("Location.Change", newLocation); + socket.once("Location.Set", (_data: Partial) => { + socket.once("Client.Options.Set", (_options: ServerClient) => { + layer.selection = pasteShapes(layer.name); + layerManager.selectLayer(layer.name); + }); + }); this.close(); } moveToBack() { - if (this.shape === null) return; const layer = this.getActiveLayer()!; - layer.moveShapeOrder(this.shape, 0, true); + layer.selection.forEach(shape => layer.moveShapeOrder(shape, 0, true)); this.close(); } moveToFront() { - if (this.shape === null) return; const layer = this.getActiveLayer()!; - layer.moveShapeOrder(this.shape, layer.shapes.length - 1, true); + layer.selection.forEach(shape => layer.moveShapeOrder(shape, layer.shapes.length - 1, true)); this.close(); } addInitiative() { - if (this.shape === null) return; - const initiative = getRef("initiative"); - if (!initiative.contains(this.shape.uuid)) initiative.addInitiative(this.shape.getInitiativeRepr()); - initiative.visible = true; + const layer = layerManager.getLayer()!; + layer.selection.forEach(shape => initiativeStore.addInitiative(shape.getInitiativeRepr())); + EventBus.$emit("Initiative.Show"); + this.close(); + } + deleteSelection() { + deleteShapes(); this.close(); } openEditDialog() { - EventBus.$emit("EditDialog.Open", this.shape); + const layer = layerManager.getLayer()!; + if (layer.selection.length !== 1) return; + EventBus.$emit("EditDialog.Open", layer.selection[0]); this.close(); } } @@ -112,4 +159,4 @@ export default class ShapeContext extends Vue { .ContextMenu ul li:hover { background-color: #82c8a0; } - \ No newline at end of file + diff --git a/client/src/game/ui/tools/createtoken_modal.vue b/client/src/game/ui/tools/createtoken_modal.vue index f3b94029f..6339823ca 100644 --- a/client/src/game/ui/tools/createtoken_modal.vue +++ b/client/src/game/ui/tools/createtoken_modal.vue @@ -7,16 +7,18 @@ draggable="true" @dragstart="m.dragStart" @dragend="m.dragEnd" - >Create basic token
+ > + Create basic token + @@ -66,15 +68,15 @@ export default class CreateTokenModal extends Vue { } @Watch("text") - onTextChange(newValue: string, oldValue: string) { + onTextChange(_newValue: string, _oldValue: string) { this.updatePreview(); } @Watch("fillColour") - onFillChange(newValue: string, oldValue: string) { + onFillChange(_newValue: string, _oldValue: string) { this.updatePreview(); } @Watch("borderColour") - onBorderChange(newValue: string, oldValue: string) { + onBorderChange(_newValue: string, _oldValue: string) { this.updatePreview(); } @@ -114,15 +116,14 @@ export default class CreateTokenModal extends Vue { ctx.beginPath(); ctx.lineWidth = 5; ctx.strokeStyle = this.borderColour; - ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI); + ctx.arc(dest.x, dest.y, r - 2.5, 0, 2 * Math.PI); ctx.stroke(); } ctx.save(); ctx.textAlign = "center"; ctx.textBaseline = "middle"; - const xs = calcFontScale(ctx, this.text, r, r); - const ys = 0; - ctx.transform(xs, ys, -ys, xs, dest.x, dest.y); + const fontScale = calcFontScale(ctx, this.text, r - 2.5); + ctx.setTransform(fontScale, 0, 0, fontScale, dest.x, dest.y); ctx.fillStyle = tinycolor.mostReadable(this.fillColour, ["#000", "#fff"]).toHexString(); ctx.fillText(this.text, 0, 0); ctx.restore(); @@ -163,4 +164,4 @@ canvas { align-items: center; justify-content: space-between; } - \ No newline at end of file + diff --git a/client/src/game/ui/tools/selectcontext.vue b/client/src/game/ui/tools/defaultcontext.vue similarity index 73% rename from client/src/game/ui/tools/selectcontext.vue rename to client/src/game/ui/tools/defaultcontext.vue index 78555f63c..038bd25f5 100644 --- a/client/src/game/ui/tools/selectcontext.vue +++ b/client/src/game/ui/tools/defaultcontext.vue @@ -1,9 +1,9 @@ \ No newline at end of file + diff --git a/client/src/game/ui/tools/tool.vue b/client/src/game/ui/tools/tool.vue index e47d8c470..1480a18b5 100644 --- a/client/src/game/ui/tools/tool.vue +++ b/client/src/game/ui/tools/tool.vue @@ -1,9 +1,13 @@ - + diff --git a/client/src/game/ui/tools/tools.vue b/client/src/game/ui/tools/tools.vue index dfbbd9b8b..be6ef7acc 100644 --- a/client/src/game/ui/tools/tools.vue +++ b/client/src/game/ui/tools/tools.vue @@ -5,7 +5,7 @@
  • + + - - diff --git a/client/src/game/units.ts b/client/src/game/units.ts index e9fbdb3d2..07713765c 100644 --- a/client/src/game/units.ts +++ b/client/src/game/units.ts @@ -8,23 +8,23 @@ export function g2l(obj: GlobalPoint): LocalPoint { return new LocalPoint((obj.x + panX) * z, (obj.y + panY) * z); } -export function g2lx(x: number) { +export function g2lx(x: number): number { return g2l(new GlobalPoint(x, 0)).x; } -export function g2ly(y: number) { +export function g2ly(y: number): number { return g2l(new GlobalPoint(0, y)).y; } -export function g2lz(z: number) { +export function g2lz(z: number): number { return z * gameStore.zoomFactor; } -export function getUnitDistance(r: number) { +export function getUnitDistance(r: number): number { return (r / gameStore.unitSize) * gameStore.gridSize; } -export function g2lr(r: number) { +export function g2lr(r: number): number { return g2lz(getUnitDistance(r)); } @@ -41,19 +41,19 @@ export function l2g(obj: LocalPoint | Ray): GlobalPoint | Ray, stopOnFirstHit?: boolean) { + intersect( + ray: Ray, + stopOnFirstHit?: boolean, + ): { hit: boolean; intersect: GlobalPoint; tMin: number; tMax: number } { if (this.nodes.length === 0) return { hit: false, intersect: ray.get(0), tMin: 0, tMax: ray.tMax }; if (stopOnFirstHit === undefined) stopOnFirstHit = false; // Initialize return values @@ -137,34 +139,36 @@ export class BoundingVolume { return { hit, intersect: ray.get(tMin), tMin, tMax }; } - private compact() { + private compact(): void { this.offset = 0; if (this.root !== null) this.flatten(this.root); } - private flatten(node: BoundingNode) { + private flatten(node: BoundingNode): number { const index = this.offset; const myOffset = this.offset++; if (node.nPrimitives === 0) { this.flatten(node.children[0]); const secondOffset = this.flatten(node.children[1]); - this.nodes[index] = { + const linearNode: LinearInternalNode = { bbox: node.bbox, dimension: (node).dimension, nPrimitives: 0, secondChildOffset: secondOffset, }; + this.nodes[index] = linearNode; } else { - this.nodes[index] = { + const leafNode: LinearLeafNode = { bbox: node.bbox, primitivesOffset: (node).firstPrimOffset, nPrimitives: node.nPrimitives, }; + this.nodes[index] = leafNode; } return myOffset; } - private createLeaf(start: number, end: number, nPrimitives: number, bbox: BoundingRect) { + private createLeaf(start: number, end: number, nPrimitives: number, bbox: BoundingRect): LeafNode { const size = this.orderedPrims.length; for (let i = start; i < end; i++) this.orderedPrims.push(this.shapes[this.buildData[i].index]); return new LeafNode(size, nPrimitives, bbox); diff --git a/client/src/game/visibility/store.ts b/client/src/game/visibility/store.ts new file mode 100644 index 000000000..3697b29f8 --- /dev/null +++ b/client/src/game/visibility/store.ts @@ -0,0 +1,49 @@ +import { socket } from "@/game/api/socket"; +import { rootStore } from "@/store"; +import { Action, getModule, Module, Mutation, VuexModule } from "vuex-module-decorators"; +import { BoundingVolume } from "./bvh/bvh"; +import { triangulate, TriangulationTarget } from "./te/pa"; + +export interface VisibilityState { + visionMode: "bvh" | "triangle"; + visionBlockers: string[]; +} + +@Module({ dynamic: true, store: rootStore, name: "visibility", namespaced: true }) +class VisibilityStore extends VuexModule implements VisibilityState { + BV = Object.freeze(new BoundingVolume([])); + + visionMode: "bvh" | "triangle" = "bvh"; + visionBlockers: string[] = []; + movementblockers: string[] = []; + visionSources: { shape: string; aura: string }[] = []; + + @Mutation + setVisionMode(data: { mode: "bvh" | "triangle"; sync: boolean }): void { + this.visionMode = data.mode; + // eslint-disable-next-line @typescript-eslint/camelcase + if (data.sync) socket.emit("Location.Options.Set", { vision_mode: data.mode }); + } + + @Mutation + recalculateVision(): void { + if (this.visionMode === "triangle") triangulate(TriangulationTarget.VISION); + else this.BV = Object.freeze(new BoundingVolume(this.visionBlockers)); + } + + @Mutation + recalculateMovement(): void { + if (this.visionMode === "triangle") triangulate(TriangulationTarget.MOVEMENT); + } + + @Action + clear(): void { + (this.context.state).visionBlockers = []; + (this.context.state).visionSources = []; + (this.context.state).movementblockers = []; + this.context.commit("recalculateVision"); + this.context.commit("recalculateMovement"); + } +} + +export const visibilityStore = getModule(VisibilityStore); diff --git a/client/src/game/visibility/te/cdt.ts b/client/src/game/visibility/te/cdt.ts index 79204cbd1..b200d20ce 100644 --- a/client/src/game/visibility/te/cdt.ts +++ b/client/src/game/visibility/te/cdt.ts @@ -29,13 +29,13 @@ export class CDT { constructor() { this.tds = new TDS(); } - insertConstraint(a: Point, b: Point) { + insertConstraint(a: Point, b: Point): void { const va = this.insert(a); const vb = this.insert(b); if (va !== vb) this.insertConstraintV(va, vb); } - insertConstraintV(va: Vertex, vb: Vertex) { + insertConstraintV(va: Vertex, vb: Vertex): void { const stack = [[va, vb]]; while (stack.length > 0) { const v = stack.pop()!; @@ -64,13 +64,13 @@ export class CDT { } } - triangulateHole(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[]) { + triangulateHole(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[]): void { const edges: Edge[] = []; this.triangulateHole2(intersectedFaces, listAB, listBA, edges); this.propagatingFlipE(edges); } - triangulateHole2(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[], edges: Edge[]) { + triangulateHole2(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[], edges: Edge[]): void { if (listAB.length > 0) { this.triangulateHalfHole(listAB, edges); this.triangulateHalfHole(listBA, edges); @@ -87,13 +87,13 @@ export class CDT { } } - triangulateHalfHole(conflictBoundaries: Edge[], edges: Edge[]) { + triangulateHalfHole(conflictBoundaries: Edge[], edges: Edge[]): void { let iC = 0; let iN: number; let iT: number; - const current = () => conflictBoundaries[iC]; - const next = () => conflictBoundaries[iN]; - const tempo = () => conflictBoundaries[iT]; + const current = (): [Triangle, number] => conflictBoundaries[iC]; + const next = (): [Triangle, number] => conflictBoundaries[iN]; + // const tempo = (): [Triangle, number] => conflictBoundaries[iT]; const va = current()[0].vertices[ccw(current()[1])]!; iN = iC; @@ -158,7 +158,10 @@ export class CDT { } while (iN < conflictBoundaries.length); } - findIntersectedFaces(vaa: Vertex, vbb: Vertex) { + findIntersectedFaces( + vaa: Vertex, + vbb: Vertex, + ): { found: boolean; vi: Vertex; listAB: Edge[]; listBA: Edge[]; intersectedFaces: Triangle[] } { const aa = vaa.point!; const bb = vbb.point!; const listAB: Edge[] = []; @@ -257,12 +260,12 @@ export class CDT { return vi; } - removeConstrainedEdge(t: Triangle, i: number) { + removeConstrainedEdge(t: Triangle, i: number): void { t.constraints[i] = false; if (this.tds.dimension === 2) t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = false; } - updateConstraintsOpposite(v: Vertex) { + updateConstraintsOpposite(v: Vertex): void { let t = v.triangle!; const start = t; let indf: number; @@ -274,7 +277,7 @@ export class CDT { } while (t !== start); } - markConstraint(t: Triangle, i: number) { + markConstraint(t: Triangle, i: number): void { if (this.tds.dimension === 1) t.constraints[2] = true; else { t.constraints[i] = true; @@ -282,14 +285,14 @@ export class CDT { } } - insert(p: Point, start: Triangle | null = null) { + insert(p: Point, start: Triangle | null = null): Vertex { const locateInfo = this.locate(p, this.iLocate(p, start)); const va = this.insertb(p, locateInfo.loc, locateInfo.lt, locateInfo.li); this.flipAround(va); return va; } - flipAround(v: Vertex) { + flipAround(v: Vertex): void { if (this.tds.dimension <= 1) return; let t = v.triangle!; let i: number; @@ -303,12 +306,11 @@ export class CDT { } while (next !== start); } - propagatingFlip(t: Triangle, i: number, depth = 0) { + propagatingFlip(t: Triangle, i: number, depth = 0): void { if (!this.isFlipable(t, i)) return; const maxDepth = 100; if (depth === maxDepth) { throw new Error("maxde"); - return; } const ni = t.neighbours[i]!; this.flip(t, i); @@ -317,13 +319,13 @@ export class CDT { this.propagatingFlip(ni, i, depth + 1); } - lessEdge(e1: Edge, e2: Edge) { + lessEdge(e1: Edge, e2: Edge): boolean { const ind1 = e1[1]; const ind2 = e2[1]; return e1[0].uid < e2[0].uid || (e1[0].uid === e2[0].uid && ind1 < ind2); } - propagatingFlipE(edges: Edge[]) { + propagatingFlipE(edges: Edge[]): void { let eI = 0; let t: Triangle; let i: number; @@ -350,7 +352,10 @@ export class CDT { ni = t.neighbours[indf]!; indn = this.tds.mirrorIndex(t, indf); ei = [t, indf]; - edgeSet.splice(edgeSet.findIndex(ed => ed[0] === ei[0] && ed[1] === ei[1]), 1); + edgeSet.splice( + edgeSet.findIndex(ed => ed[0] === ei[0] && ed[1] === ei[1]), + 1, + ); e[0] = [t, cw(indf)]; e[1] = [t, ccw(indf)]; e[2] = [ni, cw(indn)]; @@ -361,8 +366,15 @@ export class CDT { const ii = edge![1]; eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)]; if (this.lessEdge(edge!, eni)) - edgeSet.splice(edgeSet.findIndex(ed => ed[0] === edge![0] && ed[1] === edge![1]), 1); - else edgeSet.splice(edgeSet.findIndex(ed => ed[0] === eni[0] && ed[1] === eni[1]), 1); + edgeSet.splice( + edgeSet.findIndex(ed => ed[0] === edge![0] && ed[1] === edge![1]), + 1, + ); + else + edgeSet.splice( + edgeSet.findIndex(ed => ed[0] === eni[0] && ed[1] === eni[1]), + 1, + ); } this.flip(t, indf); @@ -379,7 +391,7 @@ export class CDT { } } - flip(t: Triangle, i: number) { + flip(t: Triangle, i: number): void { const u = t.neighbours[i]!; const j = this.tds.mirrorIndex(t, i); const t1 = t.neighbours[cw(i)]!; @@ -399,7 +411,7 @@ export class CDT { t4.neighbours[i4]!.constraints[this.tds.mirrorIndex(t4, i4)] = t4.constraints[i4]; } - isFlipable(t: Triangle, i: number, perturb = true) { + isFlipable(t: Triangle, i: number, perturb = true): boolean { const ni = t.neighbours[i]!; if (t.isInfinite() || ni.isInfinite()) return false; if (t.constraints[i]) return false; @@ -422,7 +434,7 @@ export class CDT { return va; } - updateConstraintsIncident(va: Vertex, c1: Vertex, c2: Vertex) { + updateConstraintsIncident(va: Vertex, c1: Vertex, c2: Vertex): void { if (this.tds.dimension === 0) return; if (this.tds.dimension === 1) { const ec = new EdgeCirculator(va, null); @@ -446,7 +458,7 @@ export class CDT { } } - clearConstraintsIncident(v: Vertex) { + clearConstraintsIncident(v: Vertex): void { const ec = new EdgeCirculator(v, null); if (ec.valid) { do { @@ -483,7 +495,6 @@ export class CDT { } } throw new Error("qwe"); - return new Vertex(); } insertInEdge(p: Point, loc: Triangle, li: number): Vertex { @@ -578,7 +589,10 @@ export class CDT { return v; } - locate(p: Point, start: Triangle | null) { + locate( + p: Point, + start: Triangle | null, + ): { loc: Triangle; lt: LocateType; li: number } | { loc: null; lt: number; li: number } { let lt = 0; let li = 0; if (this.tds.dimension < 0) { @@ -605,23 +619,31 @@ export class CDT { return this.marchLocate2D(start, p); } - marchLocate1D(p: Point) { - const ff = this.tds._infinite.triangle!; - const iv = ff.indexV(this.tds._infinite); - const t = ff.neighbours[iv]!; + marchLocate1D(p: Point): { loc: Triangle; lt: LocateType; li: number } { + let ff = this.tds._infinite.triangle!; + let iv = ff.indexV(this.tds._infinite); + let t = ff.neighbours[iv]!; const pqt = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p); if (pqt === Sign.RIGHT_TURN || pqt === Sign.LEFT_TURN) { return { loc: new Triangle(), lt: LocateType.OUTSIDE_AFFINE_HULL, li: 4 }; } - const i = t.indexT(ff); + let i = t.indexT(ff); if (collinearBetween(p, t.vertices[1 - i]!.point!, t.vertices[i]!.point!)) return { loc: ff, lt: LocateType.OUTSIDE_CONVEX_HULL, li: iv }; if (xyEqual(p, t.vertices[1 - i]!.point!)) return { loc: t, lt: LocateType.VERTEX, li: 1 - i }; + + ff = ff.neighbours[1 - iv]!; + iv = ff.indexV(this.tds._infinite); + t = ff.neighbours[iv]!; + i = t.indexT(ff); + if (collinearBetween(p, t.vertices[1 - i]!.point!, t.vertices[i]!.point!)) + return { loc: ff, lt: LocateType.OUTSIDE_CONVEX_HULL, li: iv }; + if (xyEqual(p, t.vertices[1 - i]!.point!)) return { loc: t, lt: LocateType.VERTEX, li: 1 - i }; throw new Error("sdfsdf"); } - marchLocate2D(c: Triangle, p: Point) { + marchLocate2D(c: Triangle, p: Point): { loc: Triangle; lt: LocateType; li: number } { let prev = null; let first = true; let lt: LocateType | undefined; @@ -762,7 +784,7 @@ export class CDT { } } - iLocate(p: Point, start: Triangle | null) { + iLocate(p: Point, start: Triangle | null): Triangle | null { if (this.tds.dimension < 2) return start; if (start === null) { const t = this.tds._infinite.triangle!; diff --git a/client/src/game/visibility/te/draw.ts b/client/src/game/visibility/te/draw.ts index af0d2384a..642ad0558 100644 --- a/client/src/game/visibility/te/draw.ts +++ b/client/src/game/visibility/te/draw.ts @@ -3,7 +3,7 @@ import { g2lx, g2ly } from "@/game/units"; import { EdgeIterator, TDS } from "./tds"; import { ccw, cw } from "./triag"; -export function drawPolygon(polygon: number[][], colour?: string) { +export function drawPolygon(polygon: number[][], colour?: string): void { const dl = layerManager.getLayer("draw"); if (dl === undefined) return; const ctx = dl.ctx; @@ -21,7 +21,7 @@ export function drawPolygon(polygon: number[][], colour?: string) { ctx.stroke(); } -export function drawPolygonL(polygon: number[][], colour?: string) { +export function drawPolygonL(polygon: number[][], colour?: string): void { const dl = layerManager.getLayer("draw"); if (dl === undefined) return; const ctx = dl.ctx; @@ -39,12 +39,12 @@ export function drawPolygonL(polygon: number[][], colour?: string) { ctx.stroke(); } -function x(xx: number, local: boolean) { +function x(xx: number, local: boolean): number { if (local) return xx; else return g2lx(xx); } -function y(yy: number, local: boolean) { +function y(yy: number, local: boolean): number { if (local) return yy; else return g2ly(yy); } @@ -52,7 +52,7 @@ function y(yy: number, local: boolean) { let I = 0; let J = 0; -function drl(ctx: CanvasRenderingContext2D, from: number[], to: number[], constrained: boolean, local: boolean) { +function drl(ctx: CanvasRenderingContext2D, from: number[], to: number[], constrained: boolean, local: boolean): void { // J++; // if (constrained) { // I++; @@ -68,7 +68,7 @@ function drl(ctx: CanvasRenderingContext2D, from: number[], to: number[], constr ctx.stroke(); } -function drawPolygonT(tds: TDS, local = true, clear = true, logs: 0 | 1 | 2 = 0) { +function drawPolygonT(tds: TDS, local = true, clear = true, logs: 0 | 1 | 2 = 0): void { I = 0; J = 0; let T = 0; diff --git a/client/src/game/visibility/te/pa.ts b/client/src/game/visibility/te/pa.ts index feb3de886..41b2f4a39 100644 --- a/client/src/game/visibility/te/pa.ts +++ b/client/src/game/visibility/te/pa.ts @@ -1,24 +1,29 @@ import { layerManager } from "@/game/layers/manager"; -import { gameStore } from "@/game/store"; - +import { visibilityStore } from "../store"; import { CDT } from "./cdt"; +export enum TriangulationTarget { + VISION = "vision", + MOVEMENT = "movement", +} + export let PA_CDT = { vision: new CDT(), movement: new CDT(), }; -export function triangulate(target: "vision" | "movement", partial: boolean = false) { +export function triangulate(target: TriangulationTarget, partial: boolean = false): void { const cdt = new CDT(); - + PA_CDT[target] = cdt; let shapes; - if (target === "vision") shapes = gameStore.visionBlockers; - else shapes = gameStore.movementblockers; + if (target === "vision") shapes = visibilityStore.visionBlockers; + else shapes = visibilityStore.movementblockers; for (const sh of shapes) { const shape = layerManager.UUIDMap.get(sh)!; if (partial && !shape.visibleInCanvas(layerManager.getLayer()!.canvas)) continue; - for (let i = 0; i < shape.points.length; i++) { + const j = shape.isClosed ? 0 : 1; + for (let i = 0; i < shape.points.length - j; i++) { cdt.insertConstraint(shape.points[i], shape.points[(i + 1) % shape.points.length]); } } @@ -42,6 +47,5 @@ export function triangulate(target: "vision" | "movement", partial: boolean = fa cdt.insertConstraint([1e8, 1e8], [1e8, 1e11]); cdt.insertConstraint([1e8, 1e11], [-1e8, 1e11]); cdt.insertConstraint([-1e8, 1e11], [-1e8, 1e8]); - PA_CDT[target] = cdt; (window).CDT = PA_CDT; } diff --git a/client/src/game/visibility/te/tds.ts b/client/src/game/visibility/te/tds.ts index 32baa200a..30494ece7 100644 --- a/client/src/game/visibility/te/tds.ts +++ b/client/src/game/visibility/te/tds.ts @@ -61,11 +61,11 @@ export class Triangle { return this; } - get dimension() { + get dimension(): number { return this.vertices.length - 1; } - addVertex(vertex: Vertex) { + addVertex(vertex: Vertex): void { if (vertex === undefined) { console.log("UNDEFINED HIERE"); } @@ -77,7 +77,7 @@ export class Triangle { return this.constraints[index]; } - reorient() { + reorient(): void { // If certain indices do not exist yet thay will append faulty undefined's, thus we slice them this.vertices = [this.vertices[1], this.vertices[0], this.vertices[2]].slice(0, this.vertices.length); this.neighbours = [this.neighbours[1], this.neighbours[0], this.neighbours[2]]; @@ -100,7 +100,7 @@ export class Triangle { } } - contains(point: Point) { + contains(point: Point): boolean { const A = -this.vertices[1]!.point![1] * this.vertices[2]!.point![0] + this.vertices[0]!.point![1] * (-this.vertices[1]!.point![0] + this.vertices[2]!.point![0]) + @@ -174,7 +174,7 @@ export class EdgeCirculator { this._t = this.t; } - get valid() { + get valid(): boolean { return this.t !== null && this.v !== null; } @@ -217,7 +217,7 @@ export class EdgeIterator { return (this.pos !== null || this._es !== this.edge.second) && this.pos!.isInfinite(this.edge.second); } - next() { + next(): void { do { this.increment(); } while (this.pos !== null && !this.associatedEdge()); @@ -235,7 +235,7 @@ export class EdgeIterator { ); } - increment() { + increment(): void { if (this.tds.dimension === 1) { this.i++; if (this.tds.triangles.length <= this.i) this.pos = null; @@ -273,11 +273,11 @@ export class FaceCirculator { this._t = this.t; } - get valid() { + get valid(): boolean { return this.t !== null && this.v !== null; } - prev() { + prev(): void { const i = this.t!.indexV(this.v!); this.t = this.t!.neighbours[cw(i)]; } @@ -356,11 +356,11 @@ export class LineFaceCirculator { } } - next() { + next(): void { this.increment(); } - increment() { + increment(): void { let o: Sign; if (this.s === LineFaceState.VERTEX_VERTEX || this.s === LineFaceState.EDGE_VERTEX) { do { @@ -452,7 +452,7 @@ export class TDS { n0: Triangle | null, n1: Triangle | null, n2: Triangle | null, - ) { + ): Triangle { const t = new Triangle(v0, v1, v2); t.neighbours[0] = n0; t.neighbours[1] = n1; @@ -461,11 +461,11 @@ export class TDS { return t; } - deleteTriangle(trig: Triangle) { + deleteTriangle(trig: Triangle): void { this.triangles = this.triangles.filter(t => t !== trig); } - setAdjacency(t0: Triangle, i0: number, t1: Triangle, i1: number) { + setAdjacency(t0: Triangle, i0: number, t1: Triangle, i1: number): void { t0.neighbours[i0] = t1; t1.neighbours[i1] = t0; } @@ -566,7 +566,7 @@ export class TDS { return ccw(t.neighbours[i]!.indexV(t.vertices[ccw(i)]!)); } - insertInFace(t: Triangle) { + insertInFace(t: Triangle): Vertex { const v = this.createVertex(); const v0 = t.vertices[0]!; const v1 = t.vertices[1]!; @@ -592,7 +592,7 @@ export class TDS { return v; } - flip(t: Triangle, i: number) { + flip(t: Triangle, i: number): void { const n = t.neighbours[i]!; const ni = this.mirrorIndex(t, i); const vCW = t.vertices[cw(i)]!; @@ -613,7 +613,7 @@ export class TDS { if (vCCW.triangle! === n) vCCW.triangle = t; } - insertInEdge(t: Triangle, i: number) { + insertInEdge(t: Triangle, i: number): Vertex { let v: Vertex; if (this.dimension === 1) { v = this.createVertex(); @@ -647,7 +647,7 @@ export class BoundingBox { this.y2 = p[1]; } - dilate(dist: number) { + dilate(dist: number): void { this.x1 -= dist * ulp(this.x1); this.y1 -= dist * ulp(this.y1); this.x2 += dist * ulp(this.x2); diff --git a/client/src/game/visibility/te/te.ts b/client/src/game/visibility/te/te.ts index 38badb734..6ba12f46a 100644 --- a/client/src/game/visibility/te/te.ts +++ b/client/src/game/visibility/te/te.ts @@ -109,7 +109,7 @@ function expandEdge( } } -function raySegIntersection(q: Point, b: Point, s: Point, t: Point) { +function raySegIntersection(q: Point, b: Point, s: Point, t: Point): Point { const denominator = (t[1] - s[1]) * (b[0] - q[0]) - (t[0] - s[0]) * (b[1] - q[1]); const ua = ((t[0] - s[0]) * (q[1] - s[1]) - (t[1] - s[1]) * (q[0] - s[0])) / denominator; // const ub = ((b[0] - q.x) * (q.y - s[1]) - (b[1] - q.y) * (q.x - s[0])) / denominator; diff --git a/client/src/game/visibility/te/triag.ts b/client/src/game/visibility/te/triag.ts index a9c94a927..a523272d1 100644 --- a/client/src/game/visibility/te/triag.ts +++ b/client/src/game/visibility/te/triag.ts @@ -1,16 +1,20 @@ +import { GlobalPoint, Ray } from "@/game/geom"; import { EdgeCirculator, Point, Sign, Triangle, Vertex } from "./tds"; type Line = number[]; -export function cw(index: number) { +export function cw(index: number): number { return (index + 2) % 3; } -export function ccw(index: number) { +export function ccw(index: number): number { return (index + 1) % 3; } -export function edgeInfo(va: Vertex, vb: Vertex) { +export function edgeInfo( + va: Vertex, + vb: Vertex, +): { includes: false } | { includes: true; vi: Vertex; fr: Triangle; i: number } { const ec = new EdgeCirculator(va, null); if (ec.valid) { do { @@ -50,7 +54,7 @@ function compare(index: number, a: Point, b: Point): Sign { return Sign.EQUAL; } -export function orientation(p: Point, q: Point, r: Point) { +export function orientation(p: Point, q: Point, r: Point): Sign { const px = p[0]; const py = p[1]; const qx = q[0]; @@ -82,11 +86,11 @@ export function orientation(p: Point, q: Point, r: Point) { return Sign.ZERO; } -export function determinant(a00: number, a01: number, a10: number, a11: number) { +export function determinant(a00: number, a01: number, a10: number, a11: number): number { return a00 * a11 - a01 * a10; } -export function hasInexactNegativeOrientation(p: Point, q: Point, r: Point) { +export function hasInexactNegativeOrientation(p: Point, q: Point, r: Point): boolean { return determinant(q[0] - p[0], q[1] - p[1], r[0] - p[0], r[1] - p[1]) < 0; } @@ -96,7 +100,7 @@ export function sideOfOrientedCircle(t: Triangle, p: Point, perturb: boolean): S throw new Error("SSS"); } -function sideOfOrientedCircleP(p0: Point, p1: Point, p2: Point, p: Point, perturb: boolean): Sign { +export function sideOfOrientedCircleP(p0: Point, p1: Point, p2: Point, p: Point, perturb: boolean): Sign { const os = getOrientedSide(p0, p1, p2, p); if (os !== Sign.ON_ORIENTED_BOUNDARY || !perturb) return os; const points = [p0, p1, p2, p]; @@ -113,15 +117,15 @@ function sideOfOrientedCircleP(p0: Point, p1: Point, p2: Point, p: Point, pertur return Sign.ON_NEGATIVE_SIDE; } -export function xyEqual(p: Point, q: Point) { +export function xyEqual(p: Point, q: Point): boolean { return p[0] === q[0] && p[1] === q[1]; } -export function xySmaller(p: Point, q: Point) { +export function xySmaller(p: Point, q: Point): boolean { return p[0] < q[0] || (p[0] === q[0] && p[1] < q[1]); } -export function xyCompare(p: Point, q: Point) { +export function xyCompare(p: Point, q: Point): Sign { if (xySmaller(p, q)) return Sign.SMALLER; if (xyEqual(p, q)) return Sign.EQUAL; return Sign.LARGER; @@ -196,7 +200,7 @@ function segSegDoIntersectContained(p1: Point, p2: Point, p3: Point, p4: Point): } } -export function intersection(pa: Point, pb: Point, pc: Point, pd: Point) { +export function intersection(pa: Point, pb: Point, pc: Point, pd: Point): Point | null { const i = getIntersectionType(pa, pb, pc, pd); switch (i.intersectionType) { case IntersectionType.POINT: @@ -221,7 +225,12 @@ function getLine(p0: Point, p1: Point): Line { return [-y, x, -x * p0[1] + y * p0[0]]; } -function getIntersectionType(pa: Point, pb: Point, pc: Point, pd: Point) { +function getIntersectionType( + pa: Point, + pb: Point, + pc: Point, + pd: Point, +): { intersectionType: IntersectionType; point: Point | null } { if (!doIntersect(pa, pb, pc, pd)) return { intersectionType: IntersectionType.NO_INTERSECTION, point: null }; const l1 = getLine(pa, pb); const l2 = getLine(pc, pd); @@ -234,7 +243,7 @@ function getIntersectionType(pa: Point, pb: Point, pc: Point, pd: Point) { throw new Error("gzseuihgpib"); } -function getIntersectionTypeLine(la: Line, lb: Line) { +function getIntersectionTypeLine(la: Line, lb: Line): { intersectionType: IntersectionType; point: Point } { const denom = la[0] * lb[1] - lb[0] * la[1]; const nom1 = la[1] * lb[2] - lb[1] * la[2]; const nom2 = lb[0] * la[2] - la[0] * lb[2]; @@ -425,7 +434,7 @@ function doIntersect(A1: Point, A2: Point, B1: Point, B2: Point): boolean { } } -function nextUp(x: number) { +function nextUp(x: number): number { if (x !== x) { return x; } @@ -456,6 +465,30 @@ function nextUp(x: number) { return y === 0 ? -0 : y; } -export function ulp(x: number) { +export function ulp(x: number): number { return x < 0 ? nextUp(x) - x : x + nextUp(-x); } + +export function circleLineIntersection( + circleCenter: GlobalPoint, + circleRadius: number, + A: GlobalPoint, + B: GlobalPoint, +): GlobalPoint[] { + const segmentRay = Ray.fromPoints(A, B); // d + const circleLineRay = Ray.fromPoints(circleCenter, A); // f + const a = segmentRay.direction.dot(segmentRay.direction); + const b = 2 * circleLineRay.direction.dot(segmentRay.direction); + const c = circleLineRay.direction.dot(circleLineRay.direction) - circleRadius ** 2; + let d = b ** 2 - 4 * a * c; + if (d < 0) return []; + + const intersectionPoints: GlobalPoint[] = []; + + d = Math.sqrt(d); + const t1 = (-b - d) / (2 * a); + const t2 = (-b + d) / (2 * a); + if (t1 >= 0 && t1 <= 1) intersectionPoints.push(segmentRay.get(t1)); + if (t2 >= 0 && t2 <= 1) intersectionPoints.push(segmentRay.get(t2)); + return intersectionPoints; +} diff --git a/client/src/invitation/invitation.ts b/client/src/invitation/invitation.ts index df7b49b2a..6e1aa56d1 100644 --- a/client/src/invitation/invitation.ts +++ b/client/src/invitation/invitation.ts @@ -5,14 +5,14 @@ import { Route } from "vue-router"; @Component({ template: "" }) export default class Initiative extends Vue { - beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) { + beforeRouteEnter(to: Route, from: Route, next: (nextInfo: { path: string }) => {}): void { Axios.post("/api/invite", { code: to.params.code, }) .then((response: AxiosResponse) => { next({ path: response.data.sessionUrl }); }) - .catch((error: AxiosError) => { + .catch((_error: AxiosError) => { console.error("Invitation code could not be redeemed"); next({ path: "/dashboard" }); }); diff --git a/client/src/router.ts b/client/src/router.ts index 0426e863e..0934bc63a 100644 --- a/client/src/router.ts +++ b/client/src/router.ts @@ -41,7 +41,10 @@ export const router = new Router({ { path: "/auth", component: { template: "" }, - children: [{ path: "login", component: Login }, { path: "logout", component: Logout }], + children: [ + { path: "login", component: Login }, + { path: "logout", component: Logout }, + ], }, { path: "/invite/:code", diff --git a/client/src/shims/shims-tsx.d.ts b/client/src/shims/shims-tsx.d.ts index 3b88b5829..35513cc0f 100644 --- a/client/src/shims/shims-tsx.d.ts +++ b/client/src/shims/shims-tsx.d.ts @@ -1,13 +1,13 @@ -import Vue, { VNode } from 'vue'; +import Vue, { VNode } from "vue"; declare global { - namespace JSX { - // tslint:disable no-empty-interface - interface Element extends VNode {} - // tslint:disable no-empty-interface - interface ElementClass extends Vue {} - interface IntrinsicElements { - [elem: string]: any; + namespace JSX { + // eslint-disable-next-line @typescript-eslint/no-empty-interface + interface Element extends VNode {} + // eslint-disable-next-line @typescript-eslint/no-empty-interface + interface ElementClass extends Vue {} + interface IntrinsicElements { + [elem: string]: any; + } } - } } diff --git a/client/src/shims/shims-vue.d.ts b/client/src/shims/shims-vue.d.ts index 8f6f41026..d6e6b864e 100644 --- a/client/src/shims/shims-vue.d.ts +++ b/client/src/shims/shims-vue.d.ts @@ -1,4 +1,4 @@ -declare module '*.vue' { - import Vue from 'vue'; - export default Vue; +declare module "*.vue" { + import Vue from "vue"; + export default Vue; } diff --git a/client/src/store.ts b/client/src/store.ts index eef30043b..0c8c14f4a 100644 --- a/client/src/store.ts +++ b/client/src/store.ts @@ -4,6 +4,8 @@ import Vuex from "vuex"; import { AssetState } from "@/assetManager/store"; import { CoreState } from "@/core/store"; import { GameState } from "@/game/store"; +import { InitiativeState } from "./game/ui/initiative/store"; +import { VisibilityState } from "./game/visibility/store"; Vue.use(Vuex); @@ -11,6 +13,8 @@ export interface RootState { assets: AssetState; core: CoreState; game: GameState; + initiative: InitiativeState; + visibility: VisibilityState; } export const rootStore = new Vuex.Store({}); diff --git a/client/tsconfig.json b/client/tsconfig.json index bf1e9310d..a6d459f6a 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -1,41 +1,23 @@ { - "compilerOptions": { - "target": "es6", - "module": "commonjs", - "strict": true, - "jsx": "preserve", - "importHelpers": true, - "moduleResolution": "node", - "experimentalDecorators": true, - "esModuleInterop": true, - "allowSyntheticDefaultImports": true, - "sourceMap": true, - "baseUrl": ".", - "outDir": "dist", - "types": [ - "webpack-env" - ], - "paths": { - "@/*": [ - "src/*" - ] + "compilerOptions": { + "target": "es6", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "importHelpers": true, + "moduleResolution": "node", + "experimentalDecorators": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "sourceMap": true, + "baseUrl": ".", + "outDir": "dist", + "types": ["webpack-env", "jest"], + "paths": { + "@/*": ["src/*"] + }, + "lib": ["es6", "dom", "dom.iterable", "scripthost", "es2016.array.include"] }, - "lib": [ - "es6", - "dom", - "dom.iterable", - "scripthost", - "es2016.array.include" - ] - }, - "include": [ - "src/**/*.ts", - "src/**/*.tsx", - "src/**/*.vue", - "tests/**/*.ts", - "tests/**/*.tsx" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "include": ["src/**/*.ts", "src/**/*.vue", "tests/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/client/tslint.json b/client/tslint.json deleted file mode 100644 index 201a9de7a..000000000 --- a/client/tslint.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "defaultSeverity": "warning", - "extends": [ - "tslint:recommended", - "tslint-config-prettier" - ], - "linterOptions": { - "exclude": [ - "node_modules/**" - ] - }, - "rules": { - "array-type": [ - true, - "array" - ], - "curly": false, - "interface-name": false, - "max-classes-per-file": false, - "member-access": false, - "member-ordering": false, - "no-angle-bracket-type-assertion": false, - "no-bitwise": false, - "no-console": false, - "no-empty": false, - "object-literal-sort-keys": false, - "variable-name": [false] - } -} \ No newline at end of file diff --git a/client/vue.config.js b/client/vue.config.js index eaf9508bc..c08a5c36c 100644 --- a/client/vue.config.js +++ b/client/vue.config.js @@ -1,13 +1,27 @@ // vue.config.js + +// const CircularDependencyPlugin = require("circular-dependency-plugin"); +// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; + module.exports = { - assetsDir: "static", + assetsDir: process.env.NODE_ENV === "production" ? "static" : "dev-static", outputDir: "../server", indexPath: "./templates/index.html", configureWebpack: { + devtool: "source-map", resolve: { alias: { vue$: "vue/dist/vue.esm.js", // 'vue/dist/vue.common.js' for webpack 1 }, }, }, + // plugins: [ + // new CircularDependencyPlugin({ + // exclude: /a\.js|node_modules/, + // failOnError: false, + // allowAsyncCycles: false, + // cwd: process.cwd(), + // }), + // new BundleAnalyzerPlugin(), + // ], }; diff --git a/docs/conf.py b/docs/conf.py index d1af3995f..fe1238f2b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -19,7 +19,7 @@ # -- Project information ----------------------------------------------------- -project = 'Planar Ally' +project = 'PlanarAlly' copyright = '2018, Kruptein (Darragh Van Tichelen)' author = 'Kruptein (Darragh Van Tichelen)' diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 9904e5850..0ffeed706 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -3,11 +3,11 @@ Getting Started ================= -This document will show you how to get started using Planar Ally. +This document will show you how to get started using PlanarAlly. If you are a player you can immediately continue to :ref:`login`, if you're a DM, -you'll first need to decide where/how you want to run PlanarAlly. +you'll first need to decide whether you want to host PlanarAlly yourself or use an existing service. See :ref:`installation ` for more info . @@ -62,9 +62,7 @@ Joining a new session To join a specific session, you need the invite link. Your DM should provide this to you. -When visiting this link, -you'll automatically join the session and in a future visit -to the session hub it should be listed as well. +When visiting this link, you'll automatically join the session. The game --------- @@ -95,7 +93,8 @@ We'll give a brief overview of these UI elements soon, there is however another When you select a token that you own, a red border will be drawn around the token to visually give a reminder of what you have selected and on top of that -a box appears at the right side of the screen, with the name of the selected token as well as any tracker or aura active on the token (more on that later). +a box appears at the right side of the screen, with the name of the selected token +as well as any tracker or aura active on the token (more on that later). .. image:: images/player-selection.png @@ -134,6 +133,8 @@ Pressing `Delete` will delete the current selected token. Pressing `d` will deselect your current selection. +Pressing `Ctrl+U` will toggle the UI. + Mouse ^^^^^^ @@ -230,7 +231,7 @@ When in select modus, your right mouse button will show a context menu. When you right click a selection, you'll have the option to move it to the front or back and -add or show its initiative. +add or show its initiative. Additionally you can also get the detailed properties of the selected object. When nothing is selected, you'll have the option to show the initiative tracker or create a new basic token. Pan @@ -249,7 +250,7 @@ Draw The draw tool allows you to draw some simple shapes! -You can choose between a rectangle, a circle, or a freehand brush. +You can choose between a rectangle, a circle, a polygon or a freehand brush. You also have the option to select two colours. The left colour is used as the fill colour, @@ -291,6 +292,15 @@ While holding the button it will show you the distance in ft between your initia Your DM can configure the size of one grid cell, which is used to calculate the distance the ruler shows. +Vision +^^^^^^^ + +*This tool is only visible if you own multiple tokens.* + +When you control multiple tokens, you typically see the vision of all your owned tokens combined. +In some cases however you would like to get the perspective of just one of these tokens. +With the vision tool you can choose which tokens should contribute to your current vision. + Map ^^^^ diff --git a/docs/installation.rst b/docs/installation.rst index 7df9131af..17bf73f69 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -5,11 +5,12 @@ Installation As the DM you'll have to decide where you want to host your game. You can either use some service that hosts PlanarAlly for you, -or you can host PA yourself, which requires a bit more setup. +or you can host PA yourself. .. note:: This only has to be done by the DM and is not relevant for normal players. + Using existing services ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -20,6 +21,9 @@ Using existing services The easiest setup is to use some existing online service. At the moment of writing the only active service I'm aware of is `dndbox `_. +Using this method, gives you an instantly available service that requires no installation on your behalf. +The downside of this method is that you completely rely on the service and you cannot use it to play offline. + Self-hosting ~~~~~~~~~~~~~ @@ -33,28 +37,80 @@ Self-hosting involves 2 steps: * Installing/running the software, * Configuring your network correctly so that other players can join. +.. warning:: + If you ever want to upgrade PA to a newer version, be sure to read the remarks in :ref:`upgrading`. + Installation ************* For installation you again have two options: * Precompiled binary -* Manual installtion +* Running through Docker with precompiled images +* Compiling through Docker +* Manual installation -The first option is easier, but is only available on Windows currently, -and I do forget to create it from time to time. Feel free to ping me if I do. +The precompiled binary is the go-to method if you're not super techsavy and if you use Windows. +In all other circumstances, you'll have to manually install PlanarAlly. Precompiled binary ^^^^^^^^^^^^^^^^^^^^ -These are typically only provided for major releases and can be found `here `_. +The binaries are created for each release, which can be found `here `_. -1. Download the latest planarserver.zip +1. Download the latest planarally-windows.zip 2. Extract it to a folder on your server. 3. Run the server by executing `PlanarAllyServer.exe`. 4. Optionally you can configure the server in the `server_config.cfg` file. 5. Restart the server after applying a change. +Running through Docker with precompiled images +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Docker is a system to run programs in isolated environments, +similar to virtual machines. It has the benefits that all +other requirements are handled by docker without affecting the host machine + +Make sure you have a valid Docker installation with docker-compose. +See :ref:`docker` if you don't know how. + +1. Create a folder for the files +2. Inside that folder, create a file called docker-compose.yml with the following content:: + + version: "3.3" + services: + planarally: + image: 'kruptein/planarally' + container_name: planarally + ports: + - 8000:8000 + volumes: + - 'data:/planarally/data' + - 'assets:/planarally/static/assets' + restart: always + volumes: + data: + assets: + +3. From a command line in the created folder, run `docker-compose up -d` + +The server will keep running in the background, reloading after resets +To stop the server, run `docker-compose down` + +Compiling through Docker +^^^^^^^^^^^^^^^^^^^^^^^^ +Same as the last option, but compiling the image +directly instead using the precompiled one + +Make sure you have a valid Docker installation with docker-compose +(usually installed separately). +See :ref:`docker` if you don't know how. + +1. Download the latest source code from `here `_. and open it. +2. Run `docker build -t planarally .` +3. Run the newly compiled image with the same instructions as above, but removing the `kruptein/` from the `image` line (the whole line should end up as `image: 'planarally'`) + +.. note:: + Although it is not necessary, it is recomended that the folder for the `docker-compose.yml` file is independent from the source folder. Manual Installation ^^^^^^^^^^^^^^^^^^^^^ @@ -101,3 +157,63 @@ Download and install the latest python 3 version from `the python site `_ (installation consists in downloading and running the `installer `_) +* `MacOs `_ (installation consists in downloading and running the `installer `_) +* Linux (Instructions are available for `Ubuntu `_, `Debian `_, `CentOS `_, `Fedora `_) + +.. note:: + If you use linux, you will need to install `docker-compose `_ separately. + + You will probably want to run the `Linux post-installation steps `_ + + +.. _upgrading: + +Upgrading +~~~~~~~~~~ + +When upgrading to a newer version of PlanarAlly, the necessary care has to be taken to make sure your existing data is not lost. + +It's strongly advised to make a backup of the following data before performing an upgrade + +Upgrading with precompiled or manual installation +************************************************* + +To backup the data, make copies to another folder of the following files/folders: + +* planar.sqlite: This is the database that contains all the saved sessions and user information. +* static/assets: This folder contains all the uploaded images for tokens/maps/... during gameplay. + +When backed up, you should be able to safely overwrite any of the original PlanarAlly files +with the newer files from the version you want to upgrade to. + +If you are running a manual installation, run `pip install -r requirements.txt` again in case the requirements have changed. + +If the data is lost or not there after upgrading, copy the earlier backed up files to their original location. + +Upgrading with docker +********************* + +Upgrading with Docker is much safer, but it's still recommended to make backups. + +The backup from docker can be created with: + +* planar.sqlite: `docker cp planarally:/planarally/data ./data` +* static/assets: `docker cp planarally:/planarally/static/assets ./assets` + +If you compiled the image yourself, you will have to recompile it, and tell docker to use the new image by running `docker-compose up -d` again. + +If you are running the precompiled image, just run `docker-compose pull && docker-compose up -d` in the folder with the original `docker-compose.yml` file. + +If the data is lost, you can restore it by running the previous commands with the arguments swapped: + +* planar.sqlite: `docker cp ./data planarally:/planarally/data` +* static/assets: `docker cp ./assets planarally:/planarally/static/assets` diff --git a/docs/lighting.rst b/docs/lighting.rst index 023d3bf67..c3dd6008a 100644 --- a/docs/lighting.rst +++ b/docs/lighting.rst @@ -53,7 +53,7 @@ Filling the board with fog A more realistic system can be created by checking the DM option 'fill canvas with FOW'. This will fill the entire screen with fog. -You can now start adding light sources to shapes and these will perce the fog. +You can now start adding light sources to shapes and these will pierce the fog. When you move a shape with a lightsource, the light aura will follow the shape and fog will fill in where the shape left as one expects. @@ -92,7 +92,7 @@ As the shapes on the fow layer are hidden from your view when you're on other la .. figure:: images/lighting-block-example.png - Example where the right wall has the 'blocks movement' option enabled. + Example where the right wall has the 'blocks vision' option enabled. Line of Sight based vision --------------------------- diff --git a/extra/player_light_example.png b/extra/player_light_example.png index 6abfd97ef..4f078bdc8 100644 Binary files a/extra/player_light_example.png and b/extra/player_light_example.png differ diff --git a/server/VERSION b/server/VERSION index 14a8c2457..47d04a528 100644 --- a/server/VERSION +++ b/server/VERSION @@ -1 +1 @@ -0.17.1 \ No newline at end of file +0.18.0 \ No newline at end of file diff --git a/server/api/http/__init__.py b/server/api/http/__init__.py index a9f1cc846..3039a239b 100644 --- a/server/api/http/__init__.py +++ b/server/api/http/__init__.py @@ -6,6 +6,8 @@ from app import sio, state from models import PlayerRoom, Room +import urllib.parse + async def claim_invite(request): user = await check_authorized(request) @@ -22,5 +24,5 @@ async def claim_invite(request): for csid in state.get_sids(user=room.creator, room=room): await sio.emit("Room.Info.Players.Add", {'id': user.id, 'name': user.name}, room=csid, namespace="/planarally") return web.json_response( - {"sessionUrl": f"/game/{room.creator.name}/{room.name}"} + {"sessionUrl": f"/game/{urllib.parse.quote(room.creator.name, safe='')}/{urllib.parse.quote(room.name, safe='')}"} ) diff --git a/server/api/socket/connection.py b/server/api/socket/connection.py index 6b33b0274..c1434191b 100644 --- a/server/api/socket/connection.py +++ b/server/api/socket/connection.py @@ -56,6 +56,7 @@ async def connect(sid, environ): "name": room.name, "creator": room.creator.name, "invitationCode": str(room.invitation_code), + "isLocked": room.is_locked, "players": [{'id': rp.player.id, 'name': rp.player.name} for rp in room.players] }, room=sid, diff --git a/server/api/socket/shape.py b/server/api/socket/shape.py index b5abb08e9..1931b85bd 100644 --- a/server/api/socket/shape.py +++ b/server/api/socket/shape.py @@ -1,3 +1,4 @@ +from copy import deepcopy from datetime import datetime from peewee import Case from playhouse.shortcuts import update_model_from_dict @@ -99,7 +100,7 @@ async def update_shape_position(sid, data): model = reduce_data_to_model(Shape, data["shape"]) update_model_from_dict(shape, model) shape.save() - if shape.type_ in ["polygon", "multiline"]: + if shape.type_ == "polygon": # Subshape type_instance = shape.subtype # no backrefs on these tables @@ -384,30 +385,20 @@ async def move_shape_order(sid, data): async def sync_shape_update(layer, room, data, sid, shape): - # Send to players - # if layer.player_visible: - # for room_player in room.players: for psid, player in state.get_players(room=room): if psid == sid: continue - if not data["temporary"]: - data["shape"] = shape.as_dict(player, False) - await sio.emit("Shape.Update", data, room=psid, namespace="/planarally") - # for player in User.select(User).join(PlayerRoom).where(PlayerRoom.room == room): - # for psid in state.get_sids(user=player, room=room): - # if psid == sid: - # continue - # if not data["temporary"]: - # data["shape"] = shape.as_dict(player, False) - # await sio.emit("Shape.Update", data, room=psid, namespace="/planarally") - - # # Send to DM - # for csid in state.get_sids(user=room.creator, room=room): - # if csid == sid: - # continue - # if not data["temporary"]: - # data["shape"] = shape.as_dict(room.creator, True) - # await sio.emit("Shape.Update", data, room=csid, namespace="/planarally") + pdata = { el: data[el] for el in data if el != "shape" } + if data["temporary"] and player.name not in data["shape"]["owners"]: + pdata["shape"] = deepcopy(data["shape"]) + # Although we have no guarantees that the message is faked, we still would like to verify data as if it were legitimate. + for element in ["auras", "labels", "trackers"]: + pdata["shape"][element] = [el for el in pdata["shape"][element] if el["visible"]] + if not pdata["shape"]["name_visible"]: + pdata["shape"]["name"] = "?" + else: + pdata["shape"] = shape.as_dict(player, False) + await sio.emit("Shape.Update", pdata, room=psid, namespace="/planarally") async def _get_shape(data, location, user): diff --git a/server/app.py b/server/app.py index a530c1a65..3717e12d0 100644 --- a/server/app.py +++ b/server/app.py @@ -51,10 +51,9 @@ def __init__(self): self.sid_map = {} async def clear_temporaries(self, sid): - location_id = self.sid_map[sid]["location"].id - if sid in self.client_temporaries.get(location_id, []): - await sio.emit("Temp.Clear", self.client_temporaries[location_id][sid]) - del self.client_temporaries[location_id][sid] + if sid in self.client_temporaries: + await sio.emit("Temp.Clear", self.client_temporaries[sid], namespace="/planarally") + del self.client_temporaries[sid] def add_sid(self, sid, **options): self.sid_map[sid] = options diff --git a/server/models/campaign.py b/server/models/campaign.py index cb608437a..ae777e908 100644 --- a/server/models/campaign.py +++ b/server/models/campaign.py @@ -60,6 +60,7 @@ class Location(BaseModel): room = ForeignKeyField(Room, backref="locations", on_delete="CASCADE") name = TextField() unit_size = FloatField(default=5) + unit_size_unit = TextField(default="ft") use_grid = BooleanField(default=True) full_fow = BooleanField(default=False) fow_opacity = FloatField(default=0.3) diff --git a/server/models/shape.py b/server/models/shape.py index 387b49948..8bcbcb7ac 100644 --- a/server/models/shape.py +++ b/server/models/shape.py @@ -15,7 +15,6 @@ "Circle", "CircularToken", "Line", - "MultiLine", "Polygon", "Rect", "Shape", @@ -173,24 +172,11 @@ class Line(ShapeType): line_width = IntegerField() -class MultiLine(ShapeType): - abstract = False - line_width = IntegerField() - points = TextField() - - def as_dict(self, *args, **kwargs): - model = model_to_dict(self, *args, **kwargs) - model["points"] = json.loads(model["points"]) - return model - - def update_from_dict(self, data, *args, **kwargs): - data["points"] = json.dumps(data["points"]) - return update_model_from_dict(self, data, *args, **kwargs) - - class Polygon(ShapeType): abstract = False vertices = TextField() + line_width = IntegerField() + open_polygon = BooleanField() def as_dict(self, *args, **kwargs): model = model_to_dict(self, *args, **kwargs) diff --git a/server/save.py b/server/save.py index 86f8933d9..33761ef6b 100644 --- a/server/save.py +++ b/server/save.py @@ -12,7 +12,7 @@ from models import ALL_MODELS, Constants from models.db import db -SAVE_VERSION = 16 +SAVE_VERSION = 18 logger: logging.Logger = logging.getLogger("PlanarAllyServer") logger.setLevel(logging.INFO) @@ -223,6 +223,31 @@ def upgrade(version): ) db.foreign_keys = True Constants.update(save_version=Constants.save_version + 1).execute() + elif version == 16: + from peewee import TextField + migrator = SqliteMigrator(db) + db.foreign_keys = False + with db.atomic(): + migrate( + migrator.add_column("location", "unit_size_unit", + TextField(default="ft")) + ) + db.foreign_keys = True + Constants.update(save_version=Constants.save_version + 1).execute() + elif version == 17: + from peewee import BooleanField + migrator = SqliteMigrator(db) + db.foreign_keys = False + with db.atomic(): + migrate( + migrator.add_column("polygon", "open_polygon", BooleanField(default=False)), + migrator.add_column("polygon", "line_width", IntegerField(default=2)) + ) + db.execute_sql("INSERT INTO polygon (shape_id, line_width, vertices, open_polygon) SELECT shape_id, line_width, points, 1 FROM multi_line") + db.execute_sql("DROP TABLE multi_line"); + db.execute_sql("UPDATE shape SET type_ = 'polygon' WHERE type_ = 'multiline'") + db.foreign_keys = True + Constants.update(save_version=Constants.save_version + 1).execute() else: raise Exception(f"No upgrade code for save format {version} was found.") diff --git a/server/static/css/app.fc3b372c.css b/server/static/css/app.803a921f.css similarity index 89% rename from server/static/css/app.fc3b372c.css rename to server/static/css/app.803a921f.css index 6b9743797..4e0b8e995 100644 --- a/server/static/css/app.fc3b372c.css +++ b/server/static/css/app.803a921f.css @@ -1 +1 @@ -@import url(https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css);@import url(https://fonts.googleapis.com/css?family=Open+Sans);#app,body,html{margin:0;padding:0;border:0;width:100%;height:100%;font-family:Open Sans,sans-serif;font-weight:200}#app{display:-webkit-box;display:-ms-flexbox;display:flex;background:url(/static/img/login_background.png) repeat fixed}.ContextMenu{position:fixed;z-index:11}.ContextMenu ul{border:1px solid #ff7052;border-radius:5px;background:#fff;padding:0;list-style:none;margin:0}.ContextMenu ul li{border-bottom:1px solid #ff7052;padding:5px;cursor:pointer}.ContextMenu ul li:hover{background-color:#ff7052}.ContextMenu ul li:last-child{border-bottom:none}.ContextMenu>ul>li{clear:left;position:relative}.ContextMenu>ul>li ul{display:none;position:absolute;left:100%;top:-1px}.ContextMenu>ul>li:hover ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.hide[data-v-c2851f0e]{display:none}.mask[data-v-c2851f0e]{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%}.dialog-mask[data-v-c2851f0e]{pointer-events:none}.modal-mask[data-v-c2851f0e]{background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.modal-container[data-v-c2851f0e]{pointer-events:auto;position:absolute;width:auto;height:auto;border-radius:2px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.33);box-shadow:0 2px 8px rgba(0,0,0,.33);font-family:Helvetica,Arial,sans-serif}.modal-enter[data-v-c2851f0e],.modal-leave-active[data-v-c2851f0e]{opacity:0}.modal-enter .modal-container[data-v-c2851f0e],.modal-leave-active .modal-container[data-v-c2851f0e]{-webkit-transform:scale(1.1);transform:scale(1.1)}.modal-header[data-v-1883e207]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.modal-body[data-v-1883e207]{padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}button[data-v-1883e207]:first-of-type{margin-right:10px}.modal-header[data-v-0602c2e6]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.modal-body[data-v-0602c2e6]{padding:10px;padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.modal-footer[data-v-0602c2e6]{padding-top:0;padding:10px;text-align:right}[v-cloak],[v-cloak] *{display:none}body,html{padding:0;margin:0;width:100%;height:100%;background:url(/static/img/login_background.png) repeat fixed;font-family:Open Sans,sans-serif}#AssetManager{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#titlebar{padding:15px;margin:10px;font-size:30px;font-weight:700;background-color:#ff7052;color:#fff;text-align:center;border:1px solid #000;-webkit-box-shadow:2px 2px grey;box-shadow:2px 2px grey}#main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:100%}#asset-details,#assets{background-color:#fff;border:1px solid #000;margin:10px;position:relative;padding-top:45px;padding-bottom:45px;-webkit-box-shadow:3px 3px grey;box-shadow:3px 3px grey}#assets{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#asset-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:15px;max-width:50%;overflow:scroll}#asset-details img{width:100%}#breadcrumbs{position:absolute;left:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;z-index:1;background-color:#ff7052;color:#fff;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:5px;border-bottom-right-radius:10px}#breadcrumbs>div{position:relative;padding:10px;padding-left:20px;text-align:center}#breadcrumbs>div:first-child{padding-left:10px}#breadcrumbs div:last-child:after{content:none}#breadcrumbs div:after{content:"";position:absolute;display:inline-block;width:30px;height:30px;top:3px;right:-10px;background-color:transparent;border-top-right-radius:5px;-webkit-transform:scale(.707) rotate(45deg);transform:scale(.707) rotate(45deg);-webkit-box-shadow:1px -1px rgba(0,0,0,.25);box-shadow:1px -1px rgba(0,0,0,.25);z-index:1}#actionbar{position:absolute;right:0;top:0;padding:8px;border-bottom-left-radius:10px;background-color:#ff7052;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff}#actionbar>div{margin:5px}#actionbar>div:hover{cursor:pointer}#explorer{position:relative;left:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));max-width:100%;max-height:100%;overflow:auto}.inode{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px}.inode-selected,.inode:hover{cursor:pointer;background-color:#ff7052}.inode *{pointer-events:none}.title{word-break:break-all}#asset-detail-title{font-weight:700;font-size:30px;border-bottom:2px solid #000;margin-bottom:15px;text-align:center}[data-v-bc30fc14]{-ms-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;border:0}form[data-v-bc30fc14]{position:relative;top:50%;width:250px;display:table;margin:-150px auto 0 auto;background:#fff;border-radius:4px}.legend[data-v-bc30fc14]{position:relative;text-align:center;width:100%;display:block;background:#ff7052;padding:15px;color:#fff;font-size:20px}.legend[data-v-bc30fc14]:after{content:"";opacity:.06;top:0;left:0;bottom:0;right:0;position:absolute}.input[data-v-bc30fc14]{position:relative;width:90%;margin:15px auto}.input span[data-v-bc30fc14]{position:absolute;display:block;color:#d4d4d4;left:10px;top:8px;font-size:20px}.input input[data-v-bc30fc14]{width:100%;padding:10px 5px 10px 40px;display:block;border:1px solid #ededed;border-radius:4px;-webkit-transition:.2s ease-out;transition:.2s ease-out;color:#a1a1a1}.input input[data-v-bc30fc14]:focus{padding:10px 5px 10px 10px;outline:0;border-color:#ff7052}.submit[data-v-bc30fc14]{width:45px;height:45px;display:block;margin:0 auto -15px auto;background:#fff;border-radius:100%;border:1px solid #ff7052;color:#ff7052;font-size:24px;cursor:pointer;-webkit-box-shadow:0 0 0 7px #fff;box-shadow:0 0 0 7px #fff;-webkit-transition:.2s ease-out;transition:.2s ease-out}.submit[data-v-bc30fc14]:focus,.submit[data-v-bc30fc14]:hover{background:#ff7052;color:#fff;outline:0}.feedback[data-v-bc30fc14]{position:absolute;bottom:-70px;width:100%;text-align:center;color:#fff;background:#c71585;padding:10px 0;font-size:12px}.feedback[data-v-bc30fc14]:before{bottom:100%;left:50%;border:solid transparent;content:"";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(46,204,113,0);border-bottom-color:#c71585;border-width:10px;margin-left:-10px}[data-v-61eb1455]{-ms-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;border:0}a[data-v-61eb1455]{text-decoration:inherit;color:inherit;width:100%;display:block;text-align:center;border:1px solid #ff7052}a[data-v-61eb1455]:hover{background-color:#ff7052;color:#fff}a[data-v-61eb1455]:first-child{border-radius:10px 10px 0 0}a[data-v-61eb1455]:last-child{border-radius:0 0 10px 10px}a[data-v-61eb1455]:only-child{border-radius:10px}#formcontainer[data-v-61eb1455]{margin:auto}form[data-v-61eb1455]{background:#fff;border-radius:4px}.legend[data-v-61eb1455]{position:relative;text-align:center;width:100%;display:block;background:#ff7052;padding:15px;color:#fff;font-size:20px}.legend[data-v-61eb1455]:after{content:"";opacity:.06;top:0;left:0;bottom:0;right:0;position:absolute}#account-options[data-v-61eb1455]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#fff;border-radius:4px;margin-top:50px;height:45px}#account-options form[data-v-61eb1455]{background:none;border-radius:0;width:50%}.input[data-v-61eb1455]{position:relative;width:90%;margin:15px auto}.input span[data-v-61eb1455]{position:absolute;display:block;color:#d4d4d4;left:10px;top:8px;font-size:20px}.input input[data-v-61eb1455]{width:100%;padding:10px 5px 10px 40px;display:block;border:1px solid #ededed;border-radius:4px;-webkit-transition:.2s ease-out;transition:.2s ease-out;color:#a1a1a1}.input input[data-v-61eb1455]:focus{outline:0;border-color:#ff7052}.submit[data-v-61eb1455]{width:45px;height:45px;display:block;margin:0 auto -15px auto;background:#fff;border-radius:100%;border:1px solid #ff7052;color:#ff7052;font-size:24px;cursor:pointer;-webkit-box-shadow:0 0 0 7px #fff;box-shadow:0 0 0 7px #fff;-webkit-transition:.2s ease-out;transition:.2s ease-out}.submit[data-v-61eb1455]:focus,.submit[data-v-61eb1455]:hover{background:#ff7052;color:#fff;outline:0}.feedback[data-v-61eb1455]{position:absolute;bottom:-70px;width:100%;text-align:center;color:#fff;background:#c71585;padding:10px 0;font-size:12px}.feedback[data-v-61eb1455]:before{bottom:100%;left:50%;border:solid transparent;content:"";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(46,204,113,0);border-bottom-color:#c71585;border-width:10px;margin-left:-10px}h4[data-v-61eb1455]{background-color:#fff;width:100%;text-align:center;border-bottom:1px solid #000;line-height:.1em}h4 span[data-v-61eb1455]{background:#fff;padding:0 10px}.modal-header[data-v-07fc8ff2]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.header-close[data-v-07fc8ff2]{position:absolute;top:5px;right:5px}.modal-body[data-v-07fc8ff2]{padding:10px}#initiative-list[data-v-07fc8ff2]{padding:0;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}#initiative-list[data-v-07fc8ff2],.initiative-actor[data-v-07fc8ff2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal}.initiative-actor[data-v-07fc8ff2]{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:2px 5px;margin-bottom:2px;border-radius:5px;border:2px solid transparent}.initiative-selected[data-v-07fc8ff2]{border:2px solid #82c8a0;background-color:#82c8a0}.initiative-actor:hover+.initiative-effect[data-v-07fc8ff2],.initiative-effect[data-v-07fc8ff2]:hover,.initiative-selected+.initiative-effect[data-v-07fc8ff2]{display:-webkit-box;display:-ms-flexbox;display:flex;border-color:rgba(130,200,160,.6);background-color:rgba(130,200,160,.6)}.initiative-actor[data-v-07fc8ff2]:hover{border:2px solid #82c8a0}.initiative-actor>[data-v-07fc8ff2]{width:30px;margin-left:2px}.initiative-effect[data-v-07fc8ff2]{display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;margin-right:5px;margin-top:-2px;margin-bottom:5px;padding:2px;border:2px solid transparent;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:none}.initiative-effect>[data-v-07fc8ff2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.initiative-effect>*>[data-v-07fc8ff2]{border:none;background-color:inherit;text-align:right;margin-left:20px;min-width:10px}.initiative-effect>*>[data-v-07fc8ff2]:first-child{margin-left:0}#initiative-bar[data-v-07fc8ff2]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:10px;margin-left:10px;margin-top:10px;margin-bottom:-10px;padding:2px}.initiative-bar-button[data-v-07fc8ff2]{border:2px solid #82c8a0;border-radius:5px;padding:5px}.initiative-bar-button[data-v-07fc8ff2]:hover{color:#fff;background-color:#82c8a0;cursor:pointer}abbr[data-v-e477c214]{text-decoration:none}.scroll[data-v-e477c214]{max-height:20em;overflow-y:auto}.modal-header[data-v-e477c214]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.header-close[data-v-e477c214]{position:absolute;top:5px;right:5px}.modal-body[data-v-e477c214]{padding:10px;max-width:450px}.separator[data-v-e477c214]{line-height:.1em;margin:7px 0}.separator[data-v-e477c214]:after{position:absolute;left:10px;right:10px;border-bottom:1px solid #000;content:""}.spanrow[data-v-e477c214]{grid-column:start/end}.lower-opacity>[data-v-e477c214]{opacity:.3}.grid[data-v-e477c214]{display:grid;grid-template-columns:[start] 50px [name] 1fr [visible] 30px [remove] 30px [end];grid-row-gap:5px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.grid>[data-v-e477c214]{text-align:center}.name[data-v-e477c214]{text-align:left!important}.row[data-v-e477c214]{display:contents}.row>[data-v-e477c214]{padding:5px;height:20px;border:1px solid transparent}.row:hover>[data-v-e477c214]{cursor:pointer;border-top:1px solid #ff7052;border-bottom:1px solid #ff7052;background-color:rgba(0,0,0,.2)}.row:hover>[data-v-e477c214]:first-child{border-left:1px solid #ff7052;border-top-left-radius:10px;border-bottom-left-radius:10px}.row:hover>[data-v-e477c214]:last-child{border-right:1px solid #ff7052;border-top-right-radius:10px;border-bottom-right-radius:10px}#no-labels[data-v-e477c214]{grid-column:start/end;font-style:italic;padding-left:50px}#addLabelButton[data-v-e477c214]{grid-column:visible/end}.outer[data-v-f8744d60]{padding:5px;border:1px solid #000;border-radius:3px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.current-color[data-v-f8744d60]{width:13px;height:13px;background-color:#000;border:1px solid #000}.mask[data-v-f8744d60]{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%}.preview[data-v-6d718094]{position:fixed;z-index:50;left:200px;top:0}.asset-preview-image[data-v-6d718094]{width:100%;max-width:250px}.draggable[data-v-6d718094]{list-style:none;font-family:helvetica}.token[data-v-6d718094]{padding-top:5px;padding-bottom:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.token img[data-v-6d718094]{margin-right:5px}.token svg[data-v-6d718094]{margin-left:auto}.folder>[data-v-6d718094]{display:none}.directory>.file[data-v-6d718094],.directory>.folder[data-v-6d718094]{display:block}.folder[data-v-6d718094]:hover{font-weight:700;cursor:pointer}.folder:hover>[data-v-6d718094]{font-weight:400}.folder>[data-v-c7fe324c]{display:none}.directory>.file[data-v-c7fe324c],.directory>.folder[data-v-c7fe324c]{display:block}.folder[data-v-c7fe324c]:hover{font-weight:700;cursor:pointer}.folder:hover>[data-v-c7fe324c]{font-weight:400}#menuContainer[data-v-c7fe324c]{position:absolute;z-index:20;top:0;left:0;height:100%;width:100%;pointer-events:none}#menu[data-v-c7fe324c]{height:100%;max-width:200px}#locations-menu[data-v-c7fe324c],#menu[data-v-c7fe324c]{position:absolute;top:0;left:0;z-index:21;background-color:#fa5a5a;overflow:auto;pointer-events:auto}#locations-menu[data-v-c7fe324c]{max-height:100px;width:100%}#locations-menu>div[data-v-c7fe324c]{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}#locations-menu>div>div[data-v-c7fe324c]{background-color:#fff;text-align:center;line-height:100px;width:100px;border-right:1px solid #82c8a0}#locations-menu>div>div[data-v-c7fe324c]:hover{cursor:pointer;background-color:#82c8a0}.actionButton[data-v-c7fe324c]{position:absolute;right:0;margin:5px;margin-right:10px;padding:0}.menu-accordion[data-v-c7fe324c]{background-color:#eee;color:#444;cursor:pointer;padding:18px;text-align:left;border:none;outline:none;-webkit-transition:.4s;transition:.4s;border-top:1px solid #82c8a0;width:100%;width:-moz-available;width:-webkit-fill-available;width:stretch}.menu-accordion-active[data-v-c7fe324c],.menu-accordion[data-v-c7fe324c]:hover{background-color:#82c8a0}.menu-accordion-panel[data-v-c7fe324c]{background-color:#fff;display:none;overflow:hidden;min-height:2em}.menu-accordion-subpanel[data-v-c7fe324c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.menu-accordion-subpanel>[data-v-c7fe324c]{padding:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.menu-accordion-subpanel>[data-v-c7fe324c]:hover{background-color:#82c8a0}#exitButton[data-v-c7fe324c]{position:fixed;bottom:0;width:100%}#radialmenu[data-v-c7fe324c]{position:absolute;z-index:20;width:0;height:0;pointer-events:auto}.rm-list-dm #rm-locations svg[data-v-c7fe324c]{margin-left:50px}.rm-list-dm #rm-settings svg[data-v-c7fe324c]{margin-bottom:50px}.rm-wrapper[data-v-c7fe324c]{position:relative;width:200px;height:200px;top:-100px;left:-100px}.rm-wrapper .rm-topper[data-v-c7fe324c]{pointer-events:none;text-align:center;line-height:50px;font-size:25px}.rm-wrapper .rm-toggler[data-v-c7fe324c],.rm-wrapper .rm-topper[data-v-c7fe324c]{display:block;position:absolute;width:50px;height:50px;left:50%;top:50%;margin-left:-25px;margin-top:-25px;background:#fa5a5a;color:#fff;border-radius:50%}.rm-wrapper .rm-toggler .rm-list[data-v-c7fe324c],.rm-wrapper .rm-topper .rm-list[data-v-c7fe324c]{opacity:.5;list-style:none;padding:0;width:200px;height:200px;overflow:hidden;display:block;border-radius:50%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.2);box-shadow:0 0 10px 0 rgba(0,0,0,.2);margin:-75px 0 0 -75px}.rm-list-dm[data-v-c7fe324c]{-webkit-transform:rotate(135deg)!important;transform:rotate(135deg)!important}.rm-wrapper .rm-toggler:hover .rm-list[data-v-c7fe324c],.rm-wrapper .rm-topper:hover .rm-list[data-v-c7fe324c]{opacity:1}.rm-wrapper .rm-toggler .rm-list .rm-item[data-v-c7fe324c],.rm-wrapper .rm-topper .rm-list .rm-item[data-v-c7fe324c]{display:table;width:50%;height:50%;float:left;text-align:center;-webkit-box-shadow:inset 0 0 2px 0 rgba(0,0,0,.2);box-shadow:inset 0 0 2px 0 rgba(0,0,0,.2);background-color:#fff}.rm-wrapper .rm-toggler .rm-list .rm-item[data-v-c7fe324c]:hover,.rm-wrapper .rm-topper .rm-list .rm-item[data-v-c7fe324c]:hover{background-color:#82c8a0}.rm-wrapper .rm-toggler .rm-list .rm-item:hover a[data-v-c7fe324c],.rm-wrapper .rm-topper .rm-list .rm-item:hover a[data-v-c7fe324c]{color:#fff}.rm-wrapper .rm-toggler .rm-list .rm-item a[data-v-c7fe324c],.rm-wrapper .rm-topper .rm-list .rm-item a[data-v-c7fe324c]{display:table-cell;vertical-align:middle;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);text-decoration:none;font-size:25px;color:#82c8a0;border:none;outline:none}.settings-enter-active[data-v-c7fe324c],.settings-leave-active[data-v-c7fe324c]{-webkit-transition:width .5s;transition:width .5s}.settings-enter[data-v-c7fe324c],.settings-leave-to[data-v-c7fe324c]{width:0}.settings-enter-to[data-v-c7fe324c],.settings-leave[data-v-c7fe324c]{width:200px}.locations-enter-active[data-v-c7fe324c],.locations-leave-active[data-v-c7fe324c]{-webkit-transition:height .5s;transition:height .5s}.locations-enter[data-v-c7fe324c],.locations-leave-to[data-v-c7fe324c]{height:0}.locations-enter-to[data-v-c7fe324c],.locations-leave[data-v-c7fe324c]{height:100px}.modal-header[data-v-7a3669fd]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.modal-header>input[data-v-7a3669fd]{background-color:inherit;border:none;font-weight:700;font-size:large}.header-close[data-v-7a3669fd]{position:absolute;top:5px;right:5px}.modal-body[data-v-7a3669fd]{padding:10px}.modal-body>textarea[data-v-7a3669fd]{width:100%;min-height:100px;max-height:500px}.modal-footer[data-v-7a3669fd]{padding-top:0;padding:10px;text-align:right}.modal-header[data-v-23de098e]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.header-close[data-v-23de098e]{position:absolute;top:5px;right:5px}.modal-body[data-v-23de098e]{padding:10px;max-width:450px}.grid[data-v-23de098e]{display:grid;grid-template-columns:[name] 1fr [numerator] 30px [slash] 5px [denominator] 30px [colour] 40px [visible] 30px [light] 30px [remove] 30px [end];grid-column-gap:5px}.colours[data-v-23de098e],.grid[data-v-23de098e]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.colours[data-v-23de098e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header[data-v-23de098e]{line-height:.1em;margin:20px 0 15px}.header[data-v-23de098e]:after{position:absolute;right:5px;width:75%;border-bottom:1px solid #000;content:""}.spanrow[data-v-23de098e]{grid-column:1/end}#labels[data-v-23de098e]{-ms-flex-wrap:wrap;flex-wrap:wrap}.label[data-v-23de098e]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;font-size:13px;margin:5px}.label:hover>.label-main[data-v-23de098e]:before{content:"\D7";position:absolute;color:red;font-size:20px;font-weight:700;cursor:pointer;top:-8px;right:-4px;pointer-events:auto}#label-add:hover>.label-main[data-v-23de098e]{pointer-events:auto;cursor:pointer;color:#fff;font-weight:700;background-color:#ff7052}#label-add:hover>.label-main[data-v-23de098e]:before{content:""}.label-user[data-v-23de098e]{border-top-left-radius:10px;border-bottom-left-radius:10px;background-color:#ff7052;border:1px solid #ff7052;padding:5px}.label-main[data-v-23de098e]{border:1px solid #ff7052;border-radius:10px;padding:5px;pointer-events:none}.label-user+.label-main[data-v-23de098e]{border-top-left-radius:0;border-bottom-left-radius:0}input[type=checkbox][data-v-23de098e]{width:16px;height:23px;margin:0 8px 0 8px;white-space:nowrap;display:inline-block}#selection-menu[data-v-674cf937]{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;top:75px;right:0;z-index:10;opacity:.5;border-top-left-radius:5px;border-bottom-left-radius:5px;border:1px solid #82c8a0;border-right:none;padding:10px 35px 10px 10px;background-color:#eee}#selection-menu[data-v-674cf937]:hover{background-color:#82c8a0;opacity:1}#selection-edit-button[data-v-674cf937]{position:absolute;right:10px;top:10px;cursor:pointer}#selection-auras[data-v-674cf937],#selection-trackers[data-v-674cf937]{display:grid;grid-template-columns:[name] 1fr [value] 1fr}.selection-aura-value[data-v-674cf937],.selection-tracker-value[data-v-674cf937]{justify-self:center;padding:2px}.selection-aura-value[data-v-674cf937]:hover,.selection-tracker-value[data-v-674cf937]:hover{cursor:pointer;background-color:rgba(20,20,20,.2)}#selection-name[data-v-674cf937]{font-size:20px;font-weight:700;margin-bottom:10px}.ContextMenu ul[data-v-6c66d243]{border:1px solid #82c8a0}.ContextMenu ul li[data-v-6c66d243]{border-bottom:1px solid #82c8a0}.ContextMenu ul li[data-v-6c66d243]:hover{background-color:#82c8a0}canvas[data-v-73816298]{grid-column:label/end;justify-self:center}.modal-header[data-v-73816298]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.modal-body[data-v-73816298]{padding:10px;display:grid;grid-template-columns:[label] 1fr [value] 2fr [end];grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.modal-footer[data-v-73816298]{padding-top:0;padding:10px;text-align:right}.colours[data-v-73816298]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tool-detail{position:absolute;right:var(--detailRight);bottom:80px;z-index:11;border:1px solid #2b2b2b;background-color:#fff;display:grid;padding:10px;grid-template-columns:auto auto;grid-column-gap:5px;grid-row-gap:2px}.tool-detail:after{content:"";position:absolute;right:var(--detailArrow);bottom:0;width:0;height:0;border:14px solid transparent;border-top-color:#000;border-bottom:0;margin-left:-14px;margin-bottom:-14px}.tool-detail input{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.option[data-v-639cd890]{padding:6px;border:1px solid #82c8a0;border-radius:0;-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:13px;min-width:25px}.option-selected[data-v-639cd890],.option[data-v-639cd890]:hover{background-color:#82c8a0}.selectgroup[data-v-639cd890]{display:-webkit-box;display:-ms-flexbox;display:flex}.selectgroup>.option[data-v-639cd890]:first-of-type{border-top-left-radius:10px;border-bottom-left-radius:10px}.selectgroup>.option[data-v-639cd890]:last-of-type{border-top-right-radius:10px;border-bottom-right-radius:10px}.accordion[data-v-0bf2b7ba]{border:2px solid #ff7052;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;-webkit-user-drag:none!important}#header[data-v-0bf2b7ba]{background-color:#ff7052;cursor:pointer;padding:.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[type=checkbox][data-v-0bf2b7ba]{width:-webkit-min-content;width:-moz-min-content;width:min-content;margin-right:10px}#body[data-v-0bf2b7ba]{padding:.3em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#body[data-v-0bf2b7ba],.item[data-v-0bf2b7ba]{display:-webkit-box;display:-ms-flexbox;display:flex}.item[data-v-0bf2b7ba]{padding:.2em;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.item[data-v-0bf2b7ba]:hover{background-color:#ff7052;cursor:pointer}.accordion{margin-bottom:.2em}.accordion:last-of-type{margin-bottom:0}.tool-detail{display:block}#accordion-container[data-v-dca395d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;overflow-y:auto;max-height:25em}.ContextMenu ul[data-v-2e7d4582]{border:1px solid #82c8a0}.ContextMenu ul li[data-v-2e7d4582]{border-bottom:1px solid #82c8a0}.ContextMenu ul li[data-v-2e7d4582]:hover{background-color:#82c8a0}.token[data-v-46baf892]{margin-bottom:.5em;padding:.3em;border:2px solid #ff7052;background-color:rgba(255,112,82,.2);border-radius:1em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.token>img[data-v-46baf892]{margin-right:.5em}.token[data-v-46baf892]:last-child{margin-bottom:0}.selected[data-v-46baf892]{background-color:#ff7052;background-color:rgba(255,112,82,.7)}.selected[data-v-46baf892]:hover{cursor:pointer;background-color:rgba(255,112,82,.2)}.token[data-v-46baf892]:not(.selected):hover{background-color:rgba(255,112,82,.7);cursor:pointer}#toolselect[data-v-b6e1f51c]{position:absolute;bottom:25px;right:25px;z-index:10}#toolselect [data-v-b6e1f51c]{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;-webkit-user-drag:none!important}#toolselect>ul[data-v-b6e1f51c]{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;padding:0;margin:0;border:1px solid #82c8a0;border-radius:7px}#toolselect>ul>li[data-v-b6e1f51c]{display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#eee;border-right:1px solid #82c8a0}#toolselect>ul>li[data-v-b6e1f51c]:last-child{border-right:none;border-radius:0 4px 4px 0}#toolselect>ul>li[data-v-b6e1f51c]:first-child{border-radius:4px 0 0 4px}#toolselect>ul>li[data-v-b6e1f51c]:hover{background-color:#82c8a0}#toolselect>ul>li a[data-v-b6e1f51c]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:10px;text-decoration:none}#toolselect .tool-selected[data-v-b6e1f51c]{background-color:#82c8a0}#input-copy[data-v-20bfdb3e]{background-color:#d3d3d3;border:1px solid #d3d3d3;border-radius:5px;padding:0;position:relative}#input-copy>[data-v-20bfdb3e]{-webkit-box-sizing:border-box;box-sizing:border-box;border:none;height:30px;margin:0;padding:.3em}#copy-button[data-v-20bfdb3e]{padding-left:.5em}#input-element[data-v-20bfdb3e]{width:100%;margin:.1em}#input-copy[data-v-20bfdb3e]:hover{border-color:#ff7052;background-color:#ff7052}#show-popup[data-v-20bfdb3e]{background-color:#ff7052;right:20px;position:absolute}.modal-header[data-v-b908e87c]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.header-close[data-v-b908e87c]{position:absolute;top:5px;right:5px}.modal-body[data-v-b908e87c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}[data-v-b908e87c]{-webkit-box-sizing:border-box;box-sizing:border-box}#categories[data-v-b908e87c]{width:7.5em;background-color:transparent;border-right:1px solid #82c8a0}.category[data-v-b908e87c]{border-bottom:1px solid #82c8a0;padding:5px;text-align:right;background-color:#fff;padding-right:10px}.category[data-v-b908e87c]:hover,.selected[data-v-b908e87c]{background-color:#82c8a0;font-weight:700;cursor:pointer;padding-right:5px}.panel[data-v-b908e87c]{background-color:#fff;padding-left:1em;padding-right:1em;display:grid;grid-template-columns:[setting] 1fr [value] 1fr [end];-ms-flex-line-pack:start;align-content:start;min-height:10em}.row[data-v-b908e87c]{display:contents}.panel>[data-v-b908e87c]:not(.row),.row>[data-v-b908e87c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5em}.row:first-of-type>[data-v-b908e87c]{margin-top:.5em}.row:last-of-type>[data-v-b908e87c]{margin-bottom:.5em}.row:hover>[data-v-b908e87c]{cursor:pointer;text-shadow:0 0 1px #000}.smallrow>[data-v-b908e87c]{padding:.2em}.header[data-v-b908e87c]{line-height:.1em;margin:20px 0 15px;font-style:italic}.header[data-v-b908e87c]:after{position:relative;left:5px;width:100%;border-bottom:1px solid #000;content:""}.spanrow[data-v-b908e87c]{grid-column:1/end}.danger[data-v-b908e87c]{color:#ff7052}.danger[data-v-b908e87c]:hover{text-shadow:0 0 1px #ff7052;cursor:pointer}input[type=checkbox][data-v-b908e87c]{width:16px;height:23px;margin:0;white-space:nowrap;display:inline-block}input[type=number][data-v-b908e87c],input[type=text][data-v-b908e87c]{width:100%}button[data-v-b908e87c]{padding:6px 12px;border:1px solid #d3d3d3;border-radius:.25em;background-color:#ebebe4}a,a:active,a:hover,a:visited{color:inherit}svg{cursor:pointer}.notAllowed,.notAllowed>*{cursor:not-allowed!important}#layers,#layers canvas{width:100%;height:100%;position:absolute;left:0;top:0;overflow:hidden}#main[data-v-3d0578ba]{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}#board[data-v-3d0578ba]{position:relative;width:100%;height:100%}#layerselect[data-v-3d0578ba]{position:absolute;bottom:25px;left:25px;z-index:10}#layerselect [data-v-3d0578ba]{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;-webkit-user-drag:none!important}#layerselect ul[data-v-3d0578ba]{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;padding:0;margin:0;border:1px solid #82c8a0;border-radius:6px}#layerselect li[data-v-3d0578ba]{display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#eee;border-right:1px solid #82c8a0}#layerselect li[data-v-3d0578ba]:first-child{border-radius:4px 0 0 4px}#layerselect li[data-v-3d0578ba]:last-child{border-right:none;border-radius:0 4px 4px 0}#layerselect li[data-v-3d0578ba]:hover{background-color:#82c8a0}#layerselect li a[data-v-3d0578ba]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:10px;text-decoration:none}#layerselect .layer-selected[data-v-3d0578ba]{background-color:#82c8a0}#zoomer[data-v-3d0578ba]{position:absolute;top:15px;right:25px;z-index:11}#FPS[data-v-3d0578ba]{position:absolute;top:0;right:75px;z-index:11;color:#fff} \ No newline at end of file +@import url(https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css);@import url(https://fonts.googleapis.com/css?family=Open+Sans);#app,body,html{margin:0;padding:0;border:0;width:100%;height:100%;font-family:Open Sans,sans-serif;font-weight:200}#app{display:-webkit-box;display:-ms-flexbox;display:flex;background:url(/static/img/login_background.png) repeat fixed}.ContextMenu{position:fixed;z-index:11}.ContextMenu ul{border:1px solid #ff7052;border-radius:5px;background:#fff;padding:0;list-style:none;margin:0}.ContextMenu ul li{border-bottom:1px solid #ff7052;padding:5px;cursor:pointer}.ContextMenu ul li:hover{background-color:#ff7052}.ContextMenu ul li:last-child{border-bottom:none}.ContextMenu>ul>li{clear:left;position:relative}.ContextMenu>ul>li ul{display:none;position:absolute;left:100%;top:-1px}.ContextMenu>ul>li:hover ul{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.hide[data-v-c2851f0e]{display:none}.mask[data-v-c2851f0e]{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%}.dialog-mask[data-v-c2851f0e]{pointer-events:none}.modal-mask[data-v-c2851f0e]{background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.modal-container[data-v-c2851f0e]{pointer-events:auto;position:absolute;width:auto;height:auto;border-radius:2px;-webkit-box-shadow:0 2px 8px rgba(0,0,0,.33);box-shadow:0 2px 8px rgba(0,0,0,.33);font-family:Helvetica,Arial,sans-serif}.modal-enter[data-v-c2851f0e],.modal-leave-active[data-v-c2851f0e]{opacity:0}.modal-enter .modal-container[data-v-c2851f0e],.modal-leave-active .modal-container[data-v-c2851f0e]{-webkit-transform:scale(1.1);transform:scale(1.1)}.modal-header[data-v-1883e207]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.modal-body[data-v-1883e207]{padding:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}button[data-v-1883e207]:first-of-type{margin-right:10px}.modal-header[data-v-0602c2e6]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.modal-body[data-v-0602c2e6]{padding:10px;padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.modal-footer[data-v-0602c2e6]{padding-top:0;padding:10px;text-align:right}[v-cloak],[v-cloak] *{display:none}body,html{padding:0;margin:0;width:100%;height:100%;background:url(/static/img/login_background.png) repeat fixed;font-family:Open Sans,sans-serif}#AssetManager{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#titlebar{padding:15px;margin:10px;font-size:30px;font-weight:700;background-color:#ff7052;color:#fff;text-align:center;border:1px solid #000;-webkit-box-shadow:2px 2px grey;box-shadow:2px 2px grey}#main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;height:100%}#asset-details,#assets{background-color:#fff;border:1px solid #000;margin:10px;position:relative;padding-top:45px;padding-bottom:45px;-webkit-box-shadow:3px 3px grey;box-shadow:3px 3px grey}#assets{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#asset-details{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:15px;max-width:50%;overflow:scroll}#asset-details img{width:100%}#breadcrumbs{position:absolute;left:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;overflow:hidden;z-index:1;background-color:#ff7052;color:#fff;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:5px;border-bottom-right-radius:10px}#breadcrumbs>div{position:relative;padding:10px;padding-left:20px;text-align:center}#breadcrumbs>div:first-child{padding-left:10px}#breadcrumbs div:last-child:after{content:none}#breadcrumbs div:after{content:"";position:absolute;display:inline-block;width:30px;height:30px;top:3px;right:-10px;background-color:transparent;border-top-right-radius:5px;-webkit-transform:scale(.707) rotate(45deg);transform:scale(.707) rotate(45deg);-webkit-box-shadow:1px -1px rgba(0,0,0,.25);box-shadow:1px -1px rgba(0,0,0,.25);z-index:1}#actionbar{position:absolute;right:0;top:0;padding:8px;border-bottom-left-radius:10px;background-color:#ff7052;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#fff}#actionbar>div{margin:5px}#actionbar>div:hover{cursor:pointer}#explorer{position:relative;left:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));max-width:100%;max-height:100%;overflow:auto}.inode{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px}.inode-selected,.inode:hover{cursor:pointer;background-color:#ff7052}.inode *{pointer-events:none}.title{word-break:break-all}#asset-detail-title{font-weight:700;font-size:30px;border-bottom:2px solid #000;margin-bottom:15px;text-align:center}[data-v-bc30fc14]{-ms-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;border:0}form[data-v-bc30fc14]{position:relative;top:50%;width:250px;display:table;margin:-150px auto 0 auto;background:#fff;border-radius:4px}.legend[data-v-bc30fc14]{position:relative;text-align:center;width:100%;display:block;background:#ff7052;padding:15px;color:#fff;font-size:20px}.legend[data-v-bc30fc14]:after{content:"";opacity:.06;top:0;left:0;bottom:0;right:0;position:absolute}.input[data-v-bc30fc14]{position:relative;width:90%;margin:15px auto}.input span[data-v-bc30fc14]{position:absolute;display:block;color:#d4d4d4;left:10px;top:8px;font-size:20px}.input input[data-v-bc30fc14]{width:100%;padding:10px 5px 10px 40px;display:block;border:1px solid #ededed;border-radius:4px;-webkit-transition:.2s ease-out;transition:.2s ease-out;color:#a1a1a1}.input input[data-v-bc30fc14]:focus{padding:10px 5px 10px 10px;outline:0;border-color:#ff7052}.submit[data-v-bc30fc14]{width:45px;height:45px;display:block;margin:0 auto -15px auto;background:#fff;border-radius:100%;border:1px solid #ff7052;color:#ff7052;font-size:24px;cursor:pointer;-webkit-box-shadow:0 0 0 7px #fff;box-shadow:0 0 0 7px #fff;-webkit-transition:.2s ease-out;transition:.2s ease-out}.submit[data-v-bc30fc14]:focus,.submit[data-v-bc30fc14]:hover{background:#ff7052;color:#fff;outline:0}.feedback[data-v-bc30fc14]{position:absolute;bottom:-70px;width:100%;text-align:center;color:#fff;background:#c71585;padding:10px 0;font-size:12px}.feedback[data-v-bc30fc14]:before{bottom:100%;left:50%;border:solid transparent;content:"";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(46,204,113,0);border-bottom-color:#c71585;border-width:10px;margin-left:-10px}[data-v-b102d41e]{-ms-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;border:0}a[data-v-b102d41e]{text-decoration:inherit;color:inherit;width:100%;display:block;text-align:center;border:1px solid #ff7052}a[data-v-b102d41e]:hover{background-color:#ff7052;color:#fff}a[data-v-b102d41e]:first-child{border-radius:10px 10px 0 0}a[data-v-b102d41e]:last-child{border-radius:0 0 10px 10px}a[data-v-b102d41e]:only-child{border-radius:10px}#formcontainer[data-v-b102d41e]{margin:auto}form[data-v-b102d41e]{background:#fff;border-radius:4px}.legend[data-v-b102d41e]{position:relative;text-align:center;width:100%;display:block;background:#ff7052;padding:15px;color:#fff;font-size:20px}.legend[data-v-b102d41e]:after{content:"";opacity:.06;top:0;left:0;bottom:0;right:0;position:absolute}#account-options[data-v-b102d41e]{display:-webkit-box;display:-ms-flexbox;display:flex;background:#fff;border-radius:4px;margin-top:50px;height:45px}#account-options form[data-v-b102d41e]{background:none;border-radius:0;width:50%}.input[data-v-b102d41e]{position:relative;width:90%;margin:15px auto}.input span[data-v-b102d41e]{position:absolute;display:block;color:#d4d4d4;left:10px;top:8px;font-size:20px}.input input[data-v-b102d41e]{width:100%;padding:10px 5px 10px 40px;display:block;border:1px solid #ededed;border-radius:4px;-webkit-transition:.2s ease-out;transition:.2s ease-out;color:#a1a1a1}.input input[data-v-b102d41e]:focus{outline:0;border-color:#ff7052}.submit[data-v-b102d41e]{width:45px;height:45px;display:block;margin:0 auto -15px auto;background:#fff;border-radius:100%;border:1px solid #ff7052;color:#ff7052;font-size:24px;cursor:pointer;-webkit-box-shadow:0 0 0 7px #fff;box-shadow:0 0 0 7px #fff;-webkit-transition:.2s ease-out;transition:.2s ease-out}.submit[data-v-b102d41e]:focus,.submit[data-v-b102d41e]:hover{background:#ff7052;color:#fff;outline:0}.feedback[data-v-b102d41e]{position:absolute;bottom:-70px;width:100%;text-align:center;color:#fff;background:#c71585;padding:10px 0;font-size:12px}.feedback[data-v-b102d41e]:before{bottom:100%;left:50%;border:solid transparent;content:"";height:0;width:0;position:absolute;pointer-events:none;border-color:rgba(46,204,113,0);border-bottom-color:#c71585;border-width:10px;margin-left:-10px}h4[data-v-b102d41e]{background-color:#fff;width:100%;text-align:center;border-bottom:1px solid #000;line-height:.1em}h4 span[data-v-b102d41e]{background:#fff;padding:0 10px}.modal-header[data-v-62228cde]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.header-close[data-v-62228cde]{position:absolute;top:5px;right:5px}.modal-body[data-v-62228cde]{padding:10px}#initiative-list[data-v-62228cde]{padding:0;-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}#initiative-list[data-v-62228cde],.initiative-actor[data-v-62228cde]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal}.initiative-actor[data-v-62228cde]{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:2px 5px;margin-bottom:2px;border-radius:5px;border:2px solid transparent}.initiative-selected[data-v-62228cde]{border:2px solid #82c8a0;background-color:#82c8a0}.initiative-actor:hover+.initiative-effect[data-v-62228cde],.initiative-effect[data-v-62228cde]:hover,.initiative-selected+.initiative-effect[data-v-62228cde]{display:-webkit-box;display:-ms-flexbox;display:flex;border-color:rgba(130,200,160,.6);background-color:rgba(130,200,160,.6)}.initiative-actor[data-v-62228cde]:hover{border:2px solid #82c8a0}.initiative-actor>[data-v-62228cde]{width:30px;margin-left:2px}.initiative-effect[data-v-62228cde]{display:none;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:-moz-fit-content;width:-webkit-fit-content;width:fit-content;margin-right:5px;margin-top:-2px;margin-bottom:5px;padding:2px;border:2px solid transparent;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:none}.initiative-effect>[data-v-62228cde]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.initiative-effect>*>[data-v-62228cde]{border:none;background-color:inherit;text-align:right;margin-left:20px;min-width:10px}.initiative-effect>*>[data-v-62228cde]:first-child{margin-left:0}#initiative-bar[data-v-62228cde]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-right:10px;margin-left:10px;margin-top:10px;margin-bottom:-10px;padding:2px}.initiative-bar-button[data-v-62228cde]{border:2px solid #82c8a0;border-radius:5px;padding:5px}.initiative-bar-button[data-v-62228cde]:hover{color:#fff;background-color:#82c8a0;cursor:pointer}abbr[data-v-e477c214]{text-decoration:none}.scroll[data-v-e477c214]{max-height:20em;overflow-y:auto}.modal-header[data-v-e477c214]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.header-close[data-v-e477c214]{position:absolute;top:5px;right:5px}.modal-body[data-v-e477c214]{padding:10px;max-width:450px}.separator[data-v-e477c214]{line-height:.1em;margin:7px 0}.separator[data-v-e477c214]:after{position:absolute;left:10px;right:10px;border-bottom:1px solid #000;content:""}.spanrow[data-v-e477c214]{grid-column:start/end}.lower-opacity>[data-v-e477c214]{opacity:.3}.grid[data-v-e477c214]{display:grid;grid-template-columns:[start] 50px [name] 1fr [visible] 30px [remove] 30px [end];grid-row-gap:5px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.grid>[data-v-e477c214]{text-align:center}.name[data-v-e477c214]{text-align:left!important}.row[data-v-e477c214]{display:contents}.row>[data-v-e477c214]{padding:5px;height:20px;border:1px solid transparent}.row:hover>[data-v-e477c214]{cursor:pointer;border-top:1px solid #ff7052;border-bottom:1px solid #ff7052;background-color:rgba(0,0,0,.2)}.row:hover>[data-v-e477c214]:first-child{border-left:1px solid #ff7052;border-top-left-radius:10px;border-bottom-left-radius:10px}.row:hover>[data-v-e477c214]:last-child{border-right:1px solid #ff7052;border-top-right-radius:10px;border-bottom-right-radius:10px}#no-labels[data-v-e477c214]{grid-column:start/end;font-style:italic;padding-left:50px}#addLabelButton[data-v-e477c214]{grid-column:visible/end}.outer[data-v-f8744d60]{padding:5px;border:1px solid #000;border-radius:3px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.current-color[data-v-f8744d60]{width:13px;height:13px;background-color:#000;border:1px solid #000}.mask[data-v-f8744d60]{position:fixed;z-index:9998;top:0;left:0;width:100%;height:100%}.preview[data-v-6d718094]{position:fixed;z-index:50;left:200px;top:0}.asset-preview-image[data-v-6d718094]{width:100%;max-width:250px}.draggable[data-v-6d718094]{list-style:none;font-family:helvetica}.token[data-v-6d718094]{padding-top:5px;padding-bottom:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.token img[data-v-6d718094]{margin-right:5px}.token svg[data-v-6d718094]{margin-left:auto}.folder>[data-v-6d718094]{display:none}.directory>.file[data-v-6d718094],.directory>.folder[data-v-6d718094]{display:block}.folder[data-v-6d718094]:hover{font-weight:700;cursor:pointer}.folder:hover>[data-v-6d718094]{font-weight:400}.folder>[data-v-c7fe324c]{display:none}.directory>.file[data-v-c7fe324c],.directory>.folder[data-v-c7fe324c]{display:block}.folder[data-v-c7fe324c]:hover{font-weight:700;cursor:pointer}.folder:hover>[data-v-c7fe324c]{font-weight:400}#menuContainer[data-v-c7fe324c]{position:absolute;z-index:20;top:0;left:0;height:100%;width:100%;pointer-events:none}#menu[data-v-c7fe324c]{height:100%;max-width:200px}#locations-menu[data-v-c7fe324c],#menu[data-v-c7fe324c]{position:absolute;top:0;left:0;z-index:21;background-color:#fa5a5a;overflow:auto;pointer-events:auto}#locations-menu[data-v-c7fe324c]{max-height:100px;width:100%}#locations-menu>div[data-v-c7fe324c]{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}#locations-menu>div>div[data-v-c7fe324c]{background-color:#fff;text-align:center;line-height:100px;width:100px;border-right:1px solid #82c8a0}#locations-menu>div>div[data-v-c7fe324c]:hover{cursor:pointer;background-color:#82c8a0}.actionButton[data-v-c7fe324c]{position:absolute;right:0;margin:5px;margin-right:10px;padding:0}.menu-accordion[data-v-c7fe324c]{background-color:#eee;color:#444;cursor:pointer;padding:18px;text-align:left;border:none;outline:none;-webkit-transition:.4s;transition:.4s;border-top:1px solid #82c8a0;width:100%;width:-moz-available;width:-webkit-fill-available;width:stretch}.menu-accordion-active[data-v-c7fe324c],.menu-accordion[data-v-c7fe324c]:hover{background-color:#82c8a0}.menu-accordion-panel[data-v-c7fe324c]{background-color:#fff;display:none;overflow:hidden;min-height:2em}.menu-accordion-subpanel[data-v-c7fe324c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.menu-accordion-subpanel>[data-v-c7fe324c]{padding:5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.menu-accordion-subpanel>[data-v-c7fe324c]:hover{background-color:#82c8a0}#exitButton[data-v-c7fe324c]{position:fixed;bottom:0;width:100%}#radialmenu[data-v-c7fe324c]{position:absolute;z-index:20;width:0;height:0;pointer-events:auto}.rm-list-dm #rm-locations svg[data-v-c7fe324c]{margin-left:50px}.rm-list-dm #rm-settings svg[data-v-c7fe324c]{margin-bottom:50px}.rm-wrapper[data-v-c7fe324c]{position:relative;width:200px;height:200px;top:-100px;left:-100px}.rm-wrapper .rm-topper[data-v-c7fe324c]{pointer-events:none;text-align:center;line-height:50px;font-size:25px}.rm-wrapper .rm-toggler[data-v-c7fe324c],.rm-wrapper .rm-topper[data-v-c7fe324c]{display:block;position:absolute;width:50px;height:50px;left:50%;top:50%;margin-left:-25px;margin-top:-25px;background:#fa5a5a;color:#fff;border-radius:50%}.rm-wrapper .rm-toggler .rm-list[data-v-c7fe324c],.rm-wrapper .rm-topper .rm-list[data-v-c7fe324c]{opacity:.5;list-style:none;padding:0;width:200px;height:200px;overflow:hidden;display:block;border-radius:50%;-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.2);box-shadow:0 0 10px 0 rgba(0,0,0,.2);margin:-75px 0 0 -75px}.rm-list-dm[data-v-c7fe324c]{-webkit-transform:rotate(135deg)!important;transform:rotate(135deg)!important}.rm-wrapper .rm-toggler:hover .rm-list[data-v-c7fe324c],.rm-wrapper .rm-topper:hover .rm-list[data-v-c7fe324c]{opacity:1}.rm-wrapper .rm-toggler .rm-list .rm-item[data-v-c7fe324c],.rm-wrapper .rm-topper .rm-list .rm-item[data-v-c7fe324c]{display:table;width:50%;height:50%;float:left;text-align:center;-webkit-box-shadow:inset 0 0 2px 0 rgba(0,0,0,.2);box-shadow:inset 0 0 2px 0 rgba(0,0,0,.2);background-color:#fff}.rm-wrapper .rm-toggler .rm-list .rm-item[data-v-c7fe324c]:hover,.rm-wrapper .rm-topper .rm-list .rm-item[data-v-c7fe324c]:hover{background-color:#82c8a0}.rm-wrapper .rm-toggler .rm-list .rm-item:hover a[data-v-c7fe324c],.rm-wrapper .rm-topper .rm-list .rm-item:hover a[data-v-c7fe324c]{color:#fff}.rm-wrapper .rm-toggler .rm-list .rm-item a[data-v-c7fe324c],.rm-wrapper .rm-topper .rm-list .rm-item a[data-v-c7fe324c]{display:table-cell;vertical-align:middle;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);text-decoration:none;font-size:25px;color:#82c8a0;border:none;outline:none}.settings-enter-active[data-v-c7fe324c],.settings-leave-active[data-v-c7fe324c]{-webkit-transition:width .5s;transition:width .5s}.settings-enter[data-v-c7fe324c],.settings-leave-to[data-v-c7fe324c]{width:0}.settings-enter-to[data-v-c7fe324c],.settings-leave[data-v-c7fe324c]{width:200px}.locations-enter-active[data-v-c7fe324c],.locations-leave-active[data-v-c7fe324c]{-webkit-transition:height .5s;transition:height .5s}.locations-enter[data-v-c7fe324c],.locations-leave-to[data-v-c7fe324c]{height:0}.locations-enter-to[data-v-c7fe324c],.locations-leave[data-v-c7fe324c]{height:100px}.modal-header[data-v-7a3669fd]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.modal-header>input[data-v-7a3669fd]{background-color:inherit;border:none;font-weight:700;font-size:large}.header-close[data-v-7a3669fd]{position:absolute;top:5px;right:5px}.modal-body[data-v-7a3669fd]{padding:10px}.modal-body>textarea[data-v-7a3669fd]{width:100%;min-height:100px;max-height:500px}.modal-footer[data-v-7a3669fd]{padding-top:0;padding:10px;text-align:right}.modal-header[data-v-23de098e]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.header-close[data-v-23de098e]{position:absolute;top:5px;right:5px}.modal-body[data-v-23de098e]{padding:10px;max-width:450px}.grid[data-v-23de098e]{display:grid;grid-template-columns:[name] 1fr [numerator] 30px [slash] 5px [denominator] 30px [colour] 40px [visible] 30px [light] 30px [remove] 30px [end];grid-column-gap:5px}.colours[data-v-23de098e],.grid[data-v-23de098e]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.colours[data-v-23de098e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header[data-v-23de098e]{line-height:.1em;margin:20px 0 15px}.header[data-v-23de098e]:after{position:absolute;right:5px;width:75%;border-bottom:1px solid #000;content:""}.spanrow[data-v-23de098e]{grid-column:1/end}#labels[data-v-23de098e]{-ms-flex-wrap:wrap;flex-wrap:wrap}.label[data-v-23de098e]{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;font-size:13px;margin:5px}.label:hover>.label-main[data-v-23de098e]:before{content:"\D7";position:absolute;color:red;font-size:20px;font-weight:700;cursor:pointer;top:-8px;right:-4px;pointer-events:auto}#label-add:hover>.label-main[data-v-23de098e]{pointer-events:auto;cursor:pointer;color:#fff;font-weight:700;background-color:#ff7052}#label-add:hover>.label-main[data-v-23de098e]:before{content:""}.label-user[data-v-23de098e]{border-top-left-radius:10px;border-bottom-left-radius:10px;background-color:#ff7052;border:1px solid #ff7052;padding:5px}.label-main[data-v-23de098e]{border:1px solid #ff7052;border-radius:10px;padding:5px;pointer-events:none}.label-user+.label-main[data-v-23de098e]{border-top-left-radius:0;border-bottom-left-radius:0}input[type=checkbox][data-v-23de098e]{width:16px;height:23px;margin:0 8px 0 8px;white-space:nowrap;display:inline-block}#selection-menu[data-v-43d09857]{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;top:75px;right:0;z-index:10;opacity:.5;border-top-left-radius:5px;border-bottom-left-radius:5px;border:1px solid #82c8a0;border-right:none;padding:10px 35px 10px 10px;background-color:#eee}#selection-menu[data-v-43d09857]:hover{background-color:#82c8a0;opacity:1}#selection-edit-button[data-v-43d09857]{position:absolute;right:10px;top:10px;cursor:pointer}#selection-auras[data-v-43d09857],#selection-trackers[data-v-43d09857]{display:grid;grid-template-columns:[name] 1fr [value] 1fr}.selection-aura-value[data-v-43d09857],.selection-tracker-value[data-v-43d09857]{justify-self:center;padding:2px}.selection-aura-value[data-v-43d09857]:hover,.selection-tracker-value[data-v-43d09857]:hover{cursor:pointer;background-color:rgba(20,20,20,.2)}#selection-name[data-v-43d09857]{font-size:20px;font-weight:700;margin-bottom:10px}.ContextMenu ul[data-v-6c66d243]{border:1px solid #82c8a0}.ContextMenu ul li[data-v-6c66d243]{border-bottom:1px solid #82c8a0}.ContextMenu ul li[data-v-6c66d243]:hover{background-color:#82c8a0}canvas[data-v-73816298]{grid-column:label/end;justify-self:center}.modal-header[data-v-73816298]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.modal-body[data-v-73816298]{padding:10px;display:grid;grid-template-columns:[label] 1fr [value] 2fr [end];grid-row-gap:10px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.modal-footer[data-v-73816298]{padding-top:0;padding:10px;text-align:right}.colours[data-v-73816298]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.tool-detail{position:absolute;right:var(--detailRight);bottom:80px;z-index:11;border:1px solid #2b2b2b;background-color:#fff;display:grid;padding:10px;grid-template-columns:auto auto;grid-column-gap:5px;grid-row-gap:2px}.tool-detail:after{content:"";position:absolute;right:var(--detailArrow);bottom:0;width:0;height:0;border:14px solid transparent;border-top-color:#000;border-bottom:0;margin-left:-14px;margin-bottom:-14px}.tool-detail input{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.option[data-v-639cd890]{padding:6px;border:1px solid #82c8a0;border-radius:0;-webkit-box-flex:1;-ms-flex:1 1;flex:1 1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:13px;min-width:25px}.option-selected[data-v-639cd890],.option[data-v-639cd890]:hover{background-color:#82c8a0}.selectgroup[data-v-639cd890]{display:-webkit-box;display:-ms-flexbox;display:flex}.selectgroup>.option[data-v-639cd890]:first-of-type{border-top-left-radius:10px;border-bottom-left-radius:10px}.selectgroup>.option[data-v-639cd890]:last-of-type{border-top-right-radius:10px;border-bottom-right-radius:10px}.accordion[data-v-0bf2b7ba]{border:2px solid #ff7052;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;-webkit-user-drag:none!important}#header[data-v-0bf2b7ba]{background-color:#ff7052;cursor:pointer;padding:.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}[type=checkbox][data-v-0bf2b7ba]{width:-webkit-min-content;width:-moz-min-content;width:min-content;margin-right:10px}#body[data-v-0bf2b7ba]{padding:.3em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#body[data-v-0bf2b7ba],.item[data-v-0bf2b7ba]{display:-webkit-box;display:-ms-flexbox;display:flex}.item[data-v-0bf2b7ba]{padding:.2em;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.item[data-v-0bf2b7ba]:hover{background-color:#ff7052;cursor:pointer}.accordion{margin-bottom:.2em}.accordion:last-of-type{margin-bottom:0}.tool-detail{display:block}#accordion-container[data-v-dca395d6]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;overflow-y:auto;max-height:25em}.ContextMenu ul[data-v-2e7d4582]{border:1px solid #82c8a0}.ContextMenu ul li[data-v-2e7d4582]{border-bottom:1px solid #82c8a0}.ContextMenu ul li[data-v-2e7d4582]:hover{background-color:#82c8a0}.token[data-v-46baf892]{margin-bottom:.5em;padding:.3em;border:2px solid #ff7052;background-color:rgba(255,112,82,.2);border-radius:1em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.token>img[data-v-46baf892]{margin-right:.5em}.token[data-v-46baf892]:last-child{margin-bottom:0}.selected[data-v-46baf892]{background-color:#ff7052;background-color:rgba(255,112,82,.7)}.selected[data-v-46baf892]:hover{cursor:pointer;background-color:rgba(255,112,82,.2)}.token[data-v-46baf892]:not(.selected):hover{background-color:rgba(255,112,82,.7);cursor:pointer}#toolselect[data-v-b6e1f51c]{position:absolute;bottom:25px;right:25px;z-index:10}#toolselect [data-v-b6e1f51c]{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;-webkit-user-drag:none!important}#toolselect>ul[data-v-b6e1f51c]{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;padding:0;margin:0;border:1px solid #82c8a0;border-radius:7px}#toolselect>ul>li[data-v-b6e1f51c]{display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#eee;border-right:1px solid #82c8a0}#toolselect>ul>li[data-v-b6e1f51c]:last-child{border-right:none;border-radius:0 4px 4px 0}#toolselect>ul>li[data-v-b6e1f51c]:first-child{border-radius:4px 0 0 4px}#toolselect>ul>li[data-v-b6e1f51c]:hover{background-color:#82c8a0}#toolselect>ul>li a[data-v-b6e1f51c]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:10px;text-decoration:none}#toolselect .tool-selected[data-v-b6e1f51c]{background-color:#82c8a0}#input-copy[data-v-20bfdb3e]{background-color:#d3d3d3;border:1px solid #d3d3d3;border-radius:5px;padding:0;position:relative}#input-copy>[data-v-20bfdb3e]{-webkit-box-sizing:border-box;box-sizing:border-box;border:none;height:30px;margin:0;padding:.3em}#copy-button[data-v-20bfdb3e]{padding-left:.5em}#input-element[data-v-20bfdb3e]{width:100%;margin:.1em}#input-copy[data-v-20bfdb3e]:hover{border-color:#ff7052;background-color:#ff7052}#show-popup[data-v-20bfdb3e]{background-color:#ff7052;right:20px;position:absolute}.modal-header[data-v-b908e87c]{background-color:#ff7052;padding:10px;font-size:20px;font-weight:700;cursor:move}.header-close[data-v-b908e87c]{position:absolute;top:5px;right:5px}.modal-body[data-v-b908e87c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}[data-v-b908e87c]{-webkit-box-sizing:border-box;box-sizing:border-box}#categories[data-v-b908e87c]{width:7.5em;background-color:transparent;border-right:1px solid #82c8a0}.category[data-v-b908e87c]{border-bottom:1px solid #82c8a0;padding:5px;text-align:right;background-color:#fff;padding-right:10px}.category[data-v-b908e87c]:hover,.selected[data-v-b908e87c]{background-color:#82c8a0;font-weight:700;cursor:pointer;padding-right:5px}.panel[data-v-b908e87c]{background-color:#fff;padding-left:1em;padding-right:1em;display:grid;grid-template-columns:[setting] 1fr [value] 1fr [end];-ms-flex-line-pack:start;align-content:start;min-height:10em}.row[data-v-b908e87c]{display:contents}.panel>[data-v-b908e87c]:not(.row),.row>[data-v-b908e87c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5em}.row:first-of-type>[data-v-b908e87c]{margin-top:.5em}.row:last-of-type>[data-v-b908e87c]{margin-bottom:.5em}.row:hover>[data-v-b908e87c]{cursor:pointer;text-shadow:0 0 1px #000}.smallrow>[data-v-b908e87c]{padding:.2em}.header[data-v-b908e87c]{line-height:.1em;margin:20px 0 15px;font-style:italic}.header[data-v-b908e87c]:after{position:relative;left:5px;width:100%;border-bottom:1px solid #000;content:""}.spanrow[data-v-b908e87c]{grid-column:1/end}.danger[data-v-b908e87c]{color:#ff7052}.danger[data-v-b908e87c]:hover{text-shadow:0 0 1px #ff7052;cursor:pointer}input[type=checkbox][data-v-b908e87c]{width:16px;height:23px;margin:0;white-space:nowrap;display:inline-block}input[type=number][data-v-b908e87c],input[type=text][data-v-b908e87c]{width:100%}button[data-v-b908e87c]{padding:6px 12px;border:1px solid #d3d3d3;border-radius:.25em;background-color:#ebebe4}a,a:active,a:hover,a:visited{color:inherit}svg{cursor:pointer}.notAllowed,.notAllowed>*{cursor:not-allowed!important}#layers,#layers canvas{width:100%;height:100%;position:absolute;left:0;top:0;overflow:hidden}#main[data-v-3d0578ba]{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%}#board[data-v-3d0578ba]{position:relative;width:100%;height:100%}#layerselect[data-v-3d0578ba]{position:absolute;bottom:25px;left:25px;z-index:10}#layerselect [data-v-3d0578ba]{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;-webkit-user-drag:none!important}#layerselect ul[data-v-3d0578ba]{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;padding:0;margin:0;border:1px solid #82c8a0;border-radius:6px}#layerselect li[data-v-3d0578ba]{display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#eee;border-right:1px solid #82c8a0}#layerselect li[data-v-3d0578ba]:first-child{border-radius:4px 0 0 4px}#layerselect li[data-v-3d0578ba]:last-child{border-right:none;border-radius:0 4px 4px 0}#layerselect li[data-v-3d0578ba]:hover{background-color:#82c8a0}#layerselect li a[data-v-3d0578ba]{display:-webkit-box;display:-ms-flexbox;display:flex;padding:10px;text-decoration:none}#layerselect .layer-selected[data-v-3d0578ba]{background-color:#82c8a0}#zoomer[data-v-3d0578ba]{position:absolute;top:15px;right:25px;z-index:11}#FPS[data-v-3d0578ba]{position:absolute;top:0;right:75px;z-index:11;color:#fff} \ No newline at end of file diff --git a/server/static/js/app-legacy.2dfde930.js b/server/static/js/app-legacy.2dfde930.js new file mode 100644 index 000000000..998d73173 --- /dev/null +++ b/server/static/js/app-legacy.2dfde930.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var s,r,a=t[0],l=t[1],c=t[2],d=0,h=[];de.fillText(t.text,t.x,t.y)),e.restore()}contains(e){return!1}center(e){}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){}getMaxHeight(e){const t=this.getLines(e),i=30;return i*t.length}getMaxWidth(e){const t=this.getLines(e),i=t.map(t=>e.measureText(t.text).width);return Math.max(...i)}getLines(e){const t=this.text.split("\n"),i=[],s=e.canvas.width,n=30,o=0;let r=0;for(const a of t){let t="";const l=a.split(" ");for(const a of l){const l=t+a+" ",c=e.measureText(l),u=c.width;u>s?(e.fillText(t,o,r),i.push({text:t,x:o,y:r}),t=a+" ",r+=n):t=l}i.push({text:t,x:o,y:r}),r+=n}return i}}t.Text=r},"033f":function(e,t,i){"use strict";i.r(t);var s=i("da7f"),n=i("a68b");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("a83f");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"6c66d243",null);t["default"]=a.exports},"034f":function(e,t,i){"use strict";var s=i("64a9"),n=i.n(s);n.a},"0525":function(e,t,i){},"0584":function(e,t,i){"use strict";var s=i("de21"),n=i.n(s);n.a},"0634":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("c345a"),l=i("60a3");let c=class extends o.default{constructor(){super(...arguments),this.display=!1,this.left=0,this.top=0,this.transparent=!1}mounted(){this.transparent=0===this.$refs.chromePicker.val.rgba.a,this.setPosition()}open(){this.display||this.disabled||(this.setPosition(),this.display=!0,this.$nextTick(()=>this.$children[0].$el.focus()))}updateColor(e){this.transparent=0===e.rgba.a;const t=n.default(e.rgba).toRgbString();this.$emit("update:color",t),this.$emit("input",t)}closePicker(){this.display=!1,this.$emit("change",this.color)}setPosition(){const e=this.$el.getBoundingClientRect();e.right+224>window.innerWidth?this.left=e.left-224:this.left=e.right,e.bottom+242>window.innerHeight?this.top=e.top-242:this.top=e.bottom}};s.__decorate([l.Prop(String)],c.prototype,"color",void 0),s.__decorate([l.Prop(Boolean)],c.prototype,"disabled",void 0),c=s.__decorate([r.default({components:{"chrome-picker":a.Chrome}})],c),t.default=c},"07f5":function(e,t,i){"use strict";i.r(t);var s=i("69fb"),n=i("d588");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("561b"),i("e6c4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"3d0578ba",null);t["default"]=a.exports},"0bc6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("8055"));function o(e){t.socket.io.opts.query=`user=${decodeURIComponent(e.params.creator)}&room=${decodeURIComponent(e.params.room)}`,t.socket.connect()}t.socket=n.default(location.protocol+"//"+location.host+"/planarally",{autoConnect:!1}),t.createConnection=o},"0cf7":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("4aec")),a=s.__importDefault(i("a535")),l=s.__importDefault(i("cec2")),c=i("5338"),u=i("2d5b"),d=i("4a5b");let h=class extends n.default{constructor(){super(...arguments),this.path=[],this.draggingSelection=!1}get folders(){return u.assetStore.folders}get files(){return u.assetStore.files}get selected(){return u.assetStore.selected}get idMap(){return u.assetStore.idMap}get currentFolder(){return this.path.length?this.path[this.path.length-1]:u.assetStore.root}get parentFolder(){let e=this.path[this.path.length-2];return void 0===e&&(e=u.assetStore.root),e}get firstSelectedFile(){for(const e of u.assetStore.selected)if(u.assetStore.idMap.get(e).file_hash)return u.assetStore.idMap.get(e);return null}changeDirectory(e){e<0?this.path.pop():this.path.push(e),u.assetStore.clearSelected(),c.socket.emit("Folder.Get",this.currentFolder)}createDirectory(){const e=window.prompt("New folder name");null!==e&&c.socket.emit("Folder.Create",{name:e,parent:this.currentFolder})}moveInode(e,t){u.assetStore.files.includes(e)?u.assetStore.files.splice(u.assetStore.files.indexOf(e),1):u.assetStore.folders.splice(u.assetStore.folders.indexOf(e),1),u.assetStore.idMap.delete(e),c.socket.emit("Inode.Move",{inode:e,target:t})}select(e,t){if(e.shiftKey&&u.assetStore.selected.length>0){const e=[...u.assetStore.files,...u.assetStore.folders],i=e.indexOf(u.assetStore.selected[u.assetStore.selected.length-1]),s=e.indexOf(t);for(let t=i;t!==s;i0&&this.upload(e.dataTransfer.files,t);this.draggingSelection=!1}prepareUpload(){document.getElementById("files").click()}upload(e,t){const i=document.getElementById("files").files;if(void 0===e){if(!i)return;e=i}void 0===t&&(t=this.currentFolder);const s=1e5;for(const n of e){const e=d.uuidv4(),i=Math.ceil(n.size/s);for(let o=0;o{c.socket.emit("Asset.Upload",{name:n.name,directory:t,data:r.result,slice:o,totalSlices:i,uuid:e})}}}}};h=s.__decorate([o.default({components:{Prompt:l.default,ConfirmDialog:a.default,AssetContextMenu:r.default},beforeRouteEnter(e,t,i){c.socket.connect(),i()},beforeRouteLeave(e,t,i){c.socket.disconnect(),i()}})],h),t.default=h},"0ddd":function(e,t,i){"use strict";i.r(t);var s=i("8f54"),n=i("4bc3");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("9dd4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"6d718094",null);t["default"]=a.exports},1:function(e,t){},1077:function(e,t,i){"use strict";i.r(t);var s=i("f994"),n=i("1eee");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("3cd3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"bc30fc14",null);t["default"]=a.exports},1131:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Initiative")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("draggable",{attrs:{id:"initiative-list",setData:e.fakeSetData,disabled:!e.$store.state.game.IS_DM},on:{change:e.updateOrder},model:{value:e.data,callback:function(t){e.data=t},expression:"data"}},[e._l(e.data,function(t){return[i("div",{key:t.uuid,staticStyle:{display:"flex","flex-direction":"column","align-items":"flex-end"}},[i("div",{staticClass:"initiative-actor",class:{"initiative-selected":e.currentActor===t.uuid},style:{cursor:e.$store.state.game.IS_DM&&"move"},on:{mouseenter:function(i){return e.toggleHighlight(t,!0)},mouseleave:function(i){return e.toggleHighlight(t,!1)}}},[t.has_img?[i("img",{attrs:{src:t.source,width:"30px",height:"30px"}})]:[i("span",{staticStyle:{width:"auto"}},[e._v(e._s(t.source))])],i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:t.initiative,expression:"actor.initiative",modifiers:{lazy:!0,number:!0}}],class:{notAllowed:!e.owns(t)},attrs:{type:"text",placeholder:"value",disabled:!e.owns(t)},domProps:{value:t.initiative},on:{change:[function(i){e.$set(t,"initiative",e._n(i.target.value))},function(i){return e.syncInitiative(t)}],blur:function(t){return e.$forceUpdate()}}}),i("div",{staticClass:"initiative-effects-icon",class:{notAllowed:!e.owns(t)},staticStyle:{opacity:"0.6"},on:{click:function(i){e.createEffect(t,e.getDefaultEffect(),!0)}}},[i("i",{staticClass:"fas fa-stopwatch"}),t.effects?[e._v(e._s(t.effects.length))]:[e._v("0")]],2),i("div",{class:{notAllowed:!e.owns(t)},style:{opacity:t.visible?"1.0":"0.3"},on:{click:function(i){return e.toggleOption(t,"visible")}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{class:{notAllowed:!e.owns(t)},style:{opacity:t.group?"1.0":"0.3"},on:{click:function(i){return e.toggleOption(t,"group")}}},[i("i",{staticClass:"fas fa-users"})]),i("div",{class:{notAllowed:!e.owns(t)},style:{opacity:e.owns(t)?"1.0":"0.3"},on:{click:function(i){return e.removeInitiative(t.uuid,!0,!0)}}},[i("i",{staticClass:"fas fa-trash-alt"})])],2),t.effects?i("div",{staticClass:"initiative-effect"},e._l(t.effects,function(s){return i("div",{key:s.uuid},[i("input",{directives:[{name:"model",rawName:"v-model",value:s.name,expression:"effect.name"}],attrs:{type:"text",size:s.name.length||1},domProps:{value:s.name},on:{change:function(i){return e.updateEffect(t.uuid,s,!0)},input:function(t){t.target.composing||e.$set(s,"name",t.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model",value:s.turns,expression:"effect.turns"}],attrs:{type:"text",size:s.turns.toString().length||1},domProps:{value:s.turns},on:{change:function(i){return e.updateEffect(t.uuid,s,!0)},input:function(t){t.target.composing||e.$set(s,"turns",t.target.value)}}})])}),0):e._e()])]})],2),i("div",{attrs:{id:"initiative-bar"}},[i("div",{attrs:{id:"initiative-round"}},[e._v("Round "+e._s(e.roundCounter))]),i("div",{staticStyle:{display:"flex"}}),i("div",{staticClass:"initiative-bar-button",style:e.visionLock?"background-color: #82c8a0":"",on:{click:e.toggleVisionLock}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{staticClass:"initiative-bar-button",style:e.cameraLock?"background-color: #82c8a0":"",on:{click:function(t){e.cameraLock=!e.cameraLock}}},[i("i",{staticClass:"fas fa-video"})]),i("div",{staticClass:"initiative-bar-button",class:{notAllowed:!e.$store.state.game.IS_DM},on:{click:function(t){e.setRound(0,!0),e.updateTurn(e.data[0].uuid,!0)}}},[i("i",{staticClass:"fas fa-sync-alt"})]),i("div",{staticClass:"initiative-bar-button",class:{notAllowed:!e.$store.state.game.IS_DM},on:{click:e.nextTurn}},[i("i",{staticClass:"fas fa-chevron-right"})])])],1)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},1216:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("6f92"),n=i("92b1"),o=i("98ef"),r=i("4aee");function a(e,t){const i=s.layerManager.getLayer("draw");if(void 0===i)return;const o=i.ctx;o.lineJoin="round",o.lineJoin="round",o.beginPath(),o.strokeStyle=void 0===t?`rgb(${255*Math.random()}, ${255*Math.random()}, ${255*Math.random()})`:t,o.moveTo(n.g2lx(e[0][0]),n.g2ly(e[0][1]));for(const s of e)o.lineTo(n.g2lx(s[0]),n.g2ly(s[1]));o.closePath(),o.stroke()}function l(e,t){const i=s.layerManager.getLayer("draw");if(void 0===i)return;const n=i.ctx;n.lineJoin="round",n.lineJoin="round",n.beginPath(),n.strokeStyle=void 0===t?`rgb(${255*Math.random()}, ${255*Math.random()}, ${255*Math.random()})`:t,n.moveTo(e[0][0],e[0][1]);for(const s of e)n.lineTo(s[0],s[1]);n.closePath(),n.stroke()}function c(e,t){return t?e:n.g2lx(e)}function u(e,t){return t?e:n.g2ly(e)}t.drawPolygon=a,t.drawPolygonL=l;let d=0,h=0;function f(e,t,i,s,n){e.beginPath(),e.strokeStyle=s?"rgba(255, 0, 0, 0.30)":"rgba(0, 0, 0, 0.30)",e.moveTo(c(t[0],n),u(t[1],n)),e.lineTo(c(i[0],n),u(i[1],n)),e.closePath(),e.stroke()}function p(e,t=!0,i=!0,n=0){d=0,h=0;let a=0;const l=s.layerManager.getLayer("draw");if(void 0===l)return;const p=l.ctx;i&&p.clearRect(0,0,2e3,1e3),p.lineJoin="round",p.lineJoin="round";const g=new o.EdgeIterator(e);while(g.valid)g.next(),g.collect();g.collect();do{const e=g.edge.first.vertices[r.ccw(g.edge.second)].point,t=g.edge.first.vertices[r.cw(g.edge.second)].point;if(n>0){if(e[0]===-1/0||t[0]===-1/0){g.next();continue}h++,g.edge.first.constraints[g.edge.second]?(d++,2===n&&console.log(`Edge: (*) ${e} > ${t}`)):2===n&&console.log(`Edge: ${e} > ${t}`)}do{g.next(),g.collect()}while(g.valid)}while(null!==g.pos);for(const s of e.triangles){if(s.isInfinite())continue;a++;const e=[];p.fillStyle="red",void 0!==s.vertices[0]&&(e.push(s.vertices[0].point),p.beginPath(),p.arc(c(s.vertices[0].point[0],t),u(s.vertices[0].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),void 0!==s.vertices[1]&&(e.push(s.vertices[1].point),p.arc(c(s.vertices[1].point[0],t),u(s.vertices[1].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),void 0!==s.vertices[2]&&(e.push(s.vertices[2].point),p.arc(c(s.vertices[2].point[0],t),u(s.vertices[2].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),2===n&&console.log("[T] ",...e,s.constraints),p.moveTo(c(s.vertices[0].point[0],t),u(s.vertices[0].point[1],t)),void 0!==s.vertices[0]&&void 0!==s.vertices[1]&&f(p,s.vertices[0].point,s.vertices[1].point,s.constraints[2],t),void 0!==s.vertices[1]&&void 0!==s.vertices[2]&&f(p,s.vertices[1].point,s.vertices[2].point,s.constraints[0],t),void 0!==s.vertices[2]&&void 0!==s.vertices[0]&&f(p,s.vertices[2].point,s.vertices[0].point,s.constraints[1],t)}n>0&&(console.log(`Edges: ${d}/${h}`),console.log(`Faces: ${a}`))}window.DP=a,window.DPL=l,window.DPT=p},1289:function(e,t,i){"use strict";i.r(t);var s=i("df64"),n=i("d677");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("8790");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"0bf2b7ba",null);t["default"]=a.exports},"12d3":function(e,t,i){"use strict";var s=i("a260"),n=i.n(s);n.a},1327:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importStar(i("66cb")),o=i("4a5b"),r=i("4709"),a=i("f10f"),l=i("92b1");class c extends r.Circle{constructor(e,t,i,s,n,o,r){super(e,t,n,o,r),this.type="circulartoken",this.text=i,this.font=s}asDict(){return Object.assign(this.getBaseDict(),{radius:this.r,text:this.text,font:this.font})}fromDict(e){super.fromDict(e),this.r=e.radius,this.text=e.text,this.font=e.font}draw(e){super.draw(e),e.font=this.font,e.save();const t=l.g2l(this.center());e.textAlign="center",e.textBaseline="middle";const i=o.calcFontScale(e,this.text,l.g2lz(this.r),l.g2lz(this.r)),s=0;e.transform(i,s,-s,i,t.x,t.y),e.fillStyle=n.mostReadable(this.fillColour,["#000","#fff"]).toHexString(),e.fillText(this.text,0,0),e.restore()}getInitiativeRepr(){return{uuid:this.uuid,visible:!a.gameStore.IS_DM,group:!1,source:""===this.name||"Unknown shape"===this.name?this.text:this.name,has_img:!1,effects:[],index:1/0}}}t.CircularToken=c},1625:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("b2ed"),r=i("0180"),a=i("f10f"),l=i("92b1");class c{constructor(){this.shown=!1;const e=new s.GlobalPoint(0,0);this.annotationText=new r.Text(e,"","bold 20px serif",0,"rgba(230, 230, 230, 1)"),this.annotationRect=new o.Rect(e,0,0,"rgba(0, 0, 0, 0.6)")}setActiveText(e){if(void 0===this.layer){if(!n.layerManager.hasLayer("draw"))return void console.warn("There is no draw layer to draw annotations on!");this.layer=n.layerManager.getLayer("draw"),this.layer.addShape(this.annotationRect,!1),this.layer.addShape(this.annotationText,!1)}this.shown=""!==e,this.annotationText.refPoint=l.l2g(new s.LocalPoint(this.layer.canvas.width/2,50)),this.annotationText.text=e;const t=this.shown?this.annotationText.getMaxWidth(this.layer.ctx)+10:0,i=this.shown?this.annotationText.getMaxHeight(this.layer.ctx)+10:0;this.annotationRect.refPoint=l.l2g(new s.LocalPoint(this.layer.canvas.width/2-t/2,30)),this.annotationRect.w=t/a.gameStore.zoomFactor,this.annotationRect.h=i/a.gameStore.zoomFactor,this.layer.invalidate(!0)}}t.AnnotationManager=c},"19f9":function(e,t,i){"use strict";i.r(t);var s=i("264b"),n=i("8cd4");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("314d");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"c7fe324c",null);t["default"]=a.exports},"1c76":function(e,t,i){"use strict";i.r(t);var s=i("2c88"),n=i("300e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("7f1e");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},"1dd6":function(e,t,i){"use strict";i.r(t);var s=i("5ae5"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"1eee":function(e,t,i){"use strict";i.r(t);var s=i("d30b"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"1fd5":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Label manager")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("div",{staticClass:"grid"},[i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Category"}},[e._v("Cat.")])]),i("div",{staticClass:"header name"},[e._v("Name")]),i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Visible"}},[e._v("Vis.")])]),i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Delete"}},[e._v("Del.")])]),i("div",{staticClass:"separator spanrow",staticStyle:{margin:"0 0 7px"}}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.search,expression:"search"}],ref:"search",staticClass:"spanrow",attrs:{type:"text",placeholder:"search"},domProps:{value:e.search},on:{input:function(t){t.target.composing||(e.search=t.target.value)}}})]),i("div",{staticClass:"grid scroll"},[e._l(e.categories,function(t){return[e._l(e.labels[t],function(t){return[i("div",{key:"row-"+t.uuid,staticClass:"row",on:{click:function(i){return e.selectLabel(t.uuid)}}},[t.category?[i("div",{key:"cat-"+t.uuid},[e._v(e._s(t.category))]),i("div",{key:"name-"+t.uuid,staticClass:"name"},[e._v(e._s(t.name))])]:e._e(),t.category?e._e():[i("div",{key:"cat-"+t.uuid}),i("div",{key:"name-"+t.uuid,staticClass:"name"},[e._v(e._s(t.name))])],i("div",{key:"visible-"+t.uuid,class:{"lower-opacity":!t.visible},style:{textAlign:"center"},on:{click:function(i){return i.stopPropagation(),e.toggleVisibility(t)}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{key:"delete-"+t.uuid,on:{click:function(i){return i.stopPropagation(),e.deleteLabel(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})])],2)]})]}),0===e.labels.length?[i("div",{attrs:{id:"no-labels"}},[e._v("No labels exist yet")])]:e._e()],2),i("div",{staticClass:"grid"},[i("div",{staticClass:"separator spanrow"}),i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.newCategory,expression:"newCategory",modifiers:{trim:!0}}],attrs:{type:"text"},domProps:{value:e.newCategory},on:{input:function(t){t.target.composing||(e.newCategory=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}}),i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.newName,expression:"newName",modifiers:{trim:!0}}],attrs:{type:"text"},domProps:{value:e.newName},on:{input:function(t){t.target.composing||(e.newName=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}}),i("button",{attrs:{id:"addLabelButton"},on:{click:function(t){return t.stopPropagation(),e.addLabel(t)}}},[e._v("Add")])])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"206a":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("6c30"),r=i("4709"),a=i("1327"),l=i("5e7c"),c=i("574e"),u=i("b2ed"),d=i("0180"),h=i("e4ea");function f(e){let t;const i=new s.GlobalPoint(e.x,e.y);if("rect"===e.type_){const s=e;t=new u.Rect(i,s.width,s.height,s.fill_colour,s.stroke_colour,s.uuid)}else if("circle"===e.type_){const s=e;t=new r.Circle(i,s.radius,s.fill_colour,s.stroke_colour,s.uuid)}else if("circulartoken"===e.type_){const s=e;t=new a.CircularToken(i,s.radius,s.text,s.font,s.fill_colour,s.stroke_colour,s.uuid)}else if("line"===e.type_){const n=e;t=new l.Line(i,new s.GlobalPoint(n.x2,n.y2),n.line_width,n.stroke_colour,n.uuid)}else if("multiline"===e.type_){const n=e;t=new c.MultiLine(i,n.points.map(e=>new s.GlobalPoint(e.x,e.y)),n.line_width,n.stroke_colour,n.uuid)}else if("polygon"===e.type_){const n=e;t=new h.Polygon(i,n.vertices.map(e=>new s.GlobalPoint(e.x,e.y)),n.fill_colour,n.stroke_colour,n.uuid)}else if("text"===e.type_){const s=e;t=new d.Text(i,s.text,s.font,s.angle,s.fill_colour,s.stroke_colour,s.uuid)}else{if("assetrect"!==e.type_)return;{const s=e,r=new Image(s.width,s.height);s.src.startsWith("http")?r.src=new URL(s.src).pathname:r.src=s.src,t=new o.Asset(r,i,s.width,s.height,s.uuid),r.onload=()=>{n.layerManager.getLayer(e.layer).invalidate(!1)}}}return t.fromDict(e),t}t.createShapeFromDict=f},"208e":function(e,t,i){"use strict";i.r(t);var s=i("27ae"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"223d":function(e,t,i){"use strict";var s=i("e756"),n=i.n(s);n.a},"22bd":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("SelectContext",{ref:"selectcontext"})},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2380:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,colour:"rgba(255, 255, 255, 0.8)",mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("DM Settings")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body",on:{click:e.handleClick}},[i("div",{attrs:{id:"categories"}},e._l(e.categories,function(t,s){return i("div",{key:t,staticClass:"category",class:{selected:e.selection===s},on:{click:function(t){e.selection=s}}},[e._v(e._s(t))])}),0),i("div",{directives:[{name:"show",rawName:"v-show",value:0===e.selection,expression:"selection === 0"}],staticClass:"panel"},[i("div",{staticClass:"spanrow header"},[e._v("Players")]),e._l(e.$store.state.game.players,function(t){return i("div",{key:t.id,staticClass:"row smallrow"},[i("div",[e._v(e._s(t.name))]),i("div",[i("div",{on:{click:function(i){return e.kickPlayer(t.id)}}},[e._v("Kick")])])])}),0===Object.values(e.$store.state.game.players).length?i("div",{staticClass:"row smallrow"},[i("div",{staticClass:"spanrow"},[e._v("There are no players yet, invite some using the link below!")])]):e._e(),i("div",{staticClass:"spanrow header"},[e._v("Invite code")]),i("div",{staticClass:"row"},[i("div",[e._v("Invitation URL:")]),e.showRefreshState?[i("InputCopyElement",{attrs:{value:e.refreshState}})]:[i("InputCopyElement",{attrs:{value:e.invitationUrl}})]],2),i("div",{staticClass:"row",on:{click:e.refreshInviteCode}},[i("div"),i("div",[i("button",[e._v("Refresh invitation code")])])]),i("div",{staticClass:"spanrow header"},[e._v("Danger Zone")]),i("div",{staticClass:"row"},[i("div",[e.locked?[e._v("Unlock")]:[e._v("Lock")],e._v(" Session "),i("i",[e._v("(DM access only)")])],2),i("div",[i("button",{staticClass:"danger",on:{click:e.toggleSessionLock}},[e.locked?[e._v("Unlock")]:[e._v("Lock")],e._v(" this Session")],2)])]),i("div",{staticClass:"row"},[i("div",[e._v("Remove Session")]),i("div",[i("button",{staticClass:"danger",on:{click:e.deleteSession}},[e._v("Delete this Session")])])])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:1===e.selection,expression:"selection === 1"}],staticClass:"panel"},[i("div",{staticClass:"row"},[i("label",{attrs:{for:"useGridInput"}},[e._v("Use grid")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.useGrid,expression:"useGrid"}],attrs:{id:"useGridInput",type:"checkbox"},domProps:{checked:Array.isArray(e.useGrid)?e._i(e.useGrid,null)>-1:e.useGrid},on:{change:function(t){var i=e.useGrid,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.useGrid=i.concat([o])):r>-1&&(e.useGrid=i.slice(0,r).concat(i.slice(r+1)))}else e.useGrid=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"gridSizeInput"}},[e._v("Grid Size (in pixels):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.gridSize,expression:"gridSize",modifiers:{number:!0}}],attrs:{id:"gridSizeInput",type:"number",min:"0"},domProps:{value:e.gridSize},on:{input:function(t){t.target.composing||(e.gridSize=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"unitSizeInput"}},[e._v("Unit Size (in ft.):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.unitSize,expression:"unitSize",modifiers:{number:!0}}],attrs:{id:"unitSizeInput",type:"number"},domProps:{value:e.unitSize},on:{input:function(t){t.target.composing||(e.unitSize=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])])]),i("div",{directives:[{name:"show",rawName:"v-show",value:2===e.selection,expression:"selection === 2"}],staticClass:"panel"},[i("div",{staticClass:"spanrow header"},[e._v("Core")]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fakePlayerInput"}},[e._v("Fake player:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fakePlayer,expression:"fakePlayer"}],attrs:{id:"fakePlayerInput",type:"checkbox"},domProps:{checked:Array.isArray(e.fakePlayer)?e._i(e.fakePlayer,null)>-1:e.fakePlayer},on:{change:function(t){var i=e.fakePlayer,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fakePlayer=i.concat([o])):r>-1&&(e.fakePlayer=i.slice(0,r).concat(i.slice(r+1)))}else e.fakePlayer=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"useFOWInput"}},[e._v("Fill entire canvas with FOW:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fullFOW,expression:"fullFOW"}],attrs:{id:"useFOWInput",type:"checkbox"},domProps:{checked:Array.isArray(e.fullFOW)?e._i(e.fullFOW,null)>-1:e.fullFOW},on:{change:function(t){var i=e.fullFOW,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fullFOW=i.concat([o])):r>-1&&(e.fullFOW=i.slice(0,r).concat(i.slice(r+1)))}else e.fullFOW=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fowLOS"}},[e._v("Only show lights in LoS:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fowLOS,expression:"fowLOS"}],attrs:{id:"fowLOS",type:"checkbox"},domProps:{checked:Array.isArray(e.fowLOS)?e._i(e.fowLOS,null)>-1:e.fowLOS},on:{change:function(t){var i=e.fowLOS,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fowLOS=i.concat([o])):r>-1&&(e.fowLOS=i.slice(0,r).concat(i.slice(r+1)))}else e.fowLOS=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fowOpacity"}},[e._v("FOW opacity:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.fowOpacity,expression:"fowOpacity",modifiers:{number:!0}}],attrs:{id:"fowOpacity",type:"number",min:"0",max:"1",step:"0.1"},domProps:{value:e.fowOpacity},on:{input:function(t){t.target.composing||(e.fowOpacity=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"spanrow header"},[e._v("Advanced")]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"visionMode"}},[e._v("Vision Mode:")]),i("div",[i("select",{attrs:{id:"visionMode"},on:{change:e.changeVisionMode}},[i("option",{domProps:{selected:"bvh"===e.$store.state.game.visionMode}},[e._v("BVH")]),i("option",{domProps:{selected:"triangle"===e.$store.state.game.visionMode}},[e._v("Triangle")])])])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"vmininp"}},[e._v("Minimal full vision (ft):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:e.visionRangeMin,expression:"visionRangeMin",modifiers:{lazy:!0,number:!0}}],attrs:{id:"vmininp",type:"number",min:"0"},domProps:{value:e.visionRangeMin},on:{change:function(t){e.visionRangeMin=e._n(t.target.value)},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"vmaxinp"}},[e._v("Maximal vision (ft):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:e.visionRangeMax,expression:"visionRangeMax",modifiers:{lazy:!0,number:!0}}],attrs:{id:"vmaxinp",type:"number",min:"0"},domProps:{value:e.visionRangeMax},on:{change:function(t){e.visionRangeMax=e._n(t.target.value)},blur:function(t){return e.$forceUpdate()}}})])])])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2469:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=i("4a5b"),r=i("0bc6"),a=i("f312"),l=i("8f0a"),c=i("6f92"),u=i("f10f"),d=i("92b1");class h{constructor(e,t,i,s){this.fillColour="#000",this.strokeColour="rgba(0,0,0,0)",this.name="Unknown shape",this.nameVisible=!0,this.trackers=[],this.auras=[],this.labels=[],this._owners=[],this.visionObstruction=!1,this.movementObstruction=!1,this.isToken=!1,this.showHighlight=!1,this.annotation="",this.globalCompositeOperation="source-over",this.options=new Map,this._refPoint=e,this.uuid=s||o.uuidv4(),void 0!==t&&(this.fillColour=t),void 0!==i&&(this.strokeColour=i)}get refPoint(){return this._refPoint}set refPoint(e){this._refPoint=e}visibleInCanvas(e){return!1}getPointIndex(e,t=0){for(const[i,s]of this.points.entries())if(Math.abs(e.x-s[0])<=t&&Math.abs(e.y-s[1])<=t)return i;return-1}getPointOrientation(e){const t=l.GlobalPoint.fromArray(this.points[(this.points.length+e-1)%this.points.length]),i=l.GlobalPoint.fromArray(this.points[e]),s=l.GlobalPoint.fromArray(this.points[(e+1)%this.points.length]),n=s.subtract(t),o=t.add(n.multiply(.5));return i.subtract(o).normalize()}invalidate(e){const t=c.layerManager.getLayer(this.layer);t&&t.invalidate(e)}checkVisionSources(e=!0){const t=this,i=u.gameStore.visionBlockers.indexOf(this.uuid);let s=!1;this.visionObstruction&&-1===i?(u.gameStore.visionBlockers.push(this.uuid),s=!0):!this.visionObstruction&&i>=0&&(u.gameStore.visionBlockers.splice(i,1),s=!0),s&&e&&u.gameStore.recalculateVision(),this.auras.forEach(e=>{const i=u.gameStore.visionSources,s=i.findIndex(t=>t.aura===e.uuid);e.visionSource&&-1===s?i.push({shape:t.uuid,aura:e.uuid}):!e.visionSource&&s>=0&&i.splice(s,1)});for(let n=u.gameStore.visionSources.length-1;n>=0;n--){const e=u.gameStore.visionSources[n];e.shape===t.uuid&&(t.auras.some(t=>t.uuid===e.aura&&t.visionSource)||u.gameStore.visionSources.splice(n,1))}}setMovementBlock(e,t=!0){this.movementObstruction=e||!1;const i=u.gameStore.movementblockers.indexOf(this.uuid);let s=!1;this.movementObstruction&&-1===i?(u.gameStore.movementblockers.push(this.uuid),s=!0):!this.movementObstruction&&i>=0&&(u.gameStore.movementblockers.splice(i,1),s=!0),s&&t&&u.gameStore.recalculateMovement()}setIsToken(e){if(this.isToken=e,this.ownedBy()){const e=u.gameStore.ownedtokens.indexOf(this.uuid);this.isToken&&-1===e?u.gameStore.ownedtokens.push(this.uuid):!this.isToken&&e>=0&&u.gameStore.ownedtokens.splice(e,1)}}getBaseDict(){return{type_:this.type,uuid:this.uuid,x:this.refPoint.x,y:this.refPoint.y,layer:this.layer,draw_operator:this.globalCompositeOperation,movement_obstruction:this.movementObstruction,vision_obstruction:this.visionObstruction,auras:a.aurasToServer(this.auras),trackers:this.trackers,labels:this.labels,owners:this._owners,fill_colour:this.fillColour,stroke_colour:this.strokeColour,name:this.name,name_visible:this.nameVisible,annotation:this.annotation,is_token:this.isToken,options:JSON.stringify([...this.options])}}fromDict(e){this.layer=e.layer,this.globalCompositeOperation=e.draw_operator,this.movementObstruction=e.movement_obstruction,this.visionObstruction=e.vision_obstruction,this.auras=a.aurasFromServer(e.auras),this.trackers=e.trackers,this.labels=e.labels,this._owners=e.owners,this.isToken=e.is_token,this.nameVisible=e.name_visible,e.annotation&&(this.annotation=e.annotation),e.name&&(this.name=e.name),e.options&&(this.options=new Map(JSON.parse(e.options)))}draw(e){if(void 0!==this.globalCompositeOperation?e.globalCompositeOperation=this.globalCompositeOperation:e.globalCompositeOperation="source-over",this.showHighlight){const t=this.getBoundingBox();e.strokeStyle="red",e.strokeRect(d.g2lx(t.topLeft.x)-5,d.g2ly(t.topLeft.y)-5,d.g2lz(t.w)+10,d.g2lz(t.h)+10)}}drawAuras(e){for(const i of this.auras){if(0===i.value&&0===i.dim)return;e.beginPath();const s=d.g2l(this.center()),o=d.g2lr(i.value+i.dim);if(0===i.dim)e.fillStyle=i.colour;else{const t=e.createRadialGradient(s.x,s.y,d.g2lr(i.value),s.x,s.y,d.g2lr(i.value+i.dim)),o=n.default(i.colour);e.fillStyle=t,t.addColorStop(0,i.colour),t.addColorStop(1,o.setAlpha(0).toRgbString())}if(i.visionSource&&void 0!==i.lastPath)try{e.fill(i.lastPath)}catch(t){e.arc(s.x,s.y,o,0,2*Math.PI),e.fill(),console.warn(t)}else e.arc(s.x,s.y,o,0,2*Math.PI),e.fill()}}getInitiativeRepr(){return{uuid:this.uuid,visible:!u.gameStore.IS_DM,group:!1,source:this.name,has_img:!1,effects:[],index:1/0}}moveLayer(e,t){const i=c.layerManager.getLayer(this.layer),s=c.layerManager.getLayer(e);void 0!==i&&void 0!==s&&(this.layer=e,i.shapes.splice(i.shapes.indexOf(this),1),s.shapes.push(this),i.invalidate(!0),s.invalidate(!1),t&&r.socket.emit("Shape.Layer.Change",{uuid:this.uuid,layer:e}))}get owners(){return Object.freeze(this._owners.slice())}ownedBy(e){return void 0===e&&(e=u.gameStore.username),u.gameStore.IS_DM||this._owners.includes(e)||u.gameStore.FAKE_PLAYER&&u.gameStore.activeTokens.includes(this.uuid)}addOwner(e){this._owners.includes(e)||this._owners.push(e)}updateOwner(e,t){const i=this._owners.findIndex(t=>t===e);i>=0?this._owners.splice(i,1,t):this.addOwner(t)}removeOwner(e){const t=this._owners.findIndex(t=>t===e);this._owners.splice(t,1)}}t.Shape=h},"255e":function(e,t,i){"use strict";i.r(t);var s=i("851c"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"264b":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"menuContainer"}},[i("div",{ref:"rm",style:{left:e.visible.settings?"200px":"0",top:e.visible.locations?"100px":"0"},attrs:{id:"radialmenu"}},[i("div",{staticClass:"rm-wrapper"},[i("div",{staticClass:"rm-toggler"},[i("ul",{staticClass:"rm-list",class:{"rm-list-dm":e.IS_DM}},[e.IS_DM?i("li",{staticClass:"rm-item",attrs:{id:"rm-locations"},on:{click:function(t){e.visible.locations=!e.visible.locations}}},[e._m(0)]):e._e(),i("li",{staticClass:"rm-item",attrs:{id:"rm-settings"},on:{click:function(t){e.visible.settings=!e.visible.settings}}},[e._m(1)])])]),e._m(2)])]),i("transition",{attrs:{name:"settings"},on:{enter:function(t){e.$refs.rm.style.transition="left 500ms"}}},[e.visible.settings?i("div",{ref:"settings",attrs:{id:"menu"},on:{click:e.settingsClick}},[i("div",{staticStyle:{width:"200px",height:"90%","overflow-y":"auto","overflow-x":"hidden"}},[e.IS_DM?[i("button",{staticClass:"menu-accordion"},[e._v("Assets")]),i("div",{staticClass:"menu-accordion-panel"},[i("a",{staticClass:"actionButton",attrs:{href:"/assets",target:"blank",title:"Open asset manager"}},[i("i",{staticClass:"fas fa-external-link-alt"})]),i("div",{staticClass:"directory",attrs:{id:"menu-tokens"}},[i("asset-node",{attrs:{asset:e.assets}}),e.assets?e._e():i("div",[e._v("No assets")])],1)]),i("button",{staticClass:"menu-accordion"},[e._v("Notes")]),i("div",{staticClass:"menu-accordion-panel"},[i("div",{staticClass:"menu-accordion-subpanel",attrs:{id:"menu-notes"}},[i("a",{staticClass:"actionButton",on:{click:e.createNote}},[i("i",{staticClass:"far fa-plus-square"})]),e._l(e.notes,function(t){return i("div",{key:t.uuid,staticStyle:{cursor:"pointer"},on:{click:function(i){return e.openNote(t)}}},[e._v(e._s(t.title||"[?]"))])}),e.notes.length?e._e():i("div",[e._v("No notes")])],2)]),i("button",{staticClass:"menu-accordion",on:{click:e.openDmSettings}},[e._v("DM Options")])]:e._e(),i("button",{staticClass:"menu-accordion"},[e._v("Client Options")]),i("div",{staticClass:"menu-accordion-panel"},[i("div",{staticClass:"menu-accordion-subpanel"},[i("label",{attrs:{for:"gridColour"}},[e._v("Grid Colour:")]),i("color-picker",{attrs:{id:"gridColour",color:e.gridColour},on:{"update:color":function(t){e.gridColour=t}}}),i("label",{attrs:{for:"fowColour"}},[e._v("FOW Colour:")]),i("color-picker",{attrs:{id:"fowColour",color:e.fowColour},on:{"update:color":function(t){e.fowColour=t}}}),i("label",{attrs:{for:"rulerColour"}},[e._v("Ruler Colour:")]),i("color-picker",{attrs:{id:"rulerColour",color:e.rulerColour},on:{"update:color":function(t){e.rulerColour=t}}})],1)])],2),i("router-link",{staticClass:"menu-accordion",staticStyle:{"text-decoration":"none",display:"inline-block",position:"absolute",bottom:"0"},attrs:{to:"/dashboard"}},[e._v("Exit")])],1):e._e()]),i("transition",{attrs:{name:"locations"},on:{enter:function(t){e.$refs.rm.style.transition="top 500ms"}}},[e.IS_DM&&e.visible.locations?i("div",{attrs:{id:"locations-menu"}},[i("div",[e._l(e.locations,function(t){return i("div",{key:t,on:{click:function(i){return e.changeLocation(t)}}},[e._v(e._s(t))])}),i("div",{on:{click:e.createLocation}},[i("i",{staticClass:"fas fa-plus"})])],2)]):e._e()]),i("img",{attrs:{id:"dragImage"}})],1)},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{attrs:{href:"#"}},[i("i",{staticClass:"far fa-compass"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{attrs:{href:"#"}},[i("i",{staticClass:"fas fa-cog"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{staticClass:"rm-topper"},[i("i",{staticClass:"icon-share-alt"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2686:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.note?i("modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("span",{on:{click:function(t){return e.$refs.title.select()}}},[i("i",{staticClass:"fas fa-pencil-alt",staticStyle:{"font-size":"15px"}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.note.title,expression:"note.title"}],ref:"title",domProps:{value:e.note.title},on:{change:e.updateNote,input:function(t){t.target.composing||e.$set(e.note,"title",t.target.value)}}}),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}],null,!1,1320213373)},[i("div",{staticClass:"modal-body"},[i("textarea",{directives:[{name:"model",rawName:"v-model",value:e.note.text,expression:"note.text"}],ref:"textarea",style:{height:e.calcHeight()},domProps:{value:e.note.text},on:{change:e.updateNote,input:function(t){t.target.composing||e.$set(e.note,"text",t.target.value)}}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.removeNote}},[i("i",{staticClass:"far fa-trash-alt"}),e._v(" Remove\n ")])])]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2756:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("496c")),r=s.__importDefault(i("ea6a")),a=i("4a5b"),l=i("0bc6"),c=i("8f0a"),u=i("6f92"),d=i("b2ed"),h=i("f10f"),f=i("2838"),p=i("92b1"),g=i("5a5c");var v;(function(e){e[e["Noop"]=0]="Noop",e[e["Resize"]=1]="Resize",e[e["Drag"]=2]="Drag",e[e["GroupSelect"]=3]="GroupSelect"})(v=t.SelectOperations||(t.SelectOperations={}));const m=new c.GlobalPoint(-1e3,-1e3);let y=class extends r.default{constructor(){super(...arguments),this.name="Select",this.showContextMenu=!1,this.active=!1,this.mode=v.Noop,this.resizePoint=0,this.deltaChanged=!1,this.dragRay=new c.Ray(new c.LocalPoint(0,0),new c.Vector(0,0)),this.selectionStartPoint=m,this.selectionHelper=new d.Rect(m,0,0)}created(){this.selectionHelper.globalCompositeOperation="source-over"}onMouseDown(e){const t=u.layerManager.getLayer();if(void 0===t)return void console.log("No active layer!");this.selectionHelper.owners.includes(h.gameStore.username)||this.selectionHelper.addOwner(h.gameStore.username);const i=g.getMouse(e),s=p.l2g(i);let n,o=!1;n=t.selection.length?t.shapes.concat(t.selection):t.shapes;for(let r=n.length-1;r>=0;r--){const e=n[r];if(this.resizePoint=e.getPointIndex(s,p.l2gz(3)),this.resizePoint>=0){t.selection=[e],a.getRef("selectionInfo").shape=e,this.mode=v.Resize,t.invalidate(!0),o=!0;break}if(e.contains(s)){const s=e;-1===t.selection.indexOf(s)&&(t.selection=[s],a.getRef("selectionInfo").shape=s),this.mode=v.Drag;const n=p.g2l(s.refPoint);this.dragRay=new c.Ray(n,i.subtract(n)),t.invalidate(!0),o=!0;break}}if(!o){this.mode=v.GroupSelect;for(const e of t.selection)a.getRef("selectionInfo").shape=e;this.selectionStartPoint=s,this.selectionHelper.refPoint=this.selectionStartPoint,this.selectionHelper.w=0,this.selectionHelper.h=0,t.selection=[this.selectionHelper],t.invalidate(!0)}this.active=!0}onMouseMove(e){const t=u.layerManager.getLayer();if(void 0===t)return void console.log("No active layer!");const i=g.getMouse(e),s=p.l2g(i);if(this.deltaChanged=!1,this.mode===v.GroupSelect){const e=s;this.selectionHelper.w=Math.abs(e.x-this.selectionStartPoint.x),this.selectionHelper.h=Math.abs(e.y-this.selectionStartPoint.y),this.selectionHelper.refPoint=new c.GlobalPoint(Math.min(this.selectionStartPoint.x,e.x),Math.min(this.selectionStartPoint.y,e.y)),t.invalidate(!0)}else if(t.selection.length){const n=p.g2l(t.selection[t.selection.length-1].refPoint),o=n.add(this.dragRay.direction);let r=i.subtract(o).multiply(1/h.gameStore.zoomFactor);const a=r;if(this.mode===v.Drag){if("tokens"===t.name&&(!e.shiftKey||!h.gameStore.IS_DM))for(const e of t.selection)e.ownedBy()&&e.uuid!==this.selectionHelper.uuid&&(r=f.calculateDelta(r,e),r!==a&&(this.deltaChanged=!0));for(const e of t.selection)e.ownedBy()&&(e.refPoint=e.refPoint.add(r),e!==this.selectionHelper&&(e.visionObstruction&&h.gameStore.recalculateVision(!0),l.socket.emit("Shape.Update",{shape:e.asDict(),redraw:!0,temporary:!0})));t.invalidate(!1)}else if(this.mode===v.Resize)for(const e of t.selection)e.ownedBy()&&(e.resize(this.resizePoint,i),e!==this.selectionHelper&&(e.visionObstruction&&h.gameStore.recalculateVision(!0),l.socket.emit("Shape.Update",{shape:e.asDict(),redraw:!0,temporary:!0})),t.invalidate(!1),this.updateCursor(t,s));else this.updateCursor(t,s)}else document.body.style.cursor="default"}onMouseUp(e){if(!this.active)return;if(void 0===u.layerManager.getLayer())return void console.log("No active layer!");const t=u.layerManager.getLayer();this.mode===v.GroupSelect?(t.clearSelection(),t.shapes.forEach(e=>{if(!e.ownedBy())return;if(e===this.selectionHelper)return;const i=e.getBoundingBox();e.ownedBy()&&this.selectionHelper.refPoint.x<=i.topRight.x&&this.selectionHelper.refPoint.x+this.selectionHelper.w>=i.topLeft.x&&this.selectionHelper.refPoint.y<=i.botLeft.y&&this.selectionHelper.refPoint.y+this.selectionHelper.h>=i.topLeft.y&&t.selection.push(e)}),t.selection.length>0&&t.selection.push(this.selectionHelper),t.invalidate(!0)):t.selection.length&&t.selection.forEach(i=>{if(i.ownedBy()){if(this.mode===v.Drag){if(this.dragRay.origin.x===p.g2lx(i.refPoint.x)&&this.dragRay.origin.y===p.g2ly(i.refPoint.y))return;!h.gameStore.useGrid||e.altKey||this.deltaChanged||i.snapToGrid(),i!==this.selectionHelper&&(i.visionObstruction&&h.gameStore.recalculateVision(),i.movementObstruction&&h.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:i.asDict(),redraw:!0,temporary:!1})),t.invalidate(!1)}this.mode===v.Resize&&(h.gameStore.useGrid&&!e.altKey&&i.resizeToGrid(),i!==this.selectionHelper&&(i.visionObstruction&&h.gameStore.recalculateVision(),i.movementObstruction&&h.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:i.asDict(),redraw:!0,temporary:!1})),t.invalidate(!1))}}),this.mode=v.Noop,this.active=!1}onContextMenu(e){if(void 0===u.layerManager.getLayer())return void console.log("No active layer!");const t=u.layerManager.getLayer(),i=g.getMouse(e),s=p.l2g(i);for(const n of t.selection)if(n.contains(s)&&n!==this.selectionHelper)return t.selection=[n],a.getRef("selectionInfo").shape=n,t.invalidate(!0),void this.$parent.$refs.shapecontext.open(e,n);this.$refs.selectcontext.open(e)}updateCursor(e,t){for(const i of e.selection){const e=i.getPointIndex(t,p.l2gz(3));if(e<0)document.body.style.cursor="default";else{let t=i.getPointOrientation(e).angle();t<0&&(t+=360);const s=22.5;(t>=315+s||t=135+s&&t<225-s)&&(document.body.style.cursor="ew-resize"),(t>=45+s&&t<135-s||t>=225+s&&t<315-s)&&(document.body.style.cursor="ns-resize"),(t>=s&&t<90-s||t>=180+s&&t<270-s)&&(document.body.style.cursor="nwse-resize"),(t>=90+s&&t<180-s||t>=270+s&&t<360-s)&&(document.body.style.cursor="nesw-resize")}}}};y=s.__decorate([n.default({components:{SelectContext:o.default}})],y),t.default=y},"27ae":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("2f62"),a=s.__importDefault(i("6c7c")),l=s.__importDefault(i("d65f")),c=i("4a5b"),u=i("0bc6"),d=i("af17"),h=i("f10f"),f=i("6f92");let p=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.categories=["Admin","Grid","Vision"],this.selection=0,this.showRefreshState=!1,this.refreshState="pending"}mounted(){d.EventBus.$on("DmSettings.Open",()=>{this.visible=!0}),d.EventBus.$on("DmSettings.RefreshedInviteCode",()=>{this.showRefreshState=!1})}beforeDestroy(){d.EventBus.$off("DmSettings.Open"),d.EventBus.$off("DmSettings.RefreshedInviteCode")}get invitationUrl(){return window.location.protocol+"//"+window.location.host+"/invite/"+h.gameStore.invitationCode}get locked(){return h.gameStore.isLocked}get useGrid(){return h.gameStore.useGrid}set useGrid(e){h.gameStore.setUseGrid({useGrid:e,sync:!0})}get unitSize(){return h.gameStore.unitSize}set unitSize(e){"number"===typeof e&&h.gameStore.setUnitSize({unitSize:e,sync:!0})}get gridSize(){return h.gameStore.gridSize}set gridSize(e){"number"===typeof e&&h.gameStore.setGridSize({gridSize:e,sync:!0})}get fakePlayer(){return h.gameStore.FAKE_PLAYER}set fakePlayer(e){h.gameStore.setFakePlayer(e)}get fullFOW(){return h.gameStore.fullFOW}set fullFOW(e){h.gameStore.setFullFOW({fullFOW:e,sync:!0})}get fowOpacity(){return h.gameStore.fowOpacity}set fowOpacity(e){"number"===typeof e&&h.gameStore.setFOWOpacity({fowOpacity:e,sync:!0})}get fowLOS(){return h.gameStore.fowLOS}set fowLOS(e){h.gameStore.setLineOfSight({fowLOS:e,sync:!0})}get visionRangeMin(){return h.gameStore.visionRangeMin}set visionRangeMin(e){"number"===typeof e&&h.gameStore.setVisionRangeMin({value:e,sync:!0})}get visionRangeMax(){return h.gameStore.visionRangeMax}set visionRangeMax(e){"number"===typeof e&&h.gameStore.setVisionRangeMax({value:e,sync:!0})}changeVisionMode(e){const t=e.target.value.toLowerCase();"bvh"!==t&&"triangle"!==t||(h.gameStore.setVisionMode({mode:t,sync:!0}),h.gameStore.recalculateVision(),h.gameStore.recalculateMovement(),f.layerManager.invalidate())}handleClick(e){const t=e.target.firstElementChild;t instanceof HTMLInputElement&&t.click()}refreshInviteCode(){u.socket.emit("Room.Info.InviteCode.Refresh"),this.refreshState="pending",this.showRefreshState=!0}kickPlayer(e){u.socket.emit("Room.Info.Players.Kick",e),h.gameStore.kickPlayer(e)}toggleSessionLock(){h.gameStore.setIsLocked({isLocked:!h.gameStore.isLocked,sync:!0})}deleteSession(){c.getRef("prompt").prompt(`ENTER ${h.gameStore.roomCreator}/${h.gameStore.roomName} TO CONFIRM SESSION REMOVAL.`,"DELETING SESSION").then(e=>{e===`${h.gameStore.roomCreator}/${h.gameStore.roomName}`&&(u.socket.emit("Room.Delete"),this.$router.push("/"))},()=>{})}};p=s.__decorate([o.default({components:{InputCopyElement:a.default,Modal:l.default},computed:Object.assign({},r.mapState("game",["invitationCode"]))})],p),t.default=p},2838:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("f10f"),r=i("d6be"),a=i("98ef"),l=i("4aee");function c(e,t,i){if(0===e.x&&0===e.y)return e;if("bvh"===o.gameStore.visionMode){void 0===i&&(i=[]);const r=t.getBoundingBox(),a=r.offset(e);let l=!1;for(const t of o.gameStore.movementblockers){if(i.includes(t))continue;const o=n.layerManager.UUIDMap.get(t),c=o.getBoundingBox();let u=c.intersectsWithInner(a);if(!u){const t=s.Ray.fromPoints(r.topLeft.add(e.normalize()),a.topLeft),i=t.direction.inverse(),n=[i.x<0,i.y<0];u=c.intersectP(t,i,n).hit}if(u){const n=c.center(),o=r.center(),a=o.subtract(n),u=new s.Vector(1,0),d=new s.Vector(0,1);let h=a.dot(u),f=a.dot(d);h>c.w/2&&(h=c.w/2),h<-c.w/2&&(h=-c.w/2),f>c.h/2&&(f=c.h/2),f<-c.h/2&&(f=-c.h/2);const p=n.add(u.multiply(h)).add(d.multiply(f));p.x===r.topLeft.x||p.x===r.topRight.x?e=new s.Vector(0,e.y):p.y===r.topLeft.y||p.y===r.botLeft.y?e=new s.Vector(e.x,0):p.xr.topRight.x?e=new s.Vector(p.x-r.topRight.x,e.y):p.yr.botLeft.y&&(e=new s.Vector(e.x,p.y-r.botLeft.y)),l=!0,i.push(t);break}}return l&&(e=c(e,t,i)),e}{const i=r.PA_CDT.movement.locate(t.center().asArray(),null).loc;for(const s of t.points){const t=r.PA_CDT.movement.locate(s,i),n=t.loc;null!==n&&(e=u(s,n,e))}return e}}function u(e,t,i,n=[]){const o=new s.GlobalPoint(e[0],e[1]),r=o.add(i).asArray();if(t.contains(r))return i;n.push(t);for(let c=0;c<3;c++){if(n.includes(t.neighbours[c]))continue;const d=t.vertices[l.cw(c)].point,h=t.vertices[l.ccw(c)].point,f=l.intersection(e,r,d,h);if(null===f)continue;if(!t.isConstrained(c))return u(e,t.neighbours[c],i,n);if(f[0]===o.x&&f[1]===o.y){l.orientation;const t=l.orientation(e,r,h);if(t===a.Sign.LEFT_TURN)continue;if(t===a.Sign.ZERO)continue}let p=new s.GlobalPoint(f[0],f[1]).subtract(o).multiply(.8);p.length()<1&&(p=new s.Vector(0,0)),p.length()!["__files"].includes(e)).sort(a.alphSort)}get files(){return this.asset.__files?this.asset.__files.concat().sort((e,t)=>e.name.toLowerCase()>t.name.toLowerCase()?1:-1):[]}toggle(e){for(let t=0;tthis.$children[0].$el.focus())}close(){this.visible=!1,this.shape=null}getLayers(){return c.layerManager.layers.filter(e=>e.selectable&&(u.gameStore.IS_DM||e.playerEditable))}getActiveLayer(){return c.layerManager.getLayer()}getInitiativeWord(){return null===this.shape?"":a.getRef("initiative").contains(this.shape.uuid)?"Show":"Add"}setLayer(e){null!==this.shape&&(this.shape.moveLayer(e,!0),this.close())}moveToBack(){if(null===this.shape)return;const e=this.getActiveLayer();e.moveShapeOrder(this.shape,0,!0),this.close()}moveToFront(){if(null===this.shape)return;const e=this.getActiveLayer();e.moveShapeOrder(this.shape,e.shapes.length-1,!0),this.close()}addInitiative(){if(null===this.shape)return;const e=a.getRef("initiative");e.contains(this.shape.uuid)||e.addInitiative(this.shape.getInitiativeRepr()),e.visible=!0,this.close()}openEditDialog(){l.EventBus.$emit("EditDialog.Open",this.shape),this.close()}};d=s.__decorate([o.default({components:{ContextMenu:r.default}})],d),t.default=d},"314d":function(e,t,i){"use strict";var s=i("4fce"),n=i.n(s);n.a},3411:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("60a3");let a=class extends n.default{constructor(){super(...arguments),this.borderColour="lightgray",this.popupString="",this.showPopup=!1}copy(){navigator.clipboard.writeText(this.value).then(()=>{this.popupString="Copied!",this.showPopup=!0},()=>{console.log("Could not copy to clipboard :("),this.popupString="Error!",this.showPopup=!0})}};s.__decorate([r.Prop()],a.prototype,"value",void 0),a=s.__decorate([o.default],a),t.default=a},3481:function(e,t,i){"use strict";i.r(t);var s=i("47e6"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},3752:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContextMenu",{attrs:{visible:e.visible,left:e.left+"px",top:e.top+"px"},on:{close:e.close}},[i("li",{on:{click:e.rename}},[e._v("Rename")]),i("li",{on:{click:e.remove}},[e._v("Remove")])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"38c9":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("bab4"),n=i("f10f");class o extends s.Layer{invalidate(){this.valid=!1}draw(e){this.valid||this.drawGrid()}drawGrid(){const e=this.ctx;this.clear(),e.beginPath();const t=n.gameStore.gridSize;for(let i=0;ir.layerManager.UUIDMap.get(e))}toggle(e){this.selection.includes(e)?a.gameStore.removeActiveToken(e):a.gameStore.addActiveToken(e)}};l=s.__decorate([n.default],l),t.default=l},"3cd3":function(e,t,i){"use strict";var s=i("b0c0"),n=i.n(s);n.a},"3dfd":function(e,t,i){"use strict";i.r(t);var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"app"}},[i("router-view",{ref:"activeComponent"})],1)},n=[],o=(i("034f"),i("2877")),r={},a=Object(o["a"])(r,s,n,!1,null,null,null);t["default"]=a.exports},4185:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("bab4"),o=i("6f92"),r=i("d1ec"),a=i("4709"),l=i("f10f"),c=i("92b1"),u=i("5a5c"),d=i("cee3");class h extends n.Layer{constructor(e,t){super(e,t),this.isVisionLayer=!0,this.preFogShapes=[],this.virtualCanvas=document.createElement("canvas"),this.virtualCanvas.width=window.innerWidth,this.virtualCanvas.height=window.innerHeight,this.vCtx=this.virtualCanvas.getContext("2d")}addShape(e,t,i,s=!0){super.addShape(e,t,i,s),e.options.has("preFogShape")&&e.options.get("preFogShape")&&this.preFogShapes.push(e)}removeShape(e,t,i){if(e.options.has("preFogShape")&&e.options.get("preFogShape")){const t=this.preFogShapes.findIndex(t=>t.uuid===e.uuid);this.preFogShapes.splice(t,1)}super.removeShape(e,t,i)}draw(){if(!this.valid){const e=this.ctx;if(r.Settings.skipLightFOW)return e.clearRect(0,0,this.canvas.width,this.canvas.height),void(this.valid=!0);const t=e.globalCompositeOperation;e.clearRect(0,0,this.canvas.width,this.canvas.height),e.fillStyle="rgba(0, 0, 0, 1)";const i=o.layerManager.getLayer("draw").ctx;(r.Settings.drawAngleLines||r.Settings.drawFirstLightHit)&&i.clearRect(0,0,i.canvas.width,i.canvas.height),l.gameStore.fullFOW&&o.layerManager.hasLayer("tokens")&&o.layerManager.getLayer("tokens").shapes.forEach(t=>{if(!t.ownedBy()||!t.isToken)return;const i=t.getBoundingBox(),s=c.g2l(t.center()),n=.8*c.g2lz(i.w);e.beginPath(),e.arc(s.x,s.y,n,0,2*Math.PI);const o=e.createRadialGradient(s.x,s.y,n/2,s.x,s.y,n);o.addColorStop(0,"rgba(0, 0, 0, 1)"),o.addColorStop(1,"rgba(0, 0, 0, 0)"),e.fillStyle=o,e.fill()}),this.vCtx.clearRect(0,0,window.innerWidth,window.innerHeight);for(const n of l.gameStore.visionSources){const t=o.layerManager.UUIDMap.get(n.shape);if(void 0===t)continue;const u=t.auras.find(e=>e.uuid===n.aura);if(void 0===u)continue;const h=c.getUnitDistance(u.value+u.dim),f=t.center(),p=c.g2l(f),g=new a.Circle(f,h);if(g.visibleInCanvas(e.canvas))if("bvh"===l.gameStore.visionMode){let t=-1;const n=new Path2D;let o;n.moveTo(p.x,p.y);for(let a=0;a<2*Math.PI;a+=r.Settings.angleSteps/180*Math.PI){const d=new s.GlobalPoint(f.x+h*Math.cos(a),f.y+h*Math.sin(a));r.Settings.drawAngleLines&&(i.beginPath(),i.moveTo(c.g2lx(f.x),c.g2ly(f.y)),i.lineTo(c.g2lx(d.x),c.g2ly(d.y)),i.stroke());const g=s.Ray.fromPoints(f,d),v=l.gameStore.BV.intersect(g);if(0===a&&(o=v.hit?v.intersect:d),v.hit)-1!==t&&(n.arc(p.x,p.y,c.g2lr(u.value+u.dim),t,a),t=-1),n.lineTo(c.g2lx(v.intersect.x),c.g2ly(v.intersect.y));else if(-1===t){t=a;const i=c.g2l(d);e.lineTo(i.x,i.y)}}if(-1===t?n.lineTo(c.g2lx(o.x),c.g2ly(o.y)):n.arc(p.x,p.y,c.g2lr(u.value+u.dim),t,2*Math.PI),l.gameStore.fullFOW){if(u.dim>0){const t=e.createRadialGradient(p.x,p.y,c.g2lr(u.value),p.x,p.y,c.g2lr(u.value+u.dim));t.addColorStop(0,"rgba(0, 0, 0, 1)"),t.addColorStop(1,"rgba(0, 0, 0, 0)"),e.fillStyle=t}else e.fillStyle="rgba(0, 0, 0, 1)";e.fill(n)}u.lastPath=n}else{this.vCtx.globalCompositeOperation="source-over",this.vCtx.fillStyle="rgba(0, 0, 0, 1)";const t=d.computeVisibility(f,"vision");this.vCtx.beginPath(),this.vCtx.moveTo(c.g2lx(t[0][0]),c.g2ly(t[0][1]));for(const e of t)this.vCtx.lineTo(c.g2lx(e[0]),c.g2ly(e[1]));if(this.vCtx.closePath(),this.vCtx.fill(),u.dim>0){const e=this.vCtx.createRadialGradient(p.x,p.y,c.g2lr(u.value),p.x,p.y,c.g2lr(u.value+u.dim));e.addColorStop(0,"rgba(0, 0, 0, 1)"),e.addColorStop(1,"rgba(0, 0, 0, 0)"),this.vCtx.fillStyle=e}else this.vCtx.fillStyle="rgba(0, 0, 0, 1)";this.vCtx.globalCompositeOperation="source-in",this.vCtx.beginPath(),this.vCtx.arc(p.x,p.y,c.g2lr(u.value+u.dim),0,2*Math.PI),this.vCtx.fill(),e.drawImage(this.virtualCanvas,0,0)}}l.gameStore.fowLOS&&(e.globalCompositeOperation="source-in",e.drawImage(o.layerManager.getLayer("fow-players").canvas,0,0));for(const s of this.preFogShapes){if(!s.visibleInCanvas(this.canvas))continue;const t=s.globalCompositeOperation;l.gameStore.fullFOW||("source-over"===s.globalCompositeOperation?s.globalCompositeOperation="destination-out":"destination-out"===s.globalCompositeOperation&&(s.globalCompositeOperation="source-over")),s.draw(e),s.globalCompositeOperation=t}l.gameStore.fullFOW&&(e.globalCompositeOperation="source-out",e.fillStyle=u.getFogColour(),e.fillRect(0,0,e.canvas.width,e.canvas.height)),super.draw(!1),e.globalCompositeOperation=t}}}t.FOWLayer=h},4486:function(e,t,i){"use strict";i.r(t);var s=i("a097"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"45fb":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Edit asset")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("div",{staticClass:"grid"},[i("label",{attrs:{for:"shapeselectiondialog-name"}},[e._v("Name")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.shape.name,expression:"shape.name"}],staticStyle:{"grid-column":"numerator / remove"},attrs:{type:"text",id:"shapeselectiondialog-name",disabled:!e.owned},domProps:{value:e.shape.name},on:{change:function(t){return e.updateShape(!1)},input:function(t){t.target.composing||e.$set(e.shape,"name",t.target.value)}}}),i("div",{style:{opacity:e.shape.nameVisible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(t){e.shape.nameVisible=!e.shape.nameVisible,e.updateShape(!1)}}},[i("i",{staticClass:"fas fa-eye"})]),i("label",{attrs:{for:"shapeselectiondialog-istoken"}},[e._v("Is a token")]),i("input",{staticClass:"styled-checkbox",staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-istoken",disabled:!e.owned},domProps:{checked:e.shape.isToken},on:{click:e.setToken}}),i("label",{attrs:{for:"shapeselectiondialog-visionblocker"}},[e._v("Blocks vision/light")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.shape.visionObstruction,expression:"shape.visionObstruction"}],staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-visionblocker",disabled:!e.owned},domProps:{checked:Array.isArray(e.shape.visionObstruction)?e._i(e.shape.visionObstruction,null)>-1:e.shape.visionObstruction},on:{change:[function(t){var i=e.shape.visionObstruction,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&e.$set(e.shape,"visionObstruction",i.concat([o])):r>-1&&e.$set(e.shape,"visionObstruction",i.slice(0,r).concat(i.slice(r+1)))}else e.$set(e.shape,"visionObstruction",n)},e.setVisionBlocker]}}),i("label",{attrs:{for:"shapeselectiondialog-moveblocker"}},[e._v("Blocks movement")]),i("input",{staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-moveblocker",disabled:!e.owned},domProps:{checked:e.shape.movementObstruction},on:{click:e.setMovementBlocker}}),i("label",{attrs:{for:"shapeselectiondialog-strokecolour"}},[e._v("Border colour")]),i("color-picker",{staticStyle:{"grid-column-start":"remove"},attrs:{color:e.shape.strokeColour,disabled:!e.owned},on:{"update:color":function(t){return e.$set(e.shape,"strokeColour",t)},input:function(t){return e.updateShape(!0,!0)},change:function(t){return e.updateShape(!0)}}}),i("label",{attrs:{for:"shapeselectiondialog-fillcolour"}},[e._v("Fill colour")]),i("color-picker",{staticStyle:{"grid-column-start":"remove"},attrs:{color:e.shape.fillColour,disabled:!e.owned},on:{"update:color":function(t){return e.$set(e.shape,"fillColour",t)},input:function(t){return e.updateShape(!0,!0)},change:function(t){return e.updateShape(!0)}}}),i("div",{staticClass:"spanrow header"},[e._v("Access")]),e._l(e.shape.owners,function(t){return[i("input",{key:t,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t},on:{change:function(i){return e.updateOwner(i,t)}}}),""!==t?i("div",{key:"remove-"+t,style:{opacity:e.owned?1:.3,textAlign:"center",gridColumnStart:"remove"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeOwner(t)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Trackers")]),e._l(e.shape.trackers,function(t){return[i("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"tracker.name"}],key:"name-"+t.uuid,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t.name},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"name",i.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.value,expression:"tracker.value",modifiers:{number:!0}}],key:"value-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.value},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"value",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"fspan-"+t.uuid},[e._v("/")]),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.maxvalue,expression:"tracker.maxvalue",modifiers:{number:!0}}],key:"maxvalue-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.maxvalue},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"maxvalue",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"sspan-"+t.uuid}),i("div",{key:"visibility-"+t.uuid,style:{opacity:t.visible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){t.visible=!t.visible,e.updateShape(!1)}}},[i("i",{staticClass:"fas fa-eye"})]),i("span",{key:"tspan-"+t.uuid}),""!==t.name||0!==t.value?i("div",{key:"remove-"+t.uuid,style:{opacity:e.owned?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeTracker(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Auras")]),e._l(e.shape.auras,function(t){return[i("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"aura.name"}],key:"name-"+t.uuid,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t.name},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"name",i.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.value,expression:"aura.value",modifiers:{number:!0}}],key:"value-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.value},on:{change:function(t){return e.updateShape(!0)},input:function(i){i.target.composing||e.$set(t,"value",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"fspan-"+t.uuid},[e._v("/")]),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.dim,expression:"aura.dim",modifiers:{number:!0}}],key:"dimvalue-"+t.uuid,attrs:{type:"text",title:"Dim value",disabled:!e.owned},domProps:{value:t.dim},on:{change:function(t){return e.updateShape(!0)},input:function(i){i.target.composing||e.$set(t,"dim",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("color-picker",{key:"colour-"+t.uuid,attrs:{color:t.colour,disabled:!e.owned},on:{"update:color":function(i){return e.$set(t,"colour",i)},input:function(i){return e.updateAuraColour(t,i)},change:function(t){return e.updateShape(!0)}}}),i("div",{key:"visibility-"+t.uuid,style:{opacity:t.visible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){t.visible=!t.visible,e.updateShape(!0)}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{key:"visionsource-"+t.uuid,style:{opacity:t.visionSource?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.updateAuraVisionSource(t)}}},[i("i",{staticClass:"fas fa-lightbulb"})]),""!==t.name||0!==t.value?i("div",{key:"remove-"+t.uuid,style:{opacity:e.owned?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeAura(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Labels")]),i("div",{staticClass:"spanrow",attrs:{id:"labels"}},[e._l(e.shape.labels,function(t){return i("div",{key:t.uuid,staticClass:"label"},[t.category?[i("div",{staticClass:"label-user"},[e._v(e._s(t.category))]),i("div",{staticClass:"label-main",on:{click:function(i){return e.removeLabel(t.uuid)}}},[e._v(e._s(t.name))])]:e._e(),t.category?e._e():[i("div",{staticClass:"label-main",on:{click:function(i){return e.removeLabel(t.uuid)}}},[e._v(e._s(t.name))])]],2)}),e.owned?i("div",{staticClass:"label",attrs:{id:"label-add"}},[i("div",{staticClass:"label-main",on:{click:e.openLabelManager}},[e._v("+")])]):e._e()],2),i("div",{staticClass:"spanrow header"},[e._v("Annotation")]),i("textarea",{staticClass:"spanrow",attrs:{disabled:!e.owned},domProps:{value:e.shape.annotation},on:{change:e.updateAnnotation}})],2)])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},4709:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("f10f"),a=i("2838"),l=i("92b1"),c=i("5a5c");class u extends o.Shape{constructor(e,t,i,s,n){super(e,i,s,n),this.type="circle",this.r=t||1}asDict(){return Object.assign(this.getBaseDict(),{radius:this.r})}fromDict(e){super.fromDict(e),this.r=e.radius}getBoundingBox(){return new n.BoundingRect(new s.GlobalPoint(this.refPoint.x-this.r,this.refPoint.y-this.r),2*this.r,2*this.r)}get points(){return this.getBoundingBox().points}draw(e){super.draw(e),e.beginPath(),"fog"===this.fillColour?e.fillStyle=c.getFogColour():e.fillStyle=this.fillColour;const t=l.g2l(this.refPoint);e.arc(t.x,t.y,l.g2lz(this.r),0,2*Math.PI),e.fill(),"rgba(0, 0, 0, 0)"!==this.strokeColour&&(e.beginPath(),e.lineWidth=l.g2lz(5),e.strokeStyle=this.strokeColour,e.arc(t.x,t.y,l.g2lz(this.r),0,2*Math.PI),e.stroke())}contains(e){return Math.pow(e.x-this.refPoint.x,2)+Math.pow(e.y-this.refPoint.y,2){const t=16*Math.random()|0,i="x"===e?t:3&t|8;return i.toString(16)})}function o(e){return e.charAt(0).toUpperCase()+e.slice(1)}function r(e,t){return e.toLowerCase()t(e)?i[1].push(e):i[0].push(e)),i}function u(e,t,i,s){const n=.2*Number(e.font.split("px")[0]),o=e.measureText(t).width;return Math.min(i/o,s/n)}function d(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>{return"%"+e.charCodeAt(0).toString(16)})}t.uuidv4=n,t.capitalize=o,t.alphSort=r,t.getHTMLFont=a,t.getHTMLTextWidth=l,t.partition=c,t.calcFontScale=u,t.fixedEncodeURIComponent=d;class h{constructor(){this.keys=[],this.values=[]}get length(){return this.keys.length}get(e){return this.values[this.keys.indexOf(e)]}getIndexValue(e){return this.values[e]}getIndexKey(e){return this.keys[e]}set(e,t){this.keys.push(e),this.values.push(t)}has(e){return this.indexOf(e)>=0}indexOf(e){return this.keys.indexOf(e)}remove(e){const t=this.indexOf(e);this.keys.splice(t,1),this.values.splice(t,1)}}function f(){return s.app.$children[0].$refs.activeComponent}function p(e){const t=s.app.$children[0].$refs.activeComponent;return t.$refs[e]}t.OrderedMap=h,t.getComponent=f,t.getRef=p},"4aec":function(e,t,i){"use strict";i.r(t);var s=i("3752"),n=i("f51a");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},"4aee":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("98ef");function n(e){return(e+2)%3}function o(e){return(e+1)%3}function r(e,t){const i=new s.EdgeCirculator(e,null);if(i.valid)do{const n=3-i.t.indexV(e)-i.ri,o=i.t.vertices[n];if(!o.infinite){if(o===t)return{includes:!0,vi:t,fr:i.t,i:i.ri};{const n=c(e.point,t.point,o.point);if(n===s.Sign.COLLINEAR&&a(e.point,o.point,t.point))return{includes:!0,vi:o,fr:i.t,i:i.ri}}}}while(i.next());return{includes:!1}}function a(e,t,i){let n,o;return l(0,e,i)===s.Sign.EQUAL?(n=l(1,e,t),o=l(1,t,i)):(n=l(0,e,t),o=l(0,t,i)),n===s.Sign.SMALLER&&o===s.Sign.SMALLER||n===s.Sign.LARGER&&o===s.Sign.LARGER}function l(e,t,i){return t[e]i[e]?s.Sign.LARGER:s.Sign.EQUAL}function c(e,t,i){const n=e[0],o=e[1],r=t[0],a=t[1],l=i[0],c=i[1],d=r-n,h=a-o,f=l-n,p=c-o,g=u(d,h,f,p);let v=Math.abs(d),m=Math.abs(h);const y=Math.abs(f),b=Math.abs(p);if(vm&&([v,m]=[m,v]),v<2e-162&&0===v)return s.Sign.ZERO;if(m<1e153){const e=Number.EPSILON*v*m;if(g>e)return s.Sign.POSITIVE;if(g<-e)return s.Sign.NEGATIVE}return s.Sign.ZERO}function u(e,t,i,s){return e*s-t*i}function d(e,t,i){return u(t[0]-e[0],t[1]-e[1],i[0]-e[0],i[1]-e[1])<0}function h(e,t,i){if(!e.isInfinite())return f(e.vertices[0].point,e.vertices[1].point,e.vertices[2].point,t,i);throw new Error("SSS")}function f(e,t,i,n,o){const r=m(e,t,i,n);if(r!==s.Sign.ON_ORIENTED_BOUNDARY||!o)return r;const a=[e,t,i,n];a.sort((e,t)=>e[0]-t[0]||e[1]-t[1]);for(const l of a.reverse()){if(l===n)return s.Sign.ON_NEGATIVE_SIDE;let o=c(e,t,n);if(l===i&&o!==s.Sign.COLLINEAR)return o;if(o=c(e,n,i),l===t&&o!==s.Sign.COLLINEAR)return o;if(o=c(n,t,i),l===e&&o!==s.Sign.COLLINEAR)return o}return s.Sign.ON_NEGATIVE_SIDE}function p(e,t){return e[0]===t[0]&&e[1]===t[1]}function g(e,t){return e[0]y&&([m,y]=[y,m]),m<1e-73&&0===m)return s.Sign.ON_ORIENTED_BOUNDARY;if(y<1e76){const e=Number.EPSILON*m*y*(y*y);if(v>e)return s.Sign.ON_POSITIVE_SIDE;if(v<-e)return s.Sign.ON_NEGATIVE_SIDE}return s.Sign.ZERO}function y(e,t,i,n){switch(c(e,t,i)){case s.Sign.LEFT_TURN:return c(i,n,t)!==s.Sign.RIGHT_TURN;case s.Sign.RIGHT_TURN:return c(i,n,t)!==s.Sign.LEFT_TURN;case s.Sign.COLLINEAR:return!0}}function b(e,t,i,n){switch(c(e,t,i)){case s.Sign.LEFT_TURN:return c(e,t,n)!==s.Sign.LEFT_TURN;case s.Sign.RIGHT_TURN:return c(e,t,n)!==s.Sign.RIGHT_TURN;case s.Sign.COLLINEAR:return!0}}function _(e,t,i,s){const n=x(e,t,i,s);switch(n.intersectionType){case w.POINT:return n.point;case w.NO_INTERSECTION:return null}throw new Error("sdfgighowen")}var w;function S(e,t){if(e[0]===t[0])return[1,0,-e[0]];if(e[1]===t[1])return[0,1,-e[1]];const i=t[0]-e[0],s=t[1]-e[1];return[-s,i,-i*e[1]+s*e[0]]}function x(e,t,i,s){if(!M(e,t,i,s))return{intersectionType:w.NO_INTERSECTION,point:null};const n=S(e,t),o=S(i,s),r=C(n,o);switch(r.intersectionType){case w.POINT:return r}throw new Error("gzseuihgpib")}function C(e,t){const i=e[0]*t[1]-t[0]*e[1],s=e[1]*t[2]-t[1]*e[2],n=t[0]*e[2]-e[0]*t[2];return{intersectionType:w.POINT,point:[s/i,n/i]}}function M(e,t,i,n){if(g(e,t)){if(g(i,n)){if(g(t,i)||g(n,e))return!1}else if(g(t,n)||g(i,e))return!1}else if(g(i,n)){if(g(e,i)||g(n,t))return!1}else if(g(e,n)||g(i,t))return!1;if(g(e,t))if(g(i,n))switch(v(e,i)){case s.Sign.SMALLER:switch(v(t,i)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(t,n)){case s.Sign.SMALLER:return y(e,t,i,n);case s.Sign.EQUAL:return!0;default:return b(e,t,i,n)}}case s.Sign.EQUAL:return!0;default:switch(v(n,e)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(n,t)){case s.Sign.SMALLER:return y(i,n,e,t);case s.Sign.EQUAL:return!0;default:return b(i,n,e,t)}}}else switch(v(e,n)){case s.Sign.SMALLER:switch(v(t,n)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(t,i)){case s.Sign.SMALLER:return y(e,t,n,i);case s.Sign.EQUAL:return!0;default:return b(e,t,n,i)}}case s.Sign.EQUAL:return!0;default:switch(v(i,e)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(i,t)){case s.Sign.SMALLER:return y(n,i,e,t);case s.Sign.EQUAL:return!0;default:return b(n,i,e,t)}}}else if(g(i,n))switch(v(t,i)){case s.Sign.SMALLER:switch(v(e,i)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(e,n)){case s.Sign.SMALLER:return y(t,e,i,n);case s.Sign.EQUAL:return!0;default:return b(t,e,i,n)}}case s.Sign.EQUAL:return!0;default:switch(v(n,t)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(n,e)){case s.Sign.SMALLER:return y(i,n,t,e);case s.Sign.EQUAL:return!0;default:return b(i,n,t,e)}}}else switch(v(t,n)){case s.Sign.SMALLER:switch(v(e,n)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(e,i)){case s.Sign.SMALLER:return y(t,e,n,i);case s.Sign.EQUAL:return!0;default:return b(t,e,n,i)}}case s.Sign.EQUAL:return!0;default:switch(v(i,t)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(i,e)){case s.Sign.SMALLER:return y(n,i,t,e);case s.Sign.EQUAL:return!0;default:return b(n,i,t,e)}}}}function k(e){if(e!==e)return e;if(e===-1/0)return-Number.MAX_VALUE;if(e===1/0)return 1/0;if(e===+Number.MAX_VALUE)return 1/0;let t=e*(e<0?1-Number.EPSILON/2:1+Number.EPSILON);t===e&&(t=Number.MIN_VALUE*Number.EPSILON>0?e+Number.MIN_VALUE*Number.EPSILON:e+Number.MIN_VALUE),t===1/0&&(t=+Number.MAX_VALUE);const i=e+(t-e)/2;ewindow.innerWidth-100&&(t=window.innerWidth-100),i<0&&(i=0),i>window.innerHeight-100&&(i=window.innerHeight-100),this.$refs.container.style.left=t+"px",this.$refs.container.style.top=i+"px",this.$refs.container.style.display="block"}dragOver(e){this.dragging&&(this.$refs.container.style.display="none")}};s.__decorate([r.Prop(Boolean)],a.prototype,"visible",void 0),s.__decorate([r.Prop({type:Boolean,default:!0})],a.prototype,"mask",void 0),s.__decorate([r.Prop({type:String,default:"white"})],a.prototype,"colour",void 0),a=s.__decorate([o.default],a),t.default=a},5338:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("8055")),o=i("2d5b");t.socket=n.default(location.protocol+"//"+location.host+"/pa_assetmgmt",{autoConnect:!1}),t.socket.on("connect",()=>{console.log("Connected")}),t.socket.on("disconnect",()=>{console.log("Disconnected")}),t.socket.on("redirect",e=>{console.log("redirecting"),window.location.href=e}),t.socket.on("Folder.Root.Set",e=>{o.assetStore.setRoot(e)}),t.socket.on("Folder.Set",e=>{if(o.assetStore.clear(),e.children)for(const t of e.children)o.assetStore.idMap.set(t.id,t),t.file_hash?o.assetStore.files.push(t.id):o.assetStore.folders.push(t.id)}),t.socket.on("Folder.Create",e=>{o.assetStore.folders.push(e.id),o.assetStore.idMap.set(e.id,e)}),t.socket.on("Asset.Upload.Finish",e=>{o.assetStore.idMap.set(e.id,e),o.assetStore.files.push(e.id)})},5394:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("1289")),r=s.__importDefault(i("ea6a")),a=i("0bc6"),l=i("6f92"),c=i("f10f");let u=class extends r.default{constructor(){super(...arguments),this.name="Filter",this.active=!1}get labels(){const e={"":[]};for(const t of Object.keys(c.gameStore.labels)){const i=c.gameStore.labels[t];i.category?(i.category in e||(e[i.category]=[]),e[i.category].push([i.uuid,i.name]),e[i.category].sort((e,t)=>e[1].localeCompare(t[1]))):e[""].push([i.uuid,i.name])}return e}get initalValues(){const e={};for(const t of Object.keys(this.labels))e[t]=c.gameStore.labelFilters.filter(e=>this.labels[t].map(e=>e[0]).includes(e));return e}get categories(){return Object.keys(this.labels).sort()}isFilter(e){return c.gameStore.labelFilters.includes(e)}toggleFilter(e){const t=c.gameStore.labelFilters.indexOf(e);t>=0?c.gameStore.labelFilters.splice(t,1):c.gameStore.labelFilters.push(e),l.layerManager.invalidate()}toggleUnlabeled(){c.gameStore.toggleUnlabeledFilter(),l.layerManager.invalidate()}updateSelection(e){if(e.title in this.labels){for(const[t,i]of this.labels[e.title]){const i=c.gameStore.labelFilters.indexOf(t),s=e.selection.includes(t);i>=0&&!s?(c.gameStore.labelFilters.splice(i,1),a.socket.emit("Labels.Filter.Remove",t)):i<0&&s&&(c.gameStore.labelFilters.push(t),a.socket.emit("Labels.Filter.Add",t))}l.layerManager.invalidate()}}};u=s.__decorate([n.default({components:{accordion:o.default}})],u),t.default=u},"53ec":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("60a3");let a=class extends n.default{constructor(){super(...arguments),this.selected=[],this.active=!1}mounted(){this.selected=this.initialValues,this.updateCategory()}toggleDisplay(e){this.active=!this.active}toggleCategory(){const e=this.$refs.overall;e.checked?this.selected=this.items.map(e=>e[0]):this.selected=[],this.$emit("selectionupdate",{title:this.title,selection:this.selected})}updateCategory(){const e=this.$refs.overall;0===this.selected.length?(e.checked=!1,e.indeterminate=!1):this.selected.length===this.items.length?(e.checked=!0,e.indeterminate=!1):(e.checked=!1,e.indeterminate=!0)}toggleSelection(e){const t=this.selected.indexOf(e);-1===t?this.selected.push(e):this.selected.splice(t,1),this.updateCategory(),this.$emit("selectionupdate",{title:this.title,selection:this.selected})}};s.__decorate([r.Prop(String)],a.prototype,"title",void 0),s.__decorate([r.Prop({default:!0,type:Boolean})],a.prototype,"showArrow",void 0),s.__decorate([r.Prop({default:()=>[]})],a.prototype,"items",void 0),s.__decorate([r.Prop({default:()=>[]})],a.prototype,"initialValues",void 0),a=s.__decorate([o.default],a),t.default=a},5459:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},e._l(e.tokens,function(t){return i("div",{key:t.uuid,staticClass:"token",class:{selected:e.selection.includes(t.uuid)},on:{click:function(i){return e.toggle(t.uuid)}}},[t.src?i("img",{attrs:{src:t.src,width:"30px",height:"30px"}}):e._e(),i("div",[e._v(e._s(t.name))])])}),0):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"54fb":function(e,t,i){"use strict";var s=i("c106"),n=i.n(s);n.a},"561b":function(e,t,i){"use strict";var s=i("a450"),n=i.n(s);n.a},"574e":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("92b1"),a=i("5a5c");class l extends o.Shape{constructor(e,t,i,s,n){super(e,"rgba(0, 0, 0, 0)",s||"#000",n),this.type="multiline",this._points=[],this._points=t||[],this.lineWidth=i||3}get refPoint(){return this._refPoint}set refPoint(e){const t=e.subtract(this._refPoint);this._refPoint=e;for(let i=0;i({x:e.x,y:e.y}))})}fromDict(e){super.fromDict(e),this._points=e.points.map(e=>new s.GlobalPoint(e.x,e.y))}get points(){return this._points.map(e=>[e.x,e.y])}getBoundingBox(){let e=this.refPoint.x,t=this.refPoint.x,i=this.refPoint.y,o=this.refPoint.y;for(const s of this._points)s.xt&&(t=s.x),s.yo&&(o=s.y);return new n.BoundingRect(new s.GlobalPoint(e,i),t-e,o-i)}draw(e){super.draw(e),e.beginPath(),e.lineCap="round",e.lineJoin="round",e.moveTo(r.g2lx(this.refPoint.x),r.g2ly(this.refPoint.y));for(const t of this._points)e.lineTo(r.g2lx(t.x),r.g2ly(t.y));"fog"===this.strokeColour?e.strokeStyle=a.getFogColour():e.strokeStyle=this.strokeColour,e.lineWidth=r.g2lz(this.lineWidth),e.stroke()}contains(e){return this.getBoundingBox().contains(e)}center(e){return this.getBoundingBox().center()}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this._refPoint=r.l2g(t):this._points[e-1]=r.l2g(t)}}t.MultiLine=l},"59d8":function(e,t,i){"use strict";i.r(t);var s=i("e5ca"),n=i("6f8d");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("a7b3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"639cd890",null);t["default"]=a.exports},"5a5c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=i("8f0a"),r=i("f10f");function a(e){return new o.LocalPoint(e.pageX,e.pageY)}function l(e=!1){const t=n.default(r.gameStore.fowColour);return r.gameStore.IS_DM?t.setAlpha(e?1:r.gameStore.fowOpacity):t.setAlpha(1),t.toRgbString()}function c(e){return 1/(-5/3+28/15*Math.exp(1.83*e))}function u(e){return Math.log(15/28*(1/e+5/3))/1.83}t.getMouse=a,t.getFogColour=l,t.zoomValue=c,t.zoomDisplay=u},"5a81":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importStar(i("66cb")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("2f62"),l=s.__importDefault(i("3b36")),c=s.__importDefault(i("d65f")),u=i("4a5b"),d=i("8f0a"),h=i("6f92"),f=i("1327"),p=i("f10f"),g=i("92b1"),v=i("60a3");let m=class extends o.default{constructor(){super(...arguments),this.x=0,this.y=0,this.visible=!1,this.text="X",this.fillColour="rgba(255, 255, 255, 1)",this.borderColour="rgba(0, 0, 0, 1)"}mounted(){this.updatePreview()}onTextChange(e,t){this.updatePreview()}onFillChange(e,t){this.updatePreview()}onBorderChange(e,t){this.updatePreview()}open(e,t){this.visible=!0,this.x=e,this.y=t}submit(){const e=h.layerManager.getLayer();if(void 0===e)return;const t=new f.CircularToken(g.l2g(new d.LocalPoint(this.x,this.y)),g.getUnitDistance(p.gameStore.unitSize/2),this.text,"10px serif",this.fillColour,this.borderColour);t.addOwner(p.gameStore.username),e.addShape(t,!0),e.invalidate(!1),this.visible=!1}updatePreview(){const e=this.$refs.canvas.getContext("2d");e.clearRect(0,0,e.canvas.width,e.canvas.height),e.beginPath();const t={x:e.canvas.width/2,y:e.canvas.height/2},i=.9*Math.min(t.x,t.y);e.fillStyle=this.fillColour,e.arc(t.x,t.y,i,0,2*Math.PI),e.fill(),"rgba(0, 0, 0, 0)"!==this.borderColour&&(e.beginPath(),e.lineWidth=5,e.strokeStyle=this.borderColour,e.arc(t.x,t.y,i,0,2*Math.PI),e.stroke()),e.save(),e.textAlign="center",e.textBaseline="middle";const s=u.calcFontScale(e,this.text,i,i),o=0;e.transform(s,o,-o,s,t.x,t.y),e.fillStyle=n.mostReadable(this.fillColour,["#000","#fff"]).toHexString(),e.fillText(this.text,0,0),e.restore()}};s.__decorate([v.Watch("text")],m.prototype,"onTextChange",null),s.__decorate([v.Watch("fillColour")],m.prototype,"onFillChange",null),s.__decorate([v.Watch("borderColour")],m.prototype,"onBorderChange",null),m=s.__decorate([r.default({components:{Modal:c.default,"color-picker":l.default},computed:Object.assign({},a.mapState("game",["unitSize"]))})],m),t.default=m},"5ae5":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f")),a=i("4a5b"),l=i("f10f");let c=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.note=null}open(e){this.visible=!0,this.note=e}calcHeight(){if(this.$refs.textarea){const e=this.$refs.textarea;return e.style.height="auto",e.style.height=e.scrollHeight+"px",e.scrollHeight+"px"}return"100px"}updateNote(){this.note&&l.gameStore.updateNote({note:this.note,sync:!0})}removeNote(){a.getRef("confirm").open("Are you sure you wish to remove this?").then(e=>{e&&this.note&&(l.gameStore.removeNote({note:this.note,sync:!0}),this.visible=!1)},()=>{})}};c=s.__decorate([o.default({components:{Modal:r.default}})],c),t.default=c},"5b69":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=i("60a3"),r=s.__importDefault(i("3b36")),a=s.__importDefault(i("ea6a")),l=i("0bc6"),c=i("8f0a"),u=i("6f92"),d=i("4709"),h=i("5e7c"),f=i("574e"),p=i("e4ea"),g=i("b2ed"),v=i("f10f"),m=i("92b1"),y=i("5a5c");let b=class extends a.default{constructor(){super(...arguments),this.name="Draw",this.active=!1,this.startPoint=null,this.shape=null,this.brushHelper=null,this.ruler=null,this.fillColour="rgba(0, 0, 0, 1)",this.borderColour="rgba(255, 255, 255, 0)",this.shapeSelect="square",this.shapes=["square","circle","draw-polygon","paint-brush"],this.modeSelect="normal",this.modes=["normal","reveal","hide"],this.brushSize=m.getUnitDistance(v.gameStore.unitSize)}get helperSize(){return"paint-brush"===this.shapeSelect?this.brushSize/2:m.getUnitDistance(this.unitSize)/8}get IS_DM(){return v.gameStore.IS_DM}get unitSize(){return v.gameStore.unitSize}get useGrid(){return v.gameStore.useGrid}onFillChange(){this.brushHelper&&(this.brushHelper.fillColour=this.fillColour)}onModeUpdate(e,t){this.onModeChange(e,t)}setupBrush(){null!==this.brushHelper&&("reveal"===this.modeSelect||"hide"===this.modeSelect?(this.brushHelper.options.set("preFogShape",!0),this.brushHelper.options.set("skipDraw",!0),this.brushHelper.fillColour="rgba(0, 0, 0, 1)","reveal"===this.modeSelect?this.brushHelper.globalCompositeOperation="source-over":"hide"===this.modeSelect&&(this.brushHelper.globalCompositeOperation="destination-out")):(this.brushHelper.options.delete("preFogShape"),this.brushHelper.options.delete("skipDraw"),this.brushHelper.globalCompositeOperation="source-over",this.brushHelper.fillColour=this.fillColour))}onModeChange(e,t){if(null===this.brushHelper)return;const i=u.layerManager.getLayer("fow"),s=u.layerManager.getLayer();void 0!==i&&void 0!==s&&(this.setupBrush(),"normal"!==e&&"normal"===t?(s.removeShape(this.brushHelper,!1),i.addShape(this.brushHelper,!1)):"normal"===e&&"normal"!==t&&(s.addShape(this.brushHelper,!1),i.removeShape(this.brushHelper,!1)))}getLayer(){return"normal"===this.modeSelect?u.layerManager.getLayer():u.layerManager.getLayer("fow")}onMouseDown(e){const t=this.getLayer();if(void 0!==t){if(this.active)null!==this.shape&&this.shape instanceof p.Polygon&&this.shape._vertices.push(m.l2g(y.getMouse(e)));else{switch(this.startPoint=m.l2g(y.getMouse(e)),this.active=!0,this.shapeSelect){case"square":this.shape=new g.Rect(this.startPoint.clone(),0,0,this.fillColour,this.borderColour);break;case"circle":this.shape=new d.Circle(this.startPoint.clone(),this.helperSize,this.fillColour,this.borderColour);break;case"paint-brush":this.shape=new f.MultiLine(this.startPoint.clone(),[],this.brushSize),this.shape.fillColour=this.fillColour;break;case"draw-polygon":this.shape=new p.Polygon(this.startPoint.clone(),[],this.fillColour,this.borderColour);break;default:return}"normal"!==this.modeSelect&&(this.shape.options.set("preFogShape",!0),this.shape.options.set("skipDraw",!0),this.shape.fillColour="rgba(0, 0, 0, 1)"),"reveal"===this.modeSelect?this.shape.globalCompositeOperation="source-over":"hide"===this.modeSelect&&(this.shape.globalCompositeOperation="destination-out"),this.shape.addOwner(v.gameStore.username),"fow"===t.name&&"normal"===this.modeSelect&&(this.shape.visionObstruction=!0,this.shape.movementObstruction=!0),t.addShape(this.shape,!0,!1,!1),this.pushBrushBack()}if(null!==this.shape&&this.shape instanceof p.Polygon){const i=m.l2g(y.getMouse(e));null===this.ruler?(this.ruler=new h.Line(i,i,3,"black"),t.addShape(this.ruler,!1)):(this.ruler.refPoint=i,this.ruler.endPoint=i),this.shape.visionObstruction&&v.gameStore.recalculateVision(!0),t.invalidate(!1),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!0})}}else console.log("No active layer!")}onMouseMove(e){const t=m.l2g(y.getMouse(e)),i=this.getLayer();if(void 0!==i){if(null!==this.brushHelper&&(this.brushHelper.r=this.helperSize,this.brushHelper.refPoint=t,this.active||i.invalidate(!1)),this.active&&null!==this.startPoint&&null!==this.shape){switch(this.shapeSelect){case"square":this.shape.w=Math.abs(t.x-this.startPoint.x),this.shape.h=Math.abs(t.y-this.startPoint.y),this.shape.refPoint=new c.GlobalPoint(Math.min(this.startPoint.x,t.x),Math.min(this.startPoint.y,t.y));break;case"circle":this.shape.r=t.subtract(this.startPoint).length();break;case"paint-brush":this.shape._points.push(t);break;case"draw-polygon":this.ruler.endPoint=t;break}this.shape instanceof p.Polygon||(l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!0}),this.shape.visionObstruction&&v.gameStore.recalculateVision(!0)),i.invalidate(!1)}}else console.log("No active layer!")}onMouseUp(e){!this.active||null===this.shape||this.shape instanceof p.Polygon||(!e.altKey&&this.useGrid&&this.shape.resizeToGrid(),this.finaliseShape())}onContextMenu(e){if(!this.active||null===this.shape||!(this.shape instanceof p.Polygon))return;const t=this.getLayer();void 0!==t?(t.removeShape(this.ruler,!1),this.ruler=null,this.finaliseShape()):console.log("No active layer!")}finaliseShape(){null!==this.shape&&(this.shape.visionObstruction&&v.gameStore.recalculateVision(),this.shape.movementObstruction&&v.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!1}),this.active=!1)}onSelect(){const e=this.getLayer();void 0!==e&&(this.brushHelper=new d.Circle(new c.GlobalPoint(-1e3,-1e3),this.brushSize/2,this.fillColour),this.setupBrush(),e.addShape(this.brushHelper,!1))}onDeselect(){const e=this.getLayer();null!==this.brushHelper&&void 0!==e&&e.removeShape(this.brushHelper,!1),this.active&&void 0!==e&&null!==this.shape&&(e.removeShape(this.shape,!0,!1),this.shape=null,this.active=!1,e.invalidate(!1))}pushBrushBack(){const e=this.getLayer();void 0!==e?(null!==this.brushHelper&&e.removeShape(this.brushHelper,!1),this.brushHelper=new d.Circle(new c.GlobalPoint(-1e3,-1e3),this.brushSize/2,this.fillColour),this.setupBrush(),e.addShape(this.brushHelper,!1)):console.log("No active layer!")}};s.__decorate([o.Watch("fillColour")],b.prototype,"onFillChange",null),s.__decorate([o.Watch("modeSelect")],b.prototype,"onModeUpdate",null),b=s.__decorate([n.default({components:{"color-picker":r.default}})],b),t.default=b},"5e7c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("92b1");class a extends o.Shape{constructor(e,t,i,s,n){super(e,"rgba(0, 0, 0, 0)",s||"#000",n),this.type="line",this.endPoint=t,this.lineWidth=void 0===i?1:i}asDict(){return Object.assign(this.getBaseDict(),{x2:this.endPoint.x,y2:this.endPoint.y,line_width:this.lineWidth})}get points(){return[[this.refPoint.x,this.refPoint.y],[this.endPoint.x,this.endPoint.y]]}getBoundingBox(){return new n.BoundingRect(new s.GlobalPoint(Math.min(this.refPoint.x,this.endPoint.x),Math.min(this.refPoint.y,this.endPoint.y)),Math.abs(this.refPoint.x-this.endPoint.x),Math.abs(this.refPoint.y-this.endPoint.y))}draw(e){super.draw(e),e.strokeStyle=this.strokeColour,e.beginPath(),e.moveTo(r.g2lx(this.refPoint.x),r.g2ly(this.refPoint.y)),e.lineTo(r.g2lx(this.endPoint.x),r.g2ly(this.endPoint.y)),e.lineWidth=this.lineWidth,e.stroke()}contains(e){return!1}center(e){}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this.refPoint=r.l2g(t):this.endPoint=r.l2g(t)}}t.Line=a},"5ed5":function(e,t,i){},"5f86":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("8c4f"));o.default.use(r.default);const a=s.__importDefault(i("e914")),l=s.__importDefault(i("1077")),c=s.__importDefault(i("cad7")),u=s.__importDefault(i("47f7")),d=s.__importDefault(i("c6b4")),h=s.__importDefault(i("07f5")),f=s.__importDefault(i("ce87")),p=i("cc67");t.router=new r.default({mode:"history",base:"/",routes:[{path:"/",redirect:"/dashboard"},{path:"/_load",name:"load",component:u.default},{path:"/assets",component:a.default,meta:{auth:!0}},{path:"/auth",component:{template:""},children:[{path:"login",component:l.default},{path:"logout",component:c.default}]},{path:"/invite/:code",component:f.default,meta:{auth:!0}},{path:"/dashboard",component:d.default,meta:{auth:!0}},{path:"/game/:creator/:room",component:h.default,meta:{auth:!0}}]}),t.router.beforeEach((e,i,s)=>{p.coreStore.initialized||"/_load"===e.path?e.matched.some(e=>e.meta.auth)&&!p.coreStore.authenticated?s({path:"/auth/login",query:{redirect:e.path}}):s():(s({path:"/_load"}),n.default.get("/api/auth").then(i=>{i.data.auth&&(p.coreStore.setAuthenticated(!0),p.coreStore.setUsername(i.data.username)),p.coreStore.setInitialized(!0),t.router.push(e.path)}).catch(()=>{console.error("Authentication check could not be fulfilled.")}))})},"5fa9":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9"));let r=class extends n.default{constructor(){super(...arguments),this.name="",this.selected=!1,this.active=!1}get detailRight(){const e=this.$parent.$refs[this.name+"-selector"][0].getBoundingClientRect(),t=e.left+e.width/2;return`${window.innerWidth-Math.min(window.innerWidth-25,t+75)}px`}get detailArrow(){const e=this.$parent.$refs[this.name+"-selector"][0].getBoundingClientRect(),t=e.left+e.width/2,i=Math.min(window.innerWidth-25,t+75);return`${i-t-14}px`}created(){this.$parent.$on("mousedown",(e,t)=>{t===this.name&&this.onMouseDown(e)}),this.$parent.$on("mouseup",(e,t)=>{t===this.name&&this.onMouseUp(e)}),this.$parent.$on("mousemove",(e,t)=>{t===this.name&&this.onMouseMove(e)}),this.$parent.$on("contextmenu",(e,t)=>{t===this.name&&this.onContextMenu(e)}),this.$parent.$on("tools-select-change",(e,t)=>{t===this.name?(this.selected=!1,this.onDeselect()):e===this.name&&(this.selected=!0,this.onSelect())})}onSelect(){}onDeselect(){}onMouseDown(e){}onMouseUp(e){}onMouseMove(e){}onContextMenu(e){}};r=s.__decorate([o.default],r),t.default=r},6100:function(e,t,i){"use strict";i.r(t);var s=i("f974"),n=i("e94f");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("d75e");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b6e1f51c",null);t["default"]=a.exports},6465:function(e,t,i){"use strict";i.r(t);var s=i("5fa9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"64a9":function(e,t,i){},6542:function(e,t,i){},"676f":function(e,t,i){},"69fb":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"main"},on:{mouseleave:e.mouseleave,wheel:e.zoom}},[e.showUI?i("menu-bar"):e._e(),i("div",{attrs:{id:"board"}},[e.ready.manager?[i("tool-bar",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],ref:"tools"})]:e._e(),i("div",{attrs:{id:"layers"},on:{mousedown:e.mousedown,mouseup:e.mouseup,mousemove:e.mousemove,contextmenu:function(t){return t.preventDefault(),t.stopPropagation(),e.contextmenu(t)},dragover:function(e){e.preventDefault()},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.drop(t)}}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showUI&&e.layers.length>1,expression:"showUI && layers.length>1"}],attrs:{id:"layerselect"}},[i("ul",e._l(e.layers,function(t){return i("li",{key:t.name,class:{"layer-selected":t===e.selectedLayer},on:{mousedown:function(i){return e.selectLayer(t)}}},[i("a",{attrs:{href:"#"}},[e._v(e._s(t))])])}),0)])],2),i("selection-info",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],ref:"selectionInfo"}),i("initiative-dialog",{ref:"initiative",attrs:{id:"initiativedialog"}}),i("note-dialog",{ref:"note"}),i("label-dialog",{ref:"labels"}),e.IS_DM||e.FAKE_PLAYER?i("dm-settings",{ref:"dmsettings"}):e._e(),i("zoom-slider",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],attrs:{id:"zoomer",height:6,width:200,min:0,max:1,interval:.1,"dot-width":8,"dot-height":20,"tooltip-dir":"bottom",tooltip:"hover",formatter:e.zoomDisplay.toFixed(1),"slider-style":{"border-radius":"15%"},"bg-style":{"background-color":"#fff","box-shadow":"0.5px 0.5px 3px 1px rgba(0, 0, 0, .36)"},"process-style":{"background-color":"#fff"}},model:{value:e.zoomDisplay,callback:function(t){e.zoomDisplay=t},expression:"zoomDisplay"}}),i("prompt-dialog",{ref:"prompt"}),i("confirm-dialog",{ref:"confirm"})],1)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"6a95":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"input-copy"},on:{mouseleave:function(t){e.showPopup=!1}}},[i("input",{attrs:{type:"text",disabled:"disabled",id:"input-element"},domProps:{value:e.value}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopup,expression:"showPopup"}],attrs:{id:"show-popup"}},[e._v(e._s(e.popupString))]),i("div",{attrs:{id:"copy-button"},on:{click:e.copy}},[i("i",{staticClass:"far fa-copy"})])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"6c30":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("c266"),n=i("f10f"),o=i("92b1");class r extends s.BaseRect{constructor(e,t,i,s,n){super(t,i,s,void 0,void 0,n),this.type="assetrect",this.src="",this.img=e}asDict(){return Object.assign(this.getBaseDict(),{src:this.src})}fromDict(e){super.fromDict(e),this.src=e.src}draw(e){super.draw(e);try{e.drawImage(this.img,o.g2lx(this.refPoint.x),o.g2ly(this.refPoint.y),o.g2lz(this.w),o.g2lz(this.h))}catch(t){console.warn(`Shape ${this.uuid} could not load the image ${this.src}`)}}getInitiativeRepr(){return{uuid:this.uuid,visible:!n.gameStore.IS_DM,group:!1,source:this.src,has_img:!0,effects:[],index:1/0}}}t.Asset=r},"6c7c":function(e,t,i){"use strict";i.r(t);var s=i("6a95"),n=i("9088");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("2900");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"20bfdb3e",null);t["default"]=a.exports},"6e4a":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("98ef"),n=i("4aee");class o{constructor(){this.tds=new s.TDS}insertConstraint(e,t){const i=this.insert(e),s=this.insert(t);i!==s&&this.insertConstraintV(i,s)}insertConstraintV(e,t){const i=[[e,t]];while(i.length>0){const e=i.pop(),t=n.edgeInfo(e[0],e[1]);if(t.includes){this.markConstraint(t.fr,t.i),t.vi!==e[1]&&i.push([t.vi,e[1]]);continue}const s=this.findIntersectedFaces(e[0],e[1]);s.found?s.vi!==e[0]&&s.vi!==e[1]?(i.push([e[0],s.vi]),i.push([s.vi,e[1]])):i.push(e):(this.triangulateHole(s.intersectedFaces,s.listAB,s.listBA),s.vi!==e[1]&&i.push([s.vi,e[1]]))}}triangulateHole(e,t,i){const s=[];this.triangulateHole2(e,t,i,s),this.propagatingFlipE(s)}triangulateHole2(e,t,i,s){if(t.length>0){this.triangulateHalfHole(t,s),this.triangulateHalfHole(i,s);const n=t[0][0],o=i[0][0];n.neighbours[2]=o,o.neighbours[2]=n,n.constraints[2]=!0,o.constraints[2]=!0;while(e.length>0)this.tds.deleteTriangle(e.shift())}}triangulateHalfHole(e,t){let i,o,r=0;const a=()=>e[r],l=()=>e[i],c=a()[0].vertices[n.ccw(a()[1])];let u,d,h,f,p,g;i=r,++i;do{d=a()[0],p=a()[1],null!==d.neighbours[p]&&(u=d.neighbours[p],f=n.cw(u.indexV(d.vertices[n.cw(p)])),d=u.neighbours[f],p=this.tds.mirrorIndex(u,f)),h=l()[0],g=l()[1],null!==h.neighbours[g]&&(u=h.neighbours[g],f=n.cw(u.indexV(h.vertices[n.cw(g)])),h=u.neighbours[f],g=this.tds.mirrorIndex(u,f));const v=d.vertices[n.ccw(p)],m=d.vertices[n.cw(p)],y=h.vertices[n.cw(g)],b=n.orientation(v.point,m.point,y.point);switch(b){case s.Sign.RIGHT_TURN:{const s=this.tds.createTriangle(v,y,m,null,null,null);t.push([s,2]),s.neighbours[1]=d,s.neighbours[0]=h,d.neighbours[p]=s,h.neighbours[g]=s,d.isConstrained(p)&&(s.constraints[1]=!0),h.isConstrained(g)&&(s.constraints[0]=!0),v.triangle=s,m.triangle=s,y.triangle=s,o=r+1,e.splice(r,0,[s,2]),e.splice(Math.max(o,i),1),e.splice(Math.min(o,i),1),i=r,v!==c?--r:++i;break}case s.Sign.LEFT_TURN:case s.Sign.COLLINEAR:++r,++i;break}}while(i0){t=r[0][0],a=r[0][1],l=t.neighbours[a],c=this.tds.mirrorIndex(t,a),u=[t,a],r.splice(r.findIndex(e=>e[0]===u[0]&&e[1]===u[1]),1),d[0]=[t,n.cw(a)],d[1]=[t,n.ccw(a)],d[2]=[l,n.cw(c)],d[3]=[l,n.ccw(c)];for(const e of d){const t=e[0],i=e[1];s=[t.neighbours[i],this.tds.mirrorIndex(t,i)],this.lessEdge(e,s)?r.splice(r.findIndex(t=>t[0]===e[0]&&t[1]===e[1]),1):r.splice(r.findIndex(e=>e[0]===s[0]&&e[1]===s[1]),1)}this.flip(t,a);for(const e of d){const t=e[0],i=e[1];this.isFlipable(t,i)&&(s=[t.neighbours[i],this.tds.mirrorIndex(t,i)],this.lessEdge(e,s)?r.push(e):r.push(s))}}}flip(e,t){const i=e.neighbours[t],s=this.tds.mirrorIndex(e,t),o=e.neighbours[n.cw(t)],r=this.tds.mirrorIndex(e,n.cw(t)),a=e.neighbours[n.ccw(t)],l=this.tds.mirrorIndex(e,n.ccw(t)),c=i.neighbours[n.cw(s)],u=this.tds.mirrorIndex(i,n.cw(s)),d=i.neighbours[n.ccw(s)],h=this.tds.mirrorIndex(i,n.ccw(s));this.tds.flip(e,t),e.constraints[e.indexT(i)]=!1,i.constraints[i.indexT(e)]=!1,o.neighbours[r].constraints[this.tds.mirrorIndex(o,r)]=o.constraints[r],a.neighbours[l].constraints[this.tds.mirrorIndex(a,l)]=a.constraints[l],c.neighbours[u].constraints[this.tds.mirrorIndex(c,u)]=c.constraints[u],d.neighbours[h].constraints[this.tds.mirrorIndex(d,h)]=d.constraints[h]}isFlipable(e,t,i=!0){const o=e.neighbours[t];return!e.isInfinite()&&!o.isInfinite()&&(!e.constraints[t]&&n.sideOfOrientedCircle(o,e.vertices[t].point,i)===s.Sign.ON_POSITIVE_SIDE)}insertb(e,t,i,o){let r,a,l=!1;i===s.LocateType.EDGE&&t.isConstrained(o)&&(l=!0,r=t.vertices[n.ccw(o)],a=t.vertices[n.cw(o)]);const c=this.insertc(e,t,i,o);return l?this.updateConstraintsIncident(c,r,a):i!==s.LocateType.VERTEX&&this.clearConstraintsIncident(c),2===this.tds.dimension&&this.updateConstraintsOpposite(c),c}updateConstraintsIncident(e,t,i){if(0!==this.tds.dimension)if(1===this.tds.dimension){const t=new s.EdgeCirculator(e,null);do{t.t.constraints[2]=!0}while(t.next())}else{const o=new s.FaceCirculator(e,null);do{const s=o.t.indexV(e),r=n.cw(s),a=n.ccw(s);o.t.vertices[r]===t||o.t.vertices[r]===i?(o.t.constraints[a]=!0,o.t.constraints[r]=!1):(o.t.constraints[a]=!1,o.t.constraints[r]=!0)}while(o.next())}}clearConstraintsIncident(e){const t=new s.EdgeCirculator(e,null);if(t.valid)do{const e=t.t,i=t.ri;e.constraints[i]=!1,2===this.tds.dimension&&(e.neighbours[i].constraints[this.tds.mirrorIndex(e,i)]=!1)}while(t.next())}insertc(e,t,i,n){if(1===this.tds.vertices.length)return this.insertFirst(e);if(2===this.tds.vertices.length)return i===s.LocateType.VERTEX?this.tds.finiteVertex:this.insertSecond(e);switch(i){case s.LocateType.VERTEX:return t.vertices[n];case s.LocateType.OUTSIDE_AFFINE_HULL:return this.insertOutsideAffineHull(e);case s.LocateType.OUTSIDE_CONVEX_HULL:return this.insertOutsideConvexHull(e,t);case s.LocateType.EDGE:return this.insertInEdge(e,t,n);case s.LocateType.FACE:return this.insertInFace(e,t)}throw new Error("qwe")}insertInEdge(e,t,i){const s=this.tds.insertInEdge(t,i);return s.point=e,s}insertInFace(e,t){const i=this.tds.insertInFace(t);return i.point=e,i}insertFirst(e){const t=this.tds.insertDimUp();return t.point=e,t}insertSecond(e){const t=this.tds.insertDimUp(this.tds._infinite,!0);return t.point=e,t}insertOutsideAffineHull(e){let t=!1;if(1===this.tds.dimension){const i=this.tds.finiteEdge.first,o=n.orientation(i.vertices[0].point,i.vertices[1].point,e);t=o===s.Sign.COUNTERCLOCKWISE}const i=this.tds.insertDimUp(this.tds._infinite,t);return i.point=e,i}insertOutsideConvexHull(e,t){let i;if(1===this.tds.dimension)throw new Error("sdfasdasd");return i=this.insertOutsideConvexHull2(e,t),i.point=e,i}insertOutsideConvexHull2(e,t){let i=t.indexV(this.tds._infinite);const o=[],r=[];let a=new s.FaceCirculator(this.tds._infinite,t),l=!1;while(!l){a.prev(),i=a.t.indexV(this.tds._infinite);const t=a.t.vertices[n.ccw(i)].point,r=a.t.vertices[n.cw(i)].point;n.orientation(e,t,r)===s.Sign.LEFT_TURN?o.push(a.t):l=!0}a=new s.FaceCirculator(this.tds._infinite,t),l=!1;while(!l){a.next(),i=a.t.indexV(this.tds._infinite);const t=a.t.vertices[n.ccw(i)].point,o=a.t.vertices[n.cw(i)].point;n.orientation(e,t,o)===s.Sign.LEFT_TURN?r.push(a.t):l=!0}const c=this.tds.insertInFace(t);let u;c.point=e;while(o.length>0)u=o[0],i=n.ccw(u.indexV(this.tds._infinite)),this.tds.flip(u,i),o.shift();while(r.length>0)u=r[0],i=n.cw(u.indexV(this.tds._infinite)),this.tds.flip(u,i),r.shift();a=new s.FaceCirculator(c,null);while(!a.t.isInfinite())a.next();return this.tds._infinite.triangle=a.t,c}locate(e,t){let i=0,o=0;if(this.tds.dimension<0)return i=s.LocateType.OUTSIDE_AFFINE_HULL,o=4,{loc:null,lt:i,li:o};if(0===this.tds.dimension)return i=n.xyEqual(e,this.tds.finiteVertex.triangle.vertices[0].point)?s.LocateType.VERTEX:s.LocateType.OUTSIDE_AFFINE_HULL,o=4,{loc:null,lt:i,li:o};if(1===this.tds.dimension)return this.marchLocate1D(e);if(null===t){const e=this.tds._infinite.triangle;t=e.neighbours[e.indexV(this.tds._infinite)]}else t.isInfinite()&&(t=t.neighbours[t.indexV(this.tds._infinite)]);return this.marchLocate2D(t,e)}marchLocate1D(e){const t=this.tds._infinite.triangle,i=t.indexV(this.tds._infinite),o=t.neighbours[i],r=n.orientation(o.vertices[0].point,o.vertices[1].point,e);if(r===s.Sign.RIGHT_TURN||r===s.Sign.LEFT_TURN)return{loc:new s.Triangle,lt:s.LocateType.OUTSIDE_AFFINE_HULL,li:4};const a=o.indexT(t);if(n.collinearBetween(e,o.vertices[1-a].point,o.vertices[a].point))return{loc:t,lt:s.LocateType.OUTSIDE_CONVEX_HULL,li:i};if(n.xyEqual(e,o.vertices[1-a].point))return{loc:o,lt:s.LocateType.VERTEX,li:1-a};throw new Error("sdfsdf")}marchLocate2D(e,t){let i,o,r=null,a=!0;while(1){if(e.isInfinite())return{loc:e,lt:s.LocateType.OUTSIDE_CONVEX_HULL,li:e.indexV(this.tds._infinite)};const l=0,c=e.vertices[0].point,u=e.vertices[1].point,d=e.vertices[2].point;let h,f,p;if(a){if(r=e,a=!1,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}}else if(l)if(e.neighbours[0]===r){if(r=e,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}f=s.Sign.POSITIVE}else if(e.neighbours[1]===r){if(r=e,f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}p=s.Sign.POSITIVE}else{if(r=e,p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}h=s.Sign.POSITIVE}else if(e.neighbours[0]===r){if(r=e,p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}if(h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}f=s.Sign.POSITIVE}else if(e.neighbours[1]===r){if(r=e,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}p=s.Sign.POSITIVE}else{if(r=e,f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}h=s.Sign.POSITIVE}const g=(h===s.Sign.COLLINEAR?1:0)+(f===s.Sign.COLLINEAR?1:0)+(p===s.Sign.COLLINEAR?1:0);switch(g){case 0:i=s.LocateType.FACE,o=4;break;case 1:i=s.LocateType.EDGE,o=h===s.Sign.COLLINEAR?2:f===s.Sign.COLLINEAR?0:1;break;case 2:i=s.LocateType.VERTEX,o=h!==s.Sign.COLLINEAR?2:f!==s.Sign.COLLINEAR?0:1;break}if(void 0===i||void 0===o)throw new Error("ert");return{loc:e,lt:i,li:o}}}iLocate(e,t){if(this.tds.dimension<2)return t;if(null===t){const e=this.tds._infinite.triangle;t=e.neighbours[e.indexV(this.tds._infinite)]}else t.isInfinite()&&(t=t.neighbours[t.indexV(this.tds._infinite)]);let i=null,s=t,o=!0,r=2500;while(1){if(!r--)return s;if(s.isInfinite())return s;const t=s.vertices[0].point,a=s.vertices[1].point,l=s.vertices[2].point;if(o){if(i=s,o=!1,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}if(n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}}else if(s.neighbours[0]===i){if(i=s,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}}else if(s.neighbours[1]===i){if(i=s,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}}else{if(i=s,n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}}break}return s}}t.CDT=o},"6e80":function(e,t,i){},"6f8d":function(e,t,i){"use strict";i.r(t);var s=i("5b69"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"6f92":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6c30"),o=i("f10f"),r=i("92b1");class a{constructor(){this.layers=[],this.width=window.innerWidth,this.height=window.innerHeight,this.UUIDMap=new Map,this.interval=30,this.drawLoop=()=>{for(let e=this.layers.length-1;e>=0;e--)this.layers[e].draw();requestAnimationFrame(this.drawLoop)},requestAnimationFrame(this.drawLoop)}reset(){this.layers=[],this.UUIDMap=new Map}setWidth(e){this.width=e;for(const t of this.layers)t.canvas.width=e,t.width=e}setHeight(e){this.height=e;for(const t of this.layers)t.canvas.height=e,t.height=e}addLayer(e){this.layers.push(e),(o.gameStore.IS_DM||e.playerEditable)&&e.selectable&&o.gameStore.addLayer(e.name)}hasLayer(e){return this.layers.some(t=>t.name===e)}getLayer(e){e=void 0===e?o.gameStore.selectedLayer:e;for(const t of this.layers)if(t.name===e)return t}selectLayer(e,t=!0){let i=!1;for(const s of this.layers)s.selectable&&(i&&"fow"!==s.name?s.ctx.globalAlpha=.3:s.ctx.globalAlpha=1,e===s.name&&(o.gameStore.selectLayer({name:e,sync:t}),i=!0),s.clearSelection(),s.invalidate(!0))}getGridLayer(){return this.getLayer("grid")}hasSelection(){const e=this.getSelection();return void 0!==e&&e.length>0}getSelection(){const e=this.getLayer();if(void 0!==e)return e.selection}invalidate(){for(let e=this.layers.length-1;e>=0;e--)this.layers[e].invalidate(!0)}invalidateLight(){for(let e=this.layers.length-1;e>=0;e--)this.layers[e].isVisionLayer&&this.layers[e].invalidate(!0)}dropAsset(e){const t=this.getLayer();if(void 0===t||null===e||null===e.dataTransfer)return;const i=document.createElement("img");i.src=e.dataTransfer.getData("text/plain");const a=new n.Asset(i,new s.GlobalPoint(r.l2gx(e.clientX),r.l2gy(e.clientY)),r.l2gz(i.width),r.l2gz(i.height));if(a.src=new URL(i.src).pathname,o.gameStore.useGrid){const e=o.gameStore.gridSize;a.refPoint=new s.GlobalPoint(Math.round(a.refPoint.x/e)*e,Math.round(a.refPoint.y/e)*e),a.w=Math.max(Math.round(a.w/e)*e,e),a.h=Math.max(Math.round(a.h/e)*e,e)}t.addShape(a,!0)}}t.layerManager=new a,window.lm=t.layerManager},7018:function(e,t,i){"use strict";i.r(t);var s=i("ebb9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},7420:function(e,t,i){"use strict";i.r(t);var s=i("d320"),n=i("778b");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("c969");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"73816298",null);t["default"]=a.exports},"76b3":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{constructor(e,t){this.children=[],this.nPrimitives=e,this.bbox=t}}t.BoundingNode=s;class n extends s{constructor(e,t,i){super(t,i),this.firstPrimOffset=e}}t.LeafNode=n;class o extends s{constructor(e,t,i){super(0,t.bbox.union(i.bbox)),this.dimension=e,this.children.push(t),this.children.push(i)}}t.InteriorNode=o},"778b":function(e,t,i){"use strict";i.r(t);var s=i("5a81"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"77a6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4a5b"),n=i("0bc6"),o=i("2b48"),r=i("af17"),a=i("8f0a"),l=i("6f92"),c=i("206a"),u=i("f10f"),d=i("2838");function h(e){if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement);else if("Delete"===e.key||"Del"===e.key||"Backspace"===e.key){if(void 0===l.layerManager.getLayer)return void console.log("No active layer selected for delete operation");const e=l.layerManager.getLayer();for(let t=e.selection.length-1;t>=0;t--){const i=e.selection[t];s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==i.uuid?(e.removeShape(i,!0,!1),r.EventBus.$emit("SelectionInfo.Shape.Set",null),r.EventBus.$emit("Initiative.Remove",i.uuid)):e.selection.splice(t,1)}}}function f(e){if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)65===e.keyCode&&e.ctrlKey&&e.target.select();else if(e.keyCode>=37&&e.keyCode<=40){const t=Math.round(u.gameStore.gridSize);let i=t*(e.keyCode%2),r=t*(e.keyCode%2?0:1);if(l.layerManager.hasSelection()){const t=l.layerManager.getSelection();i*=e.keyCode<=38?-1:1,r*=e.keyCode<=38?-1:1;let o=new a.Vector(i,r);if(!e.shiftKey||!u.gameStore.IS_DM)for(const e of t)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==e.uuid&&(o=d.calculateDelta(o,e));for(const e of t)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==e.uuid&&(e.refPoint=e.refPoint.add(o),n.socket.emit("Shape.Position.Update",{shape:e.asDict(),redraw:!0,temporary:!1}));u.gameStore.recalculateVision(),l.layerManager.getLayer().invalidate(!1)}else u.gameStore.increasePanX(i*(e.keyCode<=38?1:-1)),u.gameStore.increasePanY(r*(e.keyCode<=38?1:-1)),l.layerManager.invalidate(),o.sendClientOptions()}else if(68===e.keyCode){const e=l.layerManager.getLayer();e&&(e.clearSelection(),e.invalidate(!0))}else if("u"===e.key&&e.ctrlKey)e.preventDefault(),e.stopPropagation(),u.gameStore.toggleUI();else if("c"===e.key&&e.ctrlKey){const e=l.layerManager.getLayer();if(!e)return;if(!e.selection)return;const t=[];for(const i of e.selection)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==i.uuid&&t.push(i.asDict());u.gameStore.setClipboard(t)}else if("v"===e.key&&e.ctrlKey){const e=l.layerManager.getLayer();if(!e)return;if(!u.gameStore.clipboard)return;e.selection=[];for(const t of u.gameStore.clipboard){t.x+=10,t.y+=10,t.uuid=s.uuidv4();const i=t.trackers;t.trackers=[];for(const e of i){const i=Object.assign({},e,{uuid:s.uuidv4()});t.trackers.push(i)}const n=t.auras;t.auras=[];for(const e of n){const i=Object.assign({},e,{uuid:s.uuidv4()});t.auras.push(i)}const o=c.createShapeFromDict(t);void 0!==o&&(e.addShape(o,!0),e.selection.push(o))}1===e.selection.length?r.EventBus.$emit("SelectionInfo.Shape.Set",e.selection[0]):r.EventBus.$emit("SelectionInfo.Shape.Set",null),e.invalidate(!1)}}t.onKeyUp=h,t.onKeyDown=f},"78c7":function(e,t,i){"use strict";var s=i("9227"),n=i.n(s);n.a},"7aaa":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("033f")),r=s.__importDefault(i("7420")),a=s.__importDefault(i("59d8")),l=s.__importDefault(i("bea6")),c=s.__importDefault(i("dec1")),u=s.__importDefault(i("4899")),d=s.__importDefault(i("c277")),h=s.__importDefault(i("9f58")),f=i("6f92"),p=i("9cb7"),g=i("f10f"),v=i("d5df"),m=i("92b1"),y=i("5a5c"),b=s.__importDefault(i("65d9"));let _=class extends n.default{constructor(){super(...arguments),this.currentTool="Select",this.tools=["Select","Pan","Draw","Ruler","Map","Filter","Vision"],this.dmTools=["Map"]}get IS_DM(){return g.gameStore.IS_DM}get currentToolComponent(){return`${this.currentTool.toLowerCase()}-tool`}get visibleTools(){return this.tools.filter(e=>!this.dmTools.includes(e)||this.IS_DM)}toolVisible(e){return"Filter"===e?Object.keys(g.gameStore.labels).length>0:"Vision"!==e||g.gameStore.ownedtokens.length>1}mousedown(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(1===e.button)t="Pan";else if(0!==e.button)return;this.$emit("mousedown",e,t)}mouseup(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(1===e.button)t="Pan";else if(0!==e.button)return;this.$emit("mouseup",e,t)}mousemove(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(0!==(4&e.buttons))t="Pan";else if((1&e.button)>1)return;this.$emit("mousemove",e,t);let i=!1;for(const s of g.gameStore.annotations)if(f.layerManager.UUIDMap.has(s)&&f.layerManager.hasLayer("draw")){const t=f.layerManager.UUIDMap.get(s);t.contains(m.l2g(y.getMouse(e)))&&(i=!0,p.gameManager.annotationManager.setActiveText(t.annotation))}!i&&p.gameManager.annotationManager.shown&&p.gameManager.annotationManager.setActiveText("")}mouseleave(e){0!==(1&e.buttons)&&this.$emit("mouseup",e,this.currentTool)}contextmenu(e){"CANVAS"===e.target.tagName&&2===e.button&&"CANVAS"===e.target.tagName&&this.$emit("contextmenu",e,this.currentTool)}};_=s.__decorate([b.default({components:{"select-tool":d.default,"pan-tool":u.default,"draw-tool":a.default,"ruler-tool":v.RulerTool,"map-tool":c.default,"filter-tool":l.default,"vision-tool":h.default,"shape-menu":o.default,"createtoken-dialog":r.default},watch:{currentTool(e,t){this.$emit("tools-select-change",e,t)}}})],_),t.default=_},"7ba5":function(e,t,i){"use strict";i.r(t);var s=i("fbdd"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"7e15":function(e,t,i){"use strict";i.r(t);var s=i("52a8"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"7eb7":function(e,t,i){"use strict";var s=i("cd76"),n=i.n(s);n.a},"7f1e":function(e,t,i){"use strict";var s=i("fe11"),n=i.n(s);n.a},"839d":function(e,t,i){},"851c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f"));let a=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.question="",this.answer="",this.title="",this.resolve=e=>{},this.reject=()=>{}}submit(){this.resolve(this.answer),this.close()}close(){this.reject(),this.visible=!1,this.question="",this.answer="",this.title=""}prompt(e,t){return this.question=e,this.title=t,this.visible=!0,this.$nextTick(()=>{this.$refs.answer.focus()}),new Promise((e,t)=>{this.resolve=e,this.reject=t})}};a=s.__decorate([o.default({components:{Modal:r.default}})],a),t.default=a},8611:function(e,t,i){"use strict";var s=i("d24b"),n=i.n(s);n.a},8790:function(e,t,i){"use strict";var s=i("a912"),n=i.n(s);n.a},"88af":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[e._v(e._s(e.message))])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"8cd4":function(e,t,i){"use strict";i.r(t);var s=i("9587"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"8db6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("92b1");class o{constructor(e,t,i){this.w=t,this.h=i,this.topLeft=e,this.topRight=new s.GlobalPoint(e.x+t,e.y),this.botRight=new s.GlobalPoint(e.x+t,e.y+i),this.botLeft=new s.GlobalPoint(e.x,e.y+i)}contains(e){return this.topLeft.x<=e.x&&this.topRight.x>=e.x&&this.topLeft.y<=e.y&&this.botLeft.y>=e.y}get points(){return 0===this.w||0===this.h?[[this.topLeft.x,this.topLeft.y]]:[[this.topLeft.x,this.topLeft.y],[this.botLeft.x,this.botLeft.y],[this.botRight.x,this.botRight.y],[this.topRight.x,this.topRight.y]]}offset(e){return new o(this.topLeft.add(e),this.w,this.h)}union(e){const t=Math.min(this.topLeft.x,e.topLeft.x),i=Math.max(this.topRight.x,e.topRight.x),n=Math.min(this.topLeft.y,e.topLeft.y),r=Math.max(this.botLeft.y,e.botLeft.y);return new o(new s.GlobalPoint(t,n),i-t,r-n)}getDiagCorner(e){return e?this.botRight:this.topLeft}intersectsWith(e){return!(e.topLeft.x>this.topRight.x||e.topRight.xthis.botLeft.y||e.botLeft.y=this.topRight.x||e.topRight.x<=this.topLeft.x||e.topLeft.y>=this.botLeft.y||e.botLeft.y<=this.topLeft.y)}intersectP(e,t,i){let s=t.x*(this.getDiagCorner(i[0]).x-e.origin.x),n=t.x*(this.getDiagCorner(!i[0]).x-e.origin.x);const o=t.y*(this.getDiagCorner(i[1]).y-e.origin.y),r=t.y*(this.getDiagCorner(!i[1]).y-e.origin.y);return s>r||o>n?{hit:!1,min:s,max:n}:(o>s&&(s=o),r0,min:s,max:n})}center(){return this.topLeft.add(new s.Vector(this.w/2,this.h/2))}getMaxExtent(){return this.w>this.h?0:1}visibleInCanvas(e){const t=!(n.g2lx(this.topLeft.x)>e.width||n.g2ly(this.topLeft.y)>e.height||n.g2lx(this.topRight.x)<0||n.g2ly(this.botRight.y)<0);return!!t}}t.BoundingRect=o},"8f0a":function(e,t,i){"use strict";function s(e,t){const i=e.x-t.x,s=e.y-t.y;return Math.sqrt(i*i+s*s)}Object.defineProperty(t,"__esModule",{value:!0}),t.getPointDistance=s;class n{constructor(e,t){this.x=e,this.y=t}static fromArray(e){return new n(e[0],e[1])}add(e){return new n(this.x+e.x,this.y+e.y)}subtract(e){return new a(this.x-e.x,this.y-e.y)}clone(){return new n(this.x,this.y)}get(e){return 0===e?this.x:this.y}asArray(){return[this.x,this.y]}}t.Point=n;class o extends n{add(e){return super.add(e)}subtract(e){return super.subtract(e)}clone(){return super.clone()}static fromArray(e){return new o(e[0],e[1])}}t.GlobalPoint=o;class r extends n{add(e){return super.add(e)}subtract(e){return super.subtract(e)}clone(){return super.clone()}}t.LocalPoint=r;class a{constructor(e,t){this.x=e,this.y=t}dot(e){return this.x*e.x+this.y*e.y}inverse(){return new a(0===this.x?0:1/this.x,0===this.y?0:1/this.y)}length(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}normalize(){const e=this.length();return new a(this.x/e,this.y/e)}reverse(){return new a(-this.x,-this.y)}multiply(e){return new a(this.x*e,this.y*e)}angle(){return 180*Math.atan2(this.y,this.x)/Math.PI}}t.Vector=a;class l{constructor(e,t,i){this.direction=t,this.origin=e,void 0===i&&(i=1/0),this.tMax=i}static fromPoints(e,t){const i=new a(t.x-e.x,t.y-e.y);let s;return s=Math.abs(i.x)>.01?(t.x-e.x)/i.x:(t.y-e.y)/i.y,new l(e,i,s)}get(e){return new n(this.origin.x+e*this.direction.x,this.origin.y+e*this.direction.y)}getDistance(e,t){return Math.sqrt(Math.pow(t-e,2)*(Math.pow(this.direction.x,2)+Math.pow(this.direction.y,2)))}getT(e,t){return e+Math.sqrt(Math.pow(t,2)/(Math.pow(this.direction.x,2)+Math.pow(this.direction.y,2)))}}t.Ray=l},"8f54":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",[e._l(e.folders,function(t){return i("li",{key:t,staticClass:"folder",on:{click:function(t){return t.stopPropagation(),e.toggle(t)}}},[e._v("\n "+e._s(t)+"\n "),i("asset-node",{attrs:{asset:e.asset[t]}})],1)}),e._l(e.files,function(t){return i("li",{key:t.name,staticClass:"file draggable token",attrs:{draggable:"true"},on:{mouseover:function(i){e.showImage=t.hash},mouseout:function(t){e.showImage=null},dragstart:function(i){return e.dragStart(i,"/static/assets/"+t.hash)}}},[e._v("\n "+e._s(t.name)+"\n "),e.showImage==t.hash?i("div",{staticClass:"preview"},[i("img",{staticClass:"asset-preview-image",attrs:{src:"/static/assets/"+t.hash}})]):e._e()])})],2)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"8fc5":function(e,t,i){"use strict";var s=i("6e80"),n=i.n(s);n.a},9088:function(e,t,i){"use strict";i.r(t);var s=i("3411"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"91df":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("6f79"));i("fe80");const a=i("2ef0"),l=s.__importDefault(i("a535")),c=s.__importDefault(i("cec2")),u=s.__importDefault(i("f5fe")),d=s.__importDefault(i("f74c")),h=s.__importDefault(i("19f9")),f=s.__importDefault(i("f551")),p=s.__importDefault(i("f086")),g=s.__importDefault(i("6100")),v=i("0bc6"),m=i("77a6"),y=i("bb17"),b=i("6f92"),_=i("f10f"),w=i("92b1"),S=i("8f0a"),x=s.__importDefault(i("e0e8"));let C=class extends n.default{constructor(){super(...arguments),this.ready={manager:!1,tools:!1}}get showUI(){return _.gameStore.showUI}get IS_DM(){return _.gameStore.IS_DM}get FAKE_PLAYER(){return _.gameStore.FAKE_PLAYER}get layers(){return _.gameStore.layers}get selectedLayer(){return _.gameStore.selectedLayer}get zoomDisplay(){return _.gameStore.zoomDisplay}set zoomDisplay(e){_.gameStore.updateZoom({newZoomDisplay:e,zoomLocation:w.l2g(new S.LocalPoint(window.innerWidth/2,window.innerHeight/2))})}mounted(){window.addEventListener("resize",this.resizeWindow),window.addEventListener("keyup",m.onKeyUp),window.addEventListener("keydown",m.onKeyDown),this.ready.manager=!0}destroyed(){window.removeEventListener("resize",this.resizeWindow),window.removeEventListener("keyup",m.onKeyUp),window.removeEventListener("keydown",m.onKeyDown),this.ready.manager=!1}zoom(e){a.throttle(y.scrollZoom)(e)}resizeWindow(){b.layerManager.setWidth(window.innerWidth),b.layerManager.setHeight(window.innerHeight),b.layerManager.invalidate()}mousedown(e){this.$refs.tools.mousedown(e)}mouseup(e){this.$refs.tools.mouseup(e)}mousemove(e){this.$refs.tools.mousemove(e)}mouseleave(e){this.$refs.tools.mouseleave(e)}contextmenu(e){this.$refs.tools.contextmenu(e)}selectLayer(e){b.layerManager.selectLayer(e)}drop(e){if(null!==e&&null!==e.dataTransfer)if(e.dataTransfer.files.length>0)this.$refs.confirm.open("Uploading files should be done through the asset manager.","Ok","").then(()=>{},()=>{});else{if(""===e.dataTransfer.getData("text/plain"))return;b.layerManager.dropAsset(e)}}};C=s.__decorate([o.default({components:{"tool-bar":g.default,"selection-info":p.default,"prompt-dialog":c.default,"confirm-dialog":l.default,"menu-bar":h.default,"initiative-dialog":u.default,"zoom-slider":r.default,"note-dialog":f.default,"label-dialog":d.default,"dm-settings":x.default},beforeRouteEnter(e,t,i){v.createConnection(e),i()},beforeRouteLeave(e,t,i){v.socket.disconnect(),i()}})],C),t.default=C},9227:function(e,t,i){},"92b1":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("f10f");function o(e){const t=n.gameStore.zoomFactor,i=n.gameStore.panX,o=n.gameStore.panY;return new s.LocalPoint((e.x+i)*t,(e.y+o)*t)}function r(e){return o(new s.GlobalPoint(e,0)).x}function a(e){return o(new s.GlobalPoint(0,e)).y}function l(e){return e*n.gameStore.zoomFactor}function c(e){return e/n.gameStore.unitSize*n.gameStore.gridSize}function u(e){return l(c(e))}function d(e){const t=n.gameStore.zoomFactor,i=n.gameStore.panX,o=n.gameStore.panY;return e instanceof s.LocalPoint?new s.GlobalPoint(e.x/t-i,e.y/t-o):new s.Ray(d(e.origin),e.direction.multiply(1/t),e.tMax)}function h(e){return d(new s.LocalPoint(e,0)).x}function f(e){return d(new s.LocalPoint(0,e)).y}function p(e){return e/n.gameStore.zoomFactor}function g(e){return p(c(e))}t.g2l=o,t.g2lx=r,t.g2ly=a,t.g2lz=l,t.getUnitDistance=c,t.g2lr=u,t.l2g=d,t.l2gx=h,t.l2gy=f,t.l2gz=p,t.l2gr=g,window.g2lx=r,window.g2ly=a},9587:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("2f62"),a=s.__importDefault(i("3b36")),l=s.__importDefault(i("0ddd")),c=i("4a5b"),u=i("0bc6"),d=i("f10f"),h=i("af17");let f=class extends n.default{constructor(){super(...arguments),this.visible={settings:!1,locations:!1}}get IS_DM(){return d.gameStore.IS_DM||d.gameStore.FAKE_PLAYER}get gridColour(){return d.gameStore.gridColour}set gridColour(e){d.gameStore.setGridColour({colour:e,sync:!0})}get fowColour(){return d.gameStore.fowColour}set fowColour(e){d.gameStore.setFOWColour({colour:e,sync:!0})}get rulerColour(){return d.gameStore.rulerColour}set rulerColour(e){d.gameStore.setRulerColour({colour:e,sync:!0})}settingsClick(e){if(e.target.classList.contains("menu-accordion")){e.target.classList.toggle("menu-accordion-active");const t=e.target.nextElementSibling;null!==t&&(t.style.display=""===t.style.display?"block":"")}}changeLocation(e){u.socket.emit("Location.Change",e)}createLocation(){c.getRef("prompt").prompt("New location name:","Create new location").then(e=>{u.socket.emit("Location.New",e)},()=>{})}createNote(){const e={title:"New note",text:"",uuid:c.uuidv4()};d.gameStore.newNote({note:e,sync:!0}),this.openNote(e)}openNote(e){c.getRef("note").open(e)}openDmSettings(){h.EventBus.$emit("DmSettings.Open")}};f=s.__decorate([o.default({components:{"color-picker":a.default,"asset-node":l.default},computed:Object.assign({},r.mapState("game",["locations","assets","notes"]))})],f),t.default=f},"979e":function(e,t,i){"use strict";i.r(t);var s=i("0634"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"98ef":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4aee");let n;var o,r;function a(){return[t.INFINITE,t.INFINITE]}t.INFINITE=-Infinity,function(e){e[e["NEGATIVE"]=-1]="NEGATIVE",e[e["ZERO"]=0]="ZERO",e[e["POSITIVE"]=1]="POSITIVE",e[e["RIGHT_TURN"]=-1]="RIGHT_TURN",e[e["LEFT_TURN"]=1]="LEFT_TURN",e[e["SMALLER"]=-1]="SMALLER",e[e["EQUAL"]=0]="EQUAL",e[e["LARGER"]=1]="LARGER",e[e["CLOCKWISE"]=-1]="CLOCKWISE",e[e["COUNTERCLOCKWISE"]=1]="COUNTERCLOCKWISE",e[e["COLLINEAR"]=0]="COLLINEAR",e[e["COPLANAR"]=0]="COPLANAR",e[e["DEGENERATE"]=0]="DEGENERATE",e[e["ON_NEGATIVE_SIDE"]=-1]="ON_NEGATIVE_SIDE",e[e["ON_ORIENTED_BOUNDARY"]=0]="ON_ORIENTED_BOUNDARY",e[e["ON_POSITIVE_SIDE"]=1]="ON_POSITIVE_SIDE"}(o=t.Sign||(t.Sign={})),function(e){e[e["UNDEFINED"]=-1]="UNDEFINED",e[e["VERTEX_VERTEX"]=0]="VERTEX_VERTEX",e[e["VERTEX_EDGE"]=1]="VERTEX_EDGE",e[e["EDGE_VERTEX"]=2]="EDGE_VERTEX",e[e["EDGE_EDGE"]=3]="EDGE_EDGE"}(r||(r={}));class l{constructor(...e){this.vertices=[],this.neighbours=[null,null,null],this.constraints=[!1,!1,!1],this.uid=l._counter++,this.vertices=e}from(e){return this.vertices=e.vertices.slice(0,e.vertices.length),this.neighbours=e.neighbours.slice(0,e.neighbours.length),this.constraints=e.constraints.slice(0,e.constraints.length),this}get dimension(){return this.vertices.length-1}addVertex(e){void 0===e&&console.log("UNDEFINED HIERE"),this.vertices.push(e),e.triangle=this}isConstrained(e){return this.constraints[e]}reorient(){this.vertices=[this.vertices[1],this.vertices[0],this.vertices[2]].slice(0,this.vertices.length),this.neighbours=[this.neighbours[1],this.neighbours[0],this.neighbours[2]],this.constraints=[this.constraints[1],this.constraints[0],this.constraints[2]]}indexV(e){return this.vertices.indexOf(e)}indexT(e){return this.neighbours.indexOf(e)}isInfinite(e){return void 0===e?this.vertices.includes(n):this.vertices[s.ccw(e)].infinite||this.vertices[s.cw(e)].infinite}contains(e){const t=-this.vertices[1].point[1]*this.vertices[2].point[0]+this.vertices[0].point[1]*(-this.vertices[1].point[0]+this.vertices[2].point[0])+this.vertices[0].point[0]*(this.vertices[1].point[1]-this.vertices[2].point[1])+this.vertices[1].point[0]*this.vertices[2].point[1],i=t<0?-1:1,s=(this.vertices[0].point[1]*this.vertices[2].point[0]-this.vertices[0].point[0]*this.vertices[2].point[1]+(this.vertices[2].point[1]-this.vertices[0].point[1])*e[0]+(this.vertices[0].point[0]-this.vertices[2].point[0])*e[1])*i;if(s<0)return!1;const n=(this.vertices[0].point[0]*this.vertices[1].point[1]-this.vertices[0].point[1]*this.vertices[1].point[0]+(this.vertices[0].point[1]-this.vertices[1].point[1])*e[0]+(this.vertices[1].point[0]-this.vertices[0].point[0])*e[1])*i;return n>0&&s+nt!==e)}setAdjacency(e,t,i,s){e.neighbours[t]=i,i.neighbours[s]=e}get finiteVertex(){return this.vertices[1]}get infiniteVertex(){const e=new c(a());return e.infinite=!0,e}get finiteEdge(){if(this.dimension<1)throw new Error("aspo");const e=new d(this);while(e.valid)e.next();return e.collect()}insertDimUp(e=new c,t=!0){const i=this.createVertex();let s,n;switch(this.dimension++,this.dimension){case 0:s=this.triangles[0],n=new l(i),this.triangles.push(n),this.setAdjacency(s,0,n,0),i.triangle=n;break;case 1:case 2:{const o=[],r=this.triangles.slice(0,this.triangles.length);for(const t of r){const s=(new l).from(t);this.triangles.push(s),t.vertices[this.dimension]=i,s.vertices[this.dimension]=e,this.setAdjacency(t,this.dimension,s,this.dimension),t.vertices.includes(e)&&o.push(s)}for(const e of r){const t=e.neighbours[this.dimension];for(let i=0;ie.center.center().get(r)0){if(i=!0,s=e.tMax=d.min,n=d.max,0===o||t)break;r=a[--o]}else c[u.dimension]?(a[o++]=r+1,r=u.secondChildOffset):(a[o++]=u.secondChildOffset,r++);else{if(0===o)break;r=a[--o]}}return{hit:i,intersect:e.get(s),tMin:s,tMax:n}}compact(){this.offset=0,null!==this.root&&this.flatten(this.root)}flatten(e){const t=this.offset,i=this.offset++;if(0===e.nPrimitives){this.flatten(e.children[0]);const i=this.flatten(e.children[1]);this.nodes[t]={bbox:e.bbox,dimension:e.dimension,nPrimitives:0,secondChildOffset:i}}else this.nodes[t]={bbox:e.bbox,primitivesOffset:e.firstPrimOffset,nPrimitives:e.nPrimitives};return i}createLeaf(e,t,i,s){const n=this.orderedPrims.length;for(let o=e;o{i(t=>{t.owned=e.data.owned,t.joined=e.data.joined})}).catch(e=>{i(t=>{t.error=e.message})})}createRoom(e){n.default.post("/api/rooms",{name:this.newSessionName}).then(e=>{this.$router.push(`/game/${encodeURIComponent(a.coreStore.username)}/${encodeURIComponent(this.newSessionName)}`)}).catch(e=>{this.error=e.message})}};l=s.__decorate([r.default],l),t.default=l},a535:function(e,t,i){"use strict";i.r(t);var s=i("e06e"),n=i("f30c");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("223d");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"1883e207",null);t["default"]=a.exports},a68b:function(e,t,i){"use strict";i.r(t);var s=i("308b"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},a7b3:function(e,t,i){"use strict";var s=i("6542"),n=i.n(s);n.a},a83f:function(e,t,i){"use strict";var s=i("0525"),n=i.n(s);n.a},a912:function(e,t,i){},aa69:function(e,t,i){"use strict";i.r(t);var s=i("0cf7"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},af17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026"));t.EventBus=new n.default},b0ac:function(e,t,i){"use strict";i.r(t);var s=i("a474"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b0c0:function(e,t,i){},b2ed:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("c266"),n=i("f10f"),o=i("92b1"),r=i("5a5c");class a extends s.BaseRect{constructor(e,t,i,s,n,o){super(e,t,i,s,n,o),this.type="rect"}asDict(){return super.getBaseDict()}draw(e){super.draw(e),"fog"===this.fillColour?e.fillStyle=r.getFogColour():e.fillStyle=this.fillColour;const t=n.gameStore.zoomFactor,i=o.g2l(this.refPoint);e.fillRect(i.x,i.y,this.w*t,this.h*t),"rgba(0, 0, 0, 0)"!==this.strokeColour&&(e.strokeStyle=this.strokeColour,e.lineWidth=5,e.strokeRect(i.x,i.y,this.w*t,this.h*t))}}t.Rect=a},b599:function(e,t,i){},b6bc:function(e,t,i){"use strict";i.r(t);var s=i("5394"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b809:function(e,t,i){"use strict";i.r(t);var s=i("ca56"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b906:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("bab4"),o=i("6f92"),r=i("d1ec"),a=i("f10f"),l=i("92b1"),c=i("cee3");class u extends n.Layer{constructor(){super(...arguments),this.isVisionLayer=!0}draw(){if(!this.valid){const t=this.ctx;if(!a.gameStore.fowLOS||r.Settings.skipPlayerFOW)return t.clearRect(0,0,this.canvas.width,this.canvas.height),void(this.valid=!0);t.clearRect(0,0,this.canvas.width,this.canvas.height);const i=t.globalCompositeOperation;t.fillStyle="rgba(0, 0, 0, 1)",a.gameStore.IS_DM||super.draw(!a.gameStore.fullFOW);const n=t.canvas.width+t.canvas.height;for(const u of a.gameStore.activeTokens){const i=o.layerManager.UUIDMap.get(u);if(void 0===i)continue;const d=i.center(),h=l.g2l(d);if("bvh"===a.gameStore.visionMode){t.beginPath();let e=-1;for(let i=0;i<2*Math.PI;i+=r.Settings.angleSteps/2/180*Math.PI){const o=Math.cos(i),r=Math.sin(i),c=new s.Ray(d,new s.Vector(o,r)),u=a.gameStore.BV.intersect(c);u.hit?(-1!==e&&(t.arc(h.x,h.y,n,e,i),e=-1),t.lineTo(l.g2lx(u.intersect.x),l.g2ly(u.intersect.y))):-1===e&&(t.lineTo(h.x+n*o,h.y+n*r),e=i)}-1!==e?t.arc(h.x,h.y,n,e,2*Math.PI):t.closePath(),t.fill()}else{{const e=t.createRadialGradient(h.x,h.y,l.g2lr(a.gameStore.visionRangeMin),h.x,h.y,l.g2lr(a.gameStore.visionRangeMax));e.addColorStop(0,"rgba(0, 0, 0, 1)"),e.addColorStop(1,"rgba(0, 0, 0, 0)"),t.fillStyle=e}try{const s=c.computeVisibility(i.center(),"vision");t.beginPath(),t.moveTo(l.g2lx(s[0][0]),l.g2ly(s[0][1]));for(const e of s)t.lineTo(l.g2lx(e[0]),l.g2ly(e[1]));t.closePath(),t.fill()}catch(e){}}}a.gameStore.IS_DM&&super.draw(!a.gameStore.fullFOW),t.globalCompositeOperation=i}}}t.FOWPlayersLayer=u},bab4:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("0bc6"),n=i("af17"),o=i("6f92"),r=i("206a"),a=i("f10f"),l=i("92b1");class c{constructor(e,t){this.selectable=!1,this.playerEditable=!1,this.isVisionLayer=!1,this.valid=!1,this.shapes=[],this.selection=[],this.selectionColor="#CC0000",this.selectionWidth=2,this.canvas=e,this.name=t,this.width=e.width,this.height=e.height,this.ctx=e.getContext("2d")}invalidate(e){this.valid=!1,e||o.layerManager.invalidateLight()}addShape(e,t,i,n=!0){void 0===i&&(i=!1),e.layer=this.name,this.shapes.push(e),o.layerManager.UUIDMap.set(e.uuid,e),e.checkVisionSources(n),e.setMovementBlock(e.movementObstruction,n),e.ownedBy(a.gameStore.username)&&e.isToken&&a.gameStore.ownedtokens.push(e.uuid),e.annotation.length&&a.gameStore.annotations.push(e.uuid),t&&s.socket.emit("Shape.Add",{shape:e.asDict(),temporary:i}),n&&this.invalidate(!t)}setShapes(e){for(const t of e){const e=r.createShapeFromDict(t);if(void 0===e)return void console.log(`Shape with unknown type ${t.type_} could not be added`);this.addShape(e,!1,!1,!1)}this.clearSelection(),this.invalidate(!1)}removeShape(e,t,i){void 0===i&&(i=!1),this.shapes.splice(this.shapes.indexOf(e),1),t&&s.socket.emit("Shape.Remove",{shape:e.asDict(),temporary:i});const n=a.gameStore.visionSources.findIndex(t=>t.shape===e.uuid),r=a.gameStore.visionBlockers.findIndex(t=>t===e.uuid),l=a.gameStore.movementblockers.findIndex(t=>t===e.uuid),c=a.gameStore.annotations.findIndex(t=>t===e.uuid);n>=0&&a.gameStore.visionSources.splice(n,1),r>=0&&a.gameStore.visionBlockers.splice(r,1),l>=0&&a.gameStore.movementblockers.splice(l,1),c>=0&&a.gameStore.annotations.splice(c,1);const u=a.gameStore.annotations.indexOf(e.uuid);u>=0&&a.gameStore.annotations.splice(u,1);const d=a.gameStore.ownedtokens.indexOf(e.uuid);d>=0&&a.gameStore.ownedtokens.splice(d,1),o.layerManager.UUIDMap.delete(e.uuid);const h=this.selection.indexOf(e);h>=0&&this.selection.splice(h,1),r>=0&&a.gameStore.recalculateVision(),l>=0&&a.gameStore.recalculateMovement(),this.invalidate(!t)}clear(){this.ctx.clearRect(0,0,this.width,this.height)}clearSelection(){this.selection=[],n.EventBus.$emit("SelectionInfo.Shape.Set",null)}draw(e){if(!this.valid){const t=this.ctx,i=t.globalCompositeOperation;e=void 0===e||e,e&&this.clear();const s=this;if(this.shapes.forEach(e=>{e.options.has("skipDraw")&&e.options.get("skipDraw")||void 0!==o.layerManager.getLayer()&&e.visibleInCanvas(s.canvas)&&("fow"===s.name&&e.visionObstruction&&o.layerManager.getLayer().name!==s.name||e.drawAuras(t))}),this.shapes.forEach(e=>{e.options.has("skipDraw")&&e.options.get("skipDraw")||0===e.labels.length&&a.gameStore.filterNoLabel||e.labels.length&&a.gameStore.labelFilters.length&&!e.labels.some(e=>a.gameStore.labelFilters.includes(e.uuid))||void 0!==o.layerManager.getLayer()&&e.visibleInCanvas(s.canvas)&&("fow"===s.name&&e.visionObstruction&&o.layerManager.getLayer().name!==s.name||e.draw(t))}),null!=this.selection){t.fillStyle=this.selectionColor,t.strokeStyle=this.selectionColor,t.lineWidth=this.selectionWidth;const e=a.gameStore.zoomFactor;this.selection.forEach(i=>{t.globalCompositeOperation=i.globalCompositeOperation;const s=i.getBoundingBox();t.strokeRect(l.g2lx(s.topLeft.x),l.g2ly(s.topLeft.y),s.w*e,s.h*e);for(const e of i.points)t.beginPath(),t.arc(l.g2lx(e[0]),l.g2ly(e[1]),3,0,2*Math.PI),t.fill();t.beginPath(),t.moveTo(l.g2lx(i.points[0][0]),l.g2ly(i.points[0][1]));for(let e=1;e<=i.points.length;e++){const s=i.points[e%i.points.length];t.lineTo(l.g2lx(s[0]),l.g2ly(s[1]))}t.stroke()})}t.globalCompositeOperation=i,this.valid=!0}}moveShapeOrder(e,t,i){const n=this.shapes.indexOf(e);n!==t&&(this.shapes.splice(n,1),this.shapes.splice(t,0,e),i&&s.socket.emit("Shape.Order.Set",{shape:e.asDict(),index:t}),this.invalidate(!0))}}t.Layer=c},bb17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("f10f"),n=i("92b1"),o=i("5a5c");function r(e){if(!e.target||!e.target.tagName||"CANVAS"!==e.target.tagName)return;let t;t=-1*Math.sign(e.deltaY),s.gameStore.updateZoom({newZoomDisplay:s.gameStore.zoomDisplay-.1*t,zoomLocation:n.l2g(o.getMouse(e))})}t.scrollZoom=r},bea6:function(e,t,i){"use strict";i.r(t);var s=i("e8bb"),n=i("b6bc");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("e3f5"),i("99ea");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"dca395d6",null);t["default"]=a.exports},c106:function(e,t,i){},c159:function(e,t,i){},c266:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("f10f"),a=i("2838"),l=i("92b1");class c extends o.Shape{constructor(e,t,i,s,n,o){super(e,s,n,o),this.w=t,this.h=i}getBaseDict(){return Object.assign(super.getBaseDict(),{width:this.w,height:this.h})}getBoundingBox(){return new n.BoundingRect(this.refPoint,this.w,this.h)}get points(){if(0===this.w||0===this.h)return[[this.refPoint.x,this.refPoint.y]];const e=this.refPoint.add(new s.Vector(0,this.h)),t=this.refPoint.add(new s.Vector(this.w,this.h)),i=this.refPoint.add(new s.Vector(this.w,0));return[[this.refPoint.x,this.refPoint.y],[e.x,e.y],[t.x,t.y],[i.x,i.y]]}contains(e){return this.refPoint.x<=e.x&&this.refPoint.x+this.w>=e.x&&this.refPoint.y<=e.y&&this.refPoint.y+this.h>=e.y}center(e){if(void 0===e)return this.refPoint.add(new s.Vector(this.w/2,this.h/2));this.refPoint=new s.GlobalPoint(e.x-this.w/2,e.y-this.h/2)}visibleInCanvas(e){if(super.visibleInCanvas(e))return!0;const t=!(l.g2lx(this.refPoint.x)>e.width||l.g2ly(this.refPoint.y)>e.height||l.g2lx(this.refPoint.x+this.w)<0||l.g2ly(this.refPoint.y+this.h)<0);return!!t}snapToGrid(){const e=r.gameStore.gridSize,t=this.center(),i=t.x,n=t.y;let o,l;o=this.w/e%2===0?Math.round(i/e)*e-this.w/2:(Math.round((i+e/2)/e)-.5)*e-this.w/2,l=this.h/e%2===0?Math.round(n/e)*e-this.h/2:(Math.round((n+e/2)/e)-.5)*e-this.h/2;const c=a.calculateDelta(new s.Vector(o-this.refPoint.x,l-this.refPoint.y),this);this.refPoint=this.refPoint.add(c),this.invalidate(!1)}resizeToGrid(){const e=r.gameStore.gridSize;this.refPoint=new s.GlobalPoint(Math.round(this.refPoint.x/e)*e,Math.round(this.refPoint.y/e)*e),this.w=Math.max(Math.round(this.w/e)*e,e),this.h=Math.max(Math.round(this.h/e)*e,e),this.invalidate(!1)}resize(e,t){const i=r.gameStore.zoomFactor;switch(e){case 0:this.w=l.g2lx(this.refPoint.x)+this.w*i-t.x,this.h=l.g2ly(this.refPoint.y)+this.h*i-t.y,this.refPoint=l.l2g(t);break;case 1:this.w=l.g2lx(this.refPoint.x)+this.w*i-t.x,this.h=t.y-l.g2ly(this.refPoint.y),this.refPoint=new s.GlobalPoint(l.l2gx(t.x),this.refPoint.y);break;case 2:this.w=t.x-l.g2lx(this.refPoint.x),this.h=t.y-l.g2ly(this.refPoint.y);break;case 3:this.w=t.x-l.g2lx(this.refPoint.x),this.h=l.g2ly(this.refPoint.y)+this.h*i-t.y,this.refPoint=new s.GlobalPoint(this.refPoint.x,l.l2gy(t.y));break}this.w/=i,this.h/=i,this.w<0&&(this.refPoint=this.refPoint.add(new s.Vector(this.w,0)),this.w=Math.abs(this.w)),this.h<0&&(this.refPoint=this.refPoint.add(new s.Vector(0,this.h)),this.h=Math.abs(this.h))}}t.BaseRect=c},c277:function(e,t,i){"use strict";i.r(t);var s=i("22bd"),n=i("e27a");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},c31c:function(e,t,i){},c5321:function(e,t,i){"use strict";var s=i("d71c"),n=i.n(s);n.a},c5ff:function(e,t,i){},c6b4:function(e,t,i){"use strict";i.r(t);var s=i("2a37"),n=i("b0ac");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("8611");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b102d41e",null);t["default"]=a.exports},c969:function(e,t,i){"use strict";var s=i("3a20"),n=i.n(s);n.a},c9a2:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"AssetManager"}},[i("div",{attrs:{id:"titlebar"}},[e._v("Asset Manager")]),i("div",{attrs:{id:"main"}},[i("div",{attrs:{id:"assets"},on:{dragover:function(t){return t.preventDefault(),e.moveDrag(t)},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.stopDrag(t,e.currentFolder)}}},[i("div",{attrs:{id:"breadcrumbs"}},[i("div",[e._v("/")]),e._l(e.path,function(t){return i("div",{key:t},[e._v(e._s(e.idMap.get(t).name))])})],2),i("div",{attrs:{id:"actionbar"}},[i("input",{attrs:{id:"files",type:"file",multiple:"",hidden:""},on:{change:function(t){return e.upload()}}}),i("div",{attrs:{title:"Create folder"},on:{click:e.createDirectory}},[i("i",{staticClass:"fas fa-plus-square"})]),i("div",{attrs:{title:"Upload files"},on:{click:e.prepareUpload}},[i("i",{staticClass:"fas fa-upload"})])]),i("div",{attrs:{id:"explorer"}},[e.path.length?i("div",{staticClass:"inode folder",on:{dblclick:function(t){return e.changeDirectory(-1)},dragover:function(t){return t.preventDefault(),e.moveDrag(t)},dragleave:function(t){return t.preventDefault(),e.leaveDrag(t)},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.stopDrag(t,e.parentFolder)}}},[i("i",{staticClass:"fas fa-folder",staticStyle:{"font-size":"50px"}}),i("div",{staticClass:"title"},[e._v("..")])]):e._e(),e._l(e.folders,function(t){return i("div",{key:t,staticClass:"inode folder",class:{"inode-selected":e.selected.includes(t)},attrs:{draggable:"true"},on:{click:function(i){return e.select(i,t)},dblclick:function(i){return e.changeDirectory(t)},contextmenu:function(i){return i.preventDefault(),e.$refs.cm.open(i,t)},dragstart:function(i){return e.startDrag(i,t)},dragover:function(t){return t.preventDefault(),e.moveDrag(t)},dragleave:function(t){return t.preventDefault(),e.leaveDrag(t)},drop:function(i){return i.preventDefault(),i.stopPropagation(),e.stopDrag(i,t)}}},[i("i",{staticClass:"fas fa-folder",staticStyle:{"font-size":"50px"}}),i("div",{staticClass:"title"},[e._v(e._s(e.idMap.get(t).name))])])}),e._l(e.files,function(t){return i("div",{key:t,staticClass:"inode file",class:{"inode-selected":e.selected.includes(t)},attrs:{draggable:"true"},on:{click:function(i){return e.select(i,t)},contextmenu:function(i){return i.preventDefault(),e.$refs.cm.open(i,t)},dragstart:function(i){return e.startDrag(i,t)}}},[i("img",{attrs:{src:"/static/assets/"+e.idMap.get(t).file_hash,width:"50"}}),i("div",{staticClass:"title"},[e._v(e._s(e.idMap.get(t).name))])])})],2)]),e.firstSelectedFile?i("div",{attrs:{id:"asset-details"}},[i("div",{attrs:{id:"asset-detail-title"}},[e._v(e._s(e.firstSelectedFile.name))]),i("img",{attrs:{src:"/static/assets/"+e.firstSelectedFile.file_hash}})]):e._e()]),i("AssetContextMenu",{ref:"cm"}),i("Prompt",{ref:"prompt"}),i("ConfirmDialog",{ref:"confirm"})],1)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},ca56:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("1c76")),a=i("0bc6"),l=i("af17"),c=i("f10f"),u=i("92b1");let d=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.x=0,this.y=0}get IS_DM(){return c.gameStore.IS_DM}open(e){this.visible=!0,this.x=e.pageX,this.y=e.pageY,this.$nextTick(()=>this.$children[0].$el.focus())}close(){this.visible=!1}bringPlayers(){c.gameStore.IS_DM&&(a.socket.emit("Players.Bring",{x:u.l2gx(this.x),y:u.l2gy(this.y)}),this.close())}createToken(){this.$parent.$parent.$refs.createtokendialog.open(this.x,this.y),this.close()}showInitiative(){l.EventBus.$emit("Initiative.Show"),this.close()}};d=s.__decorate([o.default({components:{ContextMenu:r.default}})],d),t.default=d},cad7:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("cc67");r.default.registerHooks(["beforeRouteEnter"]);let l=class extends o.default{beforeRouteEnter(e,t,i){n.default.post("/api/logout").then(()=>{a.coreStore.setAuthenticated(!1),a.coreStore.setUsername(""),i({path:"/auth/login"})})}};l=s.__decorate([r.default({})],l),t.default=l},cc67:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=i("6fc5"),o=i("3a0b");let r=class extends n.VuexModule{constructor(){super(...arguments),this.authenticated=!1,this.initialized=!1,this.username=""}setAuthenticated(e){this.authenticated=e}setInitialized(e){this.initialized=e}setUsername(e){this.username=e}};s.__decorate([n.Mutation],r.prototype,"setAuthenticated",null),s.__decorate([n.Mutation],r.prototype,"setInitialized",null),s.__decorate([n.Mutation],r.prototype,"setUsername",null),r=s.__decorate([n.Module({dynamic:!0,store:o.rootStore,name:"core"})],r),t.coreStore=n.getModule(r)},cd49:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("3dfd")),r=i("5f86"),a=i("3a0b");n.default.config.productionTip=!1,n.default.config.devtools=!0,n.default.config.performance=!0,t.app=new n.default({router:r.router,store:a.rootStore,render:e=>e(o.default)}).$mount("#app"),window.app=t.app},cd76:function(e,t,i){},cde6:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9"));let r=class extends n.default{};r=s.__decorate([o.default({props:["visible","left","top"]})],r),t.default=r},ce4c:function(e,t,i){},ce87:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9"));let a=class extends o.default{beforeRouteEnter(e,t,i){n.default.post("/api/invite",{code:e.params.code}).then(e=>{i({path:e.data.sessionUrl})}).catch(e=>{console.error("Invitation code could not be redeemed"),i({path:"/dashboard"})})}};a=s.__decorate([r.default({template:""})],a),t.default=a},cec2:function(e,t,i){"use strict";i.r(t);var s=i("eb57"),n=i("255e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("0584");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"0602c2e6",null);t["default"]=a.exports},cee3:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("f10f"),n=i("1216"),o=i("d6be"),r=i("98ef"),a=i("4aee");function l(e,t,i){void 0===i&&(i=s.gameStore.drawTEContour);const r=[e.x,e.y],a=[],l=o.PA_CDT[t].locate(r,null).loc;return null===l?(console.error("Triangle not found"),[]):(a.push(l.vertices[1].point),l.isConstrained(0)||c(r,l.vertices[2].point,l.vertices[1].point,l,0,a),a.push(l.vertices[2].point),l.isConstrained(1)||c(r,l.vertices[0].point,l.vertices[2].point,l,1,a),a.push(l.vertices[0].point),l.isConstrained(2)||c(r,l.vertices[1].point,l.vertices[0].point,l,2,a),i&&n.drawPolygon(a,"red"),a)}function c(e,t,i,s,n,o){const l=s.neighbours[n],d=l.indexT(s),h=a.ccw(d),f=a.cw(d),p=l.vertices[d],g=l.vertices[f],v=l.vertices[h],m=[l,h],y=[l,f],b=a.orientation(e,i,p.point),_=a.orientation(e,t,p.point);if(b===r.Sign.COUNTERCLOCKWISE)if(m[0].isConstrained(m[1]))i!==g.point&&o.push(u(e,i,p.point,g.point)),_===r.Sign.COUNTERCLOCKWISE&&o.push(u(e,t,p.point,g.point));else{if(_===r.Sign.COUNTERCLOCKWISE)return c(e,t,i,l,h,o);c(e,p.point,i,l,h,o)}if(b!==r.Sign.CLOCKWISE&&_!==r.Sign.COUNTERCLOCKWISE&&o.push(p.point),_===r.Sign.CLOCKWISE)return y[0].isConstrained(y[1])?(b===r.Sign.CLOCKWISE&&o.push(u(e,i,p.point,v.point)),void(t!==v.point&&o.push(u(e,t,p.point,v.point)))):b===r.Sign.CLOCKWISE?c(e,t,i,l,f,o):c(e,t,p.point,l,f,o)}function u(e,t,i,s){const n=(s[1]-i[1])*(t[0]-e[0])-(s[0]-i[0])*(t[1]-e[1]),o=((s[0]-i[0])*(e[1]-i[1])-(s[1]-i[1])*(e[0]-i[0]))/n,r=e[0]+o*(t[0]-e[0]),a=e[1]+o*(t[1]-e[1]);return[r,a]}t.computeVisibility=l},cf8f:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",[e._v("#X")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.xCount,expression:"xCount"}],attrs:{type:"text"},domProps:{value:e.xCount},on:{input:function(t){t.target.composing||(e.xCount=t.target.value)}}}),i("div",[e._v("#Y")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.yCount,expression:"yCount"}],attrs:{type:"text"},domProps:{value:e.yCount},on:{input:function(t){t.target.composing||(e.yCount=t.target.value)}}})]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d065:function(e,t,i){"use strict";i.r(t);var s=i("45fb"),n=i("f8b3");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("514b");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"23de098e",null);t["default"]=a.exports},d19a:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"modal"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"mask",class:{"modal-mask":e.mask,"dialog-mask":!e.mask},on:{click:e.close,dragover:function(t){return t.preventDefault(),e.dragOver(t)}}},[i("div",{ref:"container",staticClass:"modal-container",style:{"background-color":e.colour},on:{click:function(e){e.stopPropagation()}}},[e._t("header",null,{dragStart:e.dragStart,dragEnd:e.dragEnd}),e._t("default")],2)])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d1ec:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{}s.angleSteps=4,s.drawAngleLines=!1,s.drawFirstLightHit=!1,s.skipPlayerFOW=!1,s.skipLightFOW=!1,s.tempFill="fog",t.Settings=s},d24b:function(e,t,i){},d30b:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("cc67");let l=class extends o.default{constructor(){super(...arguments),this.username="",this.password="",this.error=""}login(){n.default.post("/api/login",{username:this.username,password:this.password}).then(e=>{a.coreStore.setUsername(this.username),a.coreStore.setAuthenticated(!0),this.$router.push(this.$route.query.redirect||"/")}).catch(e=>{e.response?this.error=e.response.statusText:this.error="Unknown error occured"})}register(){n.default.post("/api/register",{username:this.username,password:this.password}).then(e=>{a.coreStore.setUsername(this.username),a.coreStore.setAuthenticated(!0),this.$router.push(this.$route.query.redirect||"/")}).catch(e=>{e.response?this.error=e.response.statusText:this.error="Unknown error occured"})}focusin(e){if(e.target&&e.target.nextElementSibling){const t=e.target.nextElementSibling;t.style.opacity="0"}}focusout(e){if(e.target&&e.target.nextElementSibling){const t=e.target.nextElementSibling;t.style.opacity="1"}}};l=s.__decorate([r.default],l),t.default=l},d320:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v("Create basic token")])}}])},[i("div",{staticClass:"modal-body"},[i("label",{attrs:{for:"createtokendialog-text"}},[e._v("Text")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.text,expression:"text"}],attrs:{type:"text",id:"createtokendialog-name"},domProps:{value:e.text},on:{input:function(t){t.target.composing||(e.text=t.target.value)}}}),i("label",[e._v("Colours")]),i("div",{staticClass:"colours"},[i("span",[e._v("Fill:")]),i("color-picker",{attrs:{color:e.fillColour},on:{"update:color":function(t){e.fillColour=t}}}),i("span",[e._v("Border:")]),i("color-picker",{attrs:{color:e.borderColour},on:{"update:color":function(t){e.borderColour=t}}})],1),i("canvas",{ref:"canvas",attrs:{width:"100px",height:"100px"}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.submit}},[e._v("Submit")])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d323:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div")},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d588:function(e,t,i){"use strict";i.r(t);var s=i("91df"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},d5df:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("ea6a")),r=i("0bc6"),a=i("8f0a"),l=i("6f92"),c=i("5e7c"),u=i("0180"),d=i("f10f"),h=i("92b1"),f=i("5a5c");let p=class extends o.default{constructor(){super(...arguments),this.name="Ruler",this.active=!1,this.startPoint=null,this.ruler=null,this.text=null}onMouseDown(e){const t=l.layerManager.getLayer("draw");void 0!==t?(this.active=!0,this.startPoint=h.l2g(f.getMouse(e)),this.ruler=new c.Line(this.startPoint,this.startPoint,3,d.gameStore.rulerColour),this.text=new u.Text(this.startPoint.clone(),"","bold 20px serif"),this.ruler.addOwner(d.gameStore.username),this.text.addOwner(d.gameStore.username),t.addShape(this.ruler,!0,!0),t.addShape(this.text,!0,!0)):console.log("No draw layer!")}onMouseMove(e){if(!this.active||null===this.ruler||null===this.startPoint||null===this.text)return;const t=l.layerManager.getLayer("draw");if(void 0===t)return void console.log("No draw layer!");const i=h.l2g(f.getMouse(e));this.ruler.endPoint=i,r.socket.emit("Shape.Update",{shape:this.ruler.asDict(),redraw:!0,temporary:!0});const s=Math.sign(i.x-this.startPoint.x)*Math.sign(i.y-this.startPoint.y),n=Math.abs(i.x-this.startPoint.x),o=Math.abs(i.y-this.startPoint.y),c=Math.round(Math.sqrt(Math.pow(n,2)+Math.pow(o,2))*d.gameStore.unitSize/d.gameStore.gridSize)+" ft",u=Math.atan2(s*o,n),p=Math.min(this.startPoint.x,i.x)+n/2,g=Math.min(this.startPoint.y,i.y)+o/2;this.text.refPoint=new a.GlobalPoint(p,g),this.text.text=c,this.text.angle=u,r.socket.emit("Shape.Update",{shape:this.text.asDict(),redraw:!0,temporary:!0}),t.invalidate(!0)}onMouseUp(e){if(!this.active||null===this.ruler||null===this.startPoint||null===this.text)return;const t=l.layerManager.getLayer("draw");void 0!==t?(this.active=!1,t.removeShape(this.ruler,!0,!0),t.removeShape(this.text,!0,!0),t.invalidate(!0),this.ruler=this.startPoint=this.text=null):console.log("No active layer!")}};p=s.__decorate([n.default],p),t.RulerTool=p},d65f:function(e,t,i){"use strict";i.r(t);var s=i("d19a"),n=i("7e15");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("9e35");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"c2851f0e",null);t["default"]=a.exports},d677:function(e,t,i){"use strict";i.r(t);var s=i("53ec"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},d6be:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("6f92"),n=i("f10f"),o=i("6e4a");function r(e,i=!1){const r=new o.CDT;let a;a="vision"===e?n.gameStore.visionBlockers:n.gameStore.movementblockers;for(const t of a){const e=s.layerManager.UUIDMap.get(t);if(!i||e.visibleInCanvas(s.layerManager.getLayer().canvas))for(let t=0;t{this.shape=e,this.visible=!0}),d.EventBus.$on("EditDialog.AddLabel",e=>{this.visible&&(this.shape.labels.push(f.gameStore.labels[e]),this.updateShape(!0))})}beforeDestroy(){d.EventBus.$off("EditDialog.Open"),d.EventBus.$off("EditDialog.AddLabel")}updated(){this.addEmpty()}addEmpty(){""!==this.shape.owners[this.shape.owners.length-1]&&this.shape.addOwner(""),this.shape.trackers.length&&""===this.shape.trackers[this.shape.trackers.length-1].name&&0===this.shape.trackers[this.shape.trackers.length-1].value||this.shape.trackers.push({uuid:c.uuidv4(),name:"",value:0,maxvalue:0,visible:!1}),this.shape.auras.length&&""===this.shape.auras[this.shape.auras.length-1].name&&0===this.shape.auras[this.shape.auras.length-1].value||this.shape.auras.push({uuid:c.uuidv4(),name:"",value:0,dim:0,visionSource:!1,colour:"rgba(0,0,0,0)",visible:!1})}updateShape(e,t=!1){this.owned&&(u.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:e,temporary:t}),e&&h.layerManager.invalidate(),this.addEmpty())}setToken(e){this.owned&&(this.shape.setIsToken(e.target.checked),this.updateShape(!0))}setVisionBlocker(e){this.owned&&(this.shape.checkVisionSources(),this.updateShape(!0))}setMovementBlocker(e){this.owned&&(this.shape.setMovementBlock(e.target.checked),this.updateShape(!1))}updateAnnotation(e){if(!this.owned)return;const t=""!==this.shape.annotation;this.shape.annotation=e.target.value,""===this.shape.annotation||t?""===this.shape.annotation&&t&&(f.gameStore.annotations.splice(f.gameStore.annotations.findIndex(e=>e===this.shape.uuid)),h.layerManager.hasLayer("draw")&&h.layerManager.getLayer("draw").invalidate(!0)):(f.gameStore.annotations.push(this.shape.uuid),h.layerManager.hasLayer("draw")&&h.layerManager.getLayer("draw").invalidate(!0)),this.updateShape(!1)}updateOwner(e,t){this.owned&&(this.shape.updateOwner(t,e.target.value),this.updateShape(f.gameStore.fowLOS))}removeOwner(e){this.owned&&(this.shape.removeOwner(e),this.updateShape(f.gameStore.fowLOS))}removeTracker(e){this.owned&&(this.shape.trackers=this.shape.trackers.filter(t=>t.uuid!==e),this.updateShape(!1))}removeAura(e){this.owned&&(this.shape.auras=this.shape.auras.filter(t=>t.uuid!==e),this.shape.checkVisionSources(),this.updateShape(!0))}updateAuraVisionSource(e){if(!this.owned)return;e.visionSource=!e.visionSource;const t=f.gameStore.visionSources.findIndex(t=>t.aura===e.uuid);e.visionSource&&-1===t?f.gameStore.visionSources.push({shape:this.shape.uuid,aura:e.uuid}):!e.visionSource&&t>=0&&f.gameStore.visionSources.splice(t,1),this.updateShape(!0)}updateAuraColour(e,t){if(!this.owned)return;const i=h.layerManager.getLayer(this.shape.layer);void 0!==i&&i.invalidate(!e.visionSource)}openLabelManager(){d.EventBus.$emit("LabelManager.Open")}removeLabel(e){this.owned&&(this.shape.labels=this.shape.labels.filter(t=>t.uuid!==e),this.updateShape(!0))}};s.__decorate([r.Prop()],p.prototype,"shape",void 0),p=s.__decorate([o.default({components:{Modal:l.default,"color-picker":a.default}})],p),t.default=p},da7f:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return void 0!==e.getActiveLayer()?i("ContextMenu",{attrs:{visible:e.visible,left:e.x+"px",top:e.y+"px"},on:{close:e.close}},[e.getLayers().length>1?i("li",[e._v("Layer\n "),i("ul",e._l(e.getLayers(),function(t){return i("li",{key:t.name,style:[e.getActiveLayer().name===t.name?{"background-color":"#82c8a0"}:{}],on:{click:function(i){return e.setLayer(t.name)}}},[e._v(e._s(t.name))])}),0)]):e._e(),i("li",{on:{click:e.moveToBack}},[e._v("Move to back")]),i("li",{on:{click:e.moveToFront}},[e._v("Move to front")]),i("li",{on:{click:e.addInitiative}},[e._v(e._s(e.getInitiativeWord())+" initiative")]),i("li",{on:{click:e.openEditDialog}},[e._v("Show properties")])]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},dc37:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f"));let a=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.yes="Yes",this.no="No",this.title="",this.resolve=e=>{},this.reject=()=>{}}confirm(){this.resolve(!0),this.close()}deny(){this.resolve(!1),this.close()}close(){this.reject(),this.visible=!1,this.title=""}open(e,t="yes",i="no"){return this.yes=t,this.no=i,this.title=e,this.visible=!0,this.$nextTick(()=>{this.$refs.confirm.focus()}),new Promise((e,t)=>{this.resolve=e,this.reject=t})}};a=s.__decorate([o.default({components:{Modal:r.default}})],a),t.default=a},dcb4:function(e,t,i){"use strict";var s=i("ce4c"),n=i.n(s);n.a},de21:function(e,t,i){},dec1:function(e,t,i){"use strict";i.r(t);var s=i("cf8f"),n=i("3481");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},df64:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"accordion"},[i("div",{attrs:{id:"header"},on:{click:function(t){return t.preventDefault(),e.toggleDisplay(t)}}},[i("input",{ref:"overall",attrs:{type:"checkbox"},on:{click:function(t){return t.stopPropagation(),e.toggleCategory(t)}}}),i("strong",[e._v(e._s(e.title))]),e.showArrow?[i("span",{directives:[{name:"show",rawName:"v-show",value:e.showArrow&&!e.active,expression:"showArrow && !active"}],staticClass:"down-Arrow"},[e._v("â–¼")]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.showArrow&&e.active,expression:"showArrow && active"}],staticClass:"up-Arrow"},[e._v("â–²")])]:e._e()],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],attrs:{id:"body"}},e._l(e.items,function(t){return i("div",{key:t[0],staticClass:"item",on:{click:function(i){return e.toggleSelection(t[0])}}},[i("input",{attrs:{type:"checkbox"},domProps:{checked:e.selected.includes(t[0])},on:{click:function(e){e.preventDefault()}}}),e._v(" "+e._s(t[1])+"\n ")])}),0)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e06e:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible},on:{close:e.close},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v(e._s(e.title))])}}])},[i("div",{staticClass:"modal-body"},[i("button",{ref:"confirm",on:{click:e.confirm}},[e._v(e._s(e.yes))]),e.no?i("button",{on:{click:e.deny}},[e._v(e._s(e.no))]):e._e()])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e0e8:function(e,t,i){"use strict";i.r(t);var s=i("2380"),n=i("208e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("dcb4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b908e87c",null);t["default"]=a.exports},e0e9:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("1c76")),a=i("5338"),l=i("2d5b"),c=i("4a5b");let u=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.left=0,this.top=0}open(e,t){l.assetStore.selected.includes(t)||c.getComponent().select(e,t),this.visible=!0,this.left=e.pageX,this.top=e.pageY,this.$nextTick(()=>{this.$children[0].$el.focus()})}close(){this.visible=!1}rename(){if(1!==l.assetStore.selected.length)return;const e=l.assetStore.idMap.get(l.assetStore.selected[0]);c.getRef("prompt").prompt("New name:",`Renaming ${e.name}`).then(t=>{a.socket.emit("Asset.Rename",{asset:e.id,name:t}),e.name=t,c.getComponent().$forceUpdate()},()=>{}),this.close()}remove(){0!==l.assetStore.selected.length&&(c.getRef("confirm").open("Are you sure you wish to remove this?").then(e=>{if(e){for(const e of l.assetStore.selected)a.socket.emit("Asset.Remove",e),l.assetStore.files.includes(e)?l.assetStore.files.splice(l.assetStore.files.indexOf(e),1):l.assetStore.folders.splice(l.assetStore.folders.indexOf(e),1);l.assetStore.clearSelected()}},()=>{}),this.close())}};u=s.__decorate([o.default({components:{ContextMenu:r.default}})],u),t.default=u},e27a:function(e,t,i){"use strict";i.r(t);var s=i("2756"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},e3f5:function(e,t,i){"use strict";var s=i("a126"),n=i.n(s);n.a},e4b0:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f")),a=i("4a5b"),l=i("0bc6"),c=i("af17"),u=i("f10f");let d=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.newCategory="",this.newName="",this.search=""}mounted(){c.EventBus.$on("LabelManager.Open",()=>{this.visible=!0,this.newCategory="",this.newName="",this.$nextTick(()=>this.$refs.search.focus())})}beforeDestroy(){c.EventBus.$off("LabelManager.Open")}get labels(){const e={"":[]};for(const t of Object.keys(u.gameStore.labels)){const i=u.gameStore.labels[t];this.search.length&&`${i.category.toLowerCase()}${i.name.toLowerCase()}`.search(this.search.toLowerCase())<0||i.user===u.gameStore.username&&(i.category?(i.category in e||(e[i.category]=[]),e[i.category].push(i),e[i.category].sort((e,t)=>e.name.localeCompare(t.name))):e[""].push(i))}return e}get categories(){return Object.keys(this.labels).sort()}selectLabel(e){c.EventBus.$emit("EditDialog.AddLabel",e),this.visible=!1}toggleVisibility(e){e.visible=!e.visible,l.socket.emit("Label.Visibility.Set",{uuid:e.uuid,visible:e.visible})}addLabel(){if(""===this.newName)return;const e={uuid:a.uuidv4(),category:this.newCategory,name:this.newName,visible:!1,user:u.gameStore.username};u.gameStore.addLabel(e),l.socket.emit("Label.Add",e),this.newCategory="",this.newName=""}deleteLabel(e){u.gameStore.deleteLabel({uuid:e,user:u.gameStore.username}),l.socket.emit("Label.Delete",e)}};d=s.__decorate([o.default({components:{Modal:r.default}})],d),t.default=d},e4ea:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("92b1"),o=i("5a5c"),r=i("8db6"),a=i("2469");class l extends a.Shape{constructor(e,t=[],i,s,n){super(e,i,s,n),this.type="polygon",this._vertices=[],this._vertices=t}get refPoint(){return this._refPoint}set refPoint(e){const t=e.subtract(this._refPoint);this._refPoint=e;for(let i=0;i({x:e.x,y:e.y}))})}fromDict(e){super.fromDict(e),this._vertices=e.vertices.map(e=>new s.GlobalPoint(e.x,e.y))}get points(){return this.vertices.map(e=>[e.x,e.y])}draw(e){super.draw(e),e.lineCap="round",e.lineJoin="round","fog"===this.strokeColour?e.strokeStyle=o.getFogColour():2===this.vertices.length?e.strokeStyle=this.fillColour:e.strokeStyle=this.strokeColour,"fog"===this.fillColour?e.fillStyle=o.getFogColour():e.fillStyle=this.fillColour,e.lineWidth=n.g2lz(2),e.beginPath(),e.moveTo(n.g2lx(this.vertices[0].x),n.g2ly(this.vertices[0].y));for(let t=1;t<=this.vertices.length;t++){const i=this.vertices[t%this.vertices.length];e.lineTo(n.g2lx(i.x),n.g2ly(i.y))}e.fill(),e.stroke()}contains(e){return this.getBoundingBox().contains(e)}center(e){return this.getBoundingBox().center()}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this._refPoint=n.l2g(t):this._vertices[e-1]=n.l2g(t)}getBoundingBox(){let e=this.refPoint.x,t=this.refPoint.x,i=this.refPoint.y,n=this.refPoint.y;for(const s of this._vertices)s.xt&&(t=s.x),s.yn&&(n=s.y);return new r.BoundingRect(new s.GlobalPoint(e,i),t-e,n-i)}}t.Polygon=l},e5ca:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.IS_DM,expression:"IS_DM"}]},[e._v("Mode")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.IS_DM,expression:"IS_DM"}],staticClass:"selectgroup"},e._l(e.modes,function(t){return i("div",{key:t,staticClass:"option",class:{"option-selected":e.modeSelect===t},on:{click:function(i){e.modeSelect=t}}},[e._v(e._s(t))])}),0),i("div",[e._v("Shape")]),i("div",{staticClass:"selectgroup"},e._l(e.shapes,function(t){return i("div",{key:t,staticClass:"option",class:{"option-selected":e.shapeSelect===t},on:{click:function(i){e.shapeSelect=t}}},[i("i",{staticClass:"fas",class:"fa-"+t})])}),0),i("div",[e._v("Colours")]),i("div",{staticClass:"selectgroup"},[i("color-picker",{staticClass:"option",attrs:{color:e.fillColour},on:{"update:color":function(t){e.fillColour=t}}}),i("color-picker",{staticClass:"option",attrs:{color:e.borderColour},on:{"update:color":function(t){e.borderColour=t}}})],1),i("div",{directives:[{name:"show",rawName:"v-show",value:"paint-brush"===e.shapeSelect,expression:"shapeSelect === 'paint-brush'"}]},[e._v("Brush size")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.brushSize,expression:"brushSize"},{name:"show",rawName:"v-show",value:"paint-brush"===e.shapeSelect,expression:"shapeSelect === 'paint-brush'"}],staticStyle:{"max-width":"100px"},attrs:{type:"text"},domProps:{value:e.brushSize},on:{input:function(t){t.target.composing||(e.brushSize=t.target.value)}}})]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e6c4:function(e,t,i){"use strict";var s=i("839d"),n=i.n(s);n.a},e756:function(e,t,i){},e794:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.shapes.length>0,expression:"shapes.length > 0"}]},e._l(e.shapes,function(t){return i("div",{key:t.uuid},[i("div",{attrs:{id:"selection-menu"}},[i("div",{attrs:{id:"selection-edit-button"},on:{click:e.openEditDialog}},[i("i",{staticClass:"fas fa-edit"})]),i("div",{attrs:{id:"selection-name"}},[e._v(e._s(t.name))]),i("div",{attrs:{id:"selection-trackers"}},[e._l(e.visibleTrackers,function(t){return[i("div",{key:"name-"+t.uuid},[e._v(e._s(t.name))]),i("div",{key:"value-"+t.uuid,staticClass:"selection-tracker-value",on:{click:function(i){return e.changeValue(t,!1)}}},[0===t.maxvalue?[e._v(e._s(t.value))]:[e._v(e._s(t.value)+" / "+e._s(t.maxvalue))]],2)]})],2),i("div",{attrs:{id:"selection-auras"}},[e._l(e.visibleAuras,function(t){return[i("div",{key:"name-"+t.uuid},[e._v(e._s(t.name))]),i("div",{key:"value-"+t.uuid,staticClass:"selection-tracker-value",on:{click:function(i){return e.changeValue(t,!0)}}},[0===t.dim?[e._v(e._s(t.value))]:[e._v(e._s(t.value)+" / "+e._s(t.dim))]],2)]})],2)]),i("edit-dialog",{ref:"editDialog",refInFor:!0,attrs:{shape:t}})],1)}),0)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e8bb:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",{attrs:{id:"accordion-container"}},e._l(e.categories,function(t){return i("accordion",{key:t,attrs:{title:""===t?"no category":t,showArrow:!1,items:e.labels[t],initialValues:e.initalValues[t]},on:{selectionupdate:e.updateSelection}})}),1)]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e914:function(e,t,i){"use strict";i.r(t);var s=i("c9a2"),n=i("aa69");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("78c7");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},e94f:function(e,t,i){"use strict";i.r(t);var s=i("7aaa"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},ea6a:function(e,t,i){"use strict";i.r(t);var s=i("d323"),n=i("6465");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("12d3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},eb57:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible},on:{close:e.close},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v(e._s(e.title))])}}])},[i("div",{staticClass:"modal-body"},[e._v("\n "+e._s(e.question)+"\n "),i("input",{directives:[{name:"model",rawName:"v-model",value:e.answer,expression:"answer"}],ref:"answer",attrs:{type:"text"},domProps:{value:e.answer},on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.submit(t)},input:function(t){t.target.composing||(e.answer=t.target.value)}}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.submit}},[e._v("Submit")])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},ebb9:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("310e"));n.default.component("draggable",r.default);const a=s.__importDefault(i("d65f")),l=i("4a5b"),c=i("0bc6"),u=i("af17"),d=i("6f92"),h=i("f10f"),f=i("9cb7");let p=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.data=[],this.currentActor=null,this.roundCounter=0,this.visionLock=!1,this.cameraLock=!1,this._activeTokens=[]}mounted(){u.EventBus.$on("Initiative.Clear",this.clear),u.EventBus.$on("Initiative.Remove",e=>this.removeInitiative(e)),u.EventBus.$on("Initiative.Show",()=>this.visible=!0),c.socket.on("Initiative.Set",e=>{this.data=e}),c.socket.on("Initiative.Turn.Set",e=>this.setTurn(e)),c.socket.on("Initiative.Turn.Update",e=>this.updateTurn(e,!1)),c.socket.on("Initiative.Round.Update",e=>this.setRound(e,!1)),c.socket.on("Initiative.Effect.New",e=>{const t=this.getActor(e.actor);void 0!==t&&this.createEffect(t,e.effect,!1)}),c.socket.on("Initiative.Effect.Update",e=>this.updateEffect(e.actor,e.effect,!1))}beforeDestroy(){u.EventBus.$off("Initiative.Clear"),u.EventBus.$off("Initiative.Remove"),u.EventBus.$off("Initiative.Show")}clear(){this.data=[],this.currentActor=null}getActor(e){return this.data.find(t=>t.uuid===e)}contains(e){return this.data.some(t=>t.uuid===e)}owns(e){if(h.gameStore.IS_DM)return!0;const t=d.layerManager.UUIDMap.get(e.uuid);return void 0!==t&&t.owners.includes(h.gameStore.username)}getDefaultEffect(){return{uuid:l.uuidv4(),name:"New Effect",turns:10}}fakeSetData(e){e.setData("Hack","")}syncInitiative(e){c.socket.emit("Initiative.Update",e)}addInitiative(e){const t=this.data.findIndex(t=>t.uuid===e.uuid);t>=0||(void 0===e.initiative&&(e.initiative=0),this.syncInitiative(e))}removeInitiative(e){const t=this.data.findIndex(t=>t.uuid===e);if(t<0||this.data[t].group)return;this.syncInitiative({uuid:e});const i=d.layerManager.UUIDMap.get(e);void 0!==i&&i.showHighlight&&(i.showHighlight=!1,d.layerManager.getLayer(i.layer).invalidate(!0))}updateOrder(){h.gameStore.IS_DM&&c.socket.emit("Initiative.Set",this.data.map(e=>e.uuid))}updateTurn(e,t){if(!h.gameStore.IS_DM&&t)return;this.currentActor=e;const i=this.data.find(t=>t.uuid===e);if(void 0!==i){if(i.effects)for(let e=i.effects.length-1;e>=0;e--)i.effects[e].turns<=0?i.effects.splice(e,1):i.effects[e].turns--;if(this.visionLock&&(null!==e&&h.gameStore.ownedtokens.includes(e)?h.gameStore.setActiveTokens([e]):h.gameStore.setActiveTokens([])),this.cameraLock&&null!==e){const t=d.layerManager.UUIDMap.get(e);void 0!==t&&t.ownedBy()&&f.gameManager.setCenterPosition(t.center())}t&&c.socket.emit("Initiative.Turn.Update",e)}}setRound(e,t){!h.gameStore.IS_DM&&t||(this.roundCounter=e,t&&c.socket.emit("Initiative.Round.Update",e))}setTurn(e){this.currentActor=e}nextTurn(){if(!h.gameStore.IS_DM)return;const e=this.data,t=e[(e.findIndex(e=>e.uuid===this.currentActor)+1)%e.length];this.data[0].uuid===t.uuid&&this.setRound(this.roundCounter+1,!0),this.updateTurn(t.uuid,!0)}toggleHighlight(e,t){const i=d.layerManager.UUIDMap.get(e.uuid);void 0!==i&&(i.showHighlight=t,d.layerManager.getLayer(i.layer).invalidate(!0))}toggleOption(e,t){this.owns(e)&&(e[t]=!e[t],this.syncInitiative(e))}createEffect(e,t,i){this.owns(e)&&(e.effects.push(t),i&&c.socket.emit("Initiative.Effect.New",{actor:e.uuid,effect:t}))}syncEffect(e,t){this.owns(e)&&c.socket.emit("Initiative.Effect.Update",{actor:e.uuid,effect:t})}updateEffect(e,t,i){const s=this.data.find(t=>t.uuid===e);if(void 0===s)return;const n=s.effects.findIndex(e=>e.uuid===t.uuid);void 0!==n&&(s.effects[n]=t,i?this.syncEffect(s,t):this.$forceUpdate())}toggleVisionLock(){this.visionLock=!this.visionLock,this.visionLock?(this._activeTokens=[...h.gameStore._activeTokens],null!==this.currentActor&&h.gameStore.ownedtokens.includes(this.currentActor)&&h.gameStore.setActiveTokens([this.currentActor])):h.gameStore.setActiveTokens(this._activeTokens)}};p=s.__decorate([o.default({components:{Modal:a.default,draggable:r.default}})],p),t.default=p},ee96:function(e,t,i){},f086:function(e,t,i){"use strict";i.r(t);var s=i("e794"),n=i("7ba5");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("c5321");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"43d09857",null);t["default"]=a.exports},f10f:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=i("6fc5"),r=i("0bc6"),a=i("2b48"),l=i("6f92"),c=i("92b1"),u=i("5a5c"),d=i("99e3"),h=i("d6be"),f=i("3a0b");let p=class extends o.VuexModule{constructor(){super(...arguments),this.layers=[],this.selectedLayerIndex=-1,this.boardInitialized=!1,this.locations=[],this.assets={},this.notes=[],this.IS_DM=!1,this.FAKE_PLAYER=!1,this.isLocked=!1,this.gridSize=50,this.username="",this.roomName="",this.roomCreator="",this.invitationCode="",this.players=[],this.gridColour="rgba(0, 0, 0, 1)",this.fowColour="rgba(0, 0, 0, 1)",this.rulerColour="rgba(255, 0, 0, 1)",this.panX=0,this.panY=0,this.zoomDisplay=.5,this.unitSize=5,this.useGrid=!0,this.fullFOW=!1,this.fowOpacity=.3,this.fowLOS=!1,this.locationName="",this.visionSources=[],this.visionBlockers=[],this.annotations=[],this.movementblockers=[],this.ownedtokens=[],this._activeTokens=[],this.BV=Object.freeze(new d.BoundingVolume([])),this.visionMode="bvh",this.drawTEContour=!1,this.visionRangeMin=1640,this.visionRangeMax=3281,this.clipboard=[],this.labels={},this.filterNoLabel=!1,this.labelFilters=[],this.showUI=!0}get selectedLayer(){return this.layers[this.selectedLayerIndex]}get zoomFactor(){return u.zoomValue(this.zoomDisplay)}get activeTokens(){return 0===this._activeTokens.length?this.ownedtokens:this._activeTokens}setFakePlayer(e){this.FAKE_PLAYER=e,this.IS_DM=!e,l.layerManager.invalidate()}setZoomDisplay(e){e!==this.zoomDisplay&&(e<0&&(e=0),e>1&&(e=1),this.zoomDisplay=e,l.layerManager.invalidate())}setVisionMode(e){this.visionMode=e.mode,e.sync&&r.socket.emit("Location.Options.Set",{vision_mode:e.mode})}setBoardInitialized(e){this.boardInitialized=e}toggleUnlabeledFilter(){this.filterNoLabel=!this.filterNoLabel}addLabel(e){n.default.set(this.labels,e.uuid,e)}setLabelFilters(e){this.labelFilters=e}setLabelVisibility(e){e.uuid in this.labels&&(this.labels[e.uuid].visible=e.visible)}deleteLabel(e){if(!(e.uuid in this.labels))return;const t=this.labels[e.uuid],i=new Set;for(const s of l.layerManager.UUIDMap.values()){const e=s.labels.indexOf(t);e>=0&&(s.labels.splice(e,1),i.add(s.layer))}for(const s of i)l.layerManager.getLayer(s).invalidate(!1);n.default.delete(this.labels,e.uuid)}setDM(e){this.IS_DM=e}setUsername(e){this.username=e}setRoomName(e){this.roomName=e}setRoomCreator(e){this.roomCreator=e}setInvitationCode(e){this.invitationCode=e}addLayer(e){this.layers.push(e),-1===this.selectedLayerIndex&&(this.selectedLayerIndex=this.layers.indexOf(e))}selectLayer(e){const t=this.layers.indexOf(e.name);t>=0&&(this.selectedLayerIndex=t),e.sync&&r.socket.emit("Client.ActiveLayer.Set",e.name)}newNote(e){this.notes.push(e.note),e.sync&&r.socket.emit("Note.New",e.note)}setAssets(e){this.assets=e}setLocations(e){this.locations=e}resetLayerInfo(){this.layers=[],this.selectedLayerIndex=-1}recalculateVision(e=!1){this.boardInitialized&&("triangle"===this.visionMode?h.triangulate("vision",e):this.BV=Object.freeze(new d.BoundingVolume(this.visionBlockers)))}recalculateMovement(e=!1){this.boardInitialized&&"triangle"===this.visionMode&&h.triangulate("movement",e)}updateZoom(e){if(e.newZoomDisplay===this.zoomDisplay)return;e.newZoomDisplay<0&&(e.newZoomDisplay=0),e.newZoomDisplay>1&&(e.newZoomDisplay=1);const t=c.g2l(e.zoomLocation);this.zoomDisplay=e.newZoomDisplay;const i=c.l2g(t),s=i.subtract(e.zoomLocation);this.panX+=s.x,this.panY+=s.y,l.layerManager.invalidate(),a.sendClientOptions()}setGridColour(e){this.gridColour=e.colour,l.layerManager.getGridLayer().drawGrid(),e.sync&&r.socket.emit("Client.Options.Set",{gridColour:e.colour})}setFOWColour(e){this.fowColour=e.colour,l.layerManager.invalidate(),e.sync&&r.socket.emit("Client.Options.Set",{fowColour:e.colour})}setRulerColour(e){this.rulerColour=e.colour,e.sync&&r.socket.emit("Client.Options.Set",{rulerColour:e.colour})}setPanX(e){this.panX=e}setPanY(e){this.panY=e}increasePanX(e){this.panX+=e}increasePanY(e){this.panY+=e}setUnitSize(e){this.unitSize!==e.unitSize&&e.unitSize>0&&e.unitSize<1/0&&(this.unitSize=e.unitSize,l.layerManager.invalidate(),e.sync&&r.socket.emit("Location.Options.Set",{unit_size:e.unitSize}))}setUseGrid(e){if(this.useGrid!==e.useGrid){this.useGrid=e.useGrid;const t=l.layerManager.getGridLayer();e.useGrid?t.canvas.style.display="block":t.canvas.style.display="none",e.sync&&r.socket.emit("Location.Options.Set",{use_grid:e.useGrid})}}setGridSize(e){if(this.gridSize!==e.gridSize&&e.gridSize>0){this.gridSize=e.gridSize;const t=l.layerManager.getGridLayer();void 0!==t&&t.drawGrid(),e.sync&&r.socket.emit("Gridsize.Set",e.gridSize)}}setVisionRangeMin(e){this.visionRangeMin=e.value,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{vision_min_range:e.value})}setVisionRangeMax(e){this.visionRangeMax=Math.max(e.value,this.visionRangeMin),l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{vision_max_range:this.visionRangeMax})}setFullFOW(e){this.fullFOW!==e.fullFOW&&(this.fullFOW=e.fullFOW,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{full_fow:e.fullFOW}))}setFOWOpacity(e){this.fowOpacity=e.fowOpacity,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{fow_opacity:e.fowOpacity})}setLineOfSight(e){this.fowLOS!==e.fowLOS&&(this.fowLOS=e.fowLOS,l.layerManager.invalidate(),e.sync&&r.socket.emit("Location.Options.Set",{fow_los:e.fowLOS}))}setLocationName(e){this.locationName=e}updateNote(e){const t=this.notes.find(t=>t.uuid===e.note.uuid);void 0!==t&&(t.title=e.note.title,t.text=e.note.text,e.sync&&r.socket.emit("Note.Update",t))}removeNote(e){this.notes=this.notes.filter(t=>t.uuid!==e.note.uuid),e.sync&&r.socket.emit("Note.Remove",e.note.uuid)}toggleUI(){this.showUI=!this.showUI}setClipboard(e){this.clipboard=e}setActiveTokens(e){this._activeTokens=e,l.layerManager.invalidateLight()}addActiveToken(e){this._activeTokens.push(e),l.layerManager.invalidateLight()}removeActiveToken(e){0===this._activeTokens.length&&(this._activeTokens=[...this.ownedtokens]),this._activeTokens.splice(this._activeTokens.indexOf(e),1),l.layerManager.invalidateLight()}setPlayers(e){this.players=e}addPlayer(e){this.players.push(e)}kickPlayer(e){this.players=this.players.filter(t=>t.id!==e)}setIsLocked(e){this.isLocked=e.isLocked,e.sync&&r.socket.emit("Room.Info.Set.Locked",this.isLocked)}clear(){this.context.state.visionSources=[],this.context.state.visionBlockers=[],this.context.state.ownedtokens=[],this.context.state.annotations=[],this.context.state.movementblockers=[],this.context.state.notes=[],this.context.commit("recalculateVision"),this.context.commit("recalculateMovement")}};s.__decorate([o.Mutation],p.prototype,"setFakePlayer",null),s.__decorate([o.Mutation],p.prototype,"setZoomDisplay",null),s.__decorate([o.Mutation],p.prototype,"setVisionMode",null),s.__decorate([o.Mutation],p.prototype,"setBoardInitialized",null),s.__decorate([o.Mutation],p.prototype,"toggleUnlabeledFilter",null),s.__decorate([o.Mutation],p.prototype,"addLabel",null),s.__decorate([o.Mutation],p.prototype,"setLabelFilters",null),s.__decorate([o.Mutation],p.prototype,"setLabelVisibility",null),s.__decorate([o.Mutation],p.prototype,"deleteLabel",null),s.__decorate([o.Mutation],p.prototype,"setDM",null),s.__decorate([o.Mutation],p.prototype,"setUsername",null),s.__decorate([o.Mutation],p.prototype,"setRoomName",null),s.__decorate([o.Mutation],p.prototype,"setRoomCreator",null),s.__decorate([o.Mutation],p.prototype,"setInvitationCode",null),s.__decorate([o.Mutation],p.prototype,"addLayer",null),s.__decorate([o.Mutation],p.prototype,"selectLayer",null),s.__decorate([o.Mutation],p.prototype,"newNote",null),s.__decorate([o.Mutation],p.prototype,"setAssets",null),s.__decorate([o.Mutation],p.prototype,"setLocations",null),s.__decorate([o.Mutation],p.prototype,"resetLayerInfo",null),s.__decorate([o.Mutation],p.prototype,"recalculateVision",null),s.__decorate([o.Mutation],p.prototype,"recalculateMovement",null),s.__decorate([o.Mutation],p.prototype,"updateZoom",null),s.__decorate([o.Mutation],p.prototype,"setGridColour",null),s.__decorate([o.Mutation],p.prototype,"setFOWColour",null),s.__decorate([o.Mutation],p.prototype,"setRulerColour",null),s.__decorate([o.Mutation],p.prototype,"setPanX",null),s.__decorate([o.Mutation],p.prototype,"setPanY",null),s.__decorate([o.Mutation],p.prototype,"increasePanX",null),s.__decorate([o.Mutation],p.prototype,"increasePanY",null),s.__decorate([o.Mutation],p.prototype,"setUnitSize",null),s.__decorate([o.Mutation],p.prototype,"setUseGrid",null),s.__decorate([o.Mutation],p.prototype,"setGridSize",null),s.__decorate([o.Mutation],p.prototype,"setVisionRangeMin",null),s.__decorate([o.Mutation],p.prototype,"setVisionRangeMax",null),s.__decorate([o.Mutation],p.prototype,"setFullFOW",null),s.__decorate([o.Mutation],p.prototype,"setFOWOpacity",null),s.__decorate([o.Mutation],p.prototype,"setLineOfSight",null),s.__decorate([o.Mutation],p.prototype,"setLocationName",null),s.__decorate([o.Mutation],p.prototype,"updateNote",null),s.__decorate([o.Mutation],p.prototype,"removeNote",null),s.__decorate([o.Mutation],p.prototype,"toggleUI",null),s.__decorate([o.Mutation],p.prototype,"setClipboard",null),s.__decorate([o.Mutation],p.prototype,"setActiveTokens",null),s.__decorate([o.Mutation],p.prototype,"addActiveToken",null),s.__decorate([o.Mutation],p.prototype,"removeActiveToken",null),s.__decorate([o.Mutation],p.prototype,"setPlayers",null),s.__decorate([o.Mutation],p.prototype,"addPlayer",null),s.__decorate([o.Mutation],p.prototype,"kickPlayer",null),s.__decorate([o.Mutation],p.prototype,"setIsLocked",null),s.__decorate([o.Action],p.prototype,"clear",null),p=s.__decorate([o.Module({dynamic:!0,store:f.rootStore,name:"game",namespaced:!0})],p),t.gameStore=o.getModule(p)},f30c:function(e,t,i){"use strict";i.r(t);var s=i("dc37"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f312:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aurasFromServer=e=>{const t=[];for(const i of e)t.push({uuid:i.uuid,visionSource:i.vision_source,visible:i.visible,name:i.name,value:i.value,dim:i.dim,colour:i.colour});return t},t.aurasToServer=e=>{const t=[];for(const i of e)t.push({uuid:i.uuid,vision_source:i.visionSource,visible:i.visible,name:i.name,value:i.value,dim:i.dim,colour:i.colour});return t}},f51a:function(e,t,i){"use strict";i.r(t);var s=i("e0e9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f551:function(e,t,i){"use strict";i.r(t);var s=i("2686"),n=i("1dd6");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("28b6");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"7a3669fd",null);t["default"]=a.exports},f5fe:function(e,t,i){"use strict";i.r(t);var s=i("1131"),n=i("7018");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("8fc5");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"62228cde",null);t["default"]=a.exports},f692:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4185"),n=i("b906"),o=i("38c9"),r=i("bab4"),a=i("6f92"),l=i("f10f");function c(e){const t=document.createElement("canvas");let i;t.style.zIndex=a.layerManager.layers.length.toString(),t.width=window.innerWidth,t.height=window.innerHeight,i="grid"===e.type_?new o.GridLayer(t,e.name):"fow"===e.type_?new s.FOWLayer(t,e.name):"fow-players"===e.type_?new n.FOWPlayersLayer(t,e.name):new r.Layer(t,e.name),i.selectable=e.selectable,i.playerEditable=e.player_editable,a.layerManager.addLayer(i);const c=document.getElementById("layers");null!==c?("fow-players"!==e.name&&c.appendChild(t),"grid"===e.type_&&e.size&&l.gameStore.setGridSize({gridSize:e.size,sync:!1}),i.setShapes(e.shapes)):console.warn("Layers div is missing, this will prevent the main game board from loading!")}t.createLayer=c},f74c:function(e,t,i){"use strict";i.r(t);var s=i("1fd5"),n=i("29a2");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("7eb7");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"e477c214",null);t["default"]=a.exports},f8b3:function(e,t,i){"use strict";i.r(t);var s=i("d8ee"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f974:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{attrs:{id:"toolselect"}},[i("ul",e._l(e.visibleTools,function(t){return i("li",{directives:[{name:"show",rawName:"v-show",value:e.toolVisible(t),expression:"toolVisible(tool)"}],key:t,ref:t+"-selector",refInFor:!0,class:{"tool-selected":e.currentTool===t},on:{mousedown:function(i){e.currentTool=t}}},[i("a",{attrs:{href:"#"}},[e._v(e._s(t))])])}),0)]),i("div",[[i("select-tool",{directives:[{name:"show",rawName:"v-show",value:"Select"===e.currentTool,expression:"currentTool === 'Select'"}],ref:"selectTool"}),i("pan-tool",{directives:[{name:"show",rawName:"v-show",value:"Pan"===e.currentTool,expression:"currentTool === 'Pan'"}]}),i("keep-alive",[i("draw-tool",{directives:[{name:"show",rawName:"v-show",value:"Draw"===e.currentTool,expression:"currentTool === 'Draw'"}]})],1),i("ruler-tool",{directives:[{name:"show",rawName:"v-show",value:"Ruler"===e.currentTool,expression:"currentTool === 'Ruler'"}]}),i("map-tool",{directives:[{name:"show",rawName:"v-show",value:"Map"===e.currentTool,expression:"currentTool === 'Map'"}]}),i("filter-tool",{directives:[{name:"show",rawName:"v-show",value:"Filter"===e.currentTool,expression:"currentTool === 'Filter'"}]}),i("vision-tool",{directives:[{name:"show",rawName:"v-show",value:"Vision"===e.currentTool,expression:"currentTool === 'Vision'"}]}),i("shape-menu",{ref:"shapecontext"}),i("createtoken-dialog",{ref:"createtokendialog"})]],2)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},f994:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("form",{on:{focusin:e.focusin,focusout:e.focusout,submit:function(t){return t.preventDefault(),e.login(t)}}},[i("fieldset",[i("legend",{staticClass:"legend"},[e._v("PlanarAlly")]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],attrs:{type:"text",name:"username",placeholder:"Username",autocomplete:"username",required:""},domProps:{value:e.username},on:{input:function(t){t.target.composing||(e.username=t.target.value)}}}),e._m(0)]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],attrs:{type:"password",name:"password",placeholder:"Password",autocomplete:"current-password",required:""},domProps:{value:e.password},on:{input:function(t){t.target.composing||(e.password=t.target.value)}}}),e._m(1)]),i("div",{staticStyle:{display:"flex"}},[i("button",{staticStyle:{visibility:"hidden",display:"none"},attrs:{type:"submit",name:"login"}}),i("button",{staticClass:"submit",attrs:{type:"button",name:"register",title:"Register"},on:{click:e.register}},[i("i",{staticClass:"fas fa-plus"})]),e._m(2)])]),e.error?i("div",{staticClass:"feedback"},[i("p",{staticClass:"error"},[i("strong",[e._v("Error:")]),e._v("\n "+e._s(e.error)+"\n ")])]):e._e()])},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fas fa-user-circle"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fas fa-lock"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"submit",attrs:{type:"submit",name:"login",title:"Login"}},[i("i",{staticClass:"fas fa-arrow-right"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},fbdd:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d065")),a=i("4a5b"),l=i("0bc6"),c=i("af17"),u=i("6f92");let d=class extends n.default{constructor(){super(...arguments),this.shape=null}mounted(){c.EventBus.$on("SelectionInfo.Shape.Set",e=>{this.shape=e})}get shapes(){return null===this.shape?[]:[this.shape]}get visibleTrackers(){return null===this.shape?[]:this.shape.trackers.filter(e=>""!==e.name||0!==e.value)}get visibleAuras(){return null===this.shape?[]:this.shape.auras.filter(e=>""!==e.name||0!==e.value)}beforeDestroy(){c.EventBus.$off("SelectionInfo.Shape.Set")}openEditDialog(){this.$refs.editDialog.visible=!0}changeValue(e,t){null!==this.shape&&a.getRef("prompt").prompt(`New ${e.name} value:`,`Updating ${e.name}`).then(i=>{if(null===this.shape)return;const s=e.value;"+"===i[0]||"-"===i[0]?e.value+=parseInt(i,10):e.value=parseInt(i,10),isNaN(e.value)&&(e.value=s),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:t,temporary:!1}),t&&u.layerManager.invalidate()},()=>{})}};d=s.__decorate([o.default({components:{"edit-dialog":r.default}})],d),t.default=d},fcac:function(e,t,i){},fe11:function(e,t,i){},fe80:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("0bc6"),n=i("af17"),o=i("8f0a"),r=i("6f92"),a=i("f692"),l=i("9cb7"),c=i("f10f"),u=i("5f86"),d=i("5a5c");s.socket.on("connect",()=>{console.log("Connected")}),s.socket.on("disconnect",()=>{console.log("Disconnected")}),s.socket.on("connect_error",e=>{console.error("Could not connect to game session."),u.router.push("/dashboard")}),s.socket.on("error",e=>{console.error("Game session does not exist."),u.router.push("/dashboard")}),s.socket.on("redirect",e=>{console.log("redirecting"),u.router.push(e)}),s.socket.on("Room.Info.Set",e=>{c.gameStore.setRoomName(e.name),c.gameStore.setRoomCreator(e.creator),c.gameStore.setInvitationCode(e.invitationCode),c.gameStore.setIsLocked({isLocked:e.isLocked,sync:!1}),c.gameStore.setPlayers(e.players)}),s.socket.on("Room.Info.InvitationCode.Set",e=>{c.gameStore.setInvitationCode(e),n.EventBus.$emit("DmSettings.RefreshedInviteCode")}),s.socket.on("Room.Info.Players.Add",e=>{c.gameStore.addPlayer(e)}),s.socket.on("Username.Set",e=>{c.gameStore.setUsername(e),c.gameStore.setDM(e===decodeURIComponent(window.location.pathname.split("/")[2]))}),s.socket.on("Client.Options.Set",e=>{c.gameStore.setGridColour({colour:e.grid_colour,sync:!1}),c.gameStore.setFOWColour({colour:e.fow_colour,sync:!1}),c.gameStore.setRulerColour({colour:e.ruler_colour,sync:!1}),c.gameStore.setPanX(e.pan_x),c.gameStore.setPanY(e.pan_y),c.gameStore.setZoomDisplay(d.zoomDisplay(e.zoom_factor)),e.active_layer&&r.layerManager.selectLayer(e.active_layer,!1),void 0!==r.layerManager.getGridLayer()&&r.layerManager.getGridLayer().invalidate()}),s.socket.on("Location.Set",e=>{void 0!==e.name&&c.gameStore.setLocationName(e.name),void 0!==e.unit_size&&c.gameStore.setUnitSize({unitSize:e.unit_size,sync:!1}),void 0!==e.use_grid&&c.gameStore.setUseGrid({useGrid:e.use_grid,sync:!1}),void 0!==e.full_fow&&c.gameStore.setFullFOW({fullFOW:e.full_fow,sync:!1}),void 0!==e.fow_opacity&&c.gameStore.setFOWOpacity({fowOpacity:e.fow_opacity,sync:!1}),void 0!==e.fow_los&&c.gameStore.setLineOfSight({fowLOS:e.fow_los,sync:!1}),void 0!==e.vision_min_range&&c.gameStore.setVisionRangeMin({value:e.vision_min_range,sync:!1}),void 0!==e.vision_max_range&&c.gameStore.setVisionRangeMax({value:e.vision_max_range,sync:!1}),void 0!==e.vision_mode&&(c.gameStore.setVisionMode({mode:e.vision_mode,sync:!1}),c.gameStore.recalculateVision(),c.gameStore.recalculateMovement())}),s.socket.on("Position.Set",e=>{l.gameManager.setCenterPosition(new o.GlobalPoint(e.x,e.y))}),s.socket.on("Notes.Set",e=>{for(const t of e)c.gameStore.newNote({note:t,sync:!1})}),s.socket.on("Asset.List.Set",e=>{c.gameStore.setAssets(e)}),s.socket.on("Board.Set",e=>{c.gameStore.clear(),c.gameStore.setLocations(e.locations),document.getElementById("layers").innerHTML="",c.gameStore.resetLayerInfo(),r.layerManager.reset();for(const t of e.layers)a.createLayer(t);r.layerManager.selectLayer(r.layerManager.getLayer().name,!1),n.EventBus.$emit("Initiative.Clear"),c.gameStore.recalculateVision(),c.gameStore.recalculateMovement(),c.gameStore.setBoardInitialized(!0)}),s.socket.on("Gridsize.Set",e=>{c.gameStore.setGridSize({gridSize:e,sync:!1})}),s.socket.on("Shape.Add",e=>{l.gameManager.addShape(e)}),s.socket.on("Shape.Remove",e=>{if(!r.layerManager.UUIDMap.has(e.uuid))return void console.log("Attempted to remove an unknown shape");if(!r.layerManager.hasLayer(e.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.layer}`);const t=r.layerManager.getLayer(e.layer);t.removeShape(r.layerManager.UUIDMap.get(e.uuid),!1),t.invalidate(!1)}),s.socket.on("Shape.Order.Set",e=>{if(!r.layerManager.UUIDMap.has(e.shape.uuid))return void console.log("Attempted to move the shape order of an unknown shape");if(!r.layerManager.hasLayer(e.shape.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.shape.layer}`);const t=r.layerManager.UUIDMap.get(e.shape.uuid),i=r.layerManager.getLayer(t.layer);i.moveShapeOrder(t,e.index,!1)}),s.socket.on("Shape.Layer.Change",e=>{const t=r.layerManager.UUIDMap.get(e.uuid);void 0!==t&&t.moveLayer(e.layer,!1)}),s.socket.on("Shape.Update",e=>{l.gameManager.updateShape(e)}),s.socket.on("Temp.Clear",e=>{e.forEach(e=>{if(!r.layerManager.UUIDMap.has(e.uuid))return void console.log("Attempted to remove an unknown temporary shape");if(!r.layerManager.hasLayer(e.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.layer}`);const t=r.layerManager.UUIDMap.get(e.uuid);r.layerManager.getLayer(e.layer).removeShape(t,!1)})}),s.socket.on("Labels.Set",e=>{for(const t of e)c.gameStore.addLabel(t)}),s.socket.on("Label.Visibility.Set",e=>{c.gameStore.setLabelVisibility(e)}),s.socket.on("Label.Add",e=>{c.gameStore.addLabel(e)}),s.socket.on("Label.Delete",e=>{c.gameStore.deleteLabel(e)}),s.socket.on("Labels.Filter.Add",e=>{c.gameStore.labelFilters.push(e),r.layerManager.invalidate()}),s.socket.on("Labels.Filter.Remove",e=>{const t=c.gameStore.labelFilters.indexOf(e);t>=0&&(c.gameStore.labelFilters.splice(t,1),r.layerManager.invalidate())}),s.socket.on("Labels.Filters.Set",e=>{c.gameStore.setLabelFilters(e)})}}); +//# sourceMappingURL=app-legacy.2dfde930.js.map \ No newline at end of file diff --git a/server/static/js/app-legacy.2dfde930.js.map b/server/static/js/app-legacy.2dfde930.js.map new file mode 100644 index 000000000..fc77c8564 --- /dev/null +++ b/server/static/js/app-legacy.2dfde930.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/game/shapes/text.ts","webpack:///./src/game/ui/selection/shapecontext.vue","webpack:///./src/App.vue?5b85","webpack:///./src/core/components/modals/prompt.vue?d33d","webpack:///./src/core/components/colorpicker.vue?4d88","webpack:///./src/game/game.vue","webpack:///./src/game/api/socket.ts","webpack:///./src/assetManager/manager.vue?5633","webpack:///./src/game/ui/menu/asset_node.vue","webpack:///./src/auth/login.vue","webpack:///./src/game/ui/initiative.vue?b24a","webpack:///./src/game/ui/initiative.vue?fb8b","webpack:///./src/game/visibility/te/draw.ts","webpack:///./src/core/components/accordion.vue","webpack:///./src/game/ui/tools/tool.vue?5b17","webpack:///./src/game/shapes/circulartoken.ts","webpack:///./src/game/ui/annotation.ts","webpack:///./src/game/ui/menu/menu.vue","webpack:///./src/core/components/contextmenu.vue","webpack:///./src/game/ui/note.vue?49b7","webpack:///./src/auth/login.vue?c159","webpack:///./src/game/ui/labels.vue?da86","webpack:///./src/game/ui/labels.vue?1ecb","webpack:///./src/game/shapes/utils.ts","webpack:///./src/game/ui/dmsettings.vue?f205","webpack:///./src/core/components/modals/confirm.vue?e6fb","webpack:///./src/game/ui/tools/select.vue?3530","webpack:///./src/game/ui/tools/select.vue?29b9","webpack:///./src/game/ui/dmsettings.vue?a899","webpack:///./src/game/ui/dmsettings.vue?814f","webpack:///./src/game/shapes/shape.ts","webpack:///./src/core/components/modals/prompt.vue?d457","webpack:///./src/game/ui/menu/menu.vue?5c18","webpack:///./src/game/ui/menu/menu.vue?44af","webpack:///./src/game/ui/note.vue?e0e5","webpack:///./src/game/ui/note.vue?23aa","webpack:///./src/game/ui/tools/select.vue?49f9","webpack:///./src/game/ui/dmsettings.vue?fed3","webpack:///./src/game/ui/tools/utils.ts","webpack:///./src/game/ui/note.vue?a508","webpack:///./src/core/components/inputCopy.vue?4a5e","webpack:///./src/game/ui/labels.vue?15af","webpack:///./src/dashboard/main.vue?6d0a","webpack:///./src/dashboard/main.vue?bbae","webpack:///./src/game/ui/tools/vision.vue?4f0c","webpack:///./src/game/api/utils.ts","webpack:///./src/game/ui/menu/asset_node.vue?f519","webpack:///./src/core/components/colorpicker.vue?893c","webpack:///./src/core/components/contextmenu.vue?113a","webpack:///./src/core/components/contextmenu.vue?7efa","webpack:///./src/assetManager/store.ts","webpack:///./src/core/components/contextmenu.vue?50e1","webpack:///./src/game/ui/selection/shapecontext.vue?1cf6","webpack:///./src/game/ui/menu/menu.vue?b354","webpack:///./src/core/components/inputCopy.vue?f87b","webpack:///./src/game/ui/tools/map.vue?284a","webpack:///./src/assetManager/contextMenu.vue?c688","webpack:///./src/assetManager/contextMenu.vue?bce4","webpack:///./src/game/layers/grid.ts","webpack:///./src/core/components/colorpicker.vue?5bf8","webpack:///./src/core/components/colorpicker.vue?7374","webpack:///./src/store.ts","webpack:///./src/core/components/colorpicker.vue","webpack:///./src/game/ui/tools/vision.vue?48bb","webpack:///./src/auth/login.vue?3521","webpack:///./src/App.vue?5130","webpack:///./src/App.vue","webpack:///./src/game/layers/fow.ts","webpack:///./src/core/components/load.vue?18c2","webpack:///./src/game/ui/selection/edit_dialog.vue?b816","webpack:///./src/game/ui/selection/edit_dialog.vue?6334","webpack:///./src/game/shapes/circle.ts","webpack:///./src/game/ui/tools/map.vue?a3ab","webpack:///./src/core/components/load.vue","webpack:///./src/game/ui/tools/pan.ts","webpack:///./src/game/ui/tools/selectcontext.vue","webpack:///./src/core/utils.ts","webpack:///./src/assetManager/contextMenu.vue","webpack:///./src/game/visibility/te/triag.ts","webpack:///./src/game/ui/menu/asset_node.vue?1f27","webpack:///./src/game/ui/tools/selectcontext.vue?d72f","webpack:///./src/game/ui/tools/selectcontext.vue?3109","webpack:///./src/game/ui/tools/vision.vue?d25b","webpack:///./src/game/ui/selection/edit_dialog.vue?1206","webpack:///./src/core/components/modals/modal.vue?44ae","webpack:///./src/assetManager/socket.ts","webpack:///./src/game/ui/tools/filter.vue?ee60","webpack:///./src/core/components/accordion.vue?3e09","webpack:///./src/game/ui/tools/vision.vue?07fd","webpack:///./src/game/ui/tools/vision.vue?9b57","webpack:///./src/game/ui/tools/selectcontext.vue?6c84","webpack:///./src/game/game.vue?5550","webpack:///./src/game/shapes/multiline.ts","webpack:///./src/game/ui/tools/draw.vue","webpack:///./src/game/utils.ts","webpack:///./src/game/ui/tools/createtoken_modal.vue?d0df","webpack:///./src/game/ui/note.vue?f9bd","webpack:///./src/game/ui/tools/draw.vue?b96d","webpack:///./src/game/shapes/line.ts","webpack:///./src/router.ts","webpack:///./src/game/ui/tools/tool.vue?d136","webpack:///./src/game/ui/tools/tools.vue","webpack:///./src/game/ui/tools/tool.vue?8ce3","webpack:///./src/game/game.vue?dae5","webpack:///./src/game/game.vue?5780","webpack:///./src/core/components/inputCopy.vue?e1ee","webpack:///./src/core/components/inputCopy.vue?0a6a","webpack:///./src/game/shapes/asset.ts","webpack:///./src/core/components/inputCopy.vue","webpack:///./src/game/visibility/te/cdt.ts","webpack:///./src/game/ui/tools/draw.vue?1261","webpack:///./src/game/layers/manager.ts","webpack:///./src/game/ui/initiative.vue?c7e1","webpack:///./src/game/ui/tools/createtoken_modal.vue","webpack:///./src/game/visibility/bvh/node.ts","webpack:///./src/game/ui/tools/createtoken_modal.vue?f918","webpack:///./src/game/events/keyboard.ts","webpack:///./src/assetManager/manager.vue?433f","webpack:///./src/game/ui/tools/tools.vue?25b2","webpack:///./src/game/ui/selection/selection_info.vue?2310","webpack:///./src/core/components/modals/modal.vue?09d2","webpack:///./src/game/ui/labels.vue?e465","webpack:///./src/core/components/contextmenu.vue?a0a2","webpack:///./src/core/components/modals/prompt.vue?4e1b","webpack:///./src/dashboard/main.vue?1c14","webpack:///./src/core/components/accordion.vue?3d26","webpack:///./src/core/components/load.vue?14cd","webpack:///./src/core/components/load.vue?0f87","webpack:///./src/game/ui/menu/menu.vue?8b23","webpack:///./src/game/shapes/boundingrect.ts","webpack:///./src/game/geom.ts","webpack:///./src/game/ui/menu/asset_node.vue?61d2","webpack:///./src/game/ui/menu/asset_node.vue?3fe9","webpack:///./src/game/ui/initiative.vue?ebca","webpack:///./src/core/components/inputCopy.vue?946f","webpack:///./src/game/game.vue?5592","webpack:///./src/game/units.ts","webpack:///./src/game/ui/menu/menu.vue?ae57","webpack:///./src/core/components/colorpicker.vue?1682","webpack:///./src/game/visibility/te/tds.ts","webpack:///./src/game/visibility/bvh/bvh.ts","webpack:///./src/game/ui/tools/filter.vue?1da1","webpack:///./src/game/manager.ts","webpack:///./src/game/ui/menu/asset_node.vue?0d0e","webpack:///./src/core/components/modals/modal.vue?9335","webpack:///./src/game/ui/tools/vision.vue","webpack:///./src/core/components/load.vue?8cd0","webpack:///./src/dashboard/main.vue?3f72","webpack:///./src/core/components/modals/confirm.vue","webpack:///./src/game/ui/selection/shapecontext.vue?aac0","webpack:///./src/game/ui/tools/draw.vue?60f4","webpack:///./src/game/ui/selection/shapecontext.vue?c203","webpack:///./src/assetManager/manager.vue?a11e","webpack:///./src/game/event-bus.ts","webpack:///./src/dashboard/main.vue?d5a9","webpack:///./src/game/shapes/rect.ts","webpack:///./src/game/ui/tools/filter.vue?b0f4","webpack:///./src/game/ui/tools/selectcontext.vue?6f66","webpack:///./src/game/layers/fowplayers.ts","webpack:///./src/game/layers/layer.ts","webpack:///./src/game/events/mouse.ts","webpack:///./src/game/ui/tools/filter.vue","webpack:///./src/game/shapes/baserect.ts","webpack:///./src/game/ui/tools/select.vue","webpack:///./src/game/ui/selection/selection_info.vue?1f2b","webpack:///./src/dashboard/main.vue","webpack:///./src/game/ui/tools/createtoken_modal.vue?6f0b","webpack:///./src/assetManager/manager.vue?fbc6","webpack:///./src/assetManager/manager.vue?a045","webpack:///./src/game/ui/tools/selectcontext.vue?d61f","webpack:///./src/auth/logout.ts","webpack:///./src/core/store.ts","webpack:///./src/main.ts","webpack:///./src/core/components/contextmenu.vue?f402","webpack:///./src/invitation/invitation.ts","webpack:///./src/core/components/modals/prompt.vue","webpack:///./src/game/visibility/te/te.ts","webpack:///./src/game/ui/tools/map.vue?ed09","webpack:///./src/game/ui/tools/map.vue?7f60","webpack:///./src/game/ui/selection/edit_dialog.vue","webpack:///./src/core/components/modals/modal.vue?c616","webpack:///./src/core/components/modals/modal.vue?12fd","webpack:///./src/game/settings.ts","webpack:///./src/auth/login.vue?283c","webpack:///./src/game/ui/tools/createtoken_modal.vue?4595","webpack:///./src/game/ui/tools/createtoken_modal.vue?5fcc","webpack:///./src/game/ui/tools/tool.vue?780b","webpack:///./src/game/ui/tools/tool.vue?f5ba","webpack:///./src/game/game.vue?d01c","webpack:///./src/game/ui/tools/ruler.ts","webpack:///./src/core/components/modals/modal.vue","webpack:///./src/core/components/accordion.vue?4b34","webpack:///./src/game/visibility/te/pa.ts","webpack:///./src/game/ui/tools/tools.vue?4580","webpack:///./src/game/ui/selection/edit_dialog.vue?9a84","webpack:///./src/game/ui/selection/shapecontext.vue?3e44","webpack:///./src/game/ui/selection/shapecontext.vue?9807","webpack:///./src/core/components/modals/confirm.vue?f9ee","webpack:///./src/game/ui/dmsettings.vue?7896","webpack:///./src/game/ui/tools/map.vue","webpack:///./src/core/components/accordion.vue?ada1","webpack:///./src/core/components/accordion.vue?6229","webpack:///./src/core/components/modals/confirm.vue?cfcf","webpack:///./src/core/components/modals/confirm.vue?be48","webpack:///./src/game/ui/dmsettings.vue","webpack:///./src/assetManager/contextMenu.vue?1b1b","webpack:///./src/game/ui/tools/select.vue?b7fd","webpack:///./src/game/ui/tools/filter.vue?6447","webpack:///./src/game/ui/labels.vue?8d8f","webpack:///./src/game/shapes/polygon.ts","webpack:///./src/game/ui/tools/draw.vue?dd55","webpack:///./src/game/ui/tools/draw.vue?03b4","webpack:///./src/game/game.vue?4949","webpack:///./src/game/ui/selection/selection_info.vue?df44","webpack:///./src/game/ui/selection/selection_info.vue?928f","webpack:///./src/game/ui/tools/filter.vue?fb4f","webpack:///./src/game/ui/tools/filter.vue?fa63","webpack:///./src/assetManager/manager.vue","webpack:///./src/game/ui/tools/tools.vue?fa4a","webpack:///./src/game/ui/tools/tool.vue","webpack:///./src/core/components/modals/prompt.vue?29b4","webpack:///./src/core/components/modals/prompt.vue?36e2","webpack:///./src/game/ui/initiative.vue?36c8","webpack:///./src/game/ui/selection/selection_info.vue","webpack:///./src/game/store.ts","webpack:///./src/core/components/modals/confirm.vue?a22f","webpack:///./src/game/comm/conversion/aura.ts","webpack:///./src/assetManager/contextMenu.vue?1e9a","webpack:///./src/game/ui/note.vue","webpack:///./src/game/ui/initiative.vue","webpack:///./src/game/layers/utils.ts","webpack:///./src/game/ui/labels.vue","webpack:///./src/game/ui/selection/edit_dialog.vue?3800","webpack:///./src/game/ui/tools/tools.vue?28f3","webpack:///./src/game/ui/tools/tools.vue?c2f7","webpack:///./src/auth/login.vue?d700","webpack:///./src/auth/login.vue?8f9e","webpack:///./src/game/ui/selection/selection_info.vue?5d62","webpack:///./src/game/api/events.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","app","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","boundingrect_1","shape_1","units_1","Text","Shape","[object Object]","position","text","font","angle","fillColour","strokeColour","uuid","super","this","type","assign","getBaseDict","points","refPoint","x","y","BoundingRect","ctx","draw","fillStyle","save","dest","g2l","translate","rotate","textAlign","getLines","map","line","fillText","restore","point","centerPoint","canvas","getBoundingBox","visibleInCanvas","resizePoint","lines","lineHeight","widths","measureText","width","Math","max","split","allLines","maxWidth","targetLine","words","word","testLine","metrics","testWidth","__webpack_exports__","_shapecontext_vue_vue_type_template_id_6c66d243_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","__WEBPACK_IMPORT_KEY__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__","component","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_style_index_0_id_0602c2e6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_style_index_0_id_0602c2e6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tinycolor2_1","tslib_1","__importDefault","vue_1","vue_class_component_1","vue_color_1","vue_property_decorator_1","ColorPicker","default","display","left","top","transparent","$refs","chromePicker","val","rgba","a","setPosition","disabled","$nextTick","$children","$el","focus","newColor","toRgbString","$emit","color","rect","getBoundingClientRect","right","innerWidth","bottom","innerHeight","__decorate","Prop","String","Boolean","components","chrome-picker","Chrome","_game_vue_vue_type_template_id_3d0578ba_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__","socket_io_client_1","createConnection","route","socket","io","opts","query","decodeURIComponent","params","creator","room","connect","location","protocol","host","autoConnect","contextMenu_vue_1","confirm_vue_1","prompt_vue_1","socket_1","store_1","utils_1","AssetManager","path","draggingSelection","folders","assetStore","files","selected","idMap","currentFolder","root","parentFolder","parent","undefined","firstSelectedFile","sel","file_hash","nextFolder","pop","clearSelected","emit","prompt","inode","target","includes","indexOf","delete","event","shiftKey","inodes","start","end","ctrlKey","file","dataTransfer","setData","dropEffect","classList","contains","add","remove","moveInode","upload","document","getElementById","click","fls","CHUNK_SIZE","uuidv4","slices","ceil","size","fr","FileReader","readAsArrayBuffer","min","onload","e","directory","totalSlices","Prompt","ConfirmDialog","AssetContextMenu","to","from","next","disconnect","_asset_node_vue_vue_type_template_id_6d718094_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_login_vue_vue_type_template_id_bc30fc14_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","render","_vm","_h","$createElement","_c","_self","attrs","visible","mask","on","close","$event","scopedSlots","_u","fn","staticClass","draggable","dragstart","dragStart","dragend","dragEnd","_v","id","fakeSetData","$store","state","game","IS_DM","change","updateOrder","model","callback","$$v","expression","_l","actor","staticStyle","flex-direction","align-items","class","initiative-selected","currentActor","style","cursor","mouseenter","toggleHighlight","mouseleave","src","source","height","_s","directives","rawName","modifiers","lazy","number","notAllowed","owns","placeholder","domProps","$set","_n","syncInitiative","blur","$forceUpdate","opacity","createEffect","getDefaultEffect","effects","toggleOption","group","removeInitiative","effect","updateEffect","input","composing","turns","toString","_e","roundCounter","visionLock","toggleVisionLock","cameraLock","setRound","updateTurn","nextTurn","staticRenderFns","manager_1","tds_1","triag_1","drawPolygon","polygon","colour","dl","layerManager","getLayer","lineJoin","beginPath","strokeStyle","random","moveTo","g2lx","g2ly","lineTo","closePath","stroke","drawPolygonL","xx","local","yy","I","J","drl","constrained","drawPolygonT","tds","clear","logs","T","clearRect","ei","EdgeIterator","valid","collect","fromP","edge","first","vertices","ccw","second","toP","cw","Infinity","constraints","console","log","pos","triangles","isInfinite","po","arc","PI","fill","DP","DPL","DPT","_accordion_vue_vue_type_template_id_0bf2b7ba_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tinycolor","__importStar","circle_1","CircularToken","Circle","center","radius","fromDict","textBaseline","xs","calcFontScale","g2lz","ys","transform","mostReadable","toHexString","gameStore","has_img","index","geom_1","rect_1","text_1","AnnotationManager","shown","origin","GlobalPoint","annotationText","annotationRect","Rect","layer","hasLayer","warn","addShape","l2g","LocalPoint","getMaxWidth","getMaxHeight","w","zoomFactor","h","invalidate","_menu_vue_vue_type_template_id_c7fe324c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_contextmenu_vue_vue_type_template_id_256dde9c___WEBPACK_IMPORTED_MODULE_0__","_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","title","margin","ref","search","category","labels","label","selectLabel","lower-opacity","stopPropagation","toggleVisibility","deleteLabel","trim","newCategory","newName","addLabel","asset_1","circulartoken_1","line_1","multiline_1","polygon_1","createShapeFromDict","shape","sh","type_","fill_colour","stroke_colour","circ","token","Line","x2","y2","line_width","multiline","MultiLine","Polygon","v","asset","img","Image","startsWith","URL","pathname","Asset","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_style_index_0_id_1883e207_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_style_index_0_id_1883e207_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","handleClick","selection","player","kickPlayer","values","players","refreshState","invitationUrl","refreshInviteCode","toggleSessionLock","deleteSession","for","checked","Array","isArray","useGrid","_i","$$a","$$el","$$c","$$i","concat","gridSize","unitSize","fakePlayer","fullFOW","fowLOS","step","fowOpacity","changeVisionMode","visionMode","visionRangeMin","visionRangeMax","aura_1","nameVisible","trackers","auras","_owners","visionObstruction","movementObstruction","isToken","showHighlight","annotation","globalCompositeOperation","options","Map","_refPoint","delta","idx","entries","abs","prev","fromArray","vec","subtract","mid","multiply","normalize","skipLightUpdate","recalculate","self","obstructionIndex","visionBlockers","update","recalculateVision","forEach","au","ls","visionSources","findIndex","aura","visionSource","some","blocksMovement","movementblockers","recalculateMovement","ownedBy","ownedtokens","draw_operator","movement_obstruction","vision_obstruction","aurasToServer","owners","name_visible","is_token","JSON","stringify","aurasFromServer","parse","bbox","strokeRect","topLeft","dim","loc","innerRange","g2lr","gradient","createRadialGradient","tc","addColorStop","setAlpha","lastPath","sync","oldLayer","newLayer","shapes","freeze","username","FAKE_PLAYER","activeTokens","owner","oldValue","newValue","ownerIndex","addOwner","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","settings","locations","rm-list-dm","_m","enter","rm","transition","settingsClick","overflow-y","overflow-x","href","assets","createNote","note","openNote","notes","openDmSettings","gridColour","update:color","fowColour","rulerColour","text-decoration","changeLocation","createLocation","select","font-size","updateNote","calcHeight","removeNote","selectcontext_vue_1","tool_vue_1","utils_2","utils_3","SelectOperations","SelectTool","showContextMenu","active","Noop","deltaChanged","dragRay","Ray","Vector","selectionStartPoint","selectionHelper","mouse","getMouse","globalMouse","selectionStack","hit","getPointIndex","l2gz","getRef","Resize","Drag","localRefPoint","GroupSelect","endPoint","og","direction","ogDelta","calculateDelta","asDict","redraw","temporary","resize","updateCursor","body","clearSelection","topRight","botLeft","altKey","snapToGrid","resizeToGrid","$parent","shapecontext","open","selectcontext","getPointOrientation","SelectContext","vuex_1","inputCopy_vue_1","modal_vue_1","event_bus_1","DmSettings","categories","showRefreshState","EventBus","$on","$off","invitationCode","locked","isLocked","setUseGrid","setUnitSize","setGridSize","setFakePlayer","setFullFOW","setFOWOpacity","setLineOfSight","setVisionRangeMin","setVisionRangeMax","toLowerCase","setVisionMode","child","firstElementChild","HTMLInputElement","setIsLocked","roomCreator","roomName","then","$router","InputCopyElement","Modal","computed","mapState","pa_1","done","ogSelBBox","newSelBBox","offset","refine","movementBlocker","blocker","UUIDMap","blockerBBox","found","intersectsWithInner","ray","fromPoints","invDir","inverse","dirIsNegative","intersectP","bCenter","sCenter","ux","uy","dx","dot","dy","centerTriangle","PA_CDT","movement","locate","asArray","lt","triangle","checkTriangle","skip","endpoint","neighbours","_cw","_ccw","ix","intersection","isConstrained","orientation","Sign","LEFT_TURN","ZERO","newDelta","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_style_index_0_id_7a3669fd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_style_index_0_id_7a3669fd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_style_index_0_id_20bfdb3e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_style_index_0_id_20bfdb3e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","owned","joined","encodeURIComponent","submit","preventDefault","createRoom","newSessionName","tag","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","sendClientOptions","locationOptions","panX","panY","AssetNode","showImage","keys","filter","el","sort","alphSort","__files","b","children","imageSource","querySelector","setDragImage","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_style_index_0_id_f8744d60_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_style_index_0_id_f8744d60_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tabindex","_t","vuex_module_decorators_1","AssetStore","VuexModule","Mutation","Module","dynamic","store","rootStore","namespaced","getModule","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","contextmenu_vue_1","ShapeContext","activeLayer","pageX","pageY","layers","selectable","playerEditable","moveLayer","getActiveLayer","moveShapeOrder","initiative","addInitiative","getInitiativeRepr","ContextMenu","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_style_index_0_id_c7fe324c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_style_index_0_id_c7fe324c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","borderColour","popupString","showPopup","navigator","clipboard","writeText","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","rename","layer_1","GridLayer","Layer","doClear","drawGrid","gs","lineWidth","currentTarget","closePicker","z-index","updateColor","use","Store","_colorpicker_vue_vue_type_template_id_f8744d60_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","VisionTool","tokens","removeActiveToken","addActiveToken","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_bc30fc14_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_bc30fc14_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","script","componentNormalizer","settings_1","te_1","FOWLayer","isVisionLayer","preFogShapes","virtualCanvas","createElement","vCtx","getContext","has","removeShape","Settings","skipLightFOW","originalOperation","dctx","drawAngleLines","drawFirstLightHit","bb","lcenter","alm","light","find","auraLength","getUnitDistance","auraCircle","lastArcAngle","Path2D","firstPoint","angleSteps","anglePoint","cos","sin","lightRay","hitResult","BV","intersect","computeVisibility","drawImage","preShape","ogComposite","getFogColour","fillRect","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","grid-column","updateShape","grid-column-start","setToken","setVisionBlocker","setMovementBlocker","updateOwner","gridColumnStart","removeOwner","tracker","removeTracker","updateAuraColour","updateAuraVisionSource","removeAura","removeLabel","openLabelManager","updateAnnotation","pow","targetX","targetY","round","diff","sqrt","baserect_1","MapTool","xCount","yCount","startPoint","clone","BaseRect","_load_vue_vue_type_template_id_ff095222___WEBPACK_IMPORTED_MODULE_0__","_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__","PanTool","panStart","distance","increasePanX","increasePanY","_selectcontext_vue_vue_type_template_id_2e7d4582_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","main_1","replace","capitalize","charAt","toUpperCase","getHTMLFont","element","parentElement","getComputedStyle","getPropertyValue","getHTMLTextWidth","fakeElement","appendChild","partition","arr","predicate","ret","Number","fontWidth","fixedEncodeURIComponent","str","charCodeAt","OrderedMap","getComponent","activeComponent","_contextMenu_vue_vue_type_template_id_dbbd4d08___WEBPACK_IMPORTED_MODULE_0__","_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","edgeInfo","va","vb","ec","EdgeCirculator","indv","indexV","ri","infinite","vi","orient","COLLINEAR","collinearBetween","q","cPQ","cQR","compare","EQUAL","SMALLER","LARGER","px","py","qx","qy","rx","ry","pqx","pqy","prx","pry","det","determinant","maxX","maxY","aprX","aprY","eps","EPSILON","POSITIVE","NEGATIVE","a00","a01","a10","a11","hasInexactNegativeOrientation","sideOfOrientedCircle","perturb","sideOfOrientedCircleP","Error","p0","p1","p2","os","getOrientedSide","ON_ORIENTED_BOUNDARY","reverse","ON_NEGATIVE_SIDE","xyEqual","xySmaller","xyCompare","qpx","qpy","rpx","rpy","tpx","tpy","tqx","tqy","rqx","rqy","maxx","maxy","arpx","arpy","atqx","atqy","atpx","atpy","arqx","arqy","ON_POSITIVE_SIDE","segSegDoIntersectCrossing","p3","p4","RIGHT_TURN","segSegDoIntersectContained","pa","pb","pc","pd","getIntersectionType","intersectionType","IntersectionType","POINT","NO_INTERSECTION","getLine","doIntersect","l1","l2","info","getIntersectionTypeLine","la","lb","denom","nom1","nom2","A1","A2","B1","B2","nextUp","MAX_VALUE","MIN_VALUE","ulp","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","bringPlayers","createToken","showInitiative","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_style_index_0_id_46baf892_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_style_index_0_id_46baf892_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_style_index_0_id_23de098e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_style_index_0_id_23de098e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","positioned","offsetX","offsetY","screenX","screenY","dragging","updatePosition","container","offsetWidth","offsetHeight","clientX","clientY","parseInt","destination","setRoot","folder","set","accordion_vue_1","FilterTool","cat","","localeCompare","initalValues","labelFilters","f","toggleUnlabeledFilter","_","accordion","Accordion","initialValues","updateCategory","overall","items","indeterminate","item","--detailRight","detailRight","--detailArrow","detailArrow","toggle","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_style_index_0_id_2e7d4582_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_style_index_0_id_2e7d4582_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_points","minx","miny","lineCap","_draw_vue_vue_type_template_id_639cd890_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","opposite","zoomValue","exp","zoomDisplay","colorpicker_vue_1","CreateTokenModal","updatePreview","Watch","color-picker","NoteDialog","textarea","scrollHeight","DrawTool","brushHelper","ruler","shapeSelect","modeSelect","modes","brushSize","helperSize","onModeChange","fowLayer","normalLayer","setupBrush","_vertices","pushBrushBack","lastPoint","finaliseShape","axios_1","vue_router_1","manager_vue_1","login_vue_1","logout_1","load_vue_1","main_vue_1","game_vue_1","invitation_1","router","base","routes","redirect","meta","auth","template","beforeEach","coreStore","initialized","matched","record","authenticated","response","setAuthenticated","setUsername","setInitialized","catch","error","Tool","tool","onMouseDown","onMouseUp","onMouseMove","onContextMenu","onDeselect","onSelect","_tools_vue_vue_type_template_id_b6e1f51c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","wheel","zoom","ready","mousedown","mouseup","mousemove","contextmenu","dragover","drop","showUI","layer-selected","selectedLayer","selectLayer","interval","dot-width","dot-height","tooltip-dir","tooltip","formatter","toFixed","slider-style","border-radius","bg-style","background-color","box-shadow","process-style","copy","topleft","_inputCopy_vue_vue_type_template_id_20bfdb3e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","CDT","TDS","insert","insertConstraintV","stack","markConstraint","intersectionInfo","findIntersectedFaces","triangulateHole","intersectedFaces","listAB","listBA","edges","triangulateHole2","propagatingFlipE","triangulateHalfHole","fl","deleteTriangle","conflictBoundaries","iN","iT","iC","current","n1","n2","ind","ind1","ind2","mirrorIndex","v0","v1","v2","newlf","createTriangle","vaa","vbb","aa","lfc","LineFaceCirculator","lf","rf","indexT","unshift","previousFace","currentVertex","i1","i2","vcc","vdd","pi","BoundingBox","dilate","overlaps","removeConstrainedEdge","dimension","indf","locateInfo","iLocate","insertb","li","flipAround","propagatingFlip","depth","isFlipable","maxDepth","ni","flip","e1","e2","uid","eni","eI","edgeSet","lessEdge","indn","ed","tt","ii","u","t1","t2","t3","i3","t4","i4","insertInConstrainedEdge","LocateType","EDGE","insertc","updateConstraintsIncident","VERTEX","clearConstraintsIncident","updateConstraintsOpposite","c1","c2","fc","FaceCirculator","cwi","ccwi","insertFirst","finiteVertex","insertSecond","OUTSIDE_AFFINE_HULL","insertOutsideAffineHull","OUTSIDE_CONVEX_HULL","insertOutsideConvexHull","insertInEdge","FACE","insertInFace","insertDimUp","_infinite","conform","finiteEdge","COUNTERCLOCKWISE","insertOutsideConvexHull2","ccwlist","cwlist","th","marchLocate1D","marchLocate2D","ff","iv","pqt","Triangle","leftFirst","o0","o1","o2","sum","nTurns","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","LayerManager","drawLoop","requestAnimationFrame","addLayer","globalAlpha","getSelection","image","getData","l2gx","l2gy","lm","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_createtoken_modal_vue_vue_type_template_id_73816298_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","BoundingNode","nPrimitives","LeafNode","firstPrimOffset","InteriorNode","union","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","utils_4","onKeyUp","HTMLTextAreaElement","selectTool","onKeyDown","keyCode","hasSelection","toggleUI","setClipboard","clip","oldTrackers","newTracker","oldAuras","newAura","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","shapecontext_vue_1","createtoken_modal_vue_1","draw_vue_1","filter_vue_1","map_vue_1","pan_1","select_vue_1","vision_vue_1","manager_2","ruler_1","Tools","currentTool","tools","dmTools","currentToolComponent","visibleTools","tagName","targetTool","button","buttons","annotations","gameManager","annotationManager","setActiveText","select-tool","pan-tool","draw-tool","ruler-tool","RulerTool","map-tool","filter-tool","vision-tool","shape-menu","createtoken-dialog","watch","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_style_index_0_id_e477c214_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_style_index_0_id_e477c214_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","question","answer","resolve","reject","Promise","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_style_index_0_id_b102d41e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_style_index_0_id_b102d41e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_style_index_0_id_0bf2b7ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_style_index_0_id_0bf2b7ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","message","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","botRight","vector","other","xmin","xmax","ymin","ymax","botright","dirIsNeg","txmin","getDiagCorner","txmax","tymin","tymax","tMax","coreVisible","getPointDistance","Point","scale","atan2","maxT","mouseover","hash","mouseout","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_style_index_0_id_62228cde_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_style_index_0_id_62228cde_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","vue_slider_component_1","lodash_1","initiative_vue_1","labels_vue_1","menu_vue_1","note_vue_1","selection_info_vue_1","tools_vue_1","keyboard_1","mouse_1","dmsettings_vue_1","Game","manager","updateZoom","newZoomDisplay","zoomLocation","addEventListener","resizeWindow","removeEventListener","throttle","scrollZoom","setWidth","setHeight","confirm","dropAsset","tool-bar","selection-info","prompt-dialog","confirm-dialog","menu-bar","initiative-dialog","zoom-slider","note-dialog","label-dialog","dm-settings","obj","z","l2gr","asset_node_vue_1","MenuBar","setGridColour","setFOWColour","setRulerColour","nextElementSibling","newNote","asset-node","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_INFINITE_VERTEX","LineFaceState","newPoint","INFINITE","_counter","vertex","A","sign","Vertex","_point","_ri","Edge","_es","associatedEdge","increment","tr","dir","UNDEFINED","_tr","ic","vt","vr","pqr","VERTEX_VERTEX","VERTEX_EDGE","EDGE_VERTEX","EDGE_EDGE","createVertex","addVertex","infiniteVertex","n0","trig","t0","i0","setAdjacency","deleteList","neighbour","lfit","reorient","vCW","vCCW","tri","bl","bli","vv","g","x1","y1","dist","node_1","BoundingVolume","totalNodes","buildData","orderedPrims","nodes","recursiveBuild","compact","node","createLeaf","centroidBbox","getMaxExtent","pMid","partitionedData","flattened","stopOnFirstHit","tMin","todoOffset","nodeNum","todo","secondChildOffset","flatten","myOffset","secondOffset","primitivesOffset","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_1_id_dca395d6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_1_id_dca395d6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","annotation_1","GameManager","selectedTool","oldShape","redrawInitiative","checkVisionSources","setMovementBlock","setIsToken","localPos","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_style_index_0_id_6d718094_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_style_index_0_id_6d718094_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_id_c2851f0e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_id_c2851f0e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_vision_vue_vue_type_template_id_46baf892_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","LoadComponent","registerHooks","Dashboard","vm","err","post","_confirm_vue_vue_type_template_id_1883e207_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_style_index_0_id_639cd890_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_style_index_0_id_639cd890_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_style_index_0_id_6c66d243_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_style_index_0_id_6c66d243_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","FOWPlayersLayer","skipPlayerFOW","maxLength","tokenId","_a","selectionColor","selectionWidth","invalidateLight","serverShape","lsI","lbI","mbI","anI","annotationIndex","ownedIndex","ogOP","drawAuras","filterNoLabel","destinationIndex","oldIdx","deltaY","_filter_vue_vue_type_template_id_dca395d6_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","topright","botleft","mx","my","_select_vue_vue_type_template_id_048b3482___WEBPACK_IMPORTED_MODULE_0__","_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_style_index_0_id_43d09857_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_style_index_0_id_43d09857_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_main_vue_vue_type_template_id_b102d41e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_style_index_0_id_73816298_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_style_index_0_id_73816298_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","moveDrag","stopDrag","multiple","hidden","createDirectory","prepareUpload","dblclick","changeDirectory","dragleave","leaveDrag","inode-selected","cm","startDrag","createtokendialog","Logout","CoreStore","init","App_vue_1","router_1","config","productionTip","devtools","performance","$mount","props","Initiative","code","sessionUrl","_prompt_vue_vue_type_template_id_0602c2e6_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","draw_1","drawt","drawTEContour","Q","rawOutput","expandEdge","fh","nfh","nIndex","rIndex","lIndex","nvh","rvh","lvh","re","le","ro","lo","raySegIntersection","CLOCKWISE","denominator","ua","_edit_dialog_vue_vue_type_template_id_23de098e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","modal-mask","dialog-mask","dragOver","tempFill","Login","password","$route","statusText","span","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","diffsign","xdiff","ydiff","xmid","ymid","_modal_vue_vue_type_template_id_c2851f0e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","cdt_1","triangulate","partial","cdt","insertConstraint","vision","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_style_index_0_id_b6e1f51c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_style_index_0_id_b6e1f51c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","EditDialog","addEmpty","maxvalue","hadAnnotation","an","getLayers","setLayer","moveToBack","moveToFront","getInitiativeWord","openEditDialog","yes","no","ok","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_style_index_0_id_b908e87c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_style_index_0_id_b908e87c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_map_vue_vue_type_template_id_2104f147___WEBPACK_IMPORTED_MODULE_0__","_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","toggleDisplay","toggleCategory","showArrow","toggleSelection","deny","_dmsettings_vue_vue_type_template_id_b908e87c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","LabelManager","user","option-selected","max-width","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_1_id_3d0578ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_1_id_3d0578ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","changeValue","refInFor","selectionupdate","updateSelection","_manager_vue_vue_type_template_id_5b0def98___WEBPACK_IMPORTED_MODULE_0__","_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_tool_vue_vue_type_template_id_1e034b42___WEBPACK_IMPORTED_MODULE_0__","_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","keyup","_k","vuedraggable_1","_activeTokens","setTurn","getActor","actorId","setActiveTokens","setCenterPosition","order","show","option","effectIndex","syncEffect","_selection_info_vue_vue_type_template_id_43d09857_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","bvh_1","GameStore","selectedLayerIndex","boardInitialized","locationName","vision_mode","filters","updatedLayers","Set","isDM","oldLoc","newLoc","getGridLayer","increase","unit_size","gridLayer","use_grid","vision_min_range","vision_max_range","full_fow","fow_opacity","fow_los","actualNote","playerId","context","commit","Action","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","vision_source","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_note_vue_vue_type_template_id_7a3669fd_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_initiative_vue_vue_type_template_id_62228cde_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","fow_1","fowplayers_1","grid_1","createLayer","layerInfo","zIndex","player_editable","setShapes","_labels_vue_vue_type_template_id_e477c214_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","toolVisible","tool-selected","focusin","focusout","login","autocomplete","required","visibility","register","edit_dialog_vue_1","SelectionInfo","visibleTrackers","visibleAuras","editDialog","ogValue","isNaN","edit-dialog","setRoomName","setRoomCreator","setInvitationCode","setPlayers","addPlayer","setDM","grid_colour","fow_colour","ruler_colour","setPanX","pan_x","setPanY","pan_y","setZoomDisplay","zoom_factor","active_layer","setLocationName","setAssets","locationInfo","setLocations","innerHTML","resetLayerInfo","reset","setBoardInitialized","realShape","setLabelVisibility","setLabelFilters"],"mappings":"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","file":"static/js/app-legacy.2dfde930.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2l } from \"@/game/units\";\n\nexport class Text extends Shape {\n type = \"text\";\n text: string;\n font: string;\n angle: number;\n constructor(\n position: GlobalPoint,\n text: string,\n font: string,\n angle?: number,\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(position, fillColour, strokeColour, uuid);\n this.text = text;\n this.font = font;\n this.angle = angle || 0;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n text: this.text,\n font: this.font,\n angle: this.angle,\n });\n }\n get points() {\n return [[this.refPoint.x, this.refPoint.y]];\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(this.refPoint, 5, 5); // TODO: fix this bounding box\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.font = this.font;\n ctx.fillStyle = this.fillColour;\n ctx.save();\n const dest = g2l(this.refPoint);\n ctx.translate(dest.x, dest.y);\n ctx.rotate(this.angle);\n ctx.textAlign = \"center\";\n this.getLines(ctx).map(line => ctx.fillText(line.text, line.x, line.y));\n ctx.restore();\n }\n contains(point: GlobalPoint): boolean {\n return false; // TODO\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {} // TODO\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {}\n\n getMaxHeight(ctx: CanvasRenderingContext2D) {\n const lines = this.getLines(ctx);\n const lineHeight = 30;\n return lineHeight * lines.length;\n }\n\n getMaxWidth(ctx: CanvasRenderingContext2D) {\n const lines = this.getLines(ctx);\n const widths = lines.map(line => ctx.measureText(line.text).width);\n return Math.max(...widths);\n }\n\n private getLines(ctx: CanvasRenderingContext2D) {\n const lines = this.text.split(\"\\n\");\n const allLines: { text: string; x: number; y: number }[] = [];\n const maxWidth = ctx.canvas.width;\n const lineHeight = 30;\n const x = 0; // this.refPoint.x;\n let y = 0; // this.refPoint.y;\n\n for (const line of lines) {\n let targetLine = \"\";\n const words = line.split(\" \");\n for (const word of words) {\n const testLine = targetLine + word + \" \";\n const metrics = ctx.measureText(testLine);\n const testWidth = metrics.width;\n if (testWidth > maxWidth) {\n ctx.fillText(targetLine, x, y);\n allLines.push({ text: targetLine, x, y });\n targetLine = word + \" \";\n y += lineHeight;\n } else {\n targetLine = testLine;\n }\n }\n allLines.push({ text: targetLine, x, y });\n y += lineHeight;\n }\n return allLines;\n }\n}\n","import { render, staticRenderFns } from \"./shapecontext.vue?vue&type=template&id=6c66d243&scoped=true&\"\nimport script from \"./shapecontext.vue?vue&type=script&lang=ts&\"\nexport * from \"./shapecontext.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c66d243\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport tinycolor from \"tinycolor2\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Chrome } from \"vue-color\";\nimport { Prop } from \"vue-property-decorator\";\n\n@Component({\n components: {\n \"chrome-picker\": Chrome,\n },\n})\nexport default class ColorPicker extends Vue {\n @Prop(String) color!: string;\n @Prop(Boolean) disabled!: boolean;\n\n display = false;\n left = 0;\n top = 0;\n transparent = false;\n\n mounted() {\n this.transparent = (this.$refs.chromePicker).val.rgba.a === 0;\n this.setPosition();\n }\n\n open() {\n if (this.display || this.disabled) return; // click on the picker itself\n this.setPosition();\n this.display = true;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n updateColor(value: { rgba: { r: number; g: number; b: number; a: number } }) {\n this.transparent = value.rgba.a === 0;\n const newColor = tinycolor(value.rgba).toRgbString();\n this.$emit(\"update:color\", newColor);\n this.$emit(\"input\", newColor);\n }\n closePicker() {\n this.display = false;\n this.$emit(\"change\", this.color);\n }\n setPosition() {\n const rect = this.$el.getBoundingClientRect();\n // 224 is the width of the picker, 242 the height\n if (rect.right + 224 > window.innerWidth) this.left = rect.left - 224;\n else this.left = rect.right;\n if (rect.bottom + 242 > window.innerHeight) this.top = rect.top - 242;\n else this.top = rect.bottom;\n }\n}\n","import { render, staticRenderFns } from \"./game.vue?vue&type=template&id=3d0578ba&scoped=true&\"\nimport script from \"./game.vue?vue&type=script&lang=ts&\"\nexport * from \"./game.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./game.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d0578ba\",\n null\n \n)\n\nexport default component.exports","import io from \"socket.io-client\";\nimport { Route } from \"vue-router\";\n\nexport const socket = io(location.protocol + \"//\" + location.host + \"/planarally\", { autoConnect: false });\n\nexport function createConnection(route: Route) {\n socket.io.opts.query = `user=${decodeURIComponent(route.params.creator)}&room=${decodeURIComponent(route.params.room)}`;\n socket.connect();\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport AssetContextMenu from \"@/assetManager/contextMenu.vue\";\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\n\nimport { socket } from \"@/assetManager/socket\";\nimport { assetStore } from \"@/assetManager/store\";\nimport { Asset } from \"@/core/comm/types\";\nimport { uuidv4 } from \"@/core/utils\";\n\n@Component({\n components: {\n Prompt,\n ConfirmDialog,\n AssetContextMenu,\n },\n beforeRouteEnter(to, from, next) {\n socket.connect();\n next();\n },\n beforeRouteLeave(to, from, next) {\n socket.disconnect();\n next();\n },\n})\nexport default class AssetManager extends Vue {\n path: number[] = [];\n draggingSelection = false;\n\n get folders(): number[] {\n return assetStore.folders;\n }\n\n get files(): number[] {\n return assetStore.files;\n }\n\n get selected(): number[] {\n return assetStore.selected;\n }\n\n get idMap() {\n return assetStore.idMap;\n }\n\n get currentFolder(): number {\n if (this.path.length) return this.path[this.path.length - 1];\n return assetStore.root;\n }\n get parentFolder(): number {\n let parent = this.path[this.path.length - 2];\n if (parent === undefined) parent = assetStore.root;\n return parent;\n }\n get firstSelectedFile(): Asset | null {\n for (const sel of assetStore.selected) {\n if (assetStore.idMap.get(sel)!.file_hash) {\n return assetStore.idMap.get(sel)!;\n }\n }\n return null;\n }\n changeDirectory(nextFolder: number) {\n if (nextFolder < 0) this.path.pop();\n else this.path.push(nextFolder);\n assetStore.clearSelected();\n socket.emit(\"Folder.Get\", this.currentFolder);\n }\n createDirectory() {\n const name = window.prompt(\"New folder name\");\n if (name !== null) {\n socket.emit(\"Folder.Create\", { name, parent: this.currentFolder });\n }\n }\n moveInode(inode: number, target: number) {\n if (assetStore.files.includes(inode)) assetStore.files.splice(assetStore.files.indexOf(inode), 1);\n else assetStore.folders.splice(assetStore.folders.indexOf(inode), 1);\n assetStore.idMap.delete(inode);\n socket.emit(\"Inode.Move\", { inode, target });\n }\n select(event: MouseEvent, inode: number) {\n if (event.shiftKey && assetStore.selected.length > 0) {\n const inodes = [...assetStore.files, ...assetStore.folders];\n const start = inodes.indexOf(assetStore.selected[assetStore.selected.length - 1]);\n const end = inodes.indexOf(inode);\n for (let i = start; i !== end; start < end ? i++ : i--) {\n if (i === start) continue;\n assetStore.selected.push(inodes[i]);\n }\n assetStore.selected.push(inodes[end]);\n } else {\n if (!event.ctrlKey) {\n assetStore.clearSelected();\n }\n assetStore.selected.push(inode);\n }\n }\n startDrag(event: DragEvent, file: number) {\n if (event.dataTransfer === null) return;\n event.dataTransfer.setData(\"Hack\", \"ittyHack\");\n event.dataTransfer.dropEffect = \"move\";\n if (!assetStore.selected.includes(file)) assetStore.selected.push(file);\n this.draggingSelection = true;\n }\n moveDrag(event: DragEvent) {\n if ((event.target).classList.contains(\"folder\"))\n (event.target).classList.add(\"inode-selected\");\n }\n leaveDrag(event: DragEvent) {\n if ((event.target).classList.contains(\"folder\"))\n (event.target).classList.remove(\"inode-selected\");\n }\n stopDrag(event: DragEvent, target: number) {\n (event.target).classList.remove(\"inode-selected\");\n if (this.draggingSelection) {\n if (\n (target === assetStore.root || assetStore.folders.includes(target)) &&\n !assetStore.selected.includes(target)\n ) {\n for (const inode of assetStore.selected) {\n this.moveInode(inode, target);\n }\n }\n assetStore.clearSelected();\n } else if (event.dataTransfer && event.dataTransfer.files.length > 0) {\n this.upload(event.dataTransfer.files, target);\n }\n this.draggingSelection = false;\n }\n prepareUpload() {\n document.getElementById(\"files\")!.click();\n }\n upload(fls?: FileList, target?: number) {\n const files = (document.getElementById(\"files\")!).files;\n if (fls === undefined) {\n if (files) fls = files;\n else return;\n }\n if (target === undefined) target = this.currentFolder;\n const CHUNK_SIZE = 100000;\n for (const file of fls) {\n const uuid = uuidv4();\n const slices = Math.ceil(file.size / CHUNK_SIZE);\n for (let slice = 0; slice < slices; slice++) {\n const fr = new FileReader();\n fr.readAsArrayBuffer(\n file.slice(\n slice * CHUNK_SIZE,\n slice * CHUNK_SIZE + Math.min(CHUNK_SIZE, file.size - slice * CHUNK_SIZE),\n ),\n );\n fr.onload = e => {\n socket.emit(\"Asset.Upload\", {\n name: file.name,\n directory: target,\n data: fr.result,\n slice,\n totalSlices: slices,\n uuid,\n });\n };\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./asset_node.vue?vue&type=template&id=6d718094&scoped=true&\"\nimport script from \"./asset_node.vue?vue&type=script&lang=ts&\"\nexport * from \"./asset_node.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d718094\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=bc30fc14&scoped=true&\"\nimport script from \"./login.vue?vue&type=script&lang=ts&\"\nexport * from \"./login.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc30fc14\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Initiative\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('draggable',{attrs:{\"id\":\"initiative-list\",\"setData\":_vm.fakeSetData,\"disabled\":!_vm.$store.state.game.IS_DM},on:{\"change\":_vm.updateOrder},model:{value:(_vm.data),callback:function ($$v) {_vm.data=$$v},expression:\"data\"}},[_vm._l((_vm.data),function(actor){return [_c('div',{key:actor.uuid,staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"flex-end\"}},[_c('div',{staticClass:\"initiative-actor\",class:{'initiative-selected': _vm.currentActor === actor.uuid},style:({'cursor': _vm.$store.state.game.IS_DM && 'move'}),on:{\"mouseenter\":function($event){return _vm.toggleHighlight(actor, true)},\"mouseleave\":function($event){return _vm.toggleHighlight(actor, false)}}},[(actor.has_img)?[_c('img',{attrs:{\"src\":actor.source,\"width\":\"30px\",\"height\":\"30px\"}})]:[_c('span',{staticStyle:{\"width\":\"auto\"}},[_vm._v(_vm._s(actor.source))])],_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(actor.initiative),expression:\"actor.initiative\",modifiers:{\"lazy\":true,\"number\":true}}],class:{'notAllowed': !_vm.owns(actor)},attrs:{\"type\":\"text\",\"placeholder\":\"value\",\"disabled\":!_vm.owns(actor)},domProps:{\"value\":(actor.initiative)},on:{\"change\":[function($event){_vm.$set(actor, \"initiative\", _vm._n($event.target.value))},function($event){return _vm.syncInitiative(actor)}],\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('div',{staticClass:\"initiative-effects-icon\",class:{'notAllowed': !_vm.owns(actor)},staticStyle:{\"opacity\":\"0.6\"},on:{\"click\":function($event){_vm.createEffect(actor, _vm.getDefaultEffect(), true)}}},[_c('i',{staticClass:\"fas fa-stopwatch\"}),(actor.effects)?[_vm._v(_vm._s(actor.effects.length))]:[_vm._v(\"0\")]],2),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': actor.visible ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.toggleOption(actor, 'visible')}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': actor.group ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.toggleOption(actor, 'group')}}},[_c('i',{staticClass:\"fas fa-users\"})]),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': _vm.owns(actor) ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.removeInitiative(actor.uuid, true, true)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])],2),(actor.effects)?_c('div',{staticClass:\"initiative-effect\"},_vm._l((actor.effects),function(effect){return _c('div',{key:effect.uuid},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(effect.name),expression:\"effect.name\"}],attrs:{\"type\":\"text\",\"size\":effect.name.length || 1},domProps:{\"value\":(effect.name)},on:{\"change\":function($event){return _vm.updateEffect(actor.uuid, effect, true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(effect, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(effect.turns),expression:\"effect.turns\"}],attrs:{\"type\":\"text\",\"size\":effect.turns.toString().length || 1},domProps:{\"value\":(effect.turns)},on:{\"change\":function($event){return _vm.updateEffect(actor.uuid, effect, true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(effect, \"turns\", $event.target.value)}}})])}),0):_vm._e()])]})],2),_c('div',{attrs:{\"id\":\"initiative-bar\"}},[_c('div',{attrs:{\"id\":\"initiative-round\"}},[_vm._v(\"Round \"+_vm._s(_vm.roundCounter))]),_c('div',{staticStyle:{\"display\":\"flex\"}}),_c('div',{staticClass:\"initiative-bar-button\",style:(_vm.visionLock ? 'background-color: #82c8a0' : ''),on:{\"click\":_vm.toggleVisionLock}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{staticClass:\"initiative-bar-button\",style:(_vm.cameraLock ? 'background-color: #82c8a0' : ''),on:{\"click\":function($event){_vm.cameraLock = !_vm.cameraLock}}},[_c('i',{staticClass:\"fas fa-video\"})]),_c('div',{staticClass:\"initiative-bar-button\",class:{'notAllowed': !_vm.$store.state.game.IS_DM},on:{\"click\":function($event){_vm.setRound(0, true); _vm.updateTurn(_vm.data[0].uuid, true)}}},[_c('i',{staticClass:\"fas fa-sync-alt\"})]),_c('div',{staticClass:\"initiative-bar-button\",class:{'notAllowed': !_vm.$store.state.game.IS_DM},on:{\"click\":_vm.nextTurn}},[_c('i',{staticClass:\"fas fa-chevron-right\"})])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=template&id=62228cde&scoped=true&\"","import { layerManager } from \"@/game/layers/manager\";\nimport { g2lx, g2ly } from \"@/game/units\";\nimport { EdgeIterator, TDS } from \"./tds\";\nimport { ccw, cw } from \"./triag\";\n\nexport function drawPolygon(polygon: number[][], colour?: string) {\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n ctx.beginPath();\n ctx.strokeStyle =\n colour === undefined ? `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})` : colour;\n ctx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) {\n ctx.lineTo(g2lx(point[0]), g2ly(point[1]));\n }\n ctx.closePath();\n ctx.stroke();\n}\n\nexport function drawPolygonL(polygon: number[][], colour?: string) {\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n ctx.beginPath();\n ctx.strokeStyle =\n colour === undefined ? `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})` : colour;\n ctx.moveTo(polygon[0][0], polygon[0][1]);\n for (const point of polygon) {\n ctx.lineTo(point[0], point[1]);\n }\n ctx.closePath();\n ctx.stroke();\n}\n\nfunction x(xx: number, local: boolean) {\n if (local) return xx;\n else return g2lx(xx);\n}\n\nfunction y(yy: number, local: boolean) {\n if (local) return yy;\n else return g2ly(yy);\n}\n\nlet I = 0;\nlet J = 0;\n\nfunction drl(ctx: CanvasRenderingContext2D, from: number[], to: number[], constrained: boolean, local: boolean) {\n // J++;\n // if (constrained) {\n // I++;\n // console.log(\"*\", from, to);\n // } else {\n // console.log(\" \", from, to);\n // }\n ctx.beginPath();\n ctx.strokeStyle = constrained ? \"rgba(255, 0, 0, 0.30)\" : \"rgba(0, 0, 0, 0.30)\";\n ctx.moveTo(x(from[0], local), y(from[1], local));\n ctx.lineTo(x(to[0], local), y(to[1], local));\n ctx.closePath();\n ctx.stroke();\n}\n\nfunction drawPolygonT(tds: TDS, local = true, clear = true, logs: 0 | 1 | 2 = 0) {\n I = 0;\n J = 0;\n let T = 0;\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n if (clear) ctx.clearRect(0, 0, 2000, 1000);\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n const ei = new EdgeIterator(tds);\n while (ei.valid) {\n ei.next();\n ei.collect();\n }\n ei.collect();\n do {\n const fromP = ei.edge.first!.vertices[ccw(ei.edge.second)]!.point!;\n const toP = ei.edge.first!.vertices[cw(ei.edge.second)]!.point!;\n if (logs > 0) {\n if (fromP[0] === -Infinity || toP[0] === -Infinity) {\n ei.next();\n continue;\n }\n J++;\n if (ei.edge.first!.constraints[ei.edge.second]) {\n I++;\n if (logs === 2) console.log(`Edge: (*) ${fromP} > ${toP}`);\n } else if (logs === 2) console.log(`Edge: ${fromP} > ${toP}`);\n }\n do {\n ei.next();\n ei.collect();\n } while (ei.valid);\n } while (ei.pos !== null);\n for (const t of tds.triangles) {\n if (t.isInfinite()) continue;\n T++;\n const po = [];\n ctx.fillStyle = \"red\";\n if (t.vertices[0] !== undefined) {\n po.push(t.vertices[0]!.point);\n ctx.beginPath();\n ctx.arc(x(t.vertices[0]!.point![0], local), y(t.vertices[0]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (t.vertices[1] !== undefined) {\n po.push(t.vertices[1]!.point);\n ctx.arc(x(t.vertices[1]!.point![0], local), y(t.vertices[1]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (t.vertices[2] !== undefined) {\n po.push(t.vertices[2]!.point);\n ctx.arc(x(t.vertices[2]!.point![0], local), y(t.vertices[2]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (logs === 2) console.log(\"[T] \", ...po, t.constraints);\n\n ctx.moveTo(x(t.vertices[0]!.point![0], local), y(t.vertices[0]!.point![1], local));\n if (t.vertices[0] !== undefined && t.vertices[1] !== undefined)\n drl(ctx, t.vertices[0]!.point!, t.vertices[1]!.point!, t.constraints[2], local);\n if (t.vertices[1] !== undefined && t.vertices[2] !== undefined)\n drl(ctx, t.vertices[1]!.point!, t.vertices[2]!.point!, t.constraints[0], local);\n if (t.vertices[2] !== undefined && t.vertices[0] !== undefined)\n drl(ctx, t.vertices[2]!.point!, t.vertices[0]!.point!, t.constraints[1], local);\n }\n if (logs > 0) {\n console.log(`Edges: ${I}/${J}`);\n console.log(`Faces: ${T}`);\n }\n}\n\n(window).DP = drawPolygon;\n(window).DPL = drawPolygonL;\n(window).DPT = drawPolygonT;\n","import { render, staticRenderFns } from \"./accordion.vue?vue&type=template&id=0bf2b7ba&scoped=true&\"\nimport script from \"./accordion.vue?vue&type=script&lang=ts&\"\nexport * from \"./accordion.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0bf2b7ba\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=style&index=0&lang=css&\"","import * as tinycolor from \"tinycolor2\";\n\nimport { calcFontScale } from \"@/core/utils\";\nimport { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerCircularToken } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lz } from \"@/game/units\";\n\nexport class CircularToken extends Circle {\n type = \"circulartoken\";\n text: string;\n font: string;\n constructor(\n center: GlobalPoint,\n r: number,\n text: string,\n font: string,\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(center, r, fillColour, strokeColour, uuid);\n this.text = text;\n this.font = font;\n }\n asDict(): ServerCircularToken {\n return Object.assign(this.getBaseDict(), {\n radius: this.r,\n text: this.text,\n font: this.font,\n });\n }\n fromDict(data: ServerCircularToken) {\n super.fromDict(data);\n this.r = data.radius;\n this.text = data.text;\n this.font = data.font;\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.font = this.font;\n ctx.save();\n const dest = g2l(this.center());\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n const xs = calcFontScale(ctx, this.text, g2lz(this.r), g2lz(this.r));\n const ys = 0;\n ctx.transform(xs, ys, -ys, xs, dest.x, dest.y);\n ctx.fillStyle = tinycolor.mostReadable(this.fillColour, [\"#000\", \"#fff\"]).toHexString();\n ctx.fillText(this.text, 0, 0);\n ctx.restore();\n }\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.name === \"\" || this.name === \"Unknown shape\" ? this.text : this.name,\n has_img: false,\n effects: [],\n index: Infinity,\n };\n }\n}\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Text } from \"@/game/shapes/text\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\n\nexport class AnnotationManager {\n annotationText: Text;\n annotationRect: Rect;\n layer: Layer | undefined;\n shown: boolean = false;\n\n constructor() {\n const origin = new GlobalPoint(0, 0);\n this.annotationText = new Text(origin, \"\", \"bold 20px serif\", 0, \"rgba(230, 230, 230, 1)\");\n this.annotationRect = new Rect(origin, 0, 0, \"rgba(0, 0, 0, 0.6)\");\n }\n\n setActiveText(text: string) {\n if (this.layer === undefined) {\n if (layerManager.hasLayer(\"draw\")) {\n this.layer = layerManager.getLayer(\"draw\")!;\n this.layer.addShape(this.annotationRect, false);\n this.layer.addShape(this.annotationText, false);\n } else {\n console.warn(\"There is no draw layer to draw annotations on!\");\n return;\n }\n }\n this.shown = text !== \"\";\n this.annotationText.refPoint = l2g(new LocalPoint(this.layer.canvas.width / 2, 50));\n this.annotationText.text = text;\n const width = this.shown ? this.annotationText.getMaxWidth(this.layer.ctx) + 10 : 0;\n const height = this.shown ? this.annotationText.getMaxHeight(this.layer.ctx) + 10 : 0;\n this.annotationRect.refPoint = l2g(new LocalPoint(this.layer.canvas.width / 2 - width / 2, 30));\n this.annotationRect.w = width / gameStore.zoomFactor;\n this.annotationRect.h = height / gameStore.zoomFactor;\n this.layer.invalidate(true);\n }\n}\n","import { render, staticRenderFns } from \"./menu.vue?vue&type=template&id=c7fe324c&scoped=true&\"\nimport script from \"./menu.vue?vue&type=script&lang=ts&\"\nexport * from \"./menu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c7fe324c\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./contextmenu.vue?vue&type=template&id=256dde9c&\"\nimport script from \"./contextmenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./contextmenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./contextmenu.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Label manager\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Category\"}},[_vm._v(\"Cat.\")])]),_c('div',{staticClass:\"header name\"},[_vm._v(\"Name\")]),_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Visible\"}},[_vm._v(\"Vis.\")])]),_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Delete\"}},[_vm._v(\"Del.\")])]),_c('div',{staticClass:\"separator spanrow\",staticStyle:{\"margin\":\"0 0 7px\"}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search),expression:\"search\"}],ref:\"search\",staticClass:\"spanrow\",attrs:{\"type\":\"text\",\"placeholder\":\"search\"},domProps:{\"value\":(_vm.search)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.search=$event.target.value}}})]),_c('div',{staticClass:\"grid scroll\"},[_vm._l((_vm.categories),function(category){return [_vm._l((_vm.labels[category]),function(label){return [_c('div',{key:'row-'+label.uuid,staticClass:\"row\",on:{\"click\":function($event){return _vm.selectLabel(label.uuid)}}},[(label.category)?[_c('div',{key:'cat-'+label.uuid},[_vm._v(_vm._s(label.category))]),_c('div',{key:'name-'+label.uuid,staticClass:\"name\"},[_vm._v(_vm._s(label.name))])]:_vm._e(),(!label.category)?[_c('div',{key:'cat-'+label.uuid}),_c('div',{key:'name-'+label.uuid,staticClass:\"name\"},[_vm._v(_vm._s(label.name))])]:_vm._e(),_c('div',{key:'visible-'+label.uuid,class:{'lower-opacity': !label.visible},style:({textAlign: 'center'}),on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleVisibility(label)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{key:'delete-'+label.uuid,on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteLabel(label.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])],2)]})]}),(_vm.labels.length === 0)?[_c('div',{attrs:{\"id\":\"no-labels\"}},[_vm._v(\"No labels exist yet\")])]:_vm._e()],2),_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"separator spanrow\"}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newCategory),expression:\"newCategory\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newCategory)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newCategory=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newName),expression:\"newName\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newName=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('button',{attrs:{\"id\":\"addLabelButton\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.addLabel($event)}}},[_vm._v(\"Add\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=template&id=e477c214&scoped=true&\"","import {\n ServerAsset,\n ServerCircle,\n ServerCircularToken,\n ServerLine,\n ServerMultiLine,\n ServerPolygon,\n ServerRect,\n ServerShape,\n ServerText,\n} from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Asset } from \"@/game/shapes/asset\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { CircularToken } from \"@/game/shapes/circulartoken\";\nimport { Line } from \"@/game/shapes/line\";\nimport { MultiLine } from \"@/game/shapes/multiline\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { Text } from \"@/game/shapes/text\";\nimport { Polygon } from \"./polygon\";\n\nexport function createShapeFromDict(shape: ServerShape) {\n let sh: Shape;\n\n // A fromJSON and toJSON on Shape would be cleaner but ts does not allow for static abstracts so yeah.\n\n // Shape Type specifics\n\n const refPoint = new GlobalPoint(shape.x, shape.y);\n if (shape.type_ === \"rect\") {\n const rect = shape;\n sh = new Rect(refPoint, rect.width, rect.height, rect.fill_colour, rect.stroke_colour, rect.uuid);\n } else if (shape.type_ === \"circle\") {\n const circ = shape;\n sh = new Circle(refPoint, circ.radius, circ.fill_colour, circ.stroke_colour, circ.uuid);\n } else if (shape.type_ === \"circulartoken\") {\n const token = shape;\n sh = new CircularToken(\n refPoint,\n token.radius,\n token.text,\n token.font,\n token.fill_colour,\n token.stroke_colour,\n token.uuid,\n );\n } else if (shape.type_ === \"line\") {\n const line = shape;\n sh = new Line(refPoint, new GlobalPoint(line.x2, line.y2), line.line_width, line.stroke_colour, line.uuid);\n } else if (shape.type_ === \"multiline\") {\n const multiline = shape;\n sh = new MultiLine(\n refPoint,\n multiline.points.map(p => new GlobalPoint(p.x, p.y)),\n multiline.line_width,\n multiline.stroke_colour,\n multiline.uuid,\n );\n } else if (shape.type_ === \"polygon\") {\n const polygon = shape;\n sh = new Polygon(\n refPoint,\n polygon.vertices.map(v => new GlobalPoint(v.x, v.y)),\n polygon.fill_colour,\n polygon.stroke_colour,\n polygon.uuid,\n );\n } else if (shape.type_ === \"text\") {\n const text = shape;\n sh = new Text(refPoint, text.text, text.font, text.angle, text.fill_colour, text.stroke_colour, text.uuid);\n } else if (shape.type_ === \"assetrect\") {\n const asset = shape;\n const img = new Image(asset.width, asset.height);\n if (asset.src.startsWith(\"http\")) img.src = new URL(asset.src).pathname;\n else img.src = asset.src;\n sh = new Asset(img, refPoint, asset.width, asset.height, asset.uuid);\n img.onload = () => {\n layerManager.getLayer(shape.layer)!.invalidate(false);\n };\n } else {\n return undefined;\n }\n sh.fromDict(shape);\n return sh;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SelectContext',{ref:\"selectcontext\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=template&id=048b3482&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"colour\":'rgba(255, 255, 255, 0.8)',\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"DM Settings\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\",on:{\"click\":_vm.handleClick}},[_c('div',{attrs:{\"id\":\"categories\"}},_vm._l((_vm.categories),function(category,c){return _c('div',{key:category,staticClass:\"category\",class:{'selected': _vm.selection === c},on:{\"click\":function($event){_vm.selection = c}}},[_vm._v(_vm._s(category))])}),0),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 0),expression:\"selection === 0\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Players\")]),_vm._l((_vm.$store.state.game.players),function(player){return _c('div',{key:player.id,staticClass:\"row smallrow\"},[_c('div',[_vm._v(_vm._s(player.name))]),_c('div',[_c('div',{on:{\"click\":function($event){return _vm.kickPlayer(player.id)}}},[_vm._v(\"Kick\")])])])}),(Object.values(_vm.$store.state.game.players).length === 0)?_c('div',{staticClass:\"row smallrow\"},[_c('div',{staticClass:\"spanrow\"},[_vm._v(\"There are no players yet, invite some using the link below!\")])]):_vm._e(),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Invite code\")]),_c('div',{staticClass:\"row\"},[_c('div',[_vm._v(\"Invitation URL:\")]),(_vm.showRefreshState)?[_c('InputCopyElement',{attrs:{\"value\":_vm.refreshState}})]:[_c('InputCopyElement',{attrs:{\"value\":_vm.invitationUrl}})]],2),_c('div',{staticClass:\"row\",on:{\"click\":_vm.refreshInviteCode}},[_c('div'),_c('div',[_c('button',[_vm._v(\"Refresh invitation code\")])])]),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Danger Zone\")]),_c('div',{staticClass:\"row\"},[_c('div',[(_vm.locked)?[_vm._v(\"Unlock\")]:[_vm._v(\"Lock\")],_vm._v(\" Session \"),_c('i',[_vm._v(\"(DM access only)\")])],2),_c('div',[_c('button',{staticClass:\"danger\",on:{\"click\":_vm.toggleSessionLock}},[(_vm.locked)?[_vm._v(\"Unlock\")]:[_vm._v(\"Lock\")],_vm._v(\" this Session\")],2)])]),_c('div',{staticClass:\"row\"},[_c('div',[_vm._v(\"Remove Session\")]),_c('div',[_c('button',{staticClass:\"danger\",on:{\"click\":_vm.deleteSession}},[_vm._v(\"Delete this Session\")])])])],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 1),expression:\"selection === 1\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"useGridInput\"}},[_vm._v(\"Use grid\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.useGrid),expression:\"useGrid\"}],attrs:{\"id\":\"useGridInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.useGrid)?_vm._i(_vm.useGrid,null)>-1:(_vm.useGrid)},on:{\"change\":function($event){var $$a=_vm.useGrid,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.useGrid=$$a.concat([$$v]))}else{$$i>-1&&(_vm.useGrid=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.useGrid=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"gridSizeInput\"}},[_vm._v(\"Grid Size (in pixels):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.gridSize),expression:\"gridSize\",modifiers:{\"number\":true}}],attrs:{\"id\":\"gridSizeInput\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.gridSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.gridSize=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"unitSizeInput\"}},[_vm._v(\"Unit Size (in ft.):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.unitSize),expression:\"unitSize\",modifiers:{\"number\":true}}],attrs:{\"id\":\"unitSizeInput\",\"type\":\"number\"},domProps:{\"value\":(_vm.unitSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.unitSize=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 2),expression:\"selection === 2\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Core\")]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fakePlayerInput\"}},[_vm._v(\"Fake player:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fakePlayer),expression:\"fakePlayer\"}],attrs:{\"id\":\"fakePlayerInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fakePlayer)?_vm._i(_vm.fakePlayer,null)>-1:(_vm.fakePlayer)},on:{\"change\":function($event){var $$a=_vm.fakePlayer,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fakePlayer=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fakePlayer=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fakePlayer=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"useFOWInput\"}},[_vm._v(\"Fill entire canvas with FOW:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fullFOW),expression:\"fullFOW\"}],attrs:{\"id\":\"useFOWInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fullFOW)?_vm._i(_vm.fullFOW,null)>-1:(_vm.fullFOW)},on:{\"change\":function($event){var $$a=_vm.fullFOW,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fullFOW=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fullFOW=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fullFOW=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fowLOS\"}},[_vm._v(\"Only show lights in LoS:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fowLOS),expression:\"fowLOS\"}],attrs:{\"id\":\"fowLOS\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fowLOS)?_vm._i(_vm.fowLOS,null)>-1:(_vm.fowLOS)},on:{\"change\":function($event){var $$a=_vm.fowLOS,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fowLOS=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fowLOS=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fowLOS=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fowOpacity\"}},[_vm._v(\"FOW opacity:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.fowOpacity),expression:\"fowOpacity\",modifiers:{\"number\":true}}],attrs:{\"id\":\"fowOpacity\",\"type\":\"number\",\"min\":\"0\",\"max\":\"1\",\"step\":\"0.1\"},domProps:{\"value\":(_vm.fowOpacity)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.fowOpacity=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Advanced\")]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"visionMode\"}},[_vm._v(\"Vision Mode:\")]),_c('div',[_c('select',{attrs:{\"id\":\"visionMode\"},on:{\"change\":_vm.changeVisionMode}},[_c('option',{domProps:{\"selected\":_vm.$store.state.game.visionMode === 'bvh'}},[_vm._v(\"BVH\")]),_c('option',{domProps:{\"selected\":_vm.$store.state.game.visionMode === 'triangle'}},[_vm._v(\"Triangle\")])])])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"vmininp\"}},[_vm._v(\"Minimal full vision (ft):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(_vm.visionRangeMin),expression:\"visionRangeMin\",modifiers:{\"lazy\":true,\"number\":true}}],attrs:{\"id\":\"vmininp\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.visionRangeMin)},on:{\"change\":function($event){_vm.visionRangeMin=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"vmaxinp\"}},[_vm._v(\"Maximal vision (ft):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(_vm.visionRangeMax),expression:\"visionRangeMax\",modifiers:{\"lazy\":true,\"number\":true}}],attrs:{\"id\":\"vmaxinp\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.visionRangeMax)},on:{\"change\":function($event){_vm.visionRangeMax=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=template&id=b908e87c&scoped=true&\"","import tinycolor from \"tinycolor2\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { aurasFromServer, aurasToServer } from \"@/game/comm/conversion/aura\";\nimport { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz } from \"@/game/units\";\n\nexport abstract class Shape {\n // Used to create class instance from server shape data\n abstract readonly type: string;\n // The unique ID of this shape\n readonly uuid: string;\n // The layer the shape is currently on\n layer!: string;\n\n // A reference point regarding that specific shape's structure\n protected _refPoint: GlobalPoint;\n\n // Fill colour of the shape\n fillColour: string = \"#000\";\n strokeColour: string = \"rgba(0,0,0,0)\";\n // The optional name associated with the shape\n name = \"Unknown shape\";\n nameVisible = true;\n\n // Associated trackers/auras/owners\n trackers: Tracker[] = [];\n auras: Aura[] = [];\n labels: Label[] = [];\n protected _owners: string[] = [];\n\n // Block light sources\n visionObstruction = false;\n // Prevent shapes from overlapping with this shape\n movementObstruction = false;\n // Does this shape represent a playable token\n isToken = false;\n // Show a highlight box\n showHighlight = false;\n\n // Mouseover annotation\n annotation: string = \"\";\n\n // Draw modus to use\n globalCompositeOperation: string = \"source-over\";\n\n // Additional options for specialized uses\n options: Map = new Map();\n\n constructor(refPoint: GlobalPoint, fillColour?: string, strokeColour?: string, uuid?: string) {\n this._refPoint = refPoint;\n this.uuid = uuid || uuidv4();\n if (fillColour !== undefined) this.fillColour = fillColour;\n if (strokeColour !== undefined) this.strokeColour = strokeColour;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n this._refPoint = point;\n }\n\n abstract getBoundingBox(): BoundingRect;\n\n // If inWorldCoord is\n abstract contains(point: GlobalPoint): boolean;\n\n abstract center(): GlobalPoint;\n abstract center(centerPoint: GlobalPoint): void;\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n // for (const aura of this.auras) {\n // if (aura.value > 0) {\n // const auraCircle = new Circle(this.center(), aura.value);\n // if (auraCircle.visibleInCanvas(canvas)) return true;\n // }\n // }\n return false;\n }\n\n // Code to snap a shape to the grid\n // This is shape dependent as the shape refPoints are shape specific in\n abstract snapToGrid(): void;\n abstract resizeToGrid(): void;\n abstract resize(resizePoint: number, point: LocalPoint): void;\n\n abstract get points(): number[][];\n\n getPointIndex(p: GlobalPoint, delta = 0): number {\n for (const [idx, point] of this.points.entries()) {\n if (Math.abs(p.x - point[0]) <= delta && Math.abs(p.y - point[1]) <= delta) return idx;\n }\n return -1;\n }\n\n getPointOrientation(i: number): Vector {\n const prev = GlobalPoint.fromArray(this.points[(this.points.length + i - 1) % this.points.length]);\n const point = GlobalPoint.fromArray(this.points[i]);\n const next = GlobalPoint.fromArray(this.points[(i + 1) % this.points.length]);\n const vec = next.subtract(prev);\n const mid = prev.add(vec.multiply(0.5));\n return point.subtract(mid).normalize();\n }\n\n invalidate(skipLightUpdate: boolean) {\n const l = layerManager.getLayer(this.layer);\n if (l) l.invalidate(skipLightUpdate);\n }\n\n checkVisionSources(recalculate = true) {\n const self = this;\n const obstructionIndex = gameStore.visionBlockers.indexOf(this.uuid);\n let update = false;\n if (this.visionObstruction && obstructionIndex === -1) {\n gameStore.visionBlockers.push(this.uuid);\n update = true;\n } else if (!this.visionObstruction && obstructionIndex >= 0) {\n gameStore.visionBlockers.splice(obstructionIndex, 1);\n update = true;\n }\n if (update && recalculate) gameStore.recalculateVision();\n\n // Check if the visionsource auras are in the gameManager\n this.auras.forEach(au => {\n const ls = gameStore.visionSources;\n const i = ls.findIndex(o => o.aura === au.uuid);\n if (au.visionSource && i === -1) {\n ls.push({ shape: self.uuid, aura: au.uuid });\n } else if (!au.visionSource && i >= 0) {\n ls.splice(i, 1);\n }\n });\n // Check if anything in the gameManager referencing this shape is in fact still a visionsource\n for (let i = gameStore.visionSources.length - 1; i >= 0; i--) {\n const ls = gameStore.visionSources[i];\n if (ls.shape === self.uuid) {\n if (!self.auras.some(a => a.uuid === ls.aura && a.visionSource)) gameStore.visionSources.splice(i, 1);\n }\n }\n }\n\n setMovementBlock(blocksMovement: boolean, recalculate = true) {\n this.movementObstruction = blocksMovement || false;\n const obstructionIndex = gameStore.movementblockers.indexOf(this.uuid);\n let update = false;\n if (this.movementObstruction && obstructionIndex === -1) {\n gameStore.movementblockers.push(this.uuid);\n update = true;\n } else if (!this.movementObstruction && obstructionIndex >= 0) {\n gameStore.movementblockers.splice(obstructionIndex, 1);\n update = true;\n }\n if (update && recalculate) gameStore.recalculateMovement();\n }\n\n setIsToken(isToken: boolean) {\n this.isToken = isToken;\n if (this.ownedBy()) {\n const i = gameStore.ownedtokens.indexOf(this.uuid);\n if (this.isToken && i === -1) gameStore.ownedtokens.push(this.uuid);\n else if (!this.isToken && i >= 0) gameStore.ownedtokens.splice(i, 1);\n }\n }\n\n abstract asDict(): ServerShape;\n getBaseDict(): ServerShape {\n return {\n type_: this.type,\n uuid: this.uuid,\n x: this.refPoint.x,\n y: this.refPoint.y,\n layer: this.layer,\n draw_operator: this.globalCompositeOperation,\n movement_obstruction: this.movementObstruction,\n vision_obstruction: this.visionObstruction,\n auras: aurasToServer(this.auras),\n trackers: this.trackers,\n labels: this.labels,\n owners: this._owners,\n fill_colour: this.fillColour,\n stroke_colour: this.strokeColour,\n name: this.name,\n name_visible: this.nameVisible,\n annotation: this.annotation,\n is_token: this.isToken,\n options: JSON.stringify([...this.options]),\n };\n }\n fromDict(data: ServerShape) {\n this.layer = data.layer;\n this.globalCompositeOperation = data.draw_operator;\n this.movementObstruction = data.movement_obstruction;\n this.visionObstruction = data.vision_obstruction;\n this.auras = aurasFromServer(data.auras);\n this.trackers = data.trackers;\n this.labels = data.labels;\n this._owners = data.owners;\n this.isToken = data.is_token;\n this.nameVisible = data.name_visible;\n if (data.annotation) this.annotation = data.annotation;\n if (data.name) this.name = data.name;\n if (data.options) this.options = new Map(JSON.parse(data.options));\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n if (this.globalCompositeOperation !== undefined) ctx.globalCompositeOperation = this.globalCompositeOperation;\n else ctx.globalCompositeOperation = \"source-over\";\n if (this.showHighlight) {\n const bbox = this.getBoundingBox();\n ctx.strokeStyle = \"red\";\n ctx.strokeRect(g2lx(bbox.topLeft.x) - 5, g2ly(bbox.topLeft.y) - 5, g2lz(bbox.w) + 10, g2lz(bbox.h) + 10);\n }\n }\n\n drawAuras(ctx: CanvasRenderingContext2D) {\n for (const aura of this.auras) {\n if (aura.value === 0 && aura.dim === 0) return;\n ctx.beginPath();\n\n const loc = g2l(this.center());\n const innerRange = g2lr(aura.value + aura.dim);\n\n if (aura.dim === 0) ctx.fillStyle = aura.colour;\n else {\n const gradient = ctx.createRadialGradient(\n loc.x,\n loc.y,\n g2lr(aura.value),\n loc.x,\n loc.y,\n g2lr(aura.value + aura.dim),\n );\n const tc = tinycolor(aura.colour);\n ctx.fillStyle = gradient;\n gradient.addColorStop(0, aura.colour);\n gradient.addColorStop(1, tc.setAlpha(0).toRgbString());\n }\n if (!aura.visionSource || aura.lastPath === undefined) {\n ctx.arc(loc.x, loc.y, innerRange, 0, 2 * Math.PI);\n ctx.fill();\n } else {\n try {\n ctx.fill(aura.lastPath);\n } catch (e) {\n ctx.arc(loc.x, loc.y, innerRange, 0, 2 * Math.PI);\n ctx.fill();\n console.warn(e);\n }\n }\n }\n }\n\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.name,\n has_img: false,\n effects: [],\n index: Infinity,\n };\n }\n\n moveLayer(layer: string, sync: boolean) {\n const oldLayer = layerManager.getLayer(this.layer);\n const newLayer = layerManager.getLayer(layer);\n if (oldLayer === undefined || newLayer === undefined) return;\n this.layer = layer;\n // Update layer shapes\n oldLayer.shapes.splice(oldLayer.shapes.indexOf(this), 1);\n newLayer.shapes.push(this);\n // Revalidate layers (light should at most be redone once)\n oldLayer.invalidate(true);\n newLayer.invalidate(false);\n // Sync!\n if (sync) socket.emit(\"Shape.Layer.Change\", { uuid: this.uuid, layer });\n }\n\n get owners() {\n return Object.freeze(this._owners.slice());\n }\n\n ownedBy(username?: string) {\n if (username === undefined) username = gameStore.username;\n return gameStore.IS_DM || this._owners.includes(username) || (gameStore.FAKE_PLAYER && gameStore.activeTokens.includes(this.uuid));\n }\n\n addOwner(owner: string) {\n if (!this._owners.includes(owner)) this._owners.push(owner);\n }\n\n updateOwner(oldValue: string, newValue: string) {\n const ownerIndex = this._owners.findIndex(o => o === oldValue);\n if (ownerIndex >= 0) this._owners.splice(ownerIndex, 1, newValue);\n else this.addOwner(newValue);\n }\n\n removeOwner(owner: string) {\n const ownerIndex = this._owners.findIndex(o => o === owner);\n this._owners.splice(ownerIndex, 1);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"menuContainer\"}},[_c('div',{ref:\"rm\",style:({\n left: _vm.visible.settings ? '200px' : '0',\n top: _vm.visible.locations ? '100px' : '0'\n }),attrs:{\"id\":\"radialmenu\"}},[_c('div',{staticClass:\"rm-wrapper\"},[_c('div',{staticClass:\"rm-toggler\"},[_c('ul',{staticClass:\"rm-list\",class:{ 'rm-list-dm': _vm.IS_DM }},[(_vm.IS_DM)?_c('li',{staticClass:\"rm-item\",attrs:{\"id\":\"rm-locations\"},on:{\"click\":function($event){_vm.visible.locations = !_vm.visible.locations}}},[_vm._m(0)]):_vm._e(),_c('li',{staticClass:\"rm-item\",attrs:{\"id\":\"rm-settings\"},on:{\"click\":function($event){_vm.visible.settings = !_vm.visible.settings}}},[_vm._m(1)])])]),_vm._m(2)])]),_c('transition',{attrs:{\"name\":\"settings\"},on:{\"enter\":function($event){_vm.$refs.rm.style.transition = 'left 500ms'}}},[(_vm.visible.settings)?_c('div',{ref:\"settings\",attrs:{\"id\":\"menu\"},on:{\"click\":_vm.settingsClick}},[_c('div',{staticStyle:{\"width\":\"200px\",\"height\":\"90%\",\"overflow-y\":\"auto\",\"overflow-x\":\"hidden\"}},[(_vm.IS_DM)?[_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Assets\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('a',{staticClass:\"actionButton\",attrs:{\"href\":\"/assets\",\"target\":\"blank\",\"title\":\"Open asset manager\"}},[_c('i',{staticClass:\"fas fa-external-link-alt\"})]),_c('div',{staticClass:\"directory\",attrs:{\"id\":\"menu-tokens\"}},[_c('asset-node',{attrs:{\"asset\":_vm.assets}}),(!_vm.assets)?_c('div',[_vm._v(\"No assets\")]):_vm._e()],1)]),_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Notes\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('div',{staticClass:\"menu-accordion-subpanel\",attrs:{\"id\":\"menu-notes\"}},[_c('a',{staticClass:\"actionButton\",on:{\"click\":_vm.createNote}},[_c('i',{staticClass:\"far fa-plus-square\"})]),_vm._l((_vm.notes),function(note){return _c('div',{key:note.uuid,staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.openNote(note)}}},[_vm._v(_vm._s(note.title || \"[?]\"))])}),(!_vm.notes.length)?_c('div',[_vm._v(\"No notes\")]):_vm._e()],2)]),_c('button',{staticClass:\"menu-accordion\",on:{\"click\":_vm.openDmSettings}},[_vm._v(\"DM Options\")])]:_vm._e(),_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Client Options\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('div',{staticClass:\"menu-accordion-subpanel\"},[_c('label',{attrs:{\"for\":\"gridColour\"}},[_vm._v(\"Grid Colour:\")]),_c('color-picker',{attrs:{\"id\":\"gridColour\",\"color\":_vm.gridColour},on:{\"update:color\":function($event){_vm.gridColour=$event}}}),_c('label',{attrs:{\"for\":\"fowColour\"}},[_vm._v(\"FOW Colour:\")]),_c('color-picker',{attrs:{\"id\":\"fowColour\",\"color\":_vm.fowColour},on:{\"update:color\":function($event){_vm.fowColour=$event}}}),_c('label',{attrs:{\"for\":\"rulerColour\"}},[_vm._v(\"Ruler Colour:\")]),_c('color-picker',{attrs:{\"id\":\"rulerColour\",\"color\":_vm.rulerColour},on:{\"update:color\":function($event){_vm.rulerColour=$event}}})],1)])],2),_c('router-link',{staticClass:\"menu-accordion\",staticStyle:{\"text-decoration\":\"none\",\"display\":\"inline-block\",\"position\":\"absolute\",\"bottom\":\"0\"},attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"Exit\")])],1):_vm._e()]),_c('transition',{attrs:{\"name\":\"locations\"},on:{\"enter\":function($event){_vm.$refs.rm.style.transition = 'top 500ms'}}},[(_vm.IS_DM && _vm.visible.locations)?_c('div',{attrs:{\"id\":\"locations-menu\"}},[_c('div',[_vm._l((_vm.locations),function(location){return _c('div',{key:location,on:{\"click\":function($event){return _vm.changeLocation(location)}}},[_vm._v(_vm._s(location))])}),_c('div',{on:{\"click\":_vm.createLocation}},[_c('i',{staticClass:\"fas fa-plus\"})])],2)]):_vm._e()]),_c('img',{attrs:{\"id\":\"dragImage\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"#\"}},[_c('i',{staticClass:\"far fa-compass\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"#\"}},[_c('i',{staticClass:\"fas fa-cog\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"rm-topper\"},[_c('i',{staticClass:\"icon-share-alt\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=template&id=c7fe324c&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.note !== null)?_c('modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('span',{on:{\"click\":function($event){return _vm.$refs.title.select()}}},[_c('i',{staticClass:\"fas fa-pencil-alt\",staticStyle:{\"font-size\":\"15px\"}})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.title),expression:\"note.title\"}],ref:\"title\",domProps:{\"value\":(_vm.note.title)},on:{\"change\":_vm.updateNote,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.note, \"title\", $event.target.value)}}}),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}],null,false,1320213373)},[_c('div',{staticClass:\"modal-body\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.text),expression:\"note.text\"}],ref:\"textarea\",style:({'height': _vm.calcHeight()}),domProps:{\"value\":(_vm.note.text)},on:{\"change\":_vm.updateNote,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.note, \"text\", $event.target.value)}}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.removeNote}},[_c('i',{staticClass:\"far fa-trash-alt\"}),_vm._v(\" Remove\\n \")])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=template&id=7a3669fd&scoped=true&\"","\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport SelectContext from \"@/game/ui/tools/selectcontext.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\nimport SelectionInfo from \"../selection/selection_info.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint, LocalPoint, Ray, Vector } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz, l2g, l2gz } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\nexport enum SelectOperations {\n Noop,\n Resize,\n Drag,\n GroupSelect,\n}\n\nconst start = new GlobalPoint(-1000, -1000);\n\n@Component({\n components: {\n SelectContext,\n },\n})\nexport default class SelectTool extends Tool {\n name = \"Select\";\n showContextMenu = false;\n active = false;\n\n mode = SelectOperations.Noop;\n resizePoint = 0;\n deltaChanged = false;\n // Because we never drag from the asset's (0, 0) coord and want a smoother drag experience\n // we keep track of the actual offset within the asset.\n dragRay = new Ray(new LocalPoint(0, 0), new Vector(0, 0));\n selectionStartPoint = start;\n selectionHelper = new Rect(start, 0, 0);\n created() {\n this.selectionHelper.globalCompositeOperation = \"source-over\";\n }\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n if (!this.selectionHelper.owners.includes(gameStore.username)) {\n this.selectionHelper.addOwner(gameStore.username);\n }\n\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n\n let hit = false;\n // The selectionStack allows for lower positioned objects that are selected to have precedence during overlap.\n let selectionStack;\n if (!layer.selection.length) selectionStack = layer.shapes;\n else selectionStack = layer.shapes.concat(layer.selection);\n for (let i = selectionStack.length - 1; i >= 0; i--) {\n const shape = selectionStack[i];\n\n this.resizePoint = shape.getPointIndex(globalMouse, l2gz(3));\n\n // Resize case, a corner is selected\n if (this.resizePoint >= 0) {\n layer.selection = [shape];\n getRef(\"selectionInfo\").shape = shape;\n this.mode = SelectOperations.Resize;\n layer.invalidate(true);\n hit = true;\n break;\n\n // Drag case, a shape is selected\n } else if (shape.contains(globalMouse)) {\n const selection = shape;\n if (layer.selection.indexOf(selection) === -1) {\n layer.selection = [selection];\n getRef(\"selectionInfo\").shape = selection;\n }\n this.mode = SelectOperations.Drag;\n const localRefPoint = g2l(selection.refPoint);\n this.dragRay = new Ray(localRefPoint, mouse.subtract(localRefPoint));\n layer.invalidate(true);\n hit = true;\n break;\n }\n }\n\n // GroupSelect case, draw a selection box to select multiple shapes\n if (!hit) {\n this.mode = SelectOperations.GroupSelect;\n for (const selection of layer.selection) getRef(\"selectionInfo\").shape = selection;\n\n this.selectionStartPoint = globalMouse;\n\n this.selectionHelper.refPoint = this.selectionStartPoint;\n this.selectionHelper.w = 0;\n this.selectionHelper.h = 0;\n\n layer.selection = [this.selectionHelper];\n layer.invalidate(true);\n }\n this.active = true;\n }\n onMouseMove(event: MouseEvent) {\n // if (!this.active) return; we require mousemove for the resize cursor\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n this.deltaChanged = false;\n\n if (this.mode === SelectOperations.GroupSelect) {\n // Currently draw on active layer\n const endPoint = globalMouse;\n\n this.selectionHelper.w = Math.abs(endPoint.x - this.selectionStartPoint.x);\n this.selectionHelper.h = Math.abs(endPoint.y - this.selectionStartPoint.y);\n this.selectionHelper.refPoint = new GlobalPoint(\n Math.min(this.selectionStartPoint.x, endPoint.x),\n Math.min(this.selectionStartPoint.y, endPoint.y),\n );\n layer.invalidate(true);\n } else if (layer.selection.length) {\n const og = g2l(layer.selection[layer.selection.length - 1].refPoint);\n const origin = og.add(this.dragRay.direction);\n let delta = mouse.subtract(origin).multiply(1 / gameStore.zoomFactor);\n const ogDelta = delta;\n if (this.mode === SelectOperations.Drag) {\n // If we are on the tokens layer do a movement block check.\n if (layer.name === \"tokens\" && !(event.shiftKey && gameStore.IS_DM)) {\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n if (sel.uuid === this.selectionHelper.uuid) continue; // the selection helper should not be treated as a real shape.\n delta = calculateDelta(delta, sel);\n if (delta !== ogDelta) this.deltaChanged = true;\n }\n }\n // Actually apply the delta on all shapes\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n sel.refPoint = sel.refPoint.add(delta);\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision(true);\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: true });\n }\n }\n layer.invalidate(false);\n } else if (this.mode === SelectOperations.Resize) {\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n sel.resize(this.resizePoint, mouse);\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision(true);\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: true });\n }\n layer.invalidate(false);\n this.updateCursor(layer, globalMouse);\n }\n } else {\n this.updateCursor(layer, globalMouse);\n }\n } else {\n document.body.style.cursor = \"default\";\n }\n }\n onMouseUp(e: MouseEvent): void {\n if (!this.active) return;\n if (layerManager.getLayer() === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const layer = layerManager.getLayer()!;\n\n if (this.mode === SelectOperations.GroupSelect) {\n layer.clearSelection();\n layer.shapes.forEach(shape => {\n if (!shape.ownedBy()) return;\n if (shape === this.selectionHelper) return;\n const bbox = shape.getBoundingBox();\n if (!shape.ownedBy()) return;\n if (\n this.selectionHelper!.refPoint.x <= bbox.topRight.x &&\n this.selectionHelper!.refPoint.x + this.selectionHelper!.w >= bbox.topLeft.x &&\n this.selectionHelper!.refPoint.y <= bbox.botLeft.y &&\n this.selectionHelper!.refPoint.y + this.selectionHelper!.h >= bbox.topLeft.y\n ) {\n layer.selection.push(shape);\n }\n });\n\n // Push the selection helper as the last element of the selection\n // This makes sure that it will be the first one to be hit in the hit detection onMouseDown\n if (layer.selection.length > 0) layer.selection.push(this.selectionHelper);\n\n layer.invalidate(true);\n } else if (layer.selection.length) {\n layer.selection.forEach(sel => {\n if (!sel.ownedBy()) return;\n if (this.mode === SelectOperations.Drag) {\n if (\n this.dragRay.origin!.x === g2lx(sel.refPoint.x) &&\n this.dragRay.origin!.y === g2ly(sel.refPoint.y)\n )\n return;\n\n if (gameStore.useGrid && !e.altKey && !this.deltaChanged) {\n sel.snapToGrid();\n }\n\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision();\n if (sel.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n layer.invalidate(false);\n }\n if (this.mode === SelectOperations.Resize) {\n if (gameStore.useGrid && !e.altKey) {\n sel.resizeToGrid();\n }\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision();\n if (sel.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n layer.invalidate(false);\n }\n });\n }\n this.mode = SelectOperations.Noop;\n this.active = false;\n }\n onContextMenu(event: MouseEvent) {\n if (layerManager.getLayer() === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const layer = layerManager.getLayer()!;\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n\n for (const shape of layer.selection) {\n if (shape.contains(globalMouse) && shape !== this.selectionHelper) {\n layer.selection = [shape];\n getRef(\"selectionInfo\").shape = shape;\n layer.invalidate(true);\n (this.$parent.$refs.shapecontext).open(event, shape);\n return;\n }\n }\n (this.$refs.selectcontext).open(event);\n }\n updateCursor(layer: Layer, globalMouse: GlobalPoint) {\n for (const sel of layer.selection) {\n const resizePoint = sel.getPointIndex(globalMouse, l2gz(3));\n if (resizePoint < 0) document.body.style.cursor = \"default\";\n else {\n let angle = sel.getPointOrientation(resizePoint).angle();\n if (angle < 0) angle += 360;\n const d = 45 / 2;\n if (angle >= 315 + d || angle < d || (angle >= 135 + d && angle < 225 - d))\n document.body.style.cursor = \"ew-resize\";\n if ((angle >= 45 + d && angle < 135 - d) || (angle >= 225 + d && angle < 315 - d))\n document.body.style.cursor = \"ns-resize\";\n if ((angle >= d && angle < 90 - d) || (angle >= 180 + d && angle < 270 - d))\n document.body.style.cursor = \"nwse-resize\";\n if ((angle >= 90 + d && angle < 180 - d) || (angle >= 270 + d && angle < 360 - d))\n document.body.style.cursor = \"nesw-resize\";\n }\n }\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport InputCopyElement from \"@/core/components/inputCopy.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\nimport Prompt from '../../core/components/modals/prompt.vue';\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\nimport { layerManager } from \"../layers/manager\";\n\n@Component({\n components: {\n InputCopyElement,\n Modal,\n },\n computed: {\n ...mapState(\"game\", [\"invitationCode\"]),\n },\n})\nexport default class DmSettings extends Vue {\n visible = false;\n categories = [\"Admin\", \"Grid\", \"Vision\"];\n selection = 0;\n\n showRefreshState = false;\n refreshState = \"pending\";\n\n mounted() {\n EventBus.$on(\"DmSettings.Open\", () => {\n this.visible = true;\n });\n EventBus.$on(\"DmSettings.RefreshedInviteCode\", () => {\n this.showRefreshState = false;\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"DmSettings.Open\");\n EventBus.$off(\"DmSettings.RefreshedInviteCode\");\n }\n\n // Admin\n get invitationUrl(): string {\n return window.location.protocol + '//' + window.location.host + '/invite/' + gameStore.invitationCode;\n }\n get locked(): boolean {\n return gameStore.isLocked;\n }\n // Grid\n get useGrid(): boolean {\n return gameStore.useGrid;\n }\n set useGrid(value: boolean) {\n gameStore.setUseGrid({ useGrid: value, sync: true });\n }\n get unitSize(): number {\n return gameStore.unitSize;\n }\n set unitSize(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setUnitSize({ unitSize: value, sync: true });\n }\n get gridSize(): number {\n return gameStore.gridSize;\n }\n set gridSize(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setGridSize({ gridSize: value, sync: true });\n }\n // Vision\n get fakePlayer(): boolean {\n return gameStore.FAKE_PLAYER;\n }\n set fakePlayer(value: boolean) {\n gameStore.setFakePlayer(value);\n }\n get fullFOW(): boolean {\n return gameStore.fullFOW;\n }\n set fullFOW(value: boolean) {\n gameStore.setFullFOW({ fullFOW: value, sync: true });\n }\n get fowOpacity(): number {\n return gameStore.fowOpacity;\n }\n set fowOpacity(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setFOWOpacity({ fowOpacity: value, sync: true });\n }\n get fowLOS(): boolean {\n return gameStore.fowLOS;\n }\n set fowLOS(value: boolean) {\n gameStore.setLineOfSight({ fowLOS: value, sync: true });\n }\n get visionRangeMin(): number {\n return gameStore.visionRangeMin;\n }\n set visionRangeMin(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setVisionRangeMin({ value, sync: true });\n }\n get visionRangeMax(): number {\n return gameStore.visionRangeMax;\n }\n set visionRangeMax(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setVisionRangeMax({ value, sync: true });\n }\n changeVisionMode(event: { target: HTMLSelectElement }) {\n const value = event.target.value.toLowerCase();\n if (value !== \"bvh\" && value !== \"triangle\") return;\n gameStore.setVisionMode({ mode: value, sync: true });\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n layerManager.invalidate();\n }\n handleClick(event: { target: HTMLElement }) {\n const child = event.target.firstElementChild;\n if (child instanceof HTMLInputElement) {\n child.click();\n }\n }\n refreshInviteCode() {\n socket.emit(\"Room.Info.InviteCode.Refresh\");\n this.refreshState = \"pending\";\n this.showRefreshState = true;\n }\n kickPlayer(id: number) {\n socket.emit(\"Room.Info.Players.Kick\", id);\n gameStore.kickPlayer(id);\n }\n toggleSessionLock() {\n gameStore.setIsLocked({isLocked: !gameStore.isLocked, sync: true});\n }\n deleteSession() {\n getRef(\"prompt\")\n .prompt(`ENTER ${gameStore.roomCreator}/${gameStore.roomName} TO CONFIRM SESSION REMOVAL.`, `DELETING SESSION`)\n .then(\n (value: string) => {\n if (value !== `${gameStore.roomCreator}/${gameStore.roomName}`) return;\n socket.emit(\"Room.Delete\");\n this.$router.push(\"/\");\n },\n () => {},\n );\n }\n}\n","import { GlobalPoint, Ray, Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { PA_CDT } from \"@/game/visibility/te/pa\";\nimport { Point, Sign, Triangle } from \"@/game/visibility/te/tds\";\nimport { ccw, cw, intersection, orientation } from \"@/game/visibility/te/triag\";\n\n// First go through each shape in the selection and see if the delta has to be truncated due to movement blockers\n\n// This is definitely super convoluted and inefficient but I was tired and really wanted the smooth wall sliding collision stuff to work\n// And it does now, so hey ¯\\_(ツ)_/¯\nexport function calculateDelta(delta: Vector, sel: Shape, done?: string[]) {\n if (delta.x === 0 && delta.y === 0) return delta;\n if (gameStore.visionMode === \"bvh\") {\n if (done === undefined) done = [];\n const ogSelBBox = sel.getBoundingBox();\n const newSelBBox = ogSelBBox.offset(delta);\n let refine = false;\n for (const movementBlocker of gameStore.movementblockers) {\n if (done.includes(movementBlocker)) continue;\n const blocker = layerManager.UUIDMap.get(movementBlocker)!;\n const blockerBBox = blocker.getBoundingBox();\n let found = blockerBBox.intersectsWithInner(newSelBBox);\n if (!found) {\n // This is an edge case, precalculating the rays is not worth in this case.\n const ray = Ray.fromPoints(ogSelBBox.topLeft.add(delta.normalize()), newSelBBox.topLeft);\n const invDir = ray.direction.inverse();\n const dirIsNegative = [invDir.x < 0, invDir.y < 0];\n found = blockerBBox.intersectP(ray, invDir, dirIsNegative).hit;\n }\n // Check if the bounding box of our destination would intersect with the bounding box of the movementblocker\n if (found) {\n const bCenter = blockerBBox.center();\n const sCenter = ogSelBBox.center();\n\n const d = sCenter.subtract(bCenter);\n const ux = new Vector(1, 0);\n const uy = new Vector(0, 1);\n let dx = d.dot(ux);\n let dy = d.dot(uy);\n if (dx > blockerBBox.w / 2) dx = blockerBBox.w / 2;\n if (dx < -blockerBBox.w / 2) dx = -blockerBBox.w / 2;\n if (dy > blockerBBox.h / 2) dy = blockerBBox.h / 2;\n if (dy < -blockerBBox.h / 2) dy = -blockerBBox.h / 2;\n\n // Closest point / intersection point between the two bboxes. Not the delta intersect!\n const p = bCenter.add(ux.multiply(dx)).add(uy.multiply(dy));\n\n if (p.x === ogSelBBox.topLeft.x || p.x === ogSelBBox.topRight.x) delta = new Vector(0, delta.y);\n else if (p.y === ogSelBBox.topLeft.y || p.y === ogSelBBox.botLeft.y) delta = new Vector(delta.x, 0);\n else {\n if (p.x < ogSelBBox.topLeft.x) delta = new Vector(p.x - ogSelBBox.topLeft.x, delta.y);\n else if (p.x > ogSelBBox.topRight.x) delta = new Vector(p.x - ogSelBBox.topRight.x, delta.y);\n else if (p.y < ogSelBBox.topLeft.y) delta = new Vector(delta.x, p.y - ogSelBBox.topLeft.y);\n else if (p.y > ogSelBBox.botLeft.y) delta = new Vector(delta.x, p.y - ogSelBBox.botLeft.y);\n }\n refine = true;\n done.push(movementBlocker);\n break;\n }\n }\n if (refine) delta = calculateDelta(delta, sel, done);\n return delta;\n } else {\n const centerTriangle = PA_CDT.movement.locate(sel.center().asArray(), null).loc;\n for (const point of sel.points) {\n const lt = PA_CDT.movement.locate(point, centerTriangle);\n const triangle = lt.loc;\n if (triangle === null) continue;\n delta = checkTriangle(point, triangle, delta);\n }\n return delta;\n }\n}\n\nfunction checkTriangle(point: Point, triangle: Triangle, delta: Vector, skip: Triangle[] = []): Vector {\n const p = new GlobalPoint(point[0], point[1]);\n const endpoint = p.add(delta).asArray();\n if (triangle.contains(endpoint)) return delta;\n skip.push(triangle);\n\n for (let i = 0; i < 3; i++) {\n if (skip.includes(triangle.neighbours[i]!)) continue;\n\n const _cw = triangle.vertices[cw(i)]!.point!;\n const _ccw = triangle.vertices[ccw(i)]!.point!;\n const ix = intersection(point, endpoint, _cw, _ccw);\n\n if (ix === null) continue;\n\n if (!triangle.isConstrained(i)) return checkTriangle(point, triangle.neighbours[i]!, delta, skip);\n\n if (ix[0] === p.x && ix[1] === p.y) {\n const OR = orientation;\n const o = orientation(point, endpoint, _ccw);\n // Remember: canvas y axis is inverted\n if (o === Sign.LEFT_TURN) continue;\n if (o === Sign.ZERO) continue;\n }\n let newDelta = new GlobalPoint(ix[0], ix[1]).subtract(p).multiply(0.8);\n if (newDelta.length() < 1) newDelta = new Vector(0, 0);\n if (newDelta.length() < delta.length()) delta = newDelta;\n }\n return delta;\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"formcontainer\"}},[(_vm.owned || _vm.joined)?_c('form',[_c('fieldset',[_c('legend',{staticClass:\"legend\"},[_vm._v(\"Your sessions\")]),_c('div',{staticClass:\"input\"},[_vm._l((_vm.owned),function(room,i){return _c('router-link',{key:'o-'+i,attrs:{\"to\":'/game/' + encodeURIComponent(room[1]) + '/' + encodeURIComponent(room[0])}},[_vm._v(_vm._s(room[0]))])}),_vm._l((_vm.joined),function(room,i){return _c('router-link',{key:'j-'+i,attrs:{\"to\":'/game/' + encodeURIComponent(room[1]) + '/' + encodeURIComponent(room[0])}},[_vm._v(_vm._s(room[1])+\"/\"+_vm._s(room[0]))])})],2),(_vm.owned.length === 0)?_c('div',{staticClass:\"input\"},[_vm._v(\"No active sessions\")]):_vm._e()])]):_vm._e(),_vm._m(0),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.createRoom($event)}}},[_c('fieldset',[(!_vm.owned && !_vm.joined)?_c('legend',{staticClass:\"legend\"},[_vm._v(\"Create a session\")]):_c('div',{staticClass:\"input\"},[_vm._v(\"Create a new session\")]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newSessionName),expression:\"newSessionName\"}],attrs:{\"type\":\"text\",\"name\":\"room_name\",\"placeholder\":\"Session Name\"},domProps:{\"value\":(_vm.newSessionName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newSessionName=$event.target.value}}}),_vm._m(1)]),_vm._m(2)])]),_c('div',{attrs:{\"id\":\"account-options\"}},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('router-link',{staticClass:\"submit\",attrs:{\"tag\":\"button\",\"title\":\"Account Settings\",\"to\":\"/account\"}},[_c('i',{staticClass:\"fas fa-cog\"})])],1),_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('router-link',{staticClass:\"submit\",attrs:{\"tag\":\"button\",\"title\":\"Logout\",\"to\":\"/auth/logout\"}},[_c('i',{staticClass:\"fas fa-sign-out-alt\"})])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_c('span',[_vm._v(\"OR\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fab fa-d-and-d\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"submit\",attrs:{\"type\":\"submit\",\"title\":\"Create\"}},[_c('i',{staticClass:\"fas fa-arrow-right\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=template&id=b102d41e&scoped=true&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=script&lang=ts&\"","import { socket } from \"@/game/api/socket\";\nimport { gameStore } from \"@/game/store\";\n\nexport function sendClientOptions() {\n socket.emit(\"Client.Options.Set\", {\n locationOptions: {\n panX: gameStore.panX,\n panY: gameStore.panY,\n zoomFactor: gameStore.zoomFactor,\n },\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\n\nimport { AssetFile, AssetList } from \"@/core/comm/types\";\nimport { alphSort } from \"@/core/utils\";\n\n@Component({\n name: \"asset-node\",\n})\nexport default class AssetNode extends Vue {\n @Prop() asset!: AssetList;\n\n showImage = null;\n get folders(): string[] {\n return Object.keys(this.asset)\n .filter(el => ![\"__files\"].includes(el))\n .sort(alphSort);\n }\n\n get files(): AssetFile[] {\n if (this.asset.__files)\n return (this.asset.__files)\n .concat()\n .sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1));\n return [];\n }\n\n toggle(event: { target: HTMLElement }) {\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < event.target.children.length; i++) {\n const el = event.target.children[i];\n el.style.display = el.style.display === \"\" ? \"block\" : \"\";\n }\n }\n\n dragStart(event: DragEvent, imageSource: string) {\n this.showImage = null;\n if (event === null || event.dataTransfer === null) return;\n const img = (event.target).querySelector(\".preview\")!;\n event.dataTransfer.setDragImage(img, 0, 0);\n event.dataTransfer.setData(\"text/plain\", imageSource);\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"ContextMenu\",style:({left:_vm.left, top:_vm.top}),attrs:{\"tabindex\":\"-1\"},on:{\"blur\":function($event){return _vm.$emit('close')}}},[_c('ul',[_vm._t(\"default\")],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=template&id=256dde9c&\"","// import Vuex from \"vuex\";\nimport { getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { Asset } from \"@/core/comm/types\";\nimport { rootStore } from \"@/store\";\n\nexport interface AssetState {\n root: number;\n files: number[];\n folders: number[];\n idMap: Map;\n selected: number[];\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"assets\", namespaced: true })\nclass AssetStore extends VuexModule {\n root = -1;\n files: number[] = [];\n folders: number[] = [];\n idMap: Map = new Map();\n selected: number[] = [];\n\n @Mutation\n clear() {\n this.folders = [];\n this.files = [];\n }\n\n @Mutation\n clearSelected() {\n console.log(\"Cleared\");\n this.selected = [];\n }\n\n @Mutation\n setRoot(root: number) {\n this.root = root;\n }\n}\n\nexport const assetStore = getModule(AssetStore);\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\nimport Initiative from \"@/game/ui/initiative.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class ShapeContext extends Vue {\n visible = false;\n x = 0;\n y = 0;\n shape: Shape | null = null;\n get activeLayer(): string {\n const layer = layerManager.getLayer();\n return layer === undefined ? \"\" : layer.name;\n }\n open(event: MouseEvent, shape: Shape) {\n this.visible = true;\n this.x = event.pageX;\n this.y = event.pageY;\n this.shape = shape;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n close() {\n this.visible = false;\n this.shape = null;\n }\n getLayers() {\n return layerManager.layers.filter(l => l.selectable && (gameStore.IS_DM || l.playerEditable));\n }\n getActiveLayer() {\n return layerManager.getLayer();\n }\n getInitiativeWord() {\n if (this.shape === null) return \"\";\n return getRef(\"initiative\").contains(this.shape.uuid) ? \"Show\" : \"Add\";\n }\n setLayer(newLayer: string) {\n if (this.shape === null) return;\n this.shape.moveLayer(newLayer, true);\n this.close();\n }\n moveToBack() {\n if (this.shape === null) return;\n const layer = this.getActiveLayer()!;\n layer.moveShapeOrder(this.shape, 0, true);\n this.close();\n }\n moveToFront() {\n if (this.shape === null) return;\n const layer = this.getActiveLayer()!;\n layer.moveShapeOrder(this.shape, layer.shapes.length - 1, true);\n this.close();\n }\n addInitiative() {\n if (this.shape === null) return;\n const initiative = getRef(\"initiative\");\n if (!initiative.contains(this.shape.uuid)) initiative.addInitiative(this.shape.getInitiativeRepr());\n initiative.visible = true;\n this.close();\n }\n openEditDialog() {\n EventBus.$emit(\"EditDialog.Open\", this.shape);\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class InputCopyElement extends Vue {\n @Prop() value!: string;\n\n borderColour = \"lightgray\";\n popupString = \"\";\n showPopup = false;\n\n copy() {\n (navigator).clipboard.writeText(this.value).then(\n () => {\n this.popupString = \"Copied!\";\n this.showPopup = true;\n },\n () => {\n console.log(\"Could not copy to clipboard :(\");\n this.popupString = \"Error!\";\n this.showPopup = true;\n },\n );\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.left + 'px',\"top\":_vm.top + 'px'},on:{\"close\":_vm.close}},[_c('li',{on:{\"click\":_vm.rename}},[_vm._v(\"Rename\")]),_c('li',{on:{\"click\":_vm.remove}},[_vm._v(\"Remove\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=template&id=dbbd4d08&\"","import { Layer } from \"@/game/layers/layer\";\nimport { gameStore } from \"@/game/store\";\n\nexport class GridLayer extends Layer {\n invalidate(): void {\n this.valid = false;\n }\n draw(doClear?: boolean): void {\n if (!this.valid) {\n this.drawGrid();\n }\n }\n drawGrid(): void {\n const ctx = this.ctx;\n this.clear();\n ctx.beginPath();\n\n const gs = gameStore.gridSize;\n\n for (let i = 0; i < this.width; i += gs * gameStore.zoomFactor) {\n ctx.moveTo(i + (gameStore.panX % gs) * gameStore.zoomFactor, 0);\n ctx.lineTo(i + (gameStore.panX % gs) * gameStore.zoomFactor, this.height);\n ctx.moveTo(0, i + (gameStore.panY % gs) * gameStore.zoomFactor);\n ctx.lineTo(this.width, i + (gameStore.panY % gs) * gameStore.zoomFactor);\n }\n\n ctx.strokeStyle = gameStore.gridColour;\n ctx.lineWidth = 1;\n ctx.stroke();\n this.valid = true;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"outer\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.open($event)}}},[_c('div',{staticClass:\"current-color\",style:(_vm.transparent ? 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)' : 'background-color:' + _vm.color),on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.open($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],staticClass:\"mask\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.closePicker($event)}}}),_c('chrome-picker',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],ref:\"chromePicker\",style:({position: 'fixed', left:_vm.left + 'px', top:_vm.top + 'px', 'z-index': 9999}),attrs:{\"value\":_vm.color,\"tabindex\":\"-1\"},on:{\"input\":_vm.updateColor}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=template&id=f8744d60&scoped=true&\"","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport { AssetState } from \"@/assetManager/store\";\nimport { CoreState } from \"@/core/store\";\nimport { GameState } from \"@/game/store\";\n\nVue.use(Vuex);\n\nexport interface RootState {\n assets: AssetState;\n core: CoreState;\n game: GameState;\n}\n\nexport const rootStore = new Vuex.Store({});\n","import { render, staticRenderFns } from \"./colorpicker.vue?vue&type=template&id=f8744d60&scoped=true&\"\nimport script from \"./colorpicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./colorpicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f8744d60\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { Shape } from \"../../shapes/shape\";\n\n@Component\nexport default class VisionTool extends Tool {\n name = \"Vision\";\n active = false;\n\n get selection(): string[] {\n return gameStore.activeTokens;\n }\n\n get tokens(): Shape[] {\n return gameStore.ownedtokens.map(t => layerManager.UUIDMap.get(t)!);\n }\n\n toggle(uuid: string) {\n if (this.selection.includes(uuid)) gameStore.removeActiveToken(uuid);\n else gameStore.addActiveToken(uuid);\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view',{ref:\"activeComponent\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=196415f0&\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { GlobalPoint, Ray } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Settings } from \"@/game/settings\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz, getUnitDistance } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\nimport { computeVisibility } from \"../visibility/te/te\";\n\nexport class FOWLayer extends Layer {\n isVisionLayer: boolean = true;\n preFogShapes: Shape[] = [];\n virtualCanvas: HTMLCanvasElement;\n vCtx: CanvasRenderingContext2D;\n\n constructor(canvas: HTMLCanvasElement, name: string) {\n super(canvas, name);\n this.virtualCanvas = document.createElement(\"canvas\");\n this.virtualCanvas.width = window.innerWidth;\n this.virtualCanvas.height = window.innerHeight;\n this.vCtx = this.virtualCanvas.getContext(\"2d\")!;\n }\n\n addShape(shape: Shape, sync: boolean, temporary?: boolean, invalidate = true): void {\n super.addShape(shape, sync, temporary, invalidate);\n if (shape.options.has(\"preFogShape\") && shape.options.get(\"preFogShape\")) {\n this.preFogShapes.push(shape);\n }\n }\n\n removeShape(shape: Shape, sync: boolean, temporary?: boolean) {\n if (shape.options.has(\"preFogShape\") && shape.options.get(\"preFogShape\")) {\n const idx = this.preFogShapes.findIndex(s => s.uuid === shape.uuid);\n this.preFogShapes.splice(idx, 1);\n }\n super.removeShape(shape, sync, temporary);\n }\n\n draw(): void {\n if (!this.valid) {\n const ctx = this.ctx;\n\n if (Settings.skipLightFOW) {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.valid = true;\n return;\n }\n\n const originalOperation = ctx.globalCompositeOperation;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n\n const dctx = layerManager.getLayer(\"draw\")!.ctx;\n if (Settings.drawAngleLines || Settings.drawFirstLightHit) {\n dctx.clearRect(0, 0, dctx.canvas.width, dctx.canvas.height);\n }\n\n // At all times provide a minimal vision range to prevent losing your tokens in fog.\n if (gameStore.fullFOW && layerManager.hasLayer(\"tokens\")) {\n layerManager.getLayer(\"tokens\")!.shapes.forEach(sh => {\n if (!sh.ownedBy() || !sh.isToken) return;\n const bb = sh.getBoundingBox();\n const lcenter = g2l(sh.center());\n const alm = 0.8 * g2lz(bb.w);\n ctx.beginPath();\n ctx.arc(lcenter.x, lcenter.y, alm, 0, 2 * Math.PI);\n const gradient = ctx.createRadialGradient(lcenter.x, lcenter.y, alm / 2, lcenter.x, lcenter.y, alm);\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n ctx.fill();\n });\n }\n\n this.vCtx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n\n // First cut out all the light sources\n for (const light of gameStore.visionSources) {\n const shape = layerManager.UUIDMap.get(light.shape);\n if (shape === undefined) continue;\n const aura = shape.auras.find(a => a.uuid === light.aura);\n if (aura === undefined) continue;\n\n const auraLength = getUnitDistance(aura.value + aura.dim);\n const center = shape.center();\n const lcenter = g2l(center);\n\n const auraCircle = new Circle(center, auraLength);\n if (!auraCircle.visibleInCanvas(ctx.canvas)) continue;\n\n if (gameStore.visionMode === \"bvh\") {\n let lastArcAngle = -1;\n\n const path = new Path2D();\n path.moveTo(lcenter.x, lcenter.y);\n let firstPoint: GlobalPoint;\n\n for (let angle = 0; angle < 2 * Math.PI; angle += (Settings.angleSteps / 180) * Math.PI) {\n const anglePoint = new GlobalPoint(\n center.x + auraLength * Math.cos(angle),\n center.y + auraLength * Math.sin(angle),\n );\n if (Settings.drawAngleLines) {\n dctx!.beginPath();\n dctx!.moveTo(g2lx(center.x), g2ly(center.y));\n dctx!.lineTo(g2lx(anglePoint.x), g2ly(anglePoint.y));\n dctx!.stroke();\n }\n\n // Check if there is a hit with one of the nearby light blockers.\n const lightRay = Ray.fromPoints(center, anglePoint);\n const hitResult = gameStore.BV.intersect(lightRay);\n\n if (angle === 0) firstPoint = hitResult.hit ? hitResult.intersect : anglePoint;\n\n // We can move on to the next angle if nothing was hit.\n if (!hitResult.hit) {\n // If an earlier hit caused the aura to leave the arc, we need to go back to the arc\n if (lastArcAngle === -1) {\n // Set the start of a new arc beginning at the current angle\n lastArcAngle = angle;\n // Draw a line from the last non arc location back to the arc\n const dest = g2l(anglePoint);\n ctx.lineTo(dest.x, dest.y);\n }\n continue;\n }\n // If hit , first finish any ongoing arc, then move to the intersection point\n if (lastArcAngle !== -1) {\n path.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), lastArcAngle, angle);\n lastArcAngle = -1;\n }\n path.lineTo(g2lx(hitResult.intersect.x), g2ly(hitResult.intersect.y));\n }\n // Finish the final arc.\n if (lastArcAngle === -1) path.lineTo(g2lx(firstPoint!.x), g2ly(firstPoint!.y));\n else path.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), lastArcAngle, 2 * Math.PI);\n\n if (gameStore.fullFOW) {\n if (aura.dim > 0) {\n // Fill the light aura with a radial dropoff towards the outside.\n const gradient = ctx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(aura.value),\n lcenter.x,\n lcenter.y,\n g2lr(aura.value + aura.dim),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n } else {\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n ctx.fill(path);\n }\n\n aura.lastPath = path;\n } else {\n this.vCtx.globalCompositeOperation = \"source-over\";\n this.vCtx.fillStyle = \"rgba(0, 0, 0, 1)\";\n const polygon = computeVisibility(center, \"vision\");\n this.vCtx.beginPath();\n this.vCtx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) this.vCtx.lineTo(g2lx(point[0]), g2ly(point[1]));\n this.vCtx.closePath();\n this.vCtx.fill();\n if (aura.dim > 0) {\n // Fill the light aura with a radial dropoff towards the outside.\n const gradient = this.vCtx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(aura.value),\n lcenter.x,\n lcenter.y,\n g2lr(aura.value + aura.dim),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n this.vCtx.fillStyle = gradient;\n } else {\n this.vCtx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n this.vCtx.globalCompositeOperation = \"source-in\";\n this.vCtx.beginPath();\n this.vCtx.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), 0, 2 * Math.PI);\n this.vCtx.fill();\n ctx.drawImage(this.virtualCanvas, 0, 0);\n }\n }\n\n // At the DM Side due to opacity of the two fow layers, it looks strange if we just render them on top of eachother like players.\n if (gameStore.fowLOS) {\n ctx.globalCompositeOperation = \"source-in\";\n ctx.drawImage(layerManager.getLayer(\"fow-players\")!.canvas, 0, 0);\n }\n\n for (const preShape of this.preFogShapes) {\n if (!preShape.visibleInCanvas(this.canvas)) continue;\n const ogComposite = preShape.globalCompositeOperation;\n if (!gameStore.fullFOW) {\n if (preShape.globalCompositeOperation === \"source-over\")\n preShape.globalCompositeOperation = \"destination-out\";\n else if (preShape.globalCompositeOperation === \"destination-out\")\n preShape.globalCompositeOperation = \"source-over\";\n }\n preShape.draw(ctx);\n preShape.globalCompositeOperation = ogComposite;\n }\n\n if (gameStore.fullFOW) {\n ctx.globalCompositeOperation = \"source-out\";\n ctx.fillStyle = getFogColour();\n ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n }\n\n super.draw(false);\n\n ctx.globalCompositeOperation = originalOperation;\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Edit asset\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"grid\"},[_c('label',{attrs:{\"for\":\"shapeselectiondialog-name\"}},[_vm._v(\"Name\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shape.name),expression:\"shape.name\"}],staticStyle:{\"grid-column\":\"numerator / remove\"},attrs:{\"type\":\"text\",\"id\":\"shapeselectiondialog-name\",\"disabled\":!_vm.owned},domProps:{\"value\":(_vm.shape.name)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.shape, \"name\", $event.target.value)}}}),_c('div',{style:({opacity: _vm.shape.nameVisible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){_vm.shape.nameVisible = !_vm.shape.nameVisible;_vm.updateShape(false)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('label',{attrs:{\"for\":\"shapeselectiondialog-istoken\"}},[_vm._v(\"Is a token\")]),_c('input',{staticClass:\"styled-checkbox\",staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-istoken\",\"disabled\":!_vm.owned},domProps:{\"checked\":_vm.shape.isToken},on:{\"click\":_vm.setToken}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-visionblocker\"}},[_vm._v(\"Blocks vision/light\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shape.visionObstruction),expression:\"shape.visionObstruction\"}],staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-visionblocker\",\"disabled\":!_vm.owned},domProps:{\"checked\":Array.isArray(_vm.shape.visionObstruction)?_vm._i(_vm.shape.visionObstruction,null)>-1:(_vm.shape.visionObstruction)},on:{\"change\":[function($event){var $$a=_vm.shape.visionObstruction,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.shape, \"visionObstruction\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.shape, \"visionObstruction\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.shape, \"visionObstruction\", $$c)}},_vm.setVisionBlocker]}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-moveblocker\"}},[_vm._v(\"Blocks movement\")]),_c('input',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-moveblocker\",\"disabled\":!_vm.owned},domProps:{\"checked\":_vm.shape.movementObstruction},on:{\"click\":_vm.setMovementBlocker}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-strokecolour\"}},[_vm._v(\"Border colour\")]),_c('color-picker',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"color\":_vm.shape.strokeColour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(_vm.shape, \"strokeColour\", $event)},\"input\":function($event){return _vm.updateShape(true, true)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-fillcolour\"}},[_vm._v(\"Fill colour\")]),_c('color-picker',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"color\":_vm.shape.fillColour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(_vm.shape, \"fillColour\", $event)},\"input\":function($event){return _vm.updateShape(true, true)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Access\")]),_vm._l((_vm.shape.owners),function(owner){return [_c('input',{key:owner,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":owner},on:{\"change\":function($event){return _vm.updateOwner($event, owner)}}}),(owner !== '')?_c('div',{key:'remove-' + owner,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center', gridColumnStart: 'remove'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeOwner(owner)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Trackers\")]),_vm._l((_vm.shape.trackers),function(tracker){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(tracker.name),expression:\"tracker.name\"}],key:'name-'+tracker.uuid,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.name)},on:{\"change\":function($event){return _vm.updateShape(false);},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(tracker.value),expression:\"tracker.value\",modifiers:{\"number\":true}}],key:'value-'+tracker.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.value)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"value\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'fspan-'+tracker.uuid},[_vm._v(\"/\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(tracker.maxvalue),expression:\"tracker.maxvalue\",modifiers:{\"number\":true}}],key:'maxvalue-'+tracker.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.maxvalue)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"maxvalue\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'sspan-'+tracker.uuid}),_c('div',{key:'visibility-'+tracker.uuid,style:({opacity: tracker.visible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){tracker.visible = !tracker.visible;_vm.updateShape(false)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('span',{key:'tspan-'+tracker.uuid}),(tracker.name !== '' || tracker.value !== 0)?_c('div',{key:'remove-'+tracker.uuid,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeTracker(tracker.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Auras\")]),_vm._l((_vm.shape.auras),function(aura){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(aura.name),expression:\"aura.name\"}],key:'name-'+aura.uuid,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.name)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(aura.value),expression:\"aura.value\",modifiers:{\"number\":true}}],key:'value-'+aura.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.value)},on:{\"change\":function($event){return _vm.updateShape(true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"value\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'fspan-'+aura.uuid},[_vm._v(\"/\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(aura.dim),expression:\"aura.dim\",modifiers:{\"number\":true}}],key:'dimvalue-'+aura.uuid,attrs:{\"type\":\"text\",\"title\":\"Dim value\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.dim)},on:{\"change\":function($event){return _vm.updateShape(true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"dim\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('color-picker',{key:'colour-'+aura.uuid,attrs:{\"color\":aura.colour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(aura, \"colour\", $event)},\"input\":function($event){return _vm.updateAuraColour(aura, $event)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('div',{key:'visibility-'+aura.uuid,style:({opacity: aura.visible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){aura.visible = !aura.visible;_vm.updateShape(true)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{key:'visionsource-'+aura.uuid,style:({opacity: aura.visionSource ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.updateAuraVisionSource(aura)}}},[_c('i',{staticClass:\"fas fa-lightbulb\"})]),(aura.name !== '' || aura.value !== 0)?_c('div',{key:'remove-'+aura.uuid,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeAura(aura.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Labels\")]),_c('div',{staticClass:\"spanrow\",attrs:{\"id\":\"labels\"}},[_vm._l((_vm.shape.labels),function(label){return _c('div',{key:label.uuid,staticClass:\"label\"},[(label.category)?[_c('div',{staticClass:\"label-user\"},[_vm._v(_vm._s(label.category))]),_c('div',{staticClass:\"label-main\",on:{\"click\":function($event){return _vm.removeLabel(label.uuid)}}},[_vm._v(_vm._s(label.name))])]:_vm._e(),(!label.category)?[_c('div',{staticClass:\"label-main\",on:{\"click\":function($event){return _vm.removeLabel(label.uuid)}}},[_vm._v(_vm._s(label.name))])]:_vm._e()],2)}),(_vm.owned)?_c('div',{staticClass:\"label\",attrs:{\"id\":\"label-add\"}},[_c('div',{staticClass:\"label-main\",on:{\"click\":_vm.openLabelManager}},[_vm._v(\"+\")])]):_vm._e()],2),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Annotation\")]),_c('textarea',{staticClass:\"spanrow\",attrs:{\"disabled\":!_vm.owned},domProps:{\"value\":_vm.shape.annotation},on:{\"change\":_vm.updateAnnotation}})],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=template&id=23de098e&scoped=true&\"","import { ServerCircle } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2l, g2lz, l2g } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\n\nexport class Circle extends Shape {\n type = \"circle\";\n r: number;\n constructor(center: GlobalPoint, r: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(center, fillColour, strokeColour, uuid);\n this.r = r || 1;\n }\n asDict(): ServerCircle {\n // const base = this.getBaseDict();\n // base.r = this.r;\n // base.border = this.border;\n // return base;\n return Object.assign(this.getBaseDict(), {\n radius: this.r,\n });\n }\n fromDict(data: ServerCircle) {\n super.fromDict(data);\n this.r = data.radius;\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(\n new GlobalPoint(this.refPoint.x - this.r, this.refPoint.y - this.r),\n this.r * 2,\n this.r * 2,\n );\n }\n\n get points() {\n return this.getBoundingBox().points;\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.beginPath();\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n const loc = g2l(this.refPoint);\n ctx.arc(loc.x, loc.y, g2lz(this.r), 0, 2 * Math.PI);\n ctx.fill();\n if (this.strokeColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.beginPath();\n ctx.lineWidth = g2lz(5);\n ctx.strokeStyle = this.strokeColour;\n ctx.arc(loc.x, loc.y, g2lz(this.r), 0, 2 * Math.PI);\n ctx.stroke();\n }\n }\n contains(point: GlobalPoint): boolean {\n return (point.x - this.refPoint.x) ** 2 + (point.y - this.refPoint.y) ** 2 < this.r ** 2;\n }\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n if (centerPoint === undefined) return this.refPoint;\n this.refPoint = centerPoint;\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid() {\n const gs = gameStore.gridSize;\n let targetX;\n let targetY;\n if (((2 * this.r) / gs) % 2 === 0) {\n targetX = Math.round(this.refPoint.x / gs) * gs;\n } else {\n targetX = Math.round((this.refPoint.x - gs / 2) / gs) * gs + this.r;\n }\n if (((2 * this.r) / gs) % 2 === 0) {\n targetY = Math.round(this.refPoint.y / gs) * gs;\n } else {\n targetY = Math.round((this.refPoint.y - gs / 2) / gs) * gs + this.r;\n }\n const delta = calculateDelta(new Vector(targetX - this.refPoint.x, targetY - this.refPoint.y), this);\n this.refPoint = this.refPoint.add(delta);\n this.invalidate(false);\n }\n resizeToGrid() {\n const gs = gameStore.gridSize;\n this.r = Math.max(Math.round(this.r / gs) * gs, gs / 2);\n this.invalidate(false);\n }\n resize(resizePoint: number, point: LocalPoint) {\n const z = gameStore.zoomFactor;\n const diff = l2g(point).subtract(this.refPoint);\n this.r = Math.sqrt(Math.pow(diff.length(), 2) / 2);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class MapTool extends Tool {\n name = \"Map\";\n active = false;\n xCount = 3;\n yCount = 3;\n startPoint: GlobalPoint | null = null;\n rect: Rect | null = null;\n\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = true;\n\n this.startPoint = l2g(getMouse(event));\n this.rect = new Rect(this.startPoint.clone(), 0, 0, \"rgba(0,0,0,0)\", \"black\");\n layer.addShape(this.rect, false, false);\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active || this.rect === null || this.startPoint === null) return;\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n const endPoint = l2g(getMouse(event));\n\n this.rect.w = Math.abs(endPoint.x - this.startPoint.x);\n this.rect.h = Math.abs(endPoint.y - this.startPoint.y);\n this.rect.refPoint = new GlobalPoint(\n Math.min(this.startPoint.x, endPoint.x),\n Math.min(this.startPoint.y, endPoint.y),\n );\n layer.invalidate(false);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.rect === null) return;\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = false;\n\n if (layer.selection.length !== 1) {\n layer.removeShape(this.rect, false, false);\n return;\n }\n\n const w = this.rect.w;\n const h = this.rect.h;\n const sel = layer.selection[0];\n\n if (sel instanceof BaseRect) {\n sel.w *= (this.xCount * gameStore.gridSize) / w;\n sel.h *= (this.yCount * gameStore.gridSize) / h;\n }\n\n layer.removeShape(this.rect, false, false);\n }\n}\n","import { render, staticRenderFns } from \"./load.vue?vue&type=template&id=ff095222&\"\nimport script from \"./load.vue?vue&type=script&lang=ts&\"\nexport * from \"./load.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { LocalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class PanTool extends Tool {\n name = \"Pan\";\n panStart = new LocalPoint(0, 0);\n active = false;\n\n onMouseDown(event: MouseEvent) {\n this.panStart = getMouse(event);\n this.active = true;\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active) return;\n const mouse = getMouse(event);\n const distance = mouse.subtract(this.panStart).multiply(1 / gameStore.zoomFactor);\n gameStore.increasePanX(Math.round(distance.x));\n gameStore.increasePanY(Math.round(distance.y));\n this.panStart = mouse;\n layerManager.invalidate();\n }\n onMouseUp(event: MouseEvent) {\n this.active = false;\n sendClientOptions();\n }\n}\n","import { render, staticRenderFns } from \"./selectcontext.vue?vue&type=template&id=2e7d4582&scoped=true&\"\nimport script from \"./selectcontext.vue?vue&type=script&lang=ts&\"\nexport * from \"./selectcontext.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e7d4582\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nimport { app } from \"@/main\";\n\n// Reference: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nexport function uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nexport function capitalize(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\nexport function alphSort(a: string, b: string) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n else return 1;\n}\n\nexport function getHTMLFont(element: HTMLElement) {\n let font = element.style.font;\n while (font === null && element.parentElement !== null) {\n element = element.parentElement;\n font = element.style.font;\n }\n if (font === null) font = window.getComputedStyle(document.body).getPropertyValue(\"font\");\n return font;\n}\n\nexport function getHTMLTextWidth(text: string, font: string): number {\n let fakeElement = document.getElementById(\"emptycanvas\");\n if (fakeElement === null) {\n fakeElement = document.createElement(\"canvas\");\n fakeElement.id = \"emptycanvas\";\n fakeElement.style.display = \"\";\n document.body.appendChild(fakeElement);\n }\n const ctx = fakeElement.getContext(\"2d\")!;\n ctx.font = font;\n return Math.ceil(ctx.measureText(text).width);\n}\n\nexport function partition(arr: T[], predicate: (n: T) => boolean) {\n const ret: T[][] = [[], []];\n arr.forEach(n => (predicate(n) ? ret[1].push(n) : ret[0].push(n)));\n return ret;\n}\n\nexport function calcFontScale(ctx: CanvasRenderingContext2D, text: string, width: number, height: number) {\n const points = Number(ctx.font.split(\"px\")[0]) * 0.2;\n const fontWidth = ctx.measureText(text).width;\n return Math.min(width / fontWidth, height / points);\n}\n\nexport function fixedEncodeURIComponent(str: string) {\n return encodeURIComponent(str).replace(/[!'()*]/g, c => {\n return \"%\" + c.charCodeAt(0).toString(16);\n });\n}\n\nexport class OrderedMap {\n keys: K[] = [];\n values: V[] = [];\n\n get length() {\n return this.keys.length;\n }\n\n get(key: K) {\n return this.values[this.keys.indexOf(key)];\n }\n getIndexValue(idx: number) {\n return this.values[idx];\n }\n getIndexKey(idx: number) {\n return this.keys[idx];\n }\n set(key: K, value: V) {\n this.keys.push(key);\n this.values.push(value);\n }\n has(key: K) {\n return this.indexOf(key) >= 0;\n }\n indexOf(element: K) {\n return this.keys.indexOf(element);\n }\n remove(element: K) {\n const idx = this.indexOf(element);\n this.keys.splice(idx, 1);\n this.values.splice(idx, 1);\n }\n}\n\nexport function getComponent(): T {\n return app.$children[0].$refs.activeComponent;\n}\n\nexport function getRef(ref: string): T {\n const active = app.$children[0].$refs.activeComponent;\n return active.$refs[ref];\n}\n","import { render, staticRenderFns } from \"./contextMenu.vue?vue&type=template&id=dbbd4d08&\"\nimport script from \"./contextMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./contextMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { EdgeCirculator, Point, Sign, Triangle, Vertex } from \"./tds\";\n\ntype Line = number[];\n\nexport function cw(index: number) {\n return (index + 2) % 3;\n}\n\nexport function ccw(index: number) {\n return (index + 1) % 3;\n}\n\nexport function edgeInfo(va: Vertex, vb: Vertex) {\n const ec = new EdgeCirculator(va, null);\n if (ec.valid) {\n do {\n const indv = 3 - ec.t!.indexV(va) - ec.ri;\n const v = ec.t!.vertices[indv]!;\n if (!v.infinite) {\n if (v === vb) {\n return { includes: true, vi: vb, fr: ec.t!, i: ec.ri };\n } else {\n const orient = orientation(va.point!, vb.point!, v.point!);\n if (orient === Sign.COLLINEAR && collinearBetween(va.point!, v.point!, vb.point!)) {\n return { includes: true, vi: v, fr: ec.t!, i: ec.ri };\n }\n }\n }\n } while (ec.next());\n }\n return { includes: false };\n}\n\nexport function collinearBetween(p: Point, q: Point, r: Point): boolean {\n let cPQ: Sign;\n let cQR: Sign;\n if (compare(0, p, r) === Sign.EQUAL) {\n cPQ = compare(1, p, q);\n cQR = compare(1, q, r);\n } else {\n cPQ = compare(0, p, q);\n cQR = compare(0, q, r);\n }\n return (cPQ === Sign.SMALLER && cQR === Sign.SMALLER) || (cPQ === Sign.LARGER && cQR === Sign.LARGER);\n}\n\nfunction compare(index: number, a: Point, b: Point): Sign {\n if (a[index] < b[index]) return Sign.SMALLER;\n if (a[index] > b[index]) return Sign.LARGER;\n return Sign.EQUAL;\n}\n\nexport function orientation(p: Point, q: Point, r: Point) {\n const px = p[0];\n const py = p[1];\n const qx = q[0];\n const qy = q[1];\n const rx = r[0];\n const ry = r[1];\n const pqx = qx - px;\n const pqy = qy - py;\n const prx = rx - px;\n const pry = ry - py;\n const det = determinant(pqx, pqy, prx, pry);\n let maxX = Math.abs(pqx);\n let maxY = Math.abs(pqy);\n const aprX = Math.abs(prx);\n const aprY = Math.abs(pry);\n if (maxX < aprX) maxX = aprX;\n if (maxY < aprY) maxY = aprY;\n if (maxX > maxY) [maxX, maxY] = [maxY, maxX];\n // underflow proection in eps computation?? Math.sqrt(Number.MIN_VALUE, Number.EPSILON)\n if (maxX < 2e-162 && maxX === 0) {\n return Sign.ZERO;\n }\n // overflow protection in det computation\n if (maxY < 1e153) {\n const eps = Number.EPSILON * maxX * maxY;\n if (det > eps) return Sign.POSITIVE;\n if (det < -eps) return Sign.NEGATIVE;\n }\n return Sign.ZERO;\n}\n\nexport function determinant(a00: number, a01: number, a10: number, a11: number) {\n return a00 * a11 - a01 * a10;\n}\n\nexport function hasInexactNegativeOrientation(p: Point, q: Point, r: Point) {\n return determinant(q[0] - p[0], q[1] - p[1], r[0] - p[0], r[1] - p[1]) < 0;\n}\n\nexport function sideOfOrientedCircle(t: Triangle, p: Point, perturb: boolean): Sign {\n if (!t.isInfinite())\n return sideOfOrientedCircleP(t.vertices[0]!.point!, t.vertices[1]!.point!, t.vertices[2]!.point!, p, perturb);\n throw new Error(\"SSS\");\n}\n\nfunction sideOfOrientedCircleP(p0: Point, p1: Point, p2: Point, p: Point, perturb: boolean): Sign {\n const os = getOrientedSide(p0, p1, p2, p);\n if (os !== Sign.ON_ORIENTED_BOUNDARY || !perturb) return os;\n const points = [p0, p1, p2, p];\n points.sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n for (const point of points.reverse()) {\n if (point === p) return Sign.ON_NEGATIVE_SIDE;\n let o = orientation(p0, p1, p);\n if (point === p2 && o !== Sign.COLLINEAR) return o;\n o = orientation(p0, p, p2);\n if (point === p1 && o !== Sign.COLLINEAR) return o;\n o = orientation(p, p1, p2);\n if (point === p0 && o !== Sign.COLLINEAR) return o;\n }\n return Sign.ON_NEGATIVE_SIDE;\n}\n\nexport function xyEqual(p: Point, q: Point) {\n return p[0] === q[0] && p[1] === q[1];\n}\n\nexport function xySmaller(p: Point, q: Point) {\n return p[0] < q[0] || (p[0] === q[0] && p[1] < q[1]);\n}\n\nexport function xyCompare(p: Point, q: Point) {\n if (xySmaller(p, q)) return Sign.SMALLER;\n if (xyEqual(p, q)) return Sign.EQUAL;\n return Sign.LARGER;\n}\n\nfunction getOrientedSide(p: Point, q: Point, r: Point, t: Point): Sign {\n const qpx = q[0] - p[0];\n const qpy = q[1] - p[1];\n const rpx = r[0] - p[0];\n const rpy = r[1] - p[1];\n const tpx = t[0] - p[0];\n const tpy = t[1] - p[1];\n const tqx = t[0] - q[0];\n const tqy = t[1] - q[1];\n const rqx = r[0] - q[0];\n const rqy = r[1] - q[1];\n\n const det = determinant(qpx * tpy - qpy * tpx, tpx * tqx + tpy * tqy, qpx * rpy - qpy * rpx, rpx * rqx + rpy * rqy);\n let maxx = Math.abs(qpx);\n let maxy = Math.abs(qpy);\n const arpx = Math.abs(rpx);\n const arpy = Math.abs(rpy);\n const atqx = Math.abs(tqx);\n const atqy = Math.abs(tqy);\n const atpx = Math.abs(tpx);\n const atpy = Math.abs(tpy);\n const arqx = Math.abs(rqx);\n const arqy = Math.abs(rqy);\n\n if (maxx < arpx) maxx = arpx;\n if (maxx < atpx) maxx = atpx;\n if (maxx < atqx) maxx = atqx;\n if (maxx < arqx) maxx = arqx;\n\n if (maxy < arpy) maxy = arpy;\n if (maxy < atpy) maxy = atpy;\n if (maxy < atqy) maxy = atqy;\n if (maxy < arqy) maxy = arqy;\n\n if (maxx > maxy) [maxx, maxy] = [maxy, maxx];\n\n if (maxx < 1e-73 && maxx === 0) return Sign.ON_ORIENTED_BOUNDARY;\n // sqrt(sqrt(max_double/16\n else if (maxy < 1e76) {\n const eps = Number.EPSILON * maxx * maxy * (maxy * maxy);\n if (det > eps) return Sign.ON_POSITIVE_SIDE;\n if (det < -eps) return Sign.ON_NEGATIVE_SIDE;\n }\n\n return Sign.ZERO;\n}\n\nfunction segSegDoIntersectCrossing(p1: Point, p2: Point, p3: Point, p4: Point): boolean {\n switch (orientation(p1, p2, p3)) {\n case Sign.LEFT_TURN:\n return orientation(p3, p4, p2) !== Sign.RIGHT_TURN;\n case Sign.RIGHT_TURN:\n return orientation(p3, p4, p2) !== Sign.LEFT_TURN;\n case Sign.COLLINEAR:\n return true;\n }\n}\n\nfunction segSegDoIntersectContained(p1: Point, p2: Point, p3: Point, p4: Point): boolean {\n switch (orientation(p1, p2, p3)) {\n case Sign.LEFT_TURN:\n return orientation(p1, p2, p4) !== Sign.LEFT_TURN;\n case Sign.RIGHT_TURN:\n return orientation(p1, p2, p4) !== Sign.RIGHT_TURN;\n case Sign.COLLINEAR:\n return true;\n }\n}\n\nexport function intersection(pa: Point, pb: Point, pc: Point, pd: Point) {\n const i = getIntersectionType(pa, pb, pc, pd);\n switch (i.intersectionType) {\n case IntersectionType.POINT:\n return i.point!;\n case IntersectionType.NO_INTERSECTION:\n return null;\n }\n throw new Error(\"sdfgighowen\");\n}\n\nenum IntersectionType {\n NO_INTERSECTION,\n POINT,\n SEGMENT,\n}\n\nfunction getLine(p0: Point, p1: Point): Line {\n if (p0[0] === p1[0]) return [1, 0, -p0[0]];\n if (p0[1] === p1[1]) return [0, 1, -p0[1]];\n const x = p1[0] - p0[0];\n const y = p1[1] - p0[1];\n return [-y, x, -x * p0[1] + y * p0[0]];\n}\n\nfunction getIntersectionType(pa: Point, pb: Point, pc: Point, pd: Point) {\n if (!doIntersect(pa, pb, pc, pd)) return { intersectionType: IntersectionType.NO_INTERSECTION, point: null };\n const l1 = getLine(pa, pb);\n const l2 = getLine(pc, pd);\n const info = getIntersectionTypeLine(l1, l2);\n switch (info.intersectionType) {\n case IntersectionType.POINT: {\n return info;\n }\n }\n throw new Error(\"gzseuihgpib\");\n}\n\nfunction getIntersectionTypeLine(la: Line, lb: Line) {\n const denom = la[0] * lb[1] - lb[0] * la[1];\n const nom1 = la[1] * lb[2] - lb[1] * la[2];\n const nom2 = lb[0] * la[2] - la[0] * lb[2];\n return {\n intersectionType: IntersectionType.POINT,\n point: [nom1 / denom, nom2 / denom],\n };\n}\n\nfunction doIntersect(A1: Point, A2: Point, B1: Point, B2: Point): boolean {\n if (xySmaller(A1, A2)) {\n if (xySmaller(B1, B2)) {\n if (xySmaller(A2, B1) || xySmaller(B2, A1)) return false;\n } else {\n if (xySmaller(A2, B2) || xySmaller(B1, A1)) return false;\n }\n } else {\n if (xySmaller(B1, B2)) {\n if (xySmaller(A1, B1) || xySmaller(B2, A2)) return false;\n } else {\n if (xySmaller(A1, B2) || xySmaller(B1, A2)) return false;\n }\n }\n if (xySmaller(A1, A2)) {\n if (xySmaller(B1, B2)) {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER: {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A1, A2, B1, B2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A1, A2, B1, B2);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B2, A1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B2, A2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B1, B2, A1, A2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B1, B2, A1, A2);\n }\n }\n }\n }\n } else {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER: {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A1, A2, B2, B1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A1, A2, B2, B1);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B1, A1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B1, A2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B2, B1, A1, A2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B2, B1, A1, A2);\n }\n }\n }\n }\n }\n } else {\n if (xySmaller(B1, B2)) {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER: {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A2, A1, B1, B2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A2, A1, B1, B2);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B2, A2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B2, A1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B1, B2, A2, A1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B1, B2, A2, A1);\n }\n }\n }\n }\n } else {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER: {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A2, A1, B2, B1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A2, A1, B2, B1);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B1, A2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B1, A1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B2, B1, A2, A1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B2, B1, A2, A1);\n }\n }\n }\n }\n }\n }\n}\n\nfunction nextUp(x: number) {\n if (x !== x) {\n return x;\n }\n if (x === -1 / 0) {\n return -Number.MAX_VALUE;\n }\n if (x === +1 / 0) {\n return +1 / 0;\n }\n if (x === +Number.MAX_VALUE) {\n return +1 / 0;\n }\n let y = x * (x < 0 ? 1 - Number.EPSILON / 2 : 1 + Number.EPSILON);\n if (y === x) {\n y = Number.MIN_VALUE * Number.EPSILON > 0 ? x + Number.MIN_VALUE * Number.EPSILON : x + Number.MIN_VALUE;\n }\n if (y === +1 / 0) {\n y = +Number.MAX_VALUE;\n }\n const b = x + (y - x) / 2;\n if (x < b && b < y) {\n y = b;\n }\n const c = (y + x) / 2;\n if (x < c && c < y) {\n y = c;\n }\n return y === 0 ? -0 : y;\n}\n\nexport function ulp(x: number) {\n return x < 0 ? nextUp(x) - x : x + nextUp(-x);\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.x + 'px',\"top\":_vm.y + 'px'},on:{\"close\":_vm.close}},[(_vm.IS_DM)?_c('li',{on:{\"click\":_vm.bringPlayers}},[_vm._v(\"Bring players\")]):_vm._e(),_c('li',{on:{\"click\":_vm.createToken}},[_vm._v(\"Create basic token\")]),_c('li',{on:{\"click\":_vm.showInitiative}},[_vm._v(\"Show initiative\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=template&id=2e7d4582&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class Modal extends Vue {\n @Prop(Boolean) visible!: boolean;\n @Prop({ type: Boolean, default: true }) mask!: boolean;\n @Prop({ type: String, default: \"white\" }) colour!: string;\n\n $refs!: {\n container: HTMLElement;\n };\n\n positioned = false;\n offsetX = 0;\n offsetY = 0;\n screenX = 0;\n screenY = 0;\n dragging = false;\n\n // Example of mounted required: opening note\n mounted() {\n this.updatePosition();\n }\n // Example of updated required: opening initiative\n updated() {\n this.updatePosition();\n }\n\n close(event: MouseEvent) {\n this.$emit(\"close\");\n }\n updatePosition() {\n if (!this.positioned) {\n const container = this.$refs.container;\n if (container.offsetWidth === 0 && container.offsetHeight === 0) return;\n this.$refs.container.style.left = (window.innerWidth - container.offsetWidth) / 2 + \"px\";\n this.$refs.container.style.top = (window.innerHeight - container.offsetHeight) / 2 + \"px\";\n this.positioned = true;\n }\n }\n dragStart(event: DragEvent) {\n if (event === null || event.dataTransfer === null) return;\n event.dataTransfer.setData(\"Hack\", \"\");\n // Because the drag event is happening on the header, we have to change the drag image\n // in order to give the impression that the entire modal is dragged.\n event.dataTransfer.setDragImage(this.$refs.container, event.offsetX, event.offsetY);\n this.offsetX = event.offsetX;\n this.offsetY = event.offsetY;\n this.screenX = event.screenX;\n this.screenY = event.screenY;\n this.dragging = true;\n }\n dragEnd(event: DragEvent) {\n this.dragging = false;\n let left = event.clientX - this.offsetX;\n let top = event.clientY - this.offsetY;\n if (event.clientX === 0 && event.clientY === 0 && event.pageX === 0 && event.pageY === 0) {\n left = parseInt(this.$refs.container.style.left!, 10) - (this.screenX - event.screenX);\n top = parseInt(this.$refs.container.style.top!, 10) - (this.screenY - event.screenY);\n }\n if (left < 0) left = 0;\n if (left > window.innerWidth - 100) left = window.innerWidth - 100;\n if (top < 0) top = 0;\n if (top > window.innerHeight - 100) top = window.innerHeight - 100;\n this.$refs.container.style.left = left + \"px\";\n this.$refs.container.style.top = top + \"px\";\n this.$refs.container.style.display = \"block\";\n }\n dragOver(event: DragEvent) {\n if (this.dragging) this.$refs.container.style.display = \"none\";\n }\n}\n","import io from \"socket.io-client\";\n\nimport { Asset } from \"@/core/comm/types\";\nimport { assetStore } from \"./store\";\n\nexport const socket = io(location.protocol + \"//\" + location.host + \"/pa_assetmgmt\", { autoConnect: false });\n\n// export const socket = io.connect(location.protocol + \"//\" + location.host + \"/pa_assetmgmt\");\nsocket.on(\"connect\", () => {\n console.log(\"Connected\");\n});\nsocket.on(\"disconnect\", () => {\n console.log(\"Disconnected\");\n});\nsocket.on(\"redirect\", (destination: string) => {\n console.log(\"redirecting\");\n window.location.href = destination;\n});\nsocket.on(\"Folder.Root.Set\", (root: number) => {\n assetStore.setRoot(root);\n});\nsocket.on(\"Folder.Set\", (folder: Asset) => {\n assetStore.clear();\n if (folder.children) {\n for (const child of folder.children) {\n assetStore.idMap.set(child.id, child);\n if (child.file_hash) {\n assetStore.files.push(child.id);\n } else {\n assetStore.folders.push(child.id);\n }\n }\n }\n});\nsocket.on(\"Folder.Create\", (folder: Asset) => {\n assetStore.folders.push(folder.id);\n assetStore.idMap.set(folder.id, folder);\n});\nsocket.on(\"Asset.Upload.Finish\", (asset: Asset) => {\n assetStore.idMap.set(asset.id, asset);\n assetStore.files.push(asset.id);\n});\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport Accordion from \"@/core/components/accordion.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n accordion: Accordion,\n },\n})\nexport default class FilterTool extends Tool {\n name = \"Filter\";\n active = false;\n\n get labels() {\n const cat: { [category: string]: [string, string][] } = {'': []};\n for (const uuid of Object.keys(gameStore.labels)) {\n const label = gameStore.labels[uuid];\n if (!label.category) cat[\"\"].push([label.uuid, label.name]);\n else {\n if (!(label.category in cat)) cat[label.category] = [];\n cat[label.category].push([label.uuid, label.name]);\n cat[label.category].sort((a, b) => a[1].localeCompare(b[1]));\n }\n }\n return cat;\n }\n\n get initalValues() {\n const values: { [category: string]: string[] } = {};\n for (const cat of Object.keys(this.labels)) {\n values[cat] = gameStore.labelFilters.filter(f => this.labels[cat].map(l => l[0]).includes(f));\n }\n return values;\n }\n\n get categories() {\n return Object.keys(this.labels).sort();\n }\n\n isFilter(uuid: string): boolean {\n return gameStore.labelFilters.includes(uuid);\n }\n\n toggleFilter(uuid: string) {\n const i = gameStore.labelFilters.indexOf(uuid);\n if (i >= 0) gameStore.labelFilters.splice(i, 1);\n else gameStore.labelFilters.push(uuid);\n layerManager.invalidate();\n }\n\n toggleUnlabeled() {\n gameStore.toggleUnlabeledFilter();\n layerManager.invalidate();\n }\n\n updateSelection(data: { title: string; selection: string[] }) {\n if (!(data.title in this.labels)) return;\n for (const [uuid, _] of this.labels[data.title]) {\n const idx = gameStore.labelFilters.indexOf(uuid);\n const selected = data.selection.includes(uuid);\n if (idx >= 0 && !selected) {\n gameStore.labelFilters.splice(idx, 1);\n socket.emit(\"Labels.Filter.Remove\", uuid);\n } else if (idx < 0 && selected) {\n gameStore.labelFilters.push(uuid);\n socket.emit(\"Labels.Filter.Add\", uuid);\n }\n }\n layerManager.invalidate();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\nimport { gameStore } from '../../game/store';\n\n@Component\nexport default class Accordion extends Vue {\n @Prop(String) title!: string;\n @Prop({ default: true, type: Boolean }) showArrow!: boolean;\n @Prop({ default: () => []}) items!: [string, string][];\n @Prop({ default: () => []}) initialValues!: string[];\n\n selected: string[] = [];\n\n active = false;\n\n mounted() {\n this.selected = this.initialValues;\n this.updateCategory();\n }\n\n toggleDisplay(event: MouseEvent) {\n this.active = !this.active;\n }\n\n toggleCategory() {\n const overall = this.$refs.overall as HTMLInputElement;\n if (overall.checked) this.selected = this.items.map((i) => i[0]);\n else this.selected = [];\n this.$emit(\"selectionupdate\", {title: this.title, selection: this.selected});\n }\n\n updateCategory() {\n const overall = this.$refs.overall as HTMLInputElement;\n if (this.selected.length === 0) {\n overall.checked = false;\n overall.indeterminate = false;\n } else if(this.selected.length === this.items.length) {\n overall.checked = true;\n overall.indeterminate = false;\n } else {\n overall.checked = false;\n overall.indeterminate = true;\n }\n }\n\n toggleSelection(item: string) {\n const found = this.selected.indexOf(item);\n if (found === -1) this.selected.push(item);\n else this.selected.splice(found, 1);\n this.updateCategory();\n this.$emit(\"selectionupdate\", {title: this.title, selection: this.selected});\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},_vm._l((_vm.tokens),function(token){return _c('div',{key:token.uuid,staticClass:\"token\",class:{'selected': _vm.selection.includes(token.uuid)},on:{\"click\":function($event){return _vm.toggle(token.uuid)}}},[(token.src)?_c('img',{attrs:{\"src\":token.src,\"width\":\"30px\",\"height\":\"30px\"}}):_vm._e(),_c('div',[_vm._v(_vm._s(token.name))])])}),0):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=template&id=46baf892&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=0&lang=css&\"","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2lx, g2ly, g2lz, l2g } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\nimport { ServerMultiLine } from \"../comm/types/shapes\";\n\nexport class MultiLine extends Shape {\n type = \"multiline\";\n _points: GlobalPoint[] = [];\n lineWidth: number;\n constructor(\n startPoint: GlobalPoint,\n points?: GlobalPoint[],\n lineWidth?: number,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, \"rgba(0, 0, 0, 0)\", strokeColour || \"#000\", uuid);\n this._points = points || [];\n this.lineWidth = lineWidth || 3;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n const delta = point.subtract(this._refPoint);\n this._refPoint = point;\n for (let i = 0; i < this._points.length; i++) this._points[i] = this._points[i].add(delta);\n }\n\n asDict() {\n return Object.assign(this.getBaseDict(), {\n line_width: this.lineWidth,\n points: this._points.map(p => ({ x: p.x, y: p.y })),\n });\n }\n fromDict(data: ServerMultiLine) {\n super.fromDict(data);\n this._points = data.points.map(p => new GlobalPoint(p.x, p.y));\n }\n get points() {\n return this._points.map(point => [point.x, point.y]);\n }\n getBoundingBox(): BoundingRect {\n let minx: number = this.refPoint.x;\n let maxx: number = this.refPoint.x;\n let miny: number = this.refPoint.y;\n let maxy: number = this.refPoint.y;\n for (const p of this._points) {\n if (p.x < minx) minx = p.x;\n if (p.x > maxx) maxx = p.x;\n if (p.y < miny) miny = p.y;\n if (p.y > maxy) maxy = p.y;\n }\n return new BoundingRect(new GlobalPoint(minx, miny), maxx - minx, maxy - miny);\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.beginPath();\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.moveTo(g2lx(this.refPoint.x), g2ly(this.refPoint.y));\n for (const p of this._points) ctx.lineTo(g2lx(p.x), g2ly(p.y));\n if (this.strokeColour === \"fog\") ctx.strokeStyle = getFogColour();\n else ctx.strokeStyle = this.strokeColour;\n ctx.lineWidth = g2lz(this.lineWidth);\n ctx.stroke();\n }\n contains(point: GlobalPoint): boolean {\n return this.getBoundingBox().contains(point);\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n return this.getBoundingBox().center();\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this._refPoint = l2g(point);\n else this._points[resizePoint - 1] = l2g(point);\n }\n}\n","import { render, staticRenderFns } from \"./draw.vue?vue&type=template&id=639cd890&scoped=true&\"\nimport script from \"./draw.vue?vue&type=script&lang=ts&\"\nexport * from \"./draw.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"639cd890\",\n null\n \n)\n\nexport default component.exports","import tinycolor from \"tinycolor2\";\n\nimport { LocalPoint } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nexport function getMouse(e: MouseEvent): LocalPoint {\n return new LocalPoint(e.pageX, e.pageY);\n}\n\nexport function getFogColour(opposite: boolean = false): string {\n const tc = tinycolor(gameStore.fowColour);\n if (gameStore.IS_DM) tc.setAlpha(opposite ? 1 : gameStore.fowOpacity);\n else tc.setAlpha(1);\n return tc.toRgbString();\n}\n\nexport function zoomValue(display: number) {\n // Powercurve 0.2/3/10\n // Based on https://stackoverflow.com/a/17102320\n return 1 / (-5 / 3 + (28 / 15) * Math.exp(1.83 * display));\n}\n\nexport function zoomDisplay(value: number) {\n return Math.log((1 / value + 5 / 3) * (15 / 28)) / 1.83;\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport * as tinycolor from \"tinycolor2\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { calcFontScale } from \"@/core/utils\";\nimport { LocalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { CircularToken } from \"@/game/shapes/circulartoken\";\nimport { gameStore } from \"@/game/store\";\nimport { getUnitDistance, l2g } from \"@/game/units\";\nimport { Watch } from \"vue-property-decorator\";\n\n@Component({\n components: {\n Modal,\n \"color-picker\": ColorPicker,\n },\n computed: {\n ...mapState(\"game\", [\"unitSize\"]),\n },\n})\nexport default class CreateTokenModal extends Vue {\n x = 0;\n y = 0;\n visible = false;\n text = \"X\";\n fillColour = \"rgba(255, 255, 255, 1)\";\n borderColour = \"rgba(0, 0, 0, 1)\";\n\n mounted() {\n this.updatePreview();\n }\n\n @Watch(\"text\")\n onTextChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n @Watch(\"fillColour\")\n onFillChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n @Watch(\"borderColour\")\n onBorderChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n\n open(x: number, y: number) {\n this.visible = true;\n this.x = x;\n this.y = y;\n }\n submit() {\n const layer = layerManager.getLayer();\n if (layer === undefined) return;\n const token = new CircularToken(\n l2g(new LocalPoint(this.x, this.y)),\n getUnitDistance(gameStore.unitSize / 2),\n this.text,\n \"10px serif\",\n this.fillColour,\n this.borderColour,\n );\n token.addOwner(gameStore.username);\n layer.addShape(token, true);\n layer.invalidate(false);\n this.visible = false;\n }\n updatePreview() {\n const ctx = (this.$refs.canvas).getContext(\"2d\")!;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n ctx.beginPath();\n const dest = { x: ctx.canvas.width / 2, y: ctx.canvas.height / 2 };\n const r = Math.min(dest.x, dest.y) * 0.9;\n\n ctx.fillStyle = this.fillColour;\n\n ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI);\n ctx.fill();\n if (this.borderColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.beginPath();\n ctx.lineWidth = 5;\n ctx.strokeStyle = this.borderColour;\n ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI);\n ctx.stroke();\n }\n ctx.save();\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n const xs = calcFontScale(ctx, this.text, r, r);\n const ys = 0;\n ctx.transform(xs, ys, -ys, xs, dest.x, dest.y);\n ctx.fillStyle = tinycolor.mostReadable(this.fillColour, [\"#000\", \"#fff\"]).toHexString();\n ctx.fillText(this.text, 0, 0);\n ctx.restore();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class NoteDialog extends Vue {\n visible = false;\n note: Note | null = null;\n\n open(note: Note) {\n this.visible = true;\n this.note = note;\n }\n calcHeight() {\n if (this.$refs.textarea) {\n const el = this.$refs.textarea;\n el.style.height = \"auto\";\n el.style.height = el.scrollHeight + \"px\";\n // Using the return value without the above did not achieve what I want, so hey /shrug\n return el.scrollHeight + \"px\";\n }\n return \"100px\";\n }\n updateNote() {\n if (this.note) gameStore.updateNote({ note: this.note, sync: true });\n }\n removeNote() {\n getRef(\"confirm\")\n .open(\"Are you sure you wish to remove this?\")\n .then(\n (result: boolean) => {\n if (result && this.note) {\n gameStore.removeNote({ note: this.note, sync: true });\n this.visible = false;\n }\n },\n () => {},\n );\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport { Watch } from \"vue-property-decorator\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { Line } from \"@/game/shapes/line\";\nimport { MultiLine } from \"@/game/shapes/multiline\";\nimport { Polygon } from \"@/game/shapes/polygon\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { getUnitDistance, l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\n@Component({\n components: {\n \"color-picker\": ColorPicker,\n },\n})\nexport default class DrawTool extends Tool {\n name = \"Draw\";\n active = false;\n\n startPoint: GlobalPoint | null = null;\n shape: Shape | null = null;\n brushHelper: Circle | null = null;\n ruler: Line | null = null;\n\n fillColour = \"rgba(0, 0, 0, 1)\";\n borderColour = \"rgba(255, 255, 255, 0)\";\n\n shapeSelect = \"square\";\n shapes = [\"square\", \"circle\", \"draw-polygon\", \"paint-brush\"];\n modeSelect = \"normal\";\n modes = [\"normal\", \"reveal\", \"hide\"];\n\n brushSize = getUnitDistance(gameStore.unitSize);\n\n get helperSize(): number {\n if (this.shapeSelect === \"paint-brush\") return this.brushSize / 2;\n return getUnitDistance(this.unitSize) / 8;\n }\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n get unitSize(): number {\n return gameStore.unitSize;\n }\n get useGrid(): boolean {\n return gameStore.useGrid;\n }\n\n @Watch(\"fillColour\")\n onFillChange() {\n if (this.brushHelper) this.brushHelper.fillColour = this.fillColour;\n }\n\n @Watch(\"modeSelect\")\n onModeUpdate(newValue: string, oldValue: string) {\n this.onModeChange(newValue, oldValue);\n }\n\n setupBrush() {\n if (this.brushHelper === null) return;\n if (this.modeSelect === \"reveal\" || this.modeSelect === \"hide\") {\n this.brushHelper.options.set(\"preFogShape\", true);\n this.brushHelper.options.set(\"skipDraw\", true);\n this.brushHelper.fillColour = \"rgba(0, 0, 0, 1)\";\n\n if (this.modeSelect === \"reveal\") this.brushHelper.globalCompositeOperation = \"source-over\";\n else if (this.modeSelect === \"hide\") this.brushHelper.globalCompositeOperation = \"destination-out\";\n } else {\n this.brushHelper.options.delete(\"preFogShape\");\n this.brushHelper.options.delete(\"skipDraw\");\n this.brushHelper.globalCompositeOperation = \"source-over\";\n this.brushHelper.fillColour = this.fillColour;\n }\n }\n onModeChange(newValue: string, oldValue: string) {\n if (this.brushHelper === null) return;\n\n const fowLayer = layerManager.getLayer(\"fow\");\n const normalLayer = layerManager.getLayer();\n if (fowLayer === undefined || normalLayer === undefined) return;\n\n this.setupBrush();\n\n if (newValue !== \"normal\" && oldValue === \"normal\") {\n normalLayer.removeShape(this.brushHelper, false);\n fowLayer.addShape(this.brushHelper, false);\n } else if (newValue === \"normal\" && oldValue !== \"normal\") {\n normalLayer.addShape(this.brushHelper, false);\n fowLayer.removeShape(this.brushHelper, false);\n }\n }\n getLayer() {\n if (this.modeSelect === \"normal\") return layerManager.getLayer();\n return layerManager.getLayer(\"fow\");\n }\n onMouseDown(event: MouseEvent) {\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n if (!this.active) {\n this.startPoint = l2g(getMouse(event));\n this.active = true;\n switch (this.shapeSelect) {\n case \"square\": {\n this.shape = new Rect(this.startPoint.clone(), 0, 0, this.fillColour, this.borderColour);\n break;\n }\n case \"circle\": {\n this.shape = new Circle(\n this.startPoint.clone(),\n this.helperSize,\n this.fillColour,\n this.borderColour,\n );\n break;\n }\n case \"paint-brush\": {\n this.shape = new MultiLine(this.startPoint.clone(), [], this.brushSize);\n this.shape.fillColour = this.fillColour;\n break;\n }\n case \"draw-polygon\": {\n this.shape = new Polygon(this.startPoint.clone(), [], this.fillColour, this.borderColour);\n break;\n }\n default:\n return;\n }\n\n if (this.modeSelect !== \"normal\") {\n this.shape.options.set(\"preFogShape\", true);\n this.shape.options.set(\"skipDraw\", true);\n this.shape.fillColour = \"rgba(0, 0, 0, 1)\";\n }\n if (this.modeSelect === \"reveal\") this.shape.globalCompositeOperation = \"source-over\";\n else if (this.modeSelect === \"hide\") this.shape.globalCompositeOperation = \"destination-out\";\n\n this.shape.addOwner(gameStore.username);\n if (layer.name === \"fow\" && this.modeSelect === \"normal\") {\n this.shape.visionObstruction = true;\n this.shape.movementObstruction = true;\n }\n layer.addShape(this.shape, true, false, false);\n\n // Push brushhelper to back\n this.pushBrushBack();\n } else if (this.shape !== null && this.shape instanceof Polygon) {\n // For polygon draw\n this.shape._vertices.push(l2g(getMouse(event)));\n }\n if (this.shape !== null && this.shape instanceof Polygon) {\n const lastPoint = l2g(getMouse(event));\n if (this.ruler === null) {\n this.ruler = new Line(lastPoint, lastPoint, 3, \"black\");\n layer.addShape(this.ruler, false);\n } else {\n this.ruler.refPoint = lastPoint;\n this.ruler.endPoint = lastPoint;\n }\n if (this.shape.visionObstruction) gameStore.recalculateVision(true);\n layer.invalidate(false);\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: true });\n }\n }\n onMouseMove(event: MouseEvent) {\n const endPoint = l2g(getMouse(event));\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n if (this.brushHelper !== null) {\n this.brushHelper.r = this.helperSize;\n this.brushHelper.refPoint = endPoint;\n if (!this.active) layer.invalidate(false);\n }\n\n if (!this.active || this.startPoint === null || this.shape === null) return;\n\n switch (this.shapeSelect) {\n case \"square\": {\n (this.shape).w = Math.abs(endPoint.x - this.startPoint.x);\n (this.shape).h = Math.abs(endPoint.y - this.startPoint.y);\n this.shape.refPoint = new GlobalPoint(\n Math.min(this.startPoint.x, endPoint.x),\n Math.min(this.startPoint.y, endPoint.y),\n );\n break;\n }\n case \"circle\": {\n (this.shape).r = endPoint.subtract(this.startPoint).length();\n break;\n }\n case \"paint-brush\": {\n (this.shape)._points.push(endPoint);\n break;\n }\n case \"draw-polygon\": {\n this.ruler!.endPoint = endPoint;\n break;\n }\n }\n\n if (!(this.shape instanceof Polygon)) {\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: true });\n if (this.shape.visionObstruction) gameStore.recalculateVision(true);\n }\n layer.invalidate(false);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.shape === null || this.shape instanceof Polygon) return;\n if (!event.altKey && this.useGrid) {\n this.shape.resizeToGrid();\n }\n this.finaliseShape();\n }\n onContextMenu(event: MouseEvent) {\n if (!this.active || this.shape === null || !(this.shape instanceof Polygon)) return;\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n layer.removeShape(this.ruler!, false);\n this.ruler = null;\n this.finaliseShape();\n }\n\n private finaliseShape() {\n if (this.shape === null) return;\n if (this.shape.visionObstruction) gameStore.recalculateVision();\n if (this.shape.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: false });\n this.active = false;\n }\n\n onSelect() {\n const layer = this.getLayer();\n if (layer === undefined) return;\n this.brushHelper = new Circle(new GlobalPoint(-1000, -1000), this.brushSize / 2, this.fillColour);\n this.setupBrush();\n layer.addShape(this.brushHelper, false); // during mode change the shape is already added\n }\n onDeselect() {\n const layer = this.getLayer();\n if (this.brushHelper !== null && layer !== undefined) layer.removeShape(this.brushHelper, false);\n if (this.active && layer !== undefined && this.shape !== null) {\n layer.removeShape(this.shape, true, false);\n this.shape = null;\n this.active = false;\n layer.invalidate(false);\n }\n }\n\n private pushBrushBack() {\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n if (this.brushHelper !== null) layer.removeShape(this.brushHelper, false);\n this.brushHelper = new Circle(new GlobalPoint(-1000, -1000), this.brushSize / 2, this.fillColour);\n this.setupBrush();\n layer.addShape(this.brushHelper, false); // during mode change the shape is already added\n }\n}\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2lx, g2ly, l2g } from \"@/game/units\";\n\nexport class Line extends Shape {\n type = \"line\";\n endPoint: GlobalPoint;\n lineWidth: number;\n constructor(\n startPoint: GlobalPoint,\n endPoint: GlobalPoint,\n lineWidth?: number,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, \"rgba(0, 0, 0, 0)\", strokeColour || \"#000\", uuid);\n this.endPoint = endPoint;\n this.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n x2: this.endPoint.x,\n y2: this.endPoint.y,\n line_width: this.lineWidth,\n });\n }\n get points() {\n return [[this.refPoint.x, this.refPoint.y], [this.endPoint.x, this.endPoint.y]];\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(\n new GlobalPoint(Math.min(this.refPoint.x, this.endPoint.x), Math.min(this.refPoint.y, this.endPoint.y)),\n Math.abs(this.refPoint.x - this.endPoint.x),\n Math.abs(this.refPoint.y - this.endPoint.y),\n );\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.strokeStyle = this.strokeColour;\n ctx.beginPath();\n ctx.moveTo(g2lx(this.refPoint.x), g2ly(this.refPoint.y));\n ctx.lineTo(g2lx(this.endPoint.x), g2ly(this.endPoint.y));\n ctx.lineWidth = this.lineWidth;\n ctx.stroke();\n }\n contains(point: GlobalPoint): boolean {\n return false; // TODO\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {} // TODO\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this.refPoint = l2g(point);\n else this.endPoint = l2g(point);\n }\n}\n","// import \"./class-component-hooks\";\n\nimport axios, { AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Router from \"vue-router\";\n\nVue.use(Router);\n\nimport AssetManager from \"@/assetManager/manager.vue\";\nimport Login from \"@/auth/login.vue\";\nimport Logout from \"@/auth/logout\";\nimport LoadComponent from \"@/core/components/load.vue\";\nimport Dashboard from \"@/dashboard/main.vue\";\nimport Game from \"@/game/game.vue\";\nimport Invitation from \"@/invitation/invitation\";\n\nimport { coreStore } from \"@/core/store\";\n// import { AssetManager } from \"./assetManager/assets\";\n// const AssetManager = () => import(\"./assetManager/assets\").then(m => m.AssetManager);\n\nexport const router = new Router({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes: [\n {\n path: \"/\",\n redirect: \"/dashboard\",\n },\n {\n path: \"/_load\",\n name: \"load\",\n component: LoadComponent,\n },\n {\n path: \"/assets\",\n component: AssetManager,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/auth\",\n component: { template: \"\" },\n children: [{ path: \"login\", component: Login }, { path: \"logout\", component: Logout }],\n },\n {\n path: \"/invite/:code\",\n component: Invitation,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/dashboard\",\n component: Dashboard,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/game/:creator/:room\",\n component: Game,\n meta: {\n auth: true,\n },\n },\n ],\n});\n\nrouter.beforeEach((to, from, next) => {\n if (!coreStore.initialized && to.path !== \"/_load\") {\n next({ path: \"/_load\" });\n axios\n .get(\"/api/auth\")\n .then((response: AxiosResponse) => {\n if (response.data.auth) {\n coreStore.setAuthenticated(true);\n coreStore.setUsername(response.data.username);\n }\n coreStore.setInitialized(true);\n router.push(to.path);\n })\n .catch(() => {\n console.error(\"Authentication check could not be fulfilled.\");\n });\n } else if (to.matched.some(record => record.meta.auth) && !coreStore.authenticated) {\n next({ path: \"/auth/login\", query: { redirect: to.path } });\n } else {\n next();\n }\n});\n","\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class Tool extends Vue {\n name = \"\";\n selected = false;\n active = false;\n get detailRight(): string {\n const rect = (this.$parent.$refs[this.name + \"-selector\"])[0].getBoundingClientRect();\n const mid = rect.left + rect.width / 2;\n\n return `${window.innerWidth - Math.min(window.innerWidth - 25, mid + 75)}px`;\n }\n get detailArrow(): string {\n const rect = (this.$parent.$refs[this.name + \"-selector\"])[0].getBoundingClientRect();\n const mid = rect.left + rect.width / 2;\n const right = Math.min(window.innerWidth - 25, mid + 75);\n return `${right - mid - 14}px`; // border width\n }\n created() {\n this.$parent.$on(\"mousedown\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseDown(event);\n });\n this.$parent.$on(\"mouseup\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseUp(event);\n });\n this.$parent.$on(\"mousemove\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseMove(event);\n });\n this.$parent.$on(\"contextmenu\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onContextMenu(event);\n });\n this.$parent.$on(\"tools-select-change\", (newValue: string, oldValue: string) => {\n if (oldValue === this.name) {\n this.selected = false;\n this.onDeselect();\n } else if (newValue === this.name) {\n this.selected = true;\n this.onSelect();\n }\n });\n }\n onSelect() {}\n onDeselect() {}\n onMouseDown(event: MouseEvent) {}\n onMouseUp(event: MouseEvent) {}\n onMouseMove(event: MouseEvent) {}\n onContextMenu(event: MouseEvent) {}\n}\n","import { render, staticRenderFns } from \"./tools.vue?vue&type=template&id=b6e1f51c&scoped=true&\"\nimport script from \"./tools.vue?vue&type=script&lang=ts&\"\nexport * from \"./tools.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6e1f51c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"main\"},on:{\"mouseleave\":_vm.mouseleave,\"wheel\":_vm.zoom}},[(_vm.showUI)?_c('menu-bar'):_vm._e(),_c('div',{attrs:{\"id\":\"board\"}},[(_vm.ready.manager)?[_c('tool-bar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],ref:\"tools\"})]:_vm._e(),_c('div',{attrs:{\"id\":\"layers\"},on:{\"mousedown\":_vm.mousedown,\"mouseup\":_vm.mouseup,\"mousemove\":_vm.mousemove,\"contextmenu\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.contextmenu($event)},\"dragover\":function($event){$event.preventDefault();},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.drop($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI && _vm.layers.length>1),expression:\"showUI && layers.length>1\"}],attrs:{\"id\":\"layerselect\"}},[_c('ul',_vm._l((_vm.layers),function(layer){return _c('li',{key:layer.name,class:{ 'layer-selected': layer === _vm.selectedLayer },on:{\"mousedown\":function($event){return _vm.selectLayer(layer)}}},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(layer))])])}),0)])],2),_c('selection-info',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],ref:\"selectionInfo\"}),_c('initiative-dialog',{ref:\"initiative\",attrs:{\"id\":\"initiativedialog\"}}),_c('note-dialog',{ref:\"note\"}),_c('label-dialog',{ref:\"labels\"}),(_vm.IS_DM || _vm.FAKE_PLAYER)?_c('dm-settings',{ref:\"dmsettings\"}):_vm._e(),_c('zoom-slider',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],attrs:{\"id\":\"zoomer\",\"height\":6,\"width\":200,\"min\":0,\"max\":1,\"interval\":0.1,\"dot-width\":8,\"dot-height\":20,\"tooltip-dir\":'bottom',\"tooltip\":'hover',\"formatter\":_vm.zoomDisplay.toFixed(1),\"slider-style\":{'border-radius': '15%'},\"bg-style\":{'background-color': '#fff', 'box-shadow': '0.5px 0.5px 3px 1px rgba(0, 0, 0, .36)'},\"process-style\":{'background-color': '#fff'}},model:{value:(_vm.zoomDisplay),callback:function ($$v) {_vm.zoomDisplay=$$v},expression:\"zoomDisplay\"}}),_c('prompt-dialog',{ref:\"prompt\"}),_c('confirm-dialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=template&id=3d0578ba&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"input-copy\"},on:{\"mouseleave\":function($event){_vm.showPopup=false}}},[_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"disabled\",\"id\":\"input-element\"},domProps:{\"value\":_vm.value}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPopup),expression:\"showPopup\"}],attrs:{\"id\":\"show-popup\"}},[_vm._v(_vm._s(_vm.popupString))]),_c('div',{attrs:{\"id\":\"copy-button\"},on:{\"click\":_vm.copy}},[_c('i',{staticClass:\"far fa-copy\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=template&id=20bfdb3e&scoped=true&\"","import { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerAsset } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly, g2lz } from \"@/game/units\";\n\nexport class Asset extends BaseRect {\n type = \"assetrect\";\n img: HTMLImageElement;\n src: string = \"\";\n constructor(img: HTMLImageElement, topleft: GlobalPoint, w: number, h: number, uuid?: string) {\n super(topleft, w, h, undefined, undefined, uuid);\n this.img = img;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n src: this.src,\n });\n }\n fromDict(data: ServerAsset) {\n super.fromDict(data);\n this.src = data.src;\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n try {\n ctx.drawImage(this.img, g2lx(this.refPoint.x), g2ly(this.refPoint.y), g2lz(this.w), g2lz(this.h));\n } catch (error) {\n console.warn(`Shape ${this.uuid} could not load the image ${this.src}`);\n }\n }\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.src,\n has_img: true,\n effects: [],\n index: Infinity,\n };\n }\n}\n","import { render, staticRenderFns } from \"./inputCopy.vue?vue&type=template&id=20bfdb3e&scoped=true&\"\nimport script from \"./inputCopy.vue?vue&type=script&lang=ts&\"\nexport * from \"./inputCopy.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20bfdb3e\",\n null\n \n)\n\nexport default component.exports","import {\n BoundingBox,\n EdgeCirculator,\n FaceCirculator,\n LineFaceCirculator,\n LocateType,\n Point,\n Sign,\n TDS,\n Triangle,\n Vertex,\n} from \"./tds\";\nimport {\n ccw,\n collinearBetween,\n cw,\n edgeInfo,\n hasInexactNegativeOrientation,\n intersection,\n orientation,\n sideOfOrientedCircle,\n xyEqual,\n} from \"./triag\";\n\nexport type Edge = [Triangle, number];\n\nexport class CDT {\n tds: TDS;\n constructor() {\n this.tds = new TDS();\n }\n insertConstraint(a: Point, b: Point) {\n const va = this.insert(a);\n const vb = this.insert(b);\n if (va !== vb) this.insertConstraintV(va, vb);\n }\n\n insertConstraintV(va: Vertex, vb: Vertex) {\n const stack = [[va, vb]];\n while (stack.length > 0) {\n const v = stack.pop()!;\n const info = edgeInfo(v[0], v[1]);\n if (info.includes) {\n this.markConstraint(info.fr!, info.i!);\n if (info.vi! !== v[1]) {\n stack.push([info.vi!, v[1]]);\n }\n continue;\n }\n const intersectionInfo = this.findIntersectedFaces(v[0], v[1]);\n if (intersectionInfo.found) {\n if (intersectionInfo.vi !== v[0] && intersectionInfo.vi !== v[1]) {\n stack.push([v[0], intersectionInfo.vi]);\n stack.push([intersectionInfo.vi, v[1]]);\n } else {\n stack.push(v);\n }\n continue;\n }\n this.triangulateHole(intersectionInfo.intersectedFaces, intersectionInfo.listAB, intersectionInfo.listBA);\n if (intersectionInfo.vi !== v[1]) {\n stack.push([intersectionInfo.vi, v[1]]);\n }\n }\n }\n\n triangulateHole(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[]) {\n const edges: Edge[] = [];\n this.triangulateHole2(intersectedFaces, listAB, listBA, edges);\n this.propagatingFlipE(edges);\n }\n\n triangulateHole2(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[], edges: Edge[]) {\n if (listAB.length > 0) {\n this.triangulateHalfHole(listAB, edges);\n this.triangulateHalfHole(listBA, edges);\n const fl = listAB[0][0];\n const fr = listBA[0][0];\n fl.neighbours[2] = fr;\n fr.neighbours[2] = fl;\n fl.constraints[2] = true;\n fr.constraints[2] = true;\n\n while (intersectedFaces.length > 0) {\n this.tds.deleteTriangle(intersectedFaces.shift()!);\n }\n }\n }\n\n triangulateHalfHole(conflictBoundaries: Edge[], edges: Edge[]) {\n let iC = 0;\n let iN: number;\n let iT: number;\n const current = () => conflictBoundaries[iC];\n const next = () => conflictBoundaries[iN];\n const tempo = () => conflictBoundaries[iT];\n\n const va = current()[0].vertices[ccw(current()[1])]!;\n iN = iC;\n ++iN;\n\n let n: Triangle;\n let n1: Triangle;\n let n2: Triangle;\n let ind: number;\n let ind1: number;\n let ind2: number;\n do {\n n1 = current()[0];\n ind1 = current()[1];\n if (n1.neighbours[ind1] !== null) {\n n = n1.neighbours[ind1]!;\n ind = cw(n.indexV(n1.vertices[cw(ind1)]!));\n n1 = n.neighbours[ind]!;\n ind1 = this.tds.mirrorIndex(n, ind);\n }\n n2 = next()[0];\n ind2 = next()[1];\n if (n2.neighbours[ind2] !== null) {\n n = n2.neighbours[ind2]!;\n ind = cw(n.indexV(n2.vertices[cw(ind2)]!));\n n2 = n.neighbours[ind]!;\n ind2 = this.tds.mirrorIndex(n, ind);\n }\n const v0 = n1.vertices[ccw(ind1)]!;\n const v1 = n1.vertices[cw(ind1)]!;\n const v2 = n2.vertices[cw(ind2)]!;\n const orient = orientation(v0.point!, v1.point!, v2.point!);\n switch (orient) {\n case Sign.RIGHT_TURN: {\n const newlf = this.tds.createTriangle(v0, v2, v1, null, null, null);\n edges.push([newlf, 2]);\n newlf.neighbours[1] = n1;\n newlf.neighbours[0] = n2;\n n1.neighbours[ind1] = newlf;\n n2.neighbours[ind2] = newlf;\n if (n1.isConstrained(ind1)) newlf.constraints[1] = true;\n if (n2.isConstrained(ind2)) newlf.constraints[0] = true;\n v0.triangle = newlf;\n v1.triangle = newlf;\n v2.triangle = newlf;\n iT = iC + 1;\n conflictBoundaries.splice(iC, 0, [newlf, 2]);\n conflictBoundaries.splice(Math.max(iT, iN), 1);\n conflictBoundaries.splice(Math.min(iT, iN), 1);\n iN = iC;\n if (v0 !== va) --iC;\n else ++iN;\n break;\n }\n case Sign.LEFT_TURN:\n case Sign.COLLINEAR: {\n ++iC;\n ++iN;\n break;\n }\n }\n } while (iN < conflictBoundaries.length);\n }\n\n findIntersectedFaces(vaa: Vertex, vbb: Vertex) {\n const aa = vaa.point!;\n const bb = vbb.point!;\n const listAB: Edge[] = [];\n const listBA: Edge[] = [];\n const intersectedFaces: Triangle[] = [];\n const lfc = new LineFaceCirculator(vaa, this, bb);\n let ind = lfc.pos!.indexV(vaa);\n let vi: Vertex;\n if (lfc.pos!.isConstrained(ind)) {\n vi = this.intersect(lfc.pos!, ind, vaa, vbb);\n return { found: true, vi, listAB, listBA, intersectedFaces };\n }\n let lf = lfc.pos!.neighbours[ccw(ind)]!;\n let rf = lfc.pos!.neighbours[cw(ind)]!;\n listAB.push([lf, lf.indexT(lfc.pos!)]);\n listBA.unshift([rf, rf.indexT(lfc.pos!)]);\n intersectedFaces.unshift(lfc.pos!);\n let previousFace = lfc.pos!;\n lfc.next();\n ind = lfc.pos!.indexT(previousFace);\n let currentVertex = lfc.pos!.vertices[ind]!;\n let done = false;\n while (currentVertex !== vbb && !done) {\n let i1: number;\n let i2: number;\n const orient = orientation(aa, bb, currentVertex.point!);\n switch (orient) {\n case Sign.COLLINEAR: {\n done = true;\n break;\n }\n case Sign.LEFT_TURN:\n case Sign.RIGHT_TURN: {\n if (orient === Sign.LEFT_TURN) {\n i1 = ccw(ind);\n i2 = cw(ind);\n } else {\n i1 = cw(ind);\n i2 = ccw(ind);\n }\n if (lfc.pos!.isConstrained(i1)) {\n vi = this.intersect(lfc.pos!, i1, vaa, vbb);\n return { found: true, vi, listAB, listBA, intersectedFaces };\n } else {\n lf = lfc.pos!.neighbours[i2]!;\n intersectedFaces.unshift(lfc.pos!);\n if (orient === Sign.LEFT_TURN) listAB.push([lf, lf.indexT(lfc.pos!)]);\n else listBA.unshift([lf, lf.indexT(lfc.pos!)]);\n previousFace = lfc.pos!;\n lfc.next();\n ind = lfc.pos!.indexT(previousFace);\n currentVertex = lfc.pos!.vertices[ind]!;\n }\n break;\n }\n }\n }\n vi = currentVertex;\n intersectedFaces.unshift(lfc.pos!);\n lf = lfc.pos!.neighbours[cw(ind)]!;\n listAB.push([lf, lf.indexT(lfc.pos!)]);\n rf = lfc.pos!.neighbours[ccw(ind)]!;\n listBA.unshift([rf, rf.indexT(lfc.pos!)]);\n return { found: false, vi, listAB, listBA, intersectedFaces };\n }\n\n intersect(t: Triangle, i: number, vaa: Vertex, vbb: Vertex): Vertex {\n const vcc = t.vertices[cw(i)]!;\n const vdd = t.vertices[ccw(i)]!;\n const pa = vaa.point!;\n const pb = vbb.point!;\n const pc = vcc.point!;\n const pd = vdd.point!;\n let pi = intersection(pa, pb, pc, pd);\n if (pi !== pa && pi !== pb && pi !== pc && pi !== pd) {\n const bbox = new BoundingBox(pi!);\n bbox.dilate(4);\n if (bbox.overlaps(new BoundingBox(pa))) pi = pa;\n if (bbox.overlaps(new BoundingBox(pb))) pi = pb;\n if (bbox.overlaps(new BoundingBox(pc))) pi = pc;\n if (bbox.overlaps(new BoundingBox(pd))) pi = pd;\n }\n let vi: Vertex;\n if (pi === null) throw new Error(\"what\");\n else {\n this.removeConstrainedEdge(t, i);\n vi = this.insert(pi, t);\n }\n\n if (vi !== vcc && vi !== vdd) {\n this.insertConstraintV(vcc, vi);\n this.insertConstraintV(vi, vdd);\n } else {\n this.insertConstraintV(vcc, vdd);\n }\n return vi;\n }\n\n removeConstrainedEdge(t: Triangle, i: number) {\n t.constraints[i] = false;\n if (this.tds.dimension === 2) t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = false;\n }\n\n updateConstraintsOpposite(v: Vertex) {\n let t = v.triangle!;\n const start = t;\n let indf: number;\n do {\n indf = t.indexV(v);\n if (t.neighbours[indf]!.constraints[this.tds.mirrorIndex(t, indf)]) t.constraints[indf] = true;\n else t.constraints[indf] = false;\n t = t.neighbours[ccw(indf)]!;\n } while (t !== start);\n }\n\n markConstraint(t: Triangle, i: number) {\n if (this.tds.dimension === 1) t.constraints[2] = true;\n else {\n t.constraints[i] = true;\n t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = true;\n }\n }\n\n insert(p: Point, start: Triangle | null = null) {\n const locateInfo = this.locate(p, this.iLocate(p, start));\n const va = this.insertb(p, locateInfo.loc, locateInfo.lt, locateInfo.li);\n this.flipAround(va);\n return va;\n }\n\n flipAround(v: Vertex) {\n if (this.tds.dimension <= 1) return;\n let t = v.triangle!;\n let i: number;\n let next: Triangle;\n const start = t;\n do {\n i = t.indexV(v);\n next = t.neighbours[ccw(i)]!;\n this.propagatingFlip(t, i);\n t = next;\n } while (next !== start);\n }\n\n propagatingFlip(t: Triangle, i: number, depth = 0) {\n if (!this.isFlipable(t, i)) return;\n const maxDepth = 100;\n if (depth === maxDepth) {\n throw new Error(\"maxde\");\n return;\n }\n const ni = t.neighbours[i]!;\n this.flip(t, i);\n this.propagatingFlip(t, i, depth + 1);\n i = ni.indexV(t.vertices[i]!);\n this.propagatingFlip(ni, i, depth + 1);\n }\n\n lessEdge(e1: Edge, e2: Edge) {\n const ind1 = e1[1];\n const ind2 = e2[1];\n return e1[0].uid < e2[0].uid || (e1[0].uid === e2[0].uid && ind1 < ind2);\n }\n\n propagatingFlipE(edges: Edge[]) {\n let eI = 0;\n let t: Triangle;\n let i: number;\n let eni: Edge;\n const edgeSet: Edge[] = [];\n while (eI < edges.length) {\n t = edges[eI][0];\n i = edges[eI][1];\n if (this.isFlipable(t, i)) {\n eni = [t.neighbours[i]!, this.tds.mirrorIndex(t, i)];\n if (this.lessEdge(edges[eI], eni)) edgeSet.push(edges[eI]);\n else edgeSet.push(eni);\n }\n ++eI;\n }\n let indf: number;\n let ni: Triangle;\n let indn: number;\n let ei: Edge;\n const e: (Edge | null)[] = [null, null, null, null];\n while (edgeSet.length > 0) {\n t = edgeSet[0][0];\n indf = edgeSet[0][1];\n ni = t.neighbours[indf]!;\n indn = this.tds.mirrorIndex(t, indf);\n ei = [t, indf];\n edgeSet.splice(edgeSet.findIndex(ed => ed[0] === ei[0] && ed[1] === ei[1]), 1);\n e[0] = [t, cw(indf)];\n e[1] = [t, ccw(indf)];\n e[2] = [ni, cw(indn)];\n e[3] = [ni, ccw(indn)];\n\n for (const edge of e) {\n const tt = edge![0];\n const ii = edge![1];\n eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)];\n if (this.lessEdge(edge!, eni))\n edgeSet.splice(edgeSet.findIndex(ed => ed[0] === edge![0] && ed[1] === edge![1]), 1);\n else edgeSet.splice(edgeSet.findIndex(ed => ed[0] === eni[0] && ed[1] === eni[1]), 1);\n }\n\n this.flip(t, indf);\n\n for (const edge of e) {\n const tt = edge![0];\n const ii = edge![1];\n if (this.isFlipable(tt, ii)) {\n eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)];\n if (this.lessEdge(edge!, eni)) edgeSet.push(edge!);\n else edgeSet.push(eni);\n }\n }\n }\n }\n\n flip(t: Triangle, i: number) {\n const u = t.neighbours[i]!;\n const j = this.tds.mirrorIndex(t, i);\n const t1 = t.neighbours[cw(i)]!;\n const i1 = this.tds.mirrorIndex(t, cw(i));\n const t2 = t.neighbours[ccw(i)]!;\n const i2 = this.tds.mirrorIndex(t, ccw(i));\n const t3 = u.neighbours[cw(j)]!;\n const i3 = this.tds.mirrorIndex(u, cw(j));\n const t4 = u.neighbours[ccw(j)]!;\n const i4 = this.tds.mirrorIndex(u, ccw(j));\n this.tds.flip(t, i);\n t.constraints[t.indexT(u)] = false;\n u.constraints[u.indexT(t)] = false;\n t1.neighbours[i1]!.constraints[this.tds.mirrorIndex(t1, i1)] = t1.constraints[i1];\n t2.neighbours[i2]!.constraints[this.tds.mirrorIndex(t2, i2)] = t2.constraints[i2];\n t3.neighbours[i3]!.constraints[this.tds.mirrorIndex(t3, i3)] = t3.constraints[i3];\n t4.neighbours[i4]!.constraints[this.tds.mirrorIndex(t4, i4)] = t4.constraints[i4];\n }\n\n isFlipable(t: Triangle, i: number, perturb = true) {\n const ni = t.neighbours[i]!;\n if (t.isInfinite() || ni.isInfinite()) return false;\n if (t.constraints[i]) return false;\n return sideOfOrientedCircle(ni, t.vertices[i]!.point!, perturb) === Sign.ON_POSITIVE_SIDE;\n }\n\n insertb(a: Point, loc: Triangle | null, lt: LocateType, li: number): Vertex {\n let insertInConstrainedEdge = false;\n let v1: Vertex;\n let v2: Vertex;\n if (lt === LocateType.EDGE && loc!.isConstrained(li)) {\n insertInConstrainedEdge = true;\n v1 = loc!.vertices[ccw(li)]!;\n v2 = loc!.vertices[cw(li)]!;\n }\n const va = this.insertc(a, loc, lt, li);\n if (insertInConstrainedEdge) this.updateConstraintsIncident(va, v1!, v2!);\n else if (lt !== LocateType.VERTEX) this.clearConstraintsIncident(va);\n if (this.tds.dimension === 2) this.updateConstraintsOpposite(va);\n return va;\n }\n\n updateConstraintsIncident(va: Vertex, c1: Vertex, c2: Vertex) {\n if (this.tds.dimension === 0) return;\n if (this.tds.dimension === 1) {\n const ec = new EdgeCirculator(va, null);\n do {\n ec.t!.constraints[2] = true;\n } while (ec.next());\n } else {\n const fc = new FaceCirculator(va, null);\n do {\n const indf = fc.t!.indexV(va);\n const cwi = cw(indf);\n const ccwi = ccw(indf);\n if (fc.t!.vertices[cwi] === c1 || fc.t!.vertices[cwi] === c2) {\n fc.t!.constraints[ccwi] = true;\n fc.t!.constraints[cwi] = false;\n } else {\n fc.t!.constraints[ccwi] = false;\n fc.t!.constraints[cwi] = true;\n }\n } while (fc.next());\n }\n }\n\n clearConstraintsIncident(v: Vertex) {\n const ec = new EdgeCirculator(v, null);\n if (ec.valid) {\n do {\n const t = ec.t!;\n const indf = ec.ri;\n t.constraints[indf] = false;\n if (this.tds.dimension === 2) t.neighbours[indf]!.constraints[this.tds.mirrorIndex(t, indf)] = false;\n } while (ec.next());\n }\n }\n\n insertc(p: Point, loc: Triangle | null, lt: LocateType, li: number): Vertex {\n if (this.tds.vertices.length === 1) {\n return this.insertFirst(p);\n } else if (this.tds.vertices.length === 2) {\n if (lt === LocateType.VERTEX) return this.tds.finiteVertex;\n else return this.insertSecond(p);\n }\n switch (lt) {\n case LocateType.VERTEX: {\n return loc!.vertices[li]!;\n }\n case LocateType.OUTSIDE_AFFINE_HULL: {\n return this.insertOutsideAffineHull(p);\n }\n case LocateType.OUTSIDE_CONVEX_HULL: {\n return this.insertOutsideConvexHull(p, loc!);\n }\n case LocateType.EDGE: {\n return this.insertInEdge(p, loc!, li);\n }\n case LocateType.FACE: {\n return this.insertInFace(p, loc!);\n }\n }\n throw new Error(\"qwe\");\n return new Vertex();\n }\n\n insertInEdge(p: Point, loc: Triangle, li: number): Vertex {\n const v = this.tds.insertInEdge(loc, li);\n v.point = p;\n return v;\n }\n\n insertInFace(p: Point, loc: Triangle): Vertex {\n const v = this.tds.insertInFace(loc);\n v.point = p;\n return v;\n }\n\n insertFirst(p: Point): Vertex {\n const v = this.tds.insertDimUp();\n v.point = p;\n return v;\n }\n\n insertSecond(p: Point): Vertex {\n const v = this.tds.insertDimUp(this.tds._infinite, true);\n v.point = p;\n return v;\n }\n\n insertOutsideAffineHull(p: Point): Vertex {\n let conform = false;\n if (this.tds.dimension === 1) {\n const t = this.tds.finiteEdge.first!;\n const orient = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p);\n conform = orient === Sign.COUNTERCLOCKWISE;\n }\n const v = this.tds.insertDimUp(this.tds._infinite, conform);\n v.point = p;\n return v;\n }\n\n insertOutsideConvexHull(p: Point, t: Triangle): Vertex {\n let v: Vertex;\n if (this.tds.dimension === 1) {\n throw new Error(\"sdfasdasd\");\n } else {\n v = this.insertOutsideConvexHull2(p, t);\n }\n v.point = p;\n return v;\n }\n\n insertOutsideConvexHull2(p: Point, t: Triangle): Vertex {\n let li = t.indexV(this.tds._infinite);\n const ccwlist: Triangle[] = [];\n const cwlist: Triangle[] = [];\n let fc = new FaceCirculator(this.tds._infinite, t);\n let done = false;\n while (!done) {\n fc.prev();\n li = fc.t!.indexV(this.tds._infinite);\n const q = fc.t!.vertices[ccw(li)]!.point!;\n const r = fc.t!.vertices[cw(li)]!.point!;\n if (orientation(p, q, r) === Sign.LEFT_TURN) ccwlist.push(fc.t!);\n else done = true;\n }\n fc = new FaceCirculator(this.tds._infinite, t);\n done = false;\n while (!done) {\n fc.next();\n li = fc.t!.indexV(this.tds._infinite);\n const q = fc.t!.vertices[ccw(li)]!.point!;\n const r = fc.t!.vertices[cw(li)]!.point!;\n if (orientation(p, q, r) === Sign.LEFT_TURN) cwlist.push(fc.t!);\n else done = true;\n }\n const v = this.tds.insertInFace(t);\n v.point = p;\n let th;\n while (ccwlist.length > 0) {\n th = ccwlist[0];\n li = ccw(th.indexV(this.tds._infinite));\n this.tds.flip(th, li);\n ccwlist.shift();\n }\n while (cwlist.length > 0) {\n th = cwlist[0];\n li = cw(th.indexV(this.tds._infinite));\n this.tds.flip(th, li);\n cwlist.shift();\n }\n fc = new FaceCirculator(v, null);\n while (!fc.t!.isInfinite()) fc.next();\n this.tds._infinite.triangle = fc.t!;\n return v;\n }\n\n locate(p: Point, start: Triangle | null) {\n let lt = 0;\n let li = 0;\n if (this.tds.dimension < 0) {\n lt = LocateType.OUTSIDE_AFFINE_HULL;\n li = 4;\n return { loc: null, lt, li };\n } else if (this.tds.dimension === 0) {\n if (xyEqual(p, this.tds.finiteVertex.triangle!.vertices[0]!.point!)) {\n lt = LocateType.VERTEX;\n } else {\n lt = LocateType.OUTSIDE_AFFINE_HULL;\n }\n li = 4;\n return { loc: null, lt, li };\n } else if (this.tds.dimension === 1) {\n return this.marchLocate1D(p);\n }\n if (start === null) {\n const t = this.tds._infinite.triangle!;\n start = t.neighbours[t.indexV(this.tds._infinite)]!;\n } else if (start.isInfinite()) {\n start = start.neighbours[start.indexV(this.tds._infinite)]!;\n }\n return this.marchLocate2D(start, p);\n }\n\n marchLocate1D(p: Point) {\n const ff = this.tds._infinite.triangle!;\n const iv = ff.indexV(this.tds._infinite);\n const t = ff.neighbours[iv]!;\n const pqt = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p);\n if (pqt === Sign.RIGHT_TURN || pqt === Sign.LEFT_TURN) {\n return { loc: new Triangle(), lt: LocateType.OUTSIDE_AFFINE_HULL, li: 4 };\n }\n const i = t.indexT(ff);\n if (collinearBetween(p, t.vertices[1 - i]!.point!, t.vertices[i]!.point!))\n return { loc: ff, lt: LocateType.OUTSIDE_CONVEX_HULL, li: iv };\n\n if (xyEqual(p, t.vertices[1 - i]!.point!)) return { loc: t, lt: LocateType.VERTEX, li: 1 - i };\n throw new Error(\"sdfsdf\");\n }\n\n marchLocate2D(c: Triangle, p: Point) {\n let prev = null;\n let first = true;\n let lt: LocateType | undefined;\n let li: number | undefined;\n while (true) {\n if (c.isInfinite()) {\n return { loc: c, lt: LocateType.OUTSIDE_CONVEX_HULL, li: c.indexV(this.tds._infinite) };\n }\n const leftFirst = 0; // Math.round(Math.random());\n const p0 = c.vertices[0]!.point!;\n const p1 = c.vertices[1]!.point!;\n const p2 = c.vertices[2]!.point!;\n let o0: Sign;\n let o1: Sign;\n let o2: Sign;\n if (first) {\n prev = c;\n first = false;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n } else if (leftFirst) {\n if (c.neighbours[0]! === prev) {\n prev = c;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o1 = Sign.POSITIVE;\n } else if (c.neighbours[1]! === prev) {\n prev = c;\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o2 = Sign.POSITIVE;\n } else {\n prev = c;\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o0 = Sign.POSITIVE;\n }\n } else {\n if (c.neighbours[0] === prev) {\n prev = c;\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = Sign.POSITIVE;\n } else if (c.neighbours[1] === prev) {\n prev = c;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = Sign.POSITIVE;\n } else {\n prev = c;\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o0 = Sign.POSITIVE;\n }\n }\n const sum =\n (o0 === Sign.COLLINEAR ? 1 : 0) + (o1 === Sign.COLLINEAR ? 1 : 0) + (o2 === Sign.COLLINEAR ? 1 : 0);\n switch (sum) {\n case 0: {\n lt = LocateType.FACE;\n li = 4;\n break;\n }\n case 1: {\n lt = LocateType.EDGE;\n li = o0 === Sign.COLLINEAR ? 2 : o1 === Sign.COLLINEAR ? 0 : 1;\n break;\n }\n case 2: {\n lt = LocateType.VERTEX;\n li = o0 !== Sign.COLLINEAR ? 2 : o1 !== Sign.COLLINEAR ? 0 : 1;\n break;\n }\n }\n if (lt === undefined || li === undefined) throw new Error(\"ert\");\n return { loc: c, lt, li };\n }\n }\n\n iLocate(p: Point, start: Triangle | null) {\n if (this.tds.dimension < 2) return start;\n if (start === null) {\n const t = this.tds._infinite.triangle!;\n start = t.neighbours[t.indexV(this.tds._infinite)];\n } else if (start.isInfinite()) {\n start = start.neighbours[start.indexV(this.tds._infinite)];\n }\n let prev = null;\n let c = start!;\n let first = true;\n let nTurns = 2500;\n while (true) {\n if (!nTurns--) return c;\n if (c.isInfinite()) return c;\n const p0 = c.vertices[0]!.point!;\n const p1 = c.vertices[1]!.point!;\n const p2 = c.vertices[2]!.point!;\n if (first) {\n prev = c;\n first = false;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n } else {\n if (c.neighbours[0] === prev) {\n prev = c;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n } else if (c.neighbours[1] === prev) {\n prev = c;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n } else {\n prev = c;\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n }\n }\n break;\n }\n return c;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=script&lang=ts&\"","import { GlobalPoint } from \"@/game/geom\";\nimport { GridLayer } from \"@/game/layers/grid\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { Asset } from \"@/game/shapes/asset\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { l2gx, l2gy, l2gz } from \"@/game/units\";\n\nclass LayerManager {\n layers: Layer[] = [];\n width = window.innerWidth;\n height = window.innerHeight;\n\n UUIDMap: Map = new Map();\n\n // Refresh interval and redraw setter.\n interval = 30;\n\n constructor() {\n requestAnimationFrame(this.drawLoop);\n }\n\n reset() {\n this.layers = [];\n this.UUIDMap = new Map();\n }\n\n drawLoop = () => {\n for (let i = this.layers.length - 1; i >= 0; i--) {\n this.layers[i].draw();\n }\n requestAnimationFrame(this.drawLoop);\n };\n\n setWidth(width: number): void {\n this.width = width;\n for (const layer of this.layers) {\n layer.canvas.width = width;\n layer.width = width;\n }\n }\n\n setHeight(height: number): void {\n this.height = height;\n for (const layer of this.layers) {\n layer.canvas.height = height;\n layer.height = height;\n }\n }\n\n addLayer(layer: Layer): void {\n this.layers.push(layer);\n if (!gameStore.IS_DM && !layer.playerEditable) return;\n if (layer.selectable) gameStore.addLayer(layer.name);\n }\n\n hasLayer(name: string): boolean {\n return this.layers.some(l => l.name === name);\n }\n\n getLayer(name?: string) {\n name = name === undefined ? gameStore.selectedLayer : name;\n for (const layer of this.layers) {\n if (layer.name === name) return layer;\n }\n }\n\n selectLayer(name: string, sync: boolean = true): void {\n let found = false;\n for (const layer of this.layers) {\n if (!layer.selectable) continue;\n if (found && layer.name !== \"fow\") layer.ctx.globalAlpha = 0.3;\n else layer.ctx.globalAlpha = 1.0;\n\n if (name === layer.name) {\n gameStore.selectLayer({ name, sync });\n found = true;\n }\n\n layer.clearSelection();\n layer.invalidate(true);\n }\n }\n\n getGridLayer(): GridLayer | undefined {\n return this.getLayer(\"grid\");\n }\n\n hasSelection() {\n const selection = this.getSelection();\n return selection !== undefined && selection.length > 0;\n }\n\n // THIS INCLUDES POTENTIALLY THE SelectTool.SelectionHelper !!!\n getSelection() {\n const layer = this.getLayer();\n if (layer === undefined) return undefined;\n return layer.selection;\n }\n\n invalidate(): void {\n for (let i = this.layers.length - 1; i >= 0; i--) {\n this.layers[i].invalidate(true);\n }\n }\n\n invalidateLight() {\n for (let i = this.layers.length - 1; i >= 0; i--)\n if (this.layers[i].isVisionLayer) this.layers[i].invalidate(true);\n }\n\n dropAsset(event: DragEvent) {\n const layer = this.getLayer();\n if (layer === undefined || event === null || event.dataTransfer === null) return;\n const image = document.createElement(\"img\");\n image.src = event.dataTransfer.getData(\"text/plain\");\n const asset = new Asset(\n image,\n new GlobalPoint(l2gx(event.clientX), l2gy(event.clientY)),\n l2gz(image.width),\n l2gz(image.height),\n );\n asset.src = new URL(image.src).pathname;\n\n if (gameStore.useGrid) {\n const gs = gameStore.gridSize;\n asset.refPoint = new GlobalPoint(\n Math.round(asset.refPoint.x / gs) * gs,\n Math.round(asset.refPoint.y / gs) * gs,\n );\n asset.w = Math.max(Math.round(asset.w / gs) * gs, gs);\n asset.h = Math.max(Math.round(asset.h / gs) * gs, gs);\n }\n\n layer.addShape(asset, true);\n }\n}\n\nexport const layerManager = new LayerManager();\n(window).lm = layerManager;\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./createtoken_modal.vue?vue&type=template&id=73816298&scoped=true&\"\nimport script from \"./createtoken_modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./createtoken_modal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73816298\",\n null\n \n)\n\nexport default component.exports","import { BoundingRect } from \"@/game/shapes/boundingrect\";\n\nexport class BoundingNode {\n bbox: BoundingRect;\n nPrimitives: number;\n children: BoundingNode[] = [];\n constructor(nPrimitives: number, bbox: BoundingRect) {\n this.nPrimitives = nPrimitives;\n this.bbox = bbox;\n }\n}\n\nexport class LeafNode extends BoundingNode {\n firstPrimOffset: number;\n constructor(first: number, n: number, bbox: BoundingRect) {\n super(n, bbox);\n this.firstPrimOffset = first;\n }\n}\n\nexport class InteriorNode extends BoundingNode {\n dimension: number;\n constructor(dimension: number, c1: BoundingNode, c2: BoundingNode) {\n super(0, c1.bbox.union(c2.bbox));\n this.dimension = dimension;\n this.children.push(c1);\n this.children.push(c2);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=script&lang=ts&\"","import Tools from \"@/game/ui/tools/tools.vue\";\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { ServerAura } from '@/game/comm/types/shapes';\nimport { EventBus } from \"@/game/event-bus\";\nimport { Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\n\nexport function onKeyUp(event: KeyboardEvent) {\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {\n } else {\n if (event.key === \"Delete\" || event.key === \"Del\" || event.key === \"Backspace\") {\n if (layerManager.getLayer === undefined) {\n console.log(\"No active layer selected for delete operation\");\n return;\n }\n const l = layerManager.getLayer()!;\n for (let i = l.selection.length - 1; i >= 0; i--) {\n const sel = l.selection[i];\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) {\n l.selection.splice(i, 1);\n continue;\n }\n l.removeShape(sel, true, false);\n EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n EventBus.$emit(\"Initiative.Remove\", sel.uuid);\n }\n }\n }\n}\n\nexport function onKeyDown(event: KeyboardEvent) {\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {\n if (event.keyCode === 65 && event.ctrlKey) event.target!.select();\n } else {\n if (event.keyCode >= 37 && event.keyCode <= 40) {\n // todo: this should already be rounded\n const gridSize = Math.round(gameStore.gridSize);\n let offsetX = gridSize * (event.keyCode % 2);\n let offsetY = gridSize * (event.keyCode % 2 ? 0 : 1);\n if (layerManager.hasSelection()) {\n const selection = layerManager.getSelection()!;\n offsetX *= event.keyCode <= 38 ? -1 : 1;\n offsetY *= event.keyCode <= 38 ? -1 : 1;\n let delta = new Vector(offsetX, offsetY);\n if (!event.shiftKey || !gameStore.IS_DM) {\n // First check for collisions. Using the smooth wall slide collision check used on mouse move is overkill here.\n for (const sel of selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) continue;\n delta = calculateDelta(delta, sel);\n }\n }\n for (const sel of selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) continue;\n sel.refPoint = sel.refPoint.add(delta);\n // todo: Fix again\n // if (sel.refPoint.x % gridSize !== 0 || sel.refPoint.y % gridSize !== 0) sel.snapToGrid();\n socket.emit(\"Shape.Position.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n gameStore.recalculateVision();\n layerManager.getLayer()!.invalidate(false);\n } else {\n // The pan offsets should be in the opposite direction to give the correct feel.\n gameStore.increasePanX(offsetX * (event.keyCode <= 38 ? 1 : -1));\n gameStore.increasePanY(offsetY * (event.keyCode <= 38 ? 1 : -1));\n layerManager.invalidate();\n sendClientOptions();\n }\n } else if (event.keyCode === 68) {\n const layer = layerManager.getLayer();\n if (layer) {\n layer.clearSelection();\n layer.invalidate(true);\n }\n } else if (event.key === \"u\" && event.ctrlKey) {\n event.preventDefault();\n event.stopPropagation();\n gameStore.toggleUI();\n } else if (event.key === \"c\" && event.ctrlKey) {\n const layer = layerManager.getLayer();\n if (!layer) return;\n if (!layer.selection) return;\n const clipboard = [];\n for (const shape of layer.selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === shape.uuid) continue;\n clipboard.push(shape.asDict());\n }\n gameStore.setClipboard(clipboard);\n } else if (event.key === \"v\" && event.ctrlKey) {\n const layer = layerManager.getLayer();\n if (!layer) return;\n if (!gameStore.clipboard) return;\n layer.selection = [];\n for (const clip of gameStore.clipboard) {\n clip.x += 10;\n clip.y += 10;\n clip.uuid = uuidv4();\n const oldTrackers = clip.trackers;\n clip.trackers = [];\n for (const tracker of oldTrackers) {\n const newTracker: Tracker = {\n ...tracker,\n uuid: uuidv4()\n }\n clip.trackers.push(newTracker);\n }\n const oldAuras = clip.auras;\n clip.auras = [];\n for (const aura of oldAuras) {\n const newAura: ServerAura = {\n ...aura,\n uuid: uuidv4()\n }\n clip.auras.push(newAura);\n }\n const shape = createShapeFromDict(clip);\n if (shape === undefined) continue;\n layer.addShape(shape, true);\n layer.selection.push(shape);\n }\n if (layer.selection.length === 1) EventBus.$emit(\"SelectionInfo.Shape.Set\", layer.selection[0]);\n else EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n layer.invalidate(false);\n }\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n\nimport ShapeContext from \"@/game/ui/selection/shapecontext.vue\";\nimport CreateTokenModal from \"@/game/ui/tools/createtoken_modal.vue\";\nimport DrawTool from \"@/game/ui/tools/draw.vue\";\nimport FilterTool from \"@/game/ui/tools/filter.vue\";\nimport MapTool from \"@/game/ui/tools/map.vue\";\nimport PanTool from \"@/game/ui/tools/pan\";\nimport SelectTool from \"@/game/ui/tools/select.vue\";\nimport VisionTool from \"@/game/ui/tools/vision.vue\";\n\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameManager } from \"@/game/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { RulerTool } from \"@/game/ui/tools/ruler\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component({\n components: {\n \"select-tool\": SelectTool,\n \"pan-tool\": PanTool,\n \"draw-tool\": DrawTool,\n \"ruler-tool\": RulerTool,\n \"map-tool\": MapTool,\n \"filter-tool\": FilterTool,\n \"vision-tool\": VisionTool,\n \"shape-menu\": ShapeContext,\n \"createtoken-dialog\": CreateTokenModal,\n },\n watch: {\n currentTool(newValue, oldValue) {\n this.$emit(\"tools-select-change\", newValue, oldValue);\n },\n },\n})\nexport default class Tools extends Vue {\n $refs!: {\n selectTool: InstanceType;\n };\n\n currentTool = \"Select\";\n tools = [\"Select\", \"Pan\", \"Draw\", \"Ruler\", \"Map\", \"Filter\", \"Vision\"];\n dmTools = [\"Map\"];\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n get currentToolComponent(): string {\n return `${this.currentTool.toLowerCase()}-tool`;\n }\n\n get visibleTools(): string[] {\n return this.tools.filter(t => (!this.dmTools.includes(t) || this.IS_DM));\n }\n\n toolVisible(tool: string): boolean {\n if (tool === 'Filter') {\n return Object.keys(gameStore.labels).length > 0;\n } else if (tool === 'Vision') {\n return gameStore.ownedtokens.length > 1;\n }\n return true;\n }\n\n mousedown(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if (event.button === 1) {\n targetTool = \"Pan\";\n } else if (event.button !== 0) {\n return;\n }\n\n this.$emit(\"mousedown\", event, targetTool);\n }\n mouseup(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if (event.button === 1) {\n targetTool = \"Pan\";\n } else if (event.button !== 0) {\n return;\n }\n\n this.$emit(\"mouseup\", event, targetTool);\n }\n mousemove(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if ((event.buttons & 4) !== 0) {\n targetTool = \"Pan\";\n } else if ((event.button & 1) > 1) {\n return;\n }\n\n this.$emit(\"mousemove\", event, targetTool);\n\n // Annotation hover\n let found = false;\n for (const uuid of gameStore.annotations) {\n if (layerManager.UUIDMap.has(uuid) && layerManager.hasLayer(\"draw\")) {\n const shape = layerManager.UUIDMap.get(uuid)!;\n if (shape.contains(l2g(getMouse(event)))) {\n found = true;\n gameManager.annotationManager.setActiveText(shape.annotation);\n }\n }\n }\n if (!found && gameManager.annotationManager.shown) {\n gameManager.annotationManager.setActiveText(\"\");\n }\n }\n mouseleave(event: MouseEvent) {\n // When leaving the window while a mouse is pressed down, act as if it was released\n if ((event.buttons & 1) !== 0) {\n this.$emit(\"mouseup\", event, this.currentTool);\n }\n }\n contextmenu(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n if (event.button !== 2 || (event.target).tagName !== \"CANVAS\") return;\n this.$emit(\"contextmenu\", event, this.currentTool);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class Prompt extends Vue {\n $refs!: {\n answer: HTMLElement;\n };\n\n visible = false;\n question = \"\";\n answer = \"\";\n title = \"\";\n\n resolve = (value: string) => {};\n reject = () => {};\n\n submit() {\n this.resolve(this.answer);\n this.close();\n }\n close() {\n this.reject();\n this.visible = false;\n this.question = \"\";\n this.answer = \"\";\n this.title = \"\";\n }\n prompt(question: string, title: string): Promise {\n this.question = question;\n this.title = title;\n this.visible = true;\n this.$nextTick(() => {\n this.$refs.answer.focus();\n });\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&id=b102d41e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&id=b102d41e&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(_vm._s(_vm.message))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=template&id=ff095222&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=script&lang=ts&\"","import { GlobalPoint, Point, Ray, Vector } from \"@/game/geom\";\nimport { g2lx, g2ly } from \"../units\";\n\nexport class BoundingRect {\n readonly w: number;\n readonly h: number;\n readonly topLeft: GlobalPoint;\n readonly topRight: GlobalPoint;\n readonly botRight: GlobalPoint;\n readonly botLeft: GlobalPoint;\n\n constructor(topleft: GlobalPoint, w: number, h: number) {\n this.w = w;\n this.h = h;\n this.topLeft = topleft;\n this.topRight = new GlobalPoint(topleft.x + w, topleft.y);\n this.botRight = new GlobalPoint(topleft.x + w, topleft.y + h);\n this.botLeft = new GlobalPoint(topleft.x, topleft.y + h);\n }\n\n contains(point: GlobalPoint): boolean {\n return (\n this.topLeft.x <= point.x &&\n this.topRight.x >= point.x &&\n this.topLeft.y <= point.y &&\n this.botLeft.y >= point.y\n );\n }\n\n get points() {\n if (this.w === 0 || this.h === 0) return [[this.topLeft.x, this.topLeft.y]];\n return [\n [this.topLeft.x, this.topLeft.y],\n [this.botLeft.x, this.botLeft.y],\n [this.botRight.x, this.botRight.y],\n [this.topRight.x, this.topRight.y],\n ];\n }\n\n offset(vector: Vector): BoundingRect {\n return new BoundingRect(this.topLeft.add(vector), this.w, this.h);\n }\n\n union(other: BoundingRect): BoundingRect {\n const xmin = Math.min(this.topLeft.x, other.topLeft.x);\n const xmax = Math.max(this.topRight.x, other.topRight.x);\n const ymin = Math.min(this.topLeft.y, other.topLeft.y);\n const ymax = Math.max(this.botLeft.y, other.botLeft.y);\n return new BoundingRect(new GlobalPoint(xmin, ymin), xmax - xmin, ymax - ymin);\n }\n\n getDiagCorner(botright: boolean) {\n return botright ? this.botRight : this.topLeft;\n }\n\n intersectsWith(other: BoundingRect): boolean {\n return !(\n other.topLeft.x > this.topRight.x ||\n other.topRight.x < this.topLeft.x ||\n other.topLeft.y > this.botLeft.y ||\n other.botLeft.y < this.topLeft.y\n );\n }\n\n intersectsWithInner(other: BoundingRect): boolean {\n return !(\n other.topLeft.x >= this.topRight.x ||\n other.topRight.x <= this.topLeft.x ||\n other.topLeft.y >= this.botLeft.y ||\n other.botLeft.y <= this.topLeft.y\n );\n }\n\n intersectP(ray: Ray, invDir: Vector, dirIsNeg: boolean[]) {\n let txmin = invDir.x * (this.getDiagCorner(dirIsNeg[0]).x - ray.origin!.x);\n let txmax = invDir.x * (this.getDiagCorner(!dirIsNeg[0]).x - ray.origin!.x);\n const tymin = invDir.y * (this.getDiagCorner(dirIsNeg[1]).y - ray.origin!.y);\n const tymax = invDir.y * (this.getDiagCorner(!dirIsNeg[1]).y - ray.origin!.y);\n if (txmin > tymax || tymin > txmax) return { hit: false, min: txmin, max: txmax };\n if (tymin > txmin) txmin = tymin;\n if (tymax < txmax) txmax = tymax;\n return { hit: txmin < ray.tMax! && txmax > 0, min: txmin, max: txmax };\n }\n\n center(): GlobalPoint {\n return this.topLeft.add(new Vector(this.w / 2, this.h / 2));\n }\n\n getMaxExtent() {\n return this.w > this.h ? 0 : 1;\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n const coreVisible = !(\n g2lx(this.topLeft.x) > canvas.width ||\n g2ly(this.topLeft.y) > canvas.height ||\n g2lx(this.topRight.x) < 0 ||\n g2ly(this.botRight.y) < 0\n );\n if (coreVisible) return true;\n return false;\n }\n}\n","/*\nThis module defines some Point classes.\nA strong focus is made to ensure that at no time a global and a local point are mixed up with each other.\nAt first glance this adds weird looking hacks as ts does not support nominal typing.\n*/\n\nexport function getPointDistance(p1: Point, p2: Point) {\n const a = p1.x - p2.x;\n const b = p1.y - p2.y;\n return Math.sqrt(a * a + b * b);\n}\n\nexport class Point {\n readonly x: number;\n readonly y: number;\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n static fromArray(point: number[]) {\n return new Point(point[0], point[1]);\n }\n add(vec: Vector) {\n return new Point(this.x + vec.x, this.y + vec.y);\n }\n subtract(other: Point) {\n return new Vector(this.x - other.x, this.y - other.y);\n }\n clone(): Point {\n return new Point(this.x, this.y);\n }\n get(dimension: 0 | 1) {\n if (dimension === 0) return this.x;\n return this.y;\n }\n asArray(): number[] {\n return [this.x, this.y];\n }\n}\nexport class GlobalPoint extends Point {\n // This is to differentiate with LocalPoint, is actually never used\n // We do ! to prevent errors that it never gets initialized\n // tslint:disable-next-line:variable-name\n _GlobalPoint!: string;\n add(vec: Vector): GlobalPoint {\n return super.add(vec);\n }\n subtract(other: GlobalPoint): Vector {\n return super.subtract(other);\n }\n clone(): GlobalPoint {\n return super.clone();\n }\n static fromArray(point: number[]) {\n return new GlobalPoint(point[0], point[1]);\n }\n}\n\nexport class LocalPoint extends Point {\n // This is to differentiate with GlobalPoint, is actually never used\n // We do ! to prevent errors that it never gets initialized\n // tslint:disable-next-line:variable-name\n _LocalPoint!: string;\n add(vec: Vector): LocalPoint {\n return super.add(vec);\n }\n subtract(other: LocalPoint): Vector {\n return super.subtract(other);\n }\n clone(): LocalPoint {\n return super.clone();\n }\n}\n\nexport class Vector {\n readonly x: number;\n readonly y: number;\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n dot(other: Vector): number {\n return this.x * other.x + this.y * other.y;\n }\n inverse(): Vector {\n return new Vector(this.x === 0 ? 0 : 1 / this.x, this.y === 0 ? 0 : 1 / this.y);\n }\n length(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));\n }\n normalize(): Vector {\n const l = this.length();\n return new Vector(this.x / l, this.y / l);\n }\n reverse(): Vector {\n return new Vector(-this.x, -this.y);\n }\n multiply(scale: number): Vector {\n return new Vector(this.x * scale, this.y * scale);\n }\n angle(): number {\n return (Math.atan2(this.y, this.x) * 180) / Math.PI;\n }\n}\n\nexport class Ray {\n readonly direction: Vector;\n readonly origin: T;\n tMax: number;\n constructor(origin: T, direction: Vector, tMax?: number) {\n this.direction = direction;\n this.origin = origin;\n if (tMax === undefined) tMax = Infinity;\n this.tMax = tMax;\n }\n static fromPoints(p1: T, p2: T): Ray {\n const vec = new Vector(p2.x - p1.x, p2.y - p1.y);\n let maxT;\n if (Math.abs(vec.x) > 0.01) maxT = (p2.x - p1.x) / vec.x;\n else maxT = (p2.y - p1.y) / vec.y;\n return new Ray(p1, vec, maxT);\n }\n get(t: number): T {\n return new Point(this.origin.x + t * this.direction.x, this.origin.y + t * this.direction.y);\n }\n getDistance(t1: number, t2: number) {\n return Math.sqrt(Math.pow(t2 - t1, 2) * (Math.pow(this.direction.x, 2) + Math.pow(this.direction.y, 2)));\n }\n getT(t1: number, distance: number) {\n return t1 + Math.sqrt(Math.pow(distance, 2) / (Math.pow(this.direction.x, 2) + Math.pow(this.direction.y, 2)));\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_vm._l((_vm.folders),function(folder){return _c('li',{key:folder,staticClass:\"folder\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle($event)}}},[_vm._v(\"\\n \"+_vm._s(folder)+\"\\n \"),_c('asset-node',{attrs:{\"asset\":_vm.asset[folder]}})],1)}),_vm._l((_vm.files),function(file){return _c('li',{key:file.name,staticClass:\"file draggable token\",attrs:{\"draggable\":\"true\"},on:{\"mouseover\":function($event){_vm.showImage = file.hash},\"mouseout\":function($event){_vm.showImage = null},\"dragstart\":function($event){return _vm.dragStart($event, '/static/assets/' + file.hash)}}},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \"),(_vm.showImage == file.hash)?_c('div',{staticClass:\"preview\"},[_c('img',{staticClass:\"asset-preview-image\",attrs:{\"src\":'/static/assets/' + file.hash}})]):_vm._e()])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=template&id=6d718094&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=style&index=0&id=62228cde&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=style&index=0&id=62228cde&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport vueSlider from \"vue-slider-component\";\n\nimport \"@/game/api/events\";\n\nimport { throttle } from \"lodash\";\nimport { mapGetters, mapState } from \"vuex\";\n\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport Initiative from \"@/game/ui/initiative.vue\";\nimport LabelManager from \"@/game/ui/labels.vue\";\nimport MenuBar from \"@/game/ui/menu/menu.vue\";\nimport NoteDialog from \"@/game/ui/note.vue\";\nimport SelectionInfo from \"@/game/ui/selection/selection_info.vue\";\nimport Tools from \"@/game/ui/tools/tools.vue\";\n\nimport { createConnection, socket } from \"@/game/api/socket\";\nimport { onKeyDown, onKeyUp } from \"@/game/events/keyboard\";\nimport { scrollZoom } from \"@/game/events/mouse\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { LocalPoint } from \"./geom\";\nimport DmSettings from \"./ui/dmsettings.vue\";\n\n@Component({\n components: {\n \"tool-bar\": Tools,\n \"selection-info\": SelectionInfo,\n \"prompt-dialog\": Prompt,\n \"confirm-dialog\": ConfirmDialog,\n \"menu-bar\": MenuBar,\n \"initiative-dialog\": Initiative,\n \"zoom-slider\": vueSlider,\n \"note-dialog\": NoteDialog,\n \"label-dialog\": LabelManager,\n \"dm-settings\": DmSettings,\n },\n beforeRouteEnter(to, from, next) {\n createConnection(to);\n next();\n },\n beforeRouteLeave(to, from, next) {\n socket.disconnect();\n next();\n },\n})\nexport default class Game extends Vue {\n $refs!: {\n confirm: InstanceType;\n tools: InstanceType;\n };\n\n ready = {\n manager: false,\n tools: false,\n };\n\n get showUI(): boolean {\n return gameStore.showUI;\n }\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n get FAKE_PLAYER(): boolean {\n return gameStore.FAKE_PLAYER;\n }\n\n get layers(): string[] {\n return gameStore.layers;\n }\n\n get selectedLayer(): string {\n return gameStore.selectedLayer;\n }\n\n get zoomDisplay(): number {\n return gameStore.zoomDisplay;\n }\n\n set zoomDisplay(value: number) {\n gameStore.updateZoom({\n newZoomDisplay: value,\n zoomLocation: l2g(new LocalPoint(window.innerWidth / 2, window.innerHeight / 2)),\n });\n }\n\n mounted() {\n window.addEventListener(\"resize\", this.resizeWindow);\n window.addEventListener(\"keyup\", onKeyUp);\n window.addEventListener(\"keydown\", onKeyDown);\n this.ready.manager = true;\n }\n\n destroyed() {\n window.removeEventListener(\"resize\", this.resizeWindow);\n window.removeEventListener(\"keyup\", onKeyUp);\n window.removeEventListener(\"keydown\", onKeyDown);\n this.ready.manager = false;\n }\n\n // Window events\n\n zoom(event: WheelEvent) {\n throttle(scrollZoom)(event);\n }\n\n resizeWindow() {\n layerManager.setWidth(window.innerWidth);\n layerManager.setHeight(window.innerHeight);\n layerManager.invalidate();\n }\n\n // Mouse events\n\n mousedown(event: MouseEvent) {\n this.$refs.tools.mousedown(event);\n }\n mouseup(event: MouseEvent) {\n this.$refs.tools.mouseup(event);\n }\n mousemove(event: MouseEvent) {\n this.$refs.tools.mousemove(event);\n }\n mouseleave(event: MouseEvent) {\n this.$refs.tools.mouseleave(event);\n }\n contextmenu(event: MouseEvent) {\n this.$refs.tools.contextmenu(event);\n }\n selectLayer(layer: string) {\n layerManager.selectLayer(layer);\n }\n drop(event: DragEvent) {\n if (event === null || event.dataTransfer === null) return;\n if (event.dataTransfer.files.length > 0) {\n this.$refs.confirm\n .open(\"Uploading files should be done through the asset manager.\", \"Ok\", \"\")\n .then(() => {}, () => {});\n } else if (event.dataTransfer.getData(\"text/plain\") === \"\") {\n return;\n } else {\n layerManager.dropAsset(event);\n }\n }\n}\n","import { GlobalPoint, LocalPoint, Ray } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nexport function g2l(obj: GlobalPoint): LocalPoint {\n const z = gameStore.zoomFactor;\n const panX = gameStore.panX;\n const panY = gameStore.panY;\n return new LocalPoint((obj.x + panX) * z, (obj.y + panY) * z);\n}\n\nexport function g2lx(x: number) {\n return g2l(new GlobalPoint(x, 0)).x;\n}\n\nexport function g2ly(y: number) {\n return g2l(new GlobalPoint(0, y)).y;\n}\n\nexport function g2lz(z: number) {\n return z * gameStore.zoomFactor;\n}\n\nexport function getUnitDistance(r: number) {\n return (r / gameStore.unitSize) * gameStore.gridSize;\n}\n\nexport function g2lr(r: number) {\n return g2lz(getUnitDistance(r));\n}\n\nexport function l2g(obj: LocalPoint): GlobalPoint;\nexport function l2g(obj: Ray): Ray;\nexport function l2g(obj: LocalPoint | Ray): GlobalPoint | Ray {\n const z = gameStore.zoomFactor;\n const panX = gameStore.panX;\n const panY = gameStore.panY;\n if (obj instanceof LocalPoint) {\n return new GlobalPoint(obj.x / z - panX, obj.y / z - panY);\n } else {\n return new Ray(l2g(obj.origin), obj.direction.multiply(1 / z), obj.tMax);\n }\n}\n\nexport function l2gx(x: number) {\n return l2g(new LocalPoint(x, 0)).x;\n}\n\nexport function l2gy(y: number) {\n return l2g(new LocalPoint(0, y)).y;\n}\n\nexport function l2gz(z: number) {\n return z / gameStore.zoomFactor;\n}\n\nexport function l2gr(r: number) {\n return l2gz(getUnitDistance(r));\n}\n\n(window).g2lx = g2lx;\n(window).g2ly = g2ly;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport AssetNode from \"@/game/ui/menu/asset_node.vue\";\nimport NoteDialog from \"@/game/ui/note.vue\";\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { gameStore } from \"@/game/store\";\nimport { EventBus } from \"../../event-bus\";\n\n@Component({\n components: {\n \"color-picker\": ColorPicker,\n \"asset-node\": AssetNode,\n },\n computed: {\n ...mapState(\"game\", [\"locations\", \"assets\", \"notes\"]),\n },\n})\nexport default class MenuBar extends Vue {\n visible = {\n settings: false,\n locations: false,\n };\n\n get IS_DM(): boolean {\n return gameStore.IS_DM || gameStore.FAKE_PLAYER;\n }\n get gridColour(): string {\n return gameStore.gridColour;\n }\n set gridColour(value: string) {\n gameStore.setGridColour({ colour: value, sync: true });\n }\n get fowColour(): string {\n return gameStore.fowColour;\n }\n set fowColour(value: string) {\n gameStore.setFOWColour({ colour: value, sync: true });\n }\n get rulerColour(): string {\n return gameStore.rulerColour;\n }\n set rulerColour(value: string) {\n gameStore.setRulerColour({ colour: value, sync: true });\n }\n settingsClick(event: { target: HTMLElement }) {\n if (event.target.classList.contains(\"menu-accordion\")) {\n event.target.classList.toggle(\"menu-accordion-active\");\n const next = event.target.nextElementSibling;\n if (next !== null) next.style.display = next.style.display === \"\" ? \"block\" : \"\";\n }\n }\n changeLocation(name: string) {\n socket.emit(\"Location.Change\", name);\n }\n createLocation() {\n getRef(\"prompt\")\n .prompt(`New location name:`, `Create new location`)\n .then(\n (value: string) => {\n socket.emit(\"Location.New\", value);\n },\n () => {},\n );\n }\n createNote() {\n const note = { title: \"New note\", text: \"\", uuid: uuidv4() };\n gameStore.newNote({ note, sync: true });\n this.openNote(note);\n }\n openNote(note: Note) {\n getRef(\"note\").open(note);\n }\n\n openDmSettings() {\n EventBus.$emit(\"DmSettings.Open\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=script&lang=ts&\"","import { CDT } from \"./cdt\";\nimport { ccw, cw, orientation, ulp } from \"./triag\";\n\nexport type Point = number[];\n\nexport const INFINITE = -7e310;\n\nlet _INFINITE_VERTEX: Vertex;\n\nexport enum Sign {\n NEGATIVE = -1,\n ZERO = 0,\n POSITIVE = 1,\n\n RIGHT_TURN = -1,\n LEFT_TURN = 1,\n\n SMALLER = -1,\n EQUAL = 0,\n LARGER = 1,\n\n CLOCKWISE = -1,\n COUNTERCLOCKWISE = 1,\n\n COLLINEAR = 0,\n COPLANAR = 0,\n DEGENERATE = 0,\n\n ON_NEGATIVE_SIDE = -1,\n ON_ORIENTED_BOUNDARY = 0,\n ON_POSITIVE_SIDE = 1,\n}\n\nenum LineFaceState {\n UNDEFINED = -1,\n VERTEX_VERTEX = 0,\n VERTEX_EDGE = 1,\n EDGE_VERTEX = 2,\n EDGE_EDGE = 3,\n}\n\nfunction newPoint(): Point {\n return [INFINITE, INFINITE];\n}\n\nexport class Triangle {\n vertices: (Vertex | null)[] = [];\n neighbours: (Triangle | null)[] = [null, null, null];\n constraints = [false, false, false];\n static _counter = 0;\n uid = Triangle._counter++;\n\n constructor(...vertices: (Vertex | null)[]) {\n this.vertices = vertices;\n }\n\n from(t: Triangle): this {\n this.vertices = t.vertices.slice(0, t.vertices.length);\n this.neighbours = t.neighbours.slice(0, t.neighbours.length);\n this.constraints = t.constraints.slice(0, t.constraints.length);\n return this;\n }\n\n get dimension() {\n return this.vertices.length - 1;\n }\n\n addVertex(vertex: Vertex) {\n if (vertex === undefined) {\n console.log(\"UNDEFINED HIERE\");\n }\n this.vertices.push(vertex);\n vertex.triangle = this;\n }\n\n isConstrained(index: number): boolean {\n return this.constraints[index];\n }\n\n reorient() {\n // If certain indices do not exist yet thay will append faulty undefined's, thus we slice them\n this.vertices = [this.vertices[1], this.vertices[0], this.vertices[2]].slice(0, this.vertices.length);\n this.neighbours = [this.neighbours[1], this.neighbours[0], this.neighbours[2]];\n this.constraints = [this.constraints[1], this.constraints[0], this.constraints[2]];\n }\n\n indexV(v: Vertex): number {\n return this.vertices.indexOf(v);\n }\n\n indexT(t: Triangle): number {\n return this.neighbours.indexOf(t);\n }\n\n isInfinite(index?: number): boolean {\n if (index === undefined) {\n return this.vertices.includes(_INFINITE_VERTEX);\n } else {\n return this.vertices[ccw(index)]!.infinite || this.vertices[cw(index)]!.infinite;\n }\n }\n\n contains(point: Point) {\n const A =\n -this.vertices[1]!.point![1] * this.vertices[2]!.point![0] +\n this.vertices[0]!.point![1] * (-this.vertices[1]!.point![0] + this.vertices[2]!.point![0]) +\n this.vertices[0]!.point![0] * (this.vertices[1]!.point![1] - this.vertices[2]!.point![1]) +\n this.vertices[1]!.point![0] * this.vertices[2]!.point![1];\n const sign = A < 0 ? -1 : 1;\n const s =\n (this.vertices[0]!.point![1] * this.vertices[2]!.point![0] -\n this.vertices[0]!.point![0] * this.vertices[2]!.point![1] +\n (this.vertices[2]!.point![1] - this.vertices[0]!.point![1]) * point[0] +\n (this.vertices[0]!.point![0] - this.vertices[2]!.point![0]) * point[1]) *\n sign;\n if (s < 0) return false;\n const t =\n (this.vertices[0]!.point![0] * this.vertices[1]!.point![1] -\n this.vertices[0]!.point![1] * this.vertices[1]!.point![0] +\n (this.vertices[0]!.point![1] - this.vertices[1]!.point![1]) * point[0] +\n (this.vertices[1]!.point![0] - this.vertices[0]!.point![0]) * point[1]) *\n sign;\n\n return t > 0 && s + t < A * sign;\n }\n}\n\nexport class Vertex {\n infinite = false;\n private _point: Point | undefined;\n triangle: Triangle | undefined;\n\n constructor(point?: Point) {\n this._point = point;\n }\n\n get point(): Point | undefined {\n return this._point;\n }\n\n set point(point: Point | undefined) {\n this._point = point;\n this.infinite = false;\n }\n}\n\nexport class EdgeCirculator {\n ri: number;\n v: Vertex | null;\n t: Triangle | null;\n _ri: number;\n _v: Vertex | null;\n _t: Triangle | null;\n\n constructor(v: Vertex | null, t: Triangle | null) {\n this.v = v;\n this.t = t;\n if (v === null) {\n this.t = null;\n } else if (t === null) {\n this.t = v.triangle!;\n }\n if (this.t == null || this.t.dimension < 1) {\n this.ri = 0;\n this.v = null;\n this.t = null;\n } else {\n const i = this.t.indexV(v!);\n if (this.t.dimension === 2) this.ri = ccw(i);\n else this.ri = 2;\n }\n this._ri = this.ri;\n this._v = this.v;\n this._t = this.t;\n }\n\n get valid() {\n return this.t !== null && this.v !== null;\n }\n\n next(): boolean {\n let i = this.t!.indexV(this.v!);\n if (this.t!.dimension === 1) {\n this.t = this.t!.neighbours[i === 0 ? 1 : 0];\n } else {\n this.t = this.t!.neighbours[ccw(i)];\n i = this.t!.indexV(this.v!);\n this.ri = ccw(i);\n }\n return this.ri !== this._ri || this.v !== this._v || this.t !== this._t;\n }\n}\n\nexport class EdgeIterator {\n private i = 0;\n pos: Triangle | null;\n edge: Edge = new Edge();\n tds: TDS;\n _es = 0;\n constructor(tds: TDS) {\n this.tds = tds;\n this.edge.second = 0;\n if (tds.dimension <= 0) {\n this.pos = null;\n return;\n }\n this.pos = tds.triangles[0];\n if (tds.dimension === 1) this.edge.second = 2;\n while (this.pos !== null && !this.associatedEdge()) {\n throw new Error(\"[poi\");\n }\n\n if (tds.dimension === 1) this._es = 2;\n }\n\n get valid(): boolean {\n return (this.pos !== null || this._es !== this.edge.second) && this.pos!.isInfinite(this.edge.second);\n }\n\n next() {\n do {\n this.increment();\n } while (this.pos !== null && !this.associatedEdge());\n }\n\n collect(): Edge {\n this.edge.first = this.pos;\n return this.edge;\n }\n\n associatedEdge(): boolean {\n if (this.tds.dimension === 1) return true;\n return (\n this.tds.triangles.indexOf(this.pos!) < this.tds.triangles.indexOf(this.pos!.neighbours[this.edge.second]!)\n );\n }\n\n increment() {\n if (this.tds.dimension === 1) {\n this.i++;\n if (this.tds.triangles.length <= this.i) this.pos = null;\n else this.pos = this.tds.triangles[this.i];\n } else if (this.edge.second === 2) {\n this.edge.second = 0;\n this.i++;\n if (this.tds.triangles.length <= this.i) this.pos = null;\n else this.pos = this.tds.triangles[this.i];\n } else {\n this.edge.second++;\n }\n }\n}\n\nexport class FaceCirculator {\n v: Vertex | null;\n t: Triangle | null;\n _v: Vertex | null;\n _t: Triangle | null;\n\n constructor(v: Vertex | null, t: Triangle | null) {\n this.v = v;\n this.t = t;\n if (v === null) {\n this.t = null;\n } else if (t === null) {\n this.t = v.triangle!;\n }\n if (this.t == null || this.t.dimension < 2) {\n this.v = null;\n this.t = null;\n }\n this._v = this.v;\n this._t = this.t;\n }\n\n get valid() {\n return this.t !== null && this.v !== null;\n }\n\n prev() {\n const i = this.t!.indexV(this.v!);\n this.t = this.t!.neighbours[cw(i)];\n }\n\n next(): boolean {\n const i = this.t!.indexV(this.v!);\n this.t = this.t!.neighbours[ccw(i)];\n return this.v !== this._v || this.t !== this._t;\n }\n}\n\nexport class LineFaceCirculator {\n private i = 0;\n pos: Triangle | null = null;\n _tr: CDT;\n s: LineFaceState = LineFaceState.UNDEFINED;\n p: Point;\n q: Point;\n\n constructor(v: Vertex, tr: CDT, dir: Point) {\n this._tr = tr;\n this.p = v.point!;\n this.q = dir;\n\n const fc = new FaceCirculator(v, null);\n let ic = fc.t!.indexV(v);\n let vt = fc.t!.vertices[cw(ic)]!;\n while (v === _INFINITE_VERTEX || orientation(this.p, this.q, vt.point!) !== Sign.LEFT_TURN) {\n fc.next();\n ic = fc.t!.indexV(v);\n vt = fc.t!.vertices[cw(ic)]!;\n if (!fc.valid) {\n return;\n }\n }\n\n let vr = fc.t!.vertices[ccw(ic)]!;\n let pqr: Sign = Sign.RIGHT_TURN;\n // tslint:disable:no-conditional-assignment\n while (vr !== _INFINITE_VERTEX && (pqr = orientation(this.p, this.q, vr.point!)) === Sign.LEFT_TURN) {\n fc.prev();\n ic = fc.t!.indexV(v);\n vr = fc.t!.vertices[ccw(ic)]!;\n }\n\n ic = fc.t!.indexV(v);\n vt = fc.t!.vertices[cw(ic)]!;\n\n if (vr === _INFINITE_VERTEX) {\n fc.prev();\n ic = fc.t!.indexV(v);\n vr = fc.t!.vertices[ccw(ic)]!;\n pqr = orientation(this.p, this.q, vr.point!);\n switch (pqr) {\n case Sign.RIGHT_TURN:\n case Sign.COLLINEAR: {\n fc.next();\n ic = fc.t!.indexV(_INFINITE_VERTEX);\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ic;\n break;\n }\n case Sign.LEFT_TURN: {\n break;\n }\n }\n } else if (pqr === Sign.COLLINEAR) {\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ccw(ic);\n } else {\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_EDGE;\n this.i = ic;\n }\n }\n\n next() {\n this.increment();\n }\n\n increment() {\n let o: Sign;\n if (this.s === LineFaceState.VERTEX_VERTEX || this.s === LineFaceState.EDGE_VERTEX) {\n do {\n const n = this.pos!.neighbours[cw(this.i)]!;\n this.i = n.indexT(this.pos!);\n this.pos = n;\n if (this.pos!.vertices[this.i] === _INFINITE_VERTEX) {\n o = Sign.COLLINEAR;\n this.i = cw(this.i);\n break;\n }\n o = orientation(this.p, this.q, this.pos!.vertices[this.i]!.point!);\n this.i = cw(this.i);\n } while (o === Sign.LEFT_TURN);\n if (o === Sign.COLLINEAR) {\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ccw(this.i);\n } else {\n this.s = LineFaceState.VERTEX_EDGE;\n }\n } else {\n const n = this.pos!.neighbours[this.i]!;\n const ni = n.indexT(this.pos!);\n this.pos = n;\n o =\n this.pos!.vertices[ni]! === _INFINITE_VERTEX\n ? Sign.COLLINEAR\n : orientation(this.p, this.q, this.pos!.vertices[ni]!.point!);\n switch (o) {\n case Sign.LEFT_TURN: {\n this.s = LineFaceState.EDGE_EDGE;\n this.i = ccw(ni);\n break;\n }\n case Sign.RIGHT_TURN: {\n this.s = LineFaceState.EDGE_EDGE;\n this.i = cw(ni);\n break;\n }\n default: {\n this.s = LineFaceState.EDGE_VERTEX;\n this.i = ni;\n }\n }\n }\n }\n}\n\nclass Edge {\n first: Triangle | null = null;\n second: number = 0;\n}\n\nexport enum LocateType {\n VERTEX,\n EDGE,\n FACE,\n OUTSIDE_CONVEX_HULL,\n OUTSIDE_AFFINE_HULL,\n}\n\nexport class TDS {\n dimension = -1;\n vertices: Vertex[] = [];\n triangles: Triangle[] = [];\n _infinite: Vertex;\n\n constructor() {\n this._infinite = this.createVertex();\n _INFINITE_VERTEX = this._infinite;\n const t = new Triangle();\n t.addVertex(this._infinite);\n this.triangles.push(t);\n }\n\n createVertex(): Vertex {\n const v = this.infiniteVertex;\n if (v === undefined) {\n console.log(\"UNDEFINED HIERE\");\n }\n this.vertices.push(v);\n return v;\n }\n\n createTriangle(\n v0: Vertex | null,\n v1: Vertex | null,\n v2: Vertex | null,\n n0: Triangle | null,\n n1: Triangle | null,\n n2: Triangle | null,\n ) {\n const t = new Triangle(v0, v1, v2);\n t.neighbours[0] = n0;\n t.neighbours[1] = n1;\n t.neighbours[2] = n2;\n this.triangles.push(t);\n return t;\n }\n\n deleteTriangle(trig: Triangle) {\n this.triangles = this.triangles.filter(t => t !== trig);\n }\n\n setAdjacency(t0: Triangle, i0: number, t1: Triangle, i1: number) {\n t0.neighbours[i0] = t1;\n t1.neighbours[i1] = t0;\n }\n\n get finiteVertex(): Vertex {\n return this.vertices[1];\n }\n\n get infiniteVertex(): Vertex {\n const v = new Vertex(newPoint());\n v.infinite = true;\n return v;\n }\n\n get finiteEdge(): Edge {\n if (this.dimension < 1) throw new Error(\"aspo\");\n const ei = new EdgeIterator(this);\n while (ei.valid) ei.next();\n return ei.collect();\n }\n\n insertDimUp(w: Vertex = new Vertex(), orient: boolean = true): Vertex {\n const v = this.createVertex();\n this.dimension++;\n let t1: Triangle;\n let t2: Triangle;\n switch (this.dimension) {\n case 0: {\n t1 = this.triangles[0];\n t2 = new Triangle(v);\n this.triangles.push(t2);\n this.setAdjacency(t1, 0, t2, 0);\n v.triangle = t2;\n break;\n }\n case 1:\n case 2: {\n const deleteList: Triangle[] = [];\n const triangles = this.triangles.slice(0, this.triangles.length);\n for (const trig of triangles) {\n const copy = new Triangle().from(trig);\n this.triangles.push(copy);\n trig.vertices[this.dimension] = v;\n copy.vertices[this.dimension] = w;\n this.setAdjacency(trig, this.dimension, copy, this.dimension);\n if (trig.vertices.includes(w)) deleteList.push(copy);\n }\n for (const trig of triangles) {\n const neighbour = trig.neighbours[this.dimension];\n for (let j = 0; j < this.dimension; ++j) {\n neighbour!.neighbours[j] = trig.neighbours[j]!.neighbours[this.dimension];\n }\n }\n\n let lfit = 0;\n if (this.dimension === 1) {\n if (orient) {\n triangles[lfit].reorient();\n lfit++;\n triangles[lfit].neighbours[1]!.reorient();\n } else {\n triangles[lfit].neighbours[1]!.reorient();\n lfit++;\n triangles[lfit].reorient();\n }\n } else {\n for (const trig of triangles) {\n if (orient) trig.neighbours[2]!.reorient();\n else trig.reorient();\n }\n }\n\n for (const trig of deleteList) {\n let j = 1;\n if (trig.vertices[0] === w) j = 0;\n t1 = trig.neighbours[this.dimension]!;\n const i1 = this.mirrorIndex(trig, this.dimension);\n t2 = trig.neighbours[j]!;\n const i2 = this.mirrorIndex(trig, j);\n this.setAdjacency(t1, i1, t2, i2);\n this.deleteTriangle(trig);\n }\n v.triangle = triangles[0];\n break;\n }\n default: {\n throw new Error(\"Dimension unknown\");\n }\n }\n return v;\n }\n\n mirrorIndex(t: Triangle, i: number): number {\n if (t.dimension === 1) {\n const j = t.neighbours[i]!.indexV(t.vertices[i === 0 ? 1 : 0]!);\n return j === 0 ? 1 : 0;\n }\n return ccw(t.neighbours[i]!.indexV(t.vertices[ccw(i)]!));\n }\n\n insertInFace(t: Triangle) {\n const v = this.createVertex();\n const v0 = t.vertices[0]!;\n const v1 = t.vertices[1]!;\n const v2 = t.vertices[2]!;\n const n1 = t.neighbours[1]!;\n const n2 = t.neighbours[2]!;\n const t1 = this.createTriangle(v0, v, v2, t, n1, null);\n const t2 = this.createTriangle(v0, v1, v, t, null, n2);\n this.setAdjacency(t1, 2, t2, 1);\n if (n1 !== null) {\n const i1 = this.mirrorIndex(t, 1);\n n1.neighbours[i1] = t1;\n }\n if (n2 !== null) {\n const i2 = this.mirrorIndex(t, 2);\n n2.neighbours[i2] = t2;\n }\n t.vertices[0] = v;\n t.neighbours[1] = t1;\n t.neighbours[2] = t2;\n if (v0.triangle === t) v0.triangle = t2;\n v.triangle = t;\n return v;\n }\n\n flip(t: Triangle, i: number) {\n const n = t.neighbours[i]!;\n const ni = this.mirrorIndex(t, i);\n const vCW = t.vertices[cw(i)]!;\n const vCCW = t.vertices[ccw(i)]!;\n const tr = t.neighbours[ccw(i)]!;\n const tri = this.mirrorIndex(t, ccw(i));\n const bl = n.neighbours[ccw(ni)]!;\n const bli = this.mirrorIndex(n, ccw(ni));\n\n t.vertices[cw(i)] = n.vertices[ni]!;\n n.vertices[cw(ni)] = t.vertices[i]!;\n\n this.setAdjacency(t, i, bl, bli);\n this.setAdjacency(t, ccw(i), n, ccw(ni));\n this.setAdjacency(n, ni, tr, tri);\n\n if (vCW.triangle! === t) vCW.triangle = n;\n if (vCCW.triangle! === n) vCCW.triangle = t;\n }\n\n insertInEdge(t: Triangle, i: number) {\n let v: Vertex;\n if (this.dimension === 1) {\n v = this.createVertex();\n const ff = t.neighbours[0]!;\n const vv = t.vertices[1]!;\n const g = this.createTriangle(v, vv, null, ff, t, null);\n t.vertices[1] = v;\n t.neighbours[0] = g;\n ff.neighbours[1] = g;\n v.triangle = g;\n vv.triangle = ff;\n } else {\n const n = t.neighbours[i]!;\n const ni = this.mirrorIndex(t, i);\n v = this.insertInFace(t);\n this.flip(n, ni);\n }\n return v;\n }\n}\n\nexport class BoundingBox {\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n constructor(p: Point) {\n this.x1 = p[0];\n this.y1 = p[1];\n this.x2 = p[0];\n this.y2 = p[1];\n }\n\n dilate(dist: number) {\n this.x1 -= dist * ulp(this.x1);\n this.y1 -= dist * ulp(this.y1);\n this.x2 += dist * ulp(this.x2);\n this.y2 += dist * ulp(this.y2);\n }\n\n overlaps(other: BoundingBox): boolean {\n if (this.x2 < other.x1 || other.x2 < this.x1) return false;\n if (this.y2 < other.y1 || other.y2 < this.y1) return false;\n return true;\n }\n}\n","import { partition } from \"@/core/utils\";\nimport { GlobalPoint, Ray } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly, g2lz } from \"@/game/units\";\nimport { BoundingNode, InteriorNode, LeafNode } from \"@/game/visibility/bvh/node\";\n\ninterface BuildInfo {\n index: number;\n bbox: BoundingRect;\n center: BoundingRect;\n}\ninterface LinearBHVNode {\n bbox: BoundingRect;\n nPrimitives: number;\n}\ninterface LinearLeafNode extends LinearBHVNode {\n primitivesOffset: number;\n}\ninterface LinearInternalNode extends LinearBHVNode {\n secondChildOffset: number;\n dimension: number;\n}\n\nexport class BoundingVolume {\n totalNodes = 0;\n buildData: BuildInfo[] = [];\n shapes: string[];\n orderedPrims: string[] = [];\n root: BoundingNode | null;\n nodes: LinearBHVNode[] = [];\n\n offset = 0;\n\n constructor(shapes: string[]) {\n this.shapes = shapes;\n if (this.shapes.length === 0) {\n this.root = null;\n this.nodes = [];\n return;\n }\n for (let i = 0; i < shapes.length; i++) {\n const shape = layerManager.UUIDMap.get(shapes[i])!;\n this.buildData.push({\n index: i,\n bbox: shape.getBoundingBox(),\n center: new BoundingRect(shape.center(), 0, 0),\n });\n }\n this.root = this.recursiveBuild(0, shapes.length);\n this.compact();\n }\n\n draw() {\n const ctx = layerManager.getLayer(\"draw\")!.ctx;\n for (const node of this.nodes) {\n const b = node.bbox;\n ctx.strokeRect(g2lx(b.topLeft.x), g2ly(b.topLeft.y), g2lz(b.w), g2lz(b.h));\n }\n }\n\n recursiveBuild(start: number, end: number): BoundingNode {\n this.totalNodes++;\n let bbox = this.buildData[start].bbox;\n for (let i = start + 1; i < end; i++) bbox = bbox.union(this.buildData[i].bbox);\n const nPrimitives = end - start;\n if (nPrimitives === 1) {\n return this.createLeaf(start, end, nPrimitives, bbox);\n } else {\n let centroidBbox = this.buildData[start].center;\n for (let i = start; i < end; i++) centroidBbox = centroidBbox.union(this.buildData[i].center);\n const dimension = centroidBbox.getMaxExtent();\n if (centroidBbox.botRight.get(dimension) === centroidBbox.topLeft.get(dimension)) {\n return this.createLeaf(start, end, nPrimitives, bbox);\n }\n // Use shitty Middle thingy until an introselect js algo is added\n const pMid = 0.5 * (centroidBbox.topLeft.get(dimension) + centroidBbox.botRight.get(dimension));\n const partitionedData = partition(\n this.buildData.slice(start, end),\n (n: BuildInfo) => n.center.center().get(dimension) < pMid,\n );\n const flattened = ([]).concat.apply([], partitionedData);\n if (partitionedData[0].length === 0 || partitionedData[1].length === 0) console.log(\"EMPTY\");\n this.buildData.splice(start, flattened.length, ...flattened);\n const mid = partitionedData[0].length + start;\n return new InteriorNode(dimension, this.recursiveBuild(start, mid), this.recursiveBuild(mid, end));\n }\n }\n\n intersect(ray: Ray, stopOnFirstHit?: boolean) {\n if (this.nodes.length === 0) return { hit: false, intersect: ray.get(0), tMin: 0, tMax: ray.tMax };\n if (stopOnFirstHit === undefined) stopOnFirstHit = false;\n // Initialize return values\n let hit = false;\n let tMin = 0;\n let tMax = ray.tMax;\n\n // Initialize work variables\n let todoOffset = 0;\n let nodeNum = 0;\n const todo: number[] = [];\n\n // Precalculate intersection vectors\n const invDir = ray.direction.inverse();\n const dirIsNegative = [invDir.x < 0, invDir.y < 0];\n\n while (true) {\n const node = this.nodes[nodeNum];\n\n const i = node.bbox.intersectP(ray, invDir, dirIsNegative);\n if (i.hit) {\n if (node.nPrimitives > 0) {\n // TODO: nPrimitives is currently always 1 , this could be generalised\n // for (let i=0; i < node.nPrimitives; i++) {\n // if (this.shapes[(node).primitivesOffset + i])\n // }\n hit = true;\n tMin = ray.tMax = i.min;\n tMax = i.max;\n if (todoOffset === 0 || stopOnFirstHit) break;\n nodeNum = todo[--todoOffset];\n } else {\n if (dirIsNegative[(node).dimension]) {\n todo[todoOffset++] = nodeNum + 1;\n nodeNum = (node).secondChildOffset;\n } else {\n todo[todoOffset++] = (node).secondChildOffset;\n nodeNum++;\n }\n }\n } else {\n if (todoOffset === 0) break;\n nodeNum = todo[--todoOffset];\n }\n }\n return { hit, intersect: ray.get(tMin), tMin, tMax };\n }\n\n private compact() {\n this.offset = 0;\n if (this.root !== null) this.flatten(this.root);\n }\n\n private flatten(node: BoundingNode) {\n const index = this.offset;\n const myOffset = this.offset++;\n if (node.nPrimitives === 0) {\n this.flatten(node.children[0]);\n const secondOffset = this.flatten(node.children[1]);\n this.nodes[index] = {\n bbox: node.bbox,\n dimension: (node).dimension,\n nPrimitives: 0,\n secondChildOffset: secondOffset,\n };\n } else {\n this.nodes[index] = {\n bbox: node.bbox,\n primitivesOffset: (node).firstPrimOffset,\n nPrimitives: node.nPrimitives,\n };\n }\n return myOffset;\n }\n\n private createLeaf(start: number, end: number, nPrimitives: number, bbox: BoundingRect) {\n const size = this.orderedPrims.length;\n for (let i = start; i < end; i++) this.orderedPrims.push(this.shapes[this.buildData[i].index]);\n return new LeafNode(size, nPrimitives, bbox);\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"","import Initiative from \"./ui/initiative.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { AnnotationManager } from \"@/game/ui/annotation\";\nimport { g2l } from \"@/game/units\";\n\nexport class GameManager {\n selectedTool: number = 0;\n\n annotationManager = new AnnotationManager();\n\n addShape(shape: ServerShape): void {\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Shape with unknown layer ${shape.layer} could not be added`);\n return;\n }\n const layer = layerManager.getLayer(shape.layer)!;\n const sh = createShapeFromDict(shape);\n if (sh === undefined) {\n console.log(`Shape with unknown type ${shape.type_} could not be added`);\n return;\n }\n layer.addShape(sh, false);\n layer.invalidate(false);\n }\n\n updateShape(data: { shape: ServerShape; redraw: boolean; move: boolean; temporary: boolean }): void {\n if (!layerManager.hasLayer(data.shape.layer)) {\n console.log(`Shape with unknown layer ${data.shape.layer} could not be added`);\n return;\n }\n const sh = createShapeFromDict(data.shape);\n if (sh === undefined) {\n console.log(`Shape with unknown type ${data.shape.type_} could not be added`);\n return;\n }\n const oldShape = layerManager.UUIDMap.get(data.shape.uuid);\n if (oldShape === undefined) {\n console.log(`Shape with unknown id could not be updated`);\n return;\n }\n const redrawInitiative = sh.owners !== oldShape.owners;\n const shape = Object.assign(oldShape, sh);\n shape.checkVisionSources();\n shape.setMovementBlock(shape.movementObstruction);\n shape.setIsToken(shape.isToken);\n if (data.redraw) {\n if (shape.visionObstruction) gameStore.recalculateVision(data.temporary);\n layerManager.getLayer(data.shape.layer)!.invalidate(false);\n if (shape.movementObstruction) gameStore.recalculateMovement(data.temporary);\n }\n if (redrawInitiative) getRef(\"initiative\").$forceUpdate();\n }\n\n setCenterPosition(position: GlobalPoint) {\n const localPos = g2l(position);\n gameStore.increasePanX((window.innerWidth / 2 - localPos.x) / gameStore.zoomFactor);\n gameStore.increasePanY((window.innerHeight / 2 - localPos.y) / gameStore.zoomFactor);\n layerManager.invalidate();\n sendClientOptions();\n }\n}\n\nexport const gameManager = new GameManager();\n(window).gameManager = gameManager;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./vision.vue?vue&type=template&id=46baf892&scoped=true&\"\nimport script from \"./vision.vue?vue&type=script&lang=ts&\"\nexport * from \"./vision.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46baf892\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class LoadComponent extends Vue {\n message = \"Loading...\";\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\nimport { coreStore } from \"@/core/store\";\n\nComponent.registerHooks([\"beforeRouteEnter\"]);\n\n@Component\nexport default class Dashboard extends Vue {\n owned = [];\n joined = [];\n error = \"\";\n\n newSessionName = \"\";\n\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n axios\n .get(\"/api/rooms\")\n .then((response: AxiosResponse) => {\n next((vm: this) => {\n vm.owned = response.data.owned;\n vm.joined = response.data.joined;\n });\n })\n .catch((err: AxiosError) => {\n next((vm: this) => {\n vm.error = err.message;\n });\n });\n }\n\n createRoom(event: Event) {\n axios\n .post(\"/api/rooms\", {\n name: this.newSessionName,\n })\n .then((response: AxiosResponse) => {\n this.$router.push(`/game/${encodeURIComponent(coreStore.username)}/${encodeURIComponent(this.newSessionName)}`);\n })\n .catch((err: AxiosError) => {\n this.error = err.message;\n });\n }\n}\n","import { render, staticRenderFns } from \"./confirm.vue?vue&type=template&id=1883e207&scoped=true&\"\nimport script from \"./confirm.vue?vue&type=script&lang=ts&\"\nexport * from \"./confirm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1883e207\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=script&lang=ts&\"","import Vue from \"vue\";\nexport const EventBus = new Vue();\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=ts&\"","import { GlobalPoint } from \"@/game/geom\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\n\nexport class Rect extends BaseRect {\n type = \"rect\";\n constructor(topleft: GlobalPoint, w: number, h: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(topleft, w, h, fillColour, strokeColour, uuid);\n }\n asDict() {\n return super.getBaseDict();\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n const z = gameStore.zoomFactor;\n const loc = g2l(this.refPoint);\n ctx.fillRect(loc.x, loc.y, this.w * z, this.h * z);\n if (this.strokeColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.strokeStyle = this.strokeColour;\n ctx.lineWidth = 5;\n ctx.strokeRect(loc.x, loc.y, this.w * z, this.h * z);\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=script&lang=ts&\"","import { Ray, Vector } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Settings } from \"@/game/settings\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly } from \"@/game/units\";\nimport { computeVisibility } from \"../visibility/te/te\";\n\nexport class FOWPlayersLayer extends Layer {\n isVisionLayer: boolean = true;\n\n draw(): void {\n if (!this.valid) {\n // console.time(\"VI\");\n const ctx = this.ctx;\n\n if (!gameStore.fowLOS || Settings.skipPlayerFOW) {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.valid = true;\n return;\n }\n\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n const originalOperation = ctx.globalCompositeOperation;\n\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n\n // For the DM this is done at the end of this function. TODO: why the split up ???\n // This was done in commit be1e65cff1e7369375fe11cfa1643fab1d11beab.\n if (!gameStore.IS_DM) super.draw(!gameStore.fullFOW);\n\n // Then cut out all the player vision auras\n const maxLength = ctx.canvas.width + ctx.canvas.height;\n\n for (const tokenId of gameStore.activeTokens) {\n const token = layerManager.UUIDMap.get(tokenId);\n if (token === undefined) continue;\n const center = token.center();\n const lcenter = g2l(center);\n if (gameStore.visionMode === \"bvh\") {\n ctx.beginPath();\n let lastArcAngle = -1;\n\n for (let angle = 0; angle < 2 * Math.PI; angle += (Settings.angleSteps / 2 / 180) * Math.PI) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n // Check if there is a hit with one of the nearby light blockers.\n const lightRay = new Ray(center, new Vector(cos, sin));\n const hitResult = gameStore.BV.intersect(lightRay);\n\n // We can move on to the next angle if nothing was hit.\n if (!hitResult.hit) {\n // If an earlier hit caused the aura to leave the arc, we need to go back to the arc\n if (lastArcAngle === -1) {\n // Draw a line from the last non arc location back to the arc\n ctx.lineTo(lcenter.x + maxLength * cos, lcenter.y + maxLength * sin);\n // Set the start of a new arc beginning at the current angle\n lastArcAngle = angle;\n }\n continue;\n }\n // If hit , first finish any ongoing arc, then move to the intersection point\n if (lastArcAngle !== -1) {\n ctx.arc(lcenter.x, lcenter.y, maxLength, lastArcAngle, angle);\n lastArcAngle = -1;\n }\n ctx.lineTo(g2lx(hitResult.intersect.x), g2ly(hitResult.intersect.y));\n }\n\n // Finish the final arc.\n if (lastArcAngle !== -1) ctx.arc(lcenter.x, lcenter.y, maxLength, lastArcAngle, 2 * Math.PI);\n else ctx.closePath();\n ctx.fill();\n } else {\n if (true) {\n // Add a gradient vision dropoff\n const gradient = ctx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(gameStore.visionRangeMin),\n lcenter.x,\n lcenter.y,\n g2lr(gameStore.visionRangeMax),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n } else {\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n try {\n const polygon = computeVisibility(token.center(), \"vision\");\n ctx.beginPath();\n ctx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) ctx.lineTo(g2lx(point[0]), g2ly(point[1]));\n ctx.closePath();\n ctx.fill();\n } catch {}\n }\n }\n\n // For the players this is done at the beginning of this function. TODO: why the split up ???\n // This was done in commit be1e65cff1e7369375fe11cfa1643fab1d11beab.\n if (gameStore.IS_DM) super.draw(!gameStore.fullFOW);\n\n ctx.globalCompositeOperation = originalOperation;\n // console.timeEnd(\"VI\");\n }\n }\n}\n","import { socket } from \"@/game/api/socket\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly } from \"@/game/units\";\n\nexport class Layer {\n name: string;\n width: number;\n height: number;\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n\n selectable: boolean = false;\n playerEditable: boolean = false;\n isVisionLayer: boolean = false;\n\n // When set to false, the layer will be redrawn on the next tick\n valid: boolean = false;\n // The collection of shapes that this layer contains.\n // These are ordered on a depth basis.\n shapes: Shape[] = [];\n\n // Collection of shapes that are currently selected\n selection: Shape[] = [];\n\n // Extra selection highlighting settings\n selectionColor = \"#CC0000\";\n selectionWidth = 2;\n\n constructor(canvas: HTMLCanvasElement, name: string) {\n this.canvas = canvas;\n this.name = name;\n this.width = canvas.width;\n this.height = canvas.height;\n this.ctx = canvas.getContext(\"2d\")!;\n }\n\n invalidate(skipLightUpdate: boolean): void {\n this.valid = false;\n if (!skipLightUpdate) {\n layerManager.invalidateLight();\n }\n }\n\n addShape(shape: Shape, sync: boolean, temporary?: boolean, invalidate = true): void {\n if (temporary === undefined) temporary = false;\n shape.layer = this.name;\n this.shapes.push(shape);\n layerManager.UUIDMap.set(shape.uuid, shape);\n shape.checkVisionSources(invalidate);\n shape.setMovementBlock(shape.movementObstruction, invalidate);\n if (shape.ownedBy(gameStore.username) && shape.isToken) gameStore.ownedtokens.push(shape.uuid);\n if (shape.annotation.length) gameStore.annotations.push(shape.uuid);\n if (sync) socket.emit(\"Shape.Add\", { shape: shape.asDict(), temporary });\n if (invalidate) this.invalidate(!sync);\n }\n\n setShapes(shapes: ServerShape[]): void {\n for (const serverShape of shapes) {\n const shape = createShapeFromDict(serverShape);\n if (shape === undefined) {\n console.log(`Shape with unknown type ${serverShape.type_} could not be added`);\n return;\n }\n this.addShape(shape, false, false, false);\n }\n this.clearSelection(); // TODO: Fix keeping selection on those items that are not moved.\n this.invalidate(false);\n }\n\n removeShape(shape: Shape, sync: boolean, temporary?: boolean) {\n if (temporary === undefined) temporary = false;\n this.shapes.splice(this.shapes.indexOf(shape), 1);\n\n if (sync) socket.emit(\"Shape.Remove\", { shape: shape.asDict(), temporary });\n const lsI = gameStore.visionSources.findIndex(ls => ls.shape === shape.uuid);\n const lbI = gameStore.visionBlockers.findIndex(ls => ls === shape.uuid);\n\n const mbI = gameStore.movementblockers.findIndex(ls => ls === shape.uuid);\n const anI = gameStore.annotations.findIndex(ls => ls === shape.uuid);\n if (lsI >= 0) gameStore.visionSources.splice(lsI, 1);\n if (lbI >= 0) gameStore.visionBlockers.splice(lbI, 1);\n if (mbI >= 0) gameStore.movementblockers.splice(mbI, 1);\n if (anI >= 0) gameStore.annotations.splice(anI, 1);\n\n const annotationIndex = gameStore.annotations.indexOf(shape.uuid);\n if (annotationIndex >= 0) gameStore.annotations.splice(annotationIndex, 1);\n\n const ownedIndex = gameStore.ownedtokens.indexOf(shape.uuid);\n if (ownedIndex >= 0) gameStore.ownedtokens.splice(ownedIndex, 1);\n\n layerManager.UUIDMap.delete(shape.uuid);\n\n const index = this.selection.indexOf(shape);\n if (index >= 0) this.selection.splice(index, 1);\n if (lbI >= 0) gameStore.recalculateVision();\n if (mbI >= 0) gameStore.recalculateMovement();\n this.invalidate(!sync);\n }\n\n clear(): void {\n this.ctx.clearRect(0, 0, this.width, this.height);\n }\n\n clearSelection(): void {\n this.selection = [];\n EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n }\n\n draw(doClear?: boolean): void {\n if (!this.valid) {\n const ctx = this.ctx;\n const ogOP = ctx.globalCompositeOperation;\n doClear = doClear === undefined ? true : doClear;\n\n if (doClear) this.clear();\n\n const state = this;\n\n // We iteratre twice over all shapes\n // First to draw the auras and a second time to draw the shapes themselves\n // Otherwise auras from one shape could be overlapping another shape itself.\n\n this.shapes.forEach(shape => {\n if (shape.options.has(\"skipDraw\") && shape.options.get(\"skipDraw\")) return;\n if (layerManager.getLayer() === undefined) return;\n if (!shape.visibleInCanvas(state.canvas)) return;\n if (state.name === \"fow\" && shape.visionObstruction && layerManager.getLayer()!.name !== state.name)\n return;\n shape.drawAuras(ctx);\n });\n this.shapes.forEach(shape => {\n if (shape.options.has(\"skipDraw\") && shape.options.get(\"skipDraw\")) return;\n if (shape.labels.length === 0 && gameStore.filterNoLabel) return;\n if (\n shape.labels.length &&\n gameStore.labelFilters.length &&\n !shape.labels.some(l => gameStore.labelFilters.includes(l.uuid))\n )\n return;\n if (layerManager.getLayer() === undefined) return;\n if (!shape.visibleInCanvas(state.canvas)) return;\n if (state.name === \"fow\" && shape.visionObstruction && layerManager.getLayer()!.name !== state.name)\n return;\n shape.draw(ctx);\n });\n\n if (this.selection != null) {\n ctx.fillStyle = this.selectionColor;\n ctx.strokeStyle = this.selectionColor;\n ctx.lineWidth = this.selectionWidth;\n const z = gameStore.zoomFactor;\n this.selection.forEach(sel => {\n ctx.globalCompositeOperation = sel.globalCompositeOperation;\n const bb = sel.getBoundingBox();\n // TODO: REFACTOR THIS TO Shape.drawSelection(ctx);\n ctx.strokeRect(g2lx(bb.topLeft.x), g2ly(bb.topLeft.y), bb.w * z, bb.h * z);\n\n for (const p of sel.points) {\n ctx.beginPath();\n ctx.arc(g2lx(p[0]), g2ly(p[1]), 3, 0, 2 * Math.PI);\n ctx.fill();\n }\n ctx.beginPath();\n ctx.moveTo(g2lx(sel.points[0][0]), g2ly(sel.points[0][1]));\n for (let i = 1; i <= sel.points.length; i++) {\n const vertex = sel.points[i % sel.points.length];\n ctx.lineTo(g2lx(vertex[0]), g2ly(vertex[1]));\n }\n ctx.stroke();\n });\n }\n ctx.globalCompositeOperation = ogOP;\n this.valid = true;\n }\n }\n\n moveShapeOrder(shape: Shape, destinationIndex: number, sync: boolean): void {\n const oldIdx = this.shapes.indexOf(shape);\n if (oldIdx === destinationIndex) return;\n this.shapes.splice(oldIdx, 1);\n this.shapes.splice(destinationIndex, 0, shape);\n if (sync) socket.emit(\"Shape.Order.Set\", { shape: shape.asDict(), index: destinationIndex });\n this.invalidate(true);\n }\n}\n","import { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\nexport function scrollZoom(e: WheelEvent) {\n if (!e.target || !(e.target).tagName || (e.target).tagName !== \"CANVAS\") return;\n let delta: number;\n delta = Math.sign(e.deltaY) * -1;\n gameStore.updateZoom({ newZoomDisplay: gameStore.zoomDisplay - 0.1 * delta, zoomLocation: l2g(getMouse(e)) });\n}\n","import { render, staticRenderFns } from \"./filter.vue?vue&type=template&id=dca395d6&scoped=true&\"\nimport script from \"./filter.vue?vue&type=script&lang=ts&\"\nexport * from \"./filter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./filter.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dca395d6\",\n null\n \n)\n\nexport default component.exports","import { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2lx, g2ly, l2g, l2gx, l2gy } from \"@/game/units\";\n\nexport abstract class BaseRect extends Shape {\n w: number;\n h: number;\n constructor(topleft: GlobalPoint, w: number, h: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(topleft, fillColour, strokeColour, uuid);\n this.w = w;\n this.h = h;\n }\n getBaseDict() {\n return Object.assign(super.getBaseDict(), {\n width: this.w,\n height: this.h,\n });\n }\n getBoundingBox() {\n return new BoundingRect(this.refPoint, this.w, this.h);\n }\n\n get points() {\n if (this.w === 0 || this.h === 0) return [[this.refPoint.x, this.refPoint.y]];\n // note to self: topright and botleft are swapped because I'm retarded.\n const topright = this.refPoint.add(new Vector(0, this.h));\n const botright = this.refPoint.add(new Vector(this.w, this.h));\n const botleft = this.refPoint.add(new Vector(this.w, 0));\n return [\n [this.refPoint.x, this.refPoint.y],\n [topright.x, topright.y],\n [botright.x, botright.y],\n [botleft.x, botleft.y],\n ];\n }\n\n contains(point: GlobalPoint): boolean {\n return (\n this.refPoint.x <= point.x &&\n this.refPoint.x + this.w >= point.x &&\n this.refPoint.y <= point.y &&\n this.refPoint.y + this.h >= point.y\n );\n }\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n if (centerPoint === undefined) return this.refPoint.add(new Vector(this.w / 2, this.h / 2));\n this.refPoint = new GlobalPoint(centerPoint.x - this.w / 2, centerPoint.y - this.h / 2);\n }\n\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n if (super.visibleInCanvas(canvas)) return true;\n const coreVisible = !(\n g2lx(this.refPoint.x) > canvas.width ||\n g2ly(this.refPoint.y) > canvas.height ||\n g2lx(this.refPoint.x + this.w) < 0 ||\n g2ly(this.refPoint.y + this.h) < 0\n );\n if (coreVisible) return true;\n return false;\n }\n snapToGrid() {\n const gs = gameStore.gridSize;\n const center = this.center();\n const mx = center.x;\n const my = center.y;\n\n let targetX;\n let targetY;\n\n if ((this.w / gs) % 2 === 0) {\n targetX = Math.round(mx / gs) * gs - this.w / 2;\n } else {\n targetX = (Math.round((mx + gs / 2) / gs) - 1 / 2) * gs - this.w / 2;\n }\n if ((this.h / gs) % 2 === 0) {\n targetY = Math.round(my / gs) * gs - this.h / 2;\n } else {\n targetY = (Math.round((my + gs / 2) / gs) - 1 / 2) * gs - this.h / 2;\n }\n\n const delta = calculateDelta(new Vector(targetX - this.refPoint.x, targetY - this.refPoint.y), this);\n this.refPoint = this.refPoint.add(delta);\n\n this.invalidate(false);\n }\n resizeToGrid() {\n const gs = gameStore.gridSize;\n this.refPoint = new GlobalPoint(Math.round(this.refPoint.x / gs) * gs, Math.round(this.refPoint.y / gs) * gs);\n this.w = Math.max(Math.round(this.w / gs) * gs, gs);\n this.h = Math.max(Math.round(this.h / gs) * gs, gs);\n this.invalidate(false);\n }\n resize(resizePoint: number, point: LocalPoint) {\n const z = gameStore.zoomFactor;\n switch (resizePoint) {\n case 0: {\n this.w = g2lx(this.refPoint.x) + this.w * z - point.x;\n this.h = g2ly(this.refPoint.y) + this.h * z - point.y;\n this.refPoint = l2g(point);\n break;\n }\n case 1: {\n this.w = g2lx(this.refPoint.x) + this.w * z - point.x;\n this.h = point.y - g2ly(this.refPoint.y);\n this.refPoint = new GlobalPoint(l2gx(point.x), this.refPoint.y);\n break;\n }\n case 2: {\n this.w = point.x - g2lx(this.refPoint.x);\n this.h = point.y - g2ly(this.refPoint.y);\n break;\n }\n case 3: {\n this.w = point.x - g2lx(this.refPoint.x);\n this.h = g2ly(this.refPoint.y) + this.h * z - point.y;\n this.refPoint = new GlobalPoint(this.refPoint.x, l2gy(point.y));\n break;\n }\n }\n\n this.w /= z;\n this.h /= z;\n\n if (this.w < 0) {\n this.refPoint = this.refPoint.add(new Vector(this.w, 0));\n this.w = Math.abs(this.w);\n }\n if (this.h < 0) {\n this.refPoint = this.refPoint.add(new Vector(0, this.h));\n this.h = Math.abs(this.h);\n }\n }\n}\n","import { render, staticRenderFns } from \"./select.vue?vue&type=template&id=048b3482&\"\nimport script from \"./select.vue?vue&type=script&lang=ts&\"\nexport * from \"./select.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=style&index=0&id=43d09857&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=style&index=0&id=43d09857&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=b102d41e&scoped=true&\"\nimport script from \"./main.vue?vue&type=script&lang=ts&\"\nexport * from \"./main.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./main.vue?vue&type=style&index=0&id=b102d41e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b102d41e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"AssetManager\"}},[_c('div',{attrs:{\"id\":\"titlebar\"}},[_vm._v(\"Asset Manager\")]),_c('div',{attrs:{\"id\":\"main\"}},[_c('div',{attrs:{\"id\":\"assets\"},on:{\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, _vm.currentFolder)}}},[_c('div',{attrs:{\"id\":\"breadcrumbs\"}},[_c('div',[_vm._v(\"/\")]),_vm._l((_vm.path),function(dir){return _c('div',{key:dir},[_vm._v(_vm._s(_vm.idMap.get(dir).name))])})],2),_c('div',{attrs:{\"id\":\"actionbar\"}},[_c('input',{attrs:{\"id\":\"files\",\"type\":\"file\",\"multiple\":\"\",\"hidden\":\"\"},on:{\"change\":function($event){return _vm.upload()}}}),_c('div',{attrs:{\"title\":\"Create folder\"},on:{\"click\":_vm.createDirectory}},[_c('i',{staticClass:\"fas fa-plus-square\"})]),_c('div',{attrs:{\"title\":\"Upload files\"},on:{\"click\":_vm.prepareUpload}},[_c('i',{staticClass:\"fas fa-upload\"})])]),_c('div',{attrs:{\"id\":\"explorer\"}},[(_vm.path.length)?_c('div',{staticClass:\"inode folder\",on:{\"dblclick\":function($event){return _vm.changeDirectory(-1)},\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"dragleave\":function($event){$event.preventDefault();return _vm.leaveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, _vm.parentFolder)}}},[_c('i',{staticClass:\"fas fa-folder\",staticStyle:{\"font-size\":\"50px\"}}),_c('div',{staticClass:\"title\"},[_vm._v(\"..\")])]):_vm._e(),_vm._l((_vm.folders),function(key){return _c('div',{key:key,staticClass:\"inode folder\",class:{'inode-selected': _vm.selected.includes(key)},attrs:{\"draggable\":\"true\"},on:{\"click\":function($event){return _vm.select($event, key)},\"dblclick\":function($event){return _vm.changeDirectory(key)},\"contextmenu\":function($event){$event.preventDefault();return _vm.$refs.cm.open($event, key)},\"dragstart\":function($event){return _vm.startDrag($event, key)},\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"dragleave\":function($event){$event.preventDefault();return _vm.leaveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, key)}}},[_c('i',{staticClass:\"fas fa-folder\",staticStyle:{\"font-size\":\"50px\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.idMap.get(key).name))])])}),_vm._l((_vm.files),function(file){return _c('div',{key:file,staticClass:\"inode file\",class:{'inode-selected': _vm.selected.includes(file)},attrs:{\"draggable\":\"true\"},on:{\"click\":function($event){return _vm.select($event, file)},\"contextmenu\":function($event){$event.preventDefault();return _vm.$refs.cm.open($event, file)},\"dragstart\":function($event){return _vm.startDrag($event, file)}}},[_c('img',{attrs:{\"src\":'/static/assets/' + _vm.idMap.get(file).file_hash,\"width\":\"50\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.idMap.get(file).name))])])})],2)]),(_vm.firstSelectedFile)?_c('div',{attrs:{\"id\":\"asset-details\"}},[_c('div',{attrs:{\"id\":\"asset-detail-title\"}},[_vm._v(_vm._s(_vm.firstSelectedFile.name))]),_c('img',{attrs:{\"src\":'/static/assets/' + _vm.firstSelectedFile.file_hash}})]):_vm._e()]),_c('AssetContextMenu',{ref:\"cm\"}),_c('Prompt',{ref:\"prompt\"}),_c('ConfirmDialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=template&id=5b0def98&\"","\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\nimport { l2gx, l2gy } from \"@/game/units\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class SelectContext extends Vue {\n visible = false;\n x = 0;\n y = 0;\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n open(event: MouseEvent) {\n this.visible = true;\n this.x = event.pageX;\n this.y = event.pageY;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n close() {\n this.visible = false;\n }\n bringPlayers() {\n if (!gameStore.IS_DM) return;\n socket.emit(\"Players.Bring\", { x: l2gx(this.x), y: l2gy(this.y) });\n this.close();\n }\n createToken() {\n (this.$parent.$parent.$refs.createtokendialog).open(this.x, this.y);\n this.close();\n }\n showInitiative() {\n EventBus.$emit(\"Initiative.Show\");\n this.close();\n }\n}\n","import Axios from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\nimport { coreStore } from \"@/core/store\";\n\nComponent.registerHooks([\"beforeRouteEnter\"]);\n\n@Component({})\nexport default class Logout extends Vue {\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n Axios.post(\"/api/logout\").then(() => {\n coreStore.setAuthenticated(false);\n coreStore.setUsername(\"\");\n next({ path: \"/auth/login\" });\n });\n }\n}\n","import { getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { rootStore } from \"@/store\";\n\nexport interface CoreState {\n authenticated: boolean;\n initialized: boolean;\n username: string;\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"core\" })\nclass CoreStore extends VuexModule implements CoreState {\n authenticated = false;\n initialized = false;\n username = \"\";\n\n @Mutation\n setAuthenticated(auth: boolean) {\n this.authenticated = auth;\n }\n\n @Mutation\n setInitialized(init: boolean) {\n this.initialized = init;\n }\n\n @Mutation\n setUsername(username: string) {\n this.username = username;\n }\n}\n\nexport const coreStore = getModule(CoreStore);\n","import Vue from \"vue\";\n\nimport App from \"@/App.vue\";\nimport { router } from \"@/router\";\nimport { rootStore } from \"@/store\";\n\nVue.config.productionTip = false;\nVue.config.devtools = true;\nVue.config.performance = true;\n\nexport const app = new Vue({\n router,\n store: rootStore,\n render: h => h(App),\n}).$mount(\"#app\");\n\n(window).app = app;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component({\n props: [\"visible\", \"left\", \"top\"],\n})\nexport default class ContextMenu extends Vue {}\n","import Axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\n@Component({ template: \"\" })\nexport default class Initiative extends Vue {\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n Axios.post(\"/api/invite\", {\n code: to.params.code,\n })\n .then((response: AxiosResponse) => {\n next({ path: response.data.sessionUrl });\n })\n .catch((error: AxiosError) => {\n console.error(\"Invitation code could not be redeemed\");\n next({ path: \"/dashboard\" });\n });\n }\n}\n","import { render, staticRenderFns } from \"./prompt.vue?vue&type=template&id=0602c2e6&scoped=true&\"\nimport script from \"./prompt.vue?vue&type=script&lang=ts&\"\nexport * from \"./prompt.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0602c2e6\",\n null\n \n)\n\nexport default component.exports","import { GlobalPoint } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nimport { Edge } from \"./cdt\";\nimport { drawPolygon } from \"./draw\";\nimport { PA_CDT } from \"./pa\";\nimport { Point, Sign, Triangle } from \"./tds\";\nimport { ccw, cw, orientation } from \"./triag\";\n\nexport function computeVisibility(q: GlobalPoint, target: \"vision\" | \"movement\", drawt?: boolean): number[][] {\n if (drawt === undefined) drawt = gameStore.drawTEContour;\n // console.time(\"CV\");\n const Q: Point = [q.x, q.y];\n const rawOutput: number[][] = [];\n const triangle = PA_CDT[target].locate(Q, null).loc;\n if (triangle === null) {\n console.error(\"Triangle not found\");\n return [];\n }\n // triangle.fill();\n rawOutput.push(triangle.vertices[1]!.point!);\n if (!triangle.isConstrained(0))\n expandEdge(Q, triangle.vertices[2]!.point!, triangle.vertices[1]!.point!, triangle, 0, rawOutput);\n rawOutput.push(triangle.vertices[2]!.point!);\n if (!triangle.isConstrained(1))\n expandEdge(Q, triangle.vertices[0]!.point!, triangle.vertices[2]!.point!, triangle, 1, rawOutput);\n rawOutput.push(triangle.vertices[0]!.point!);\n if (!triangle.isConstrained(2))\n expandEdge(Q, triangle.vertices[1]!.point!, triangle.vertices[0]!.point!, triangle, 2, rawOutput);\n // console.timeEnd(\"CV\");\n\n if (drawt) drawPolygon(rawOutput, \"red\");\n\n return rawOutput;\n}\n\nfunction expandEdge(\n q: Point,\n left: number[],\n right: number[],\n fh: Triangle,\n index: number,\n rawOutput: number[][],\n): void {\n // fh.edge(index).draw();\n const nfh = fh.neighbours[index]!;\n // nfh.fill(\"rgba(255, 0, 0, 0.25)\");\n const nIndex = nfh.indexT(fh);\n const rIndex = ccw(nIndex);\n const lIndex = cw(nIndex);\n const nvh = nfh.vertices[nIndex]!;\n const rvh = nfh.vertices[lIndex]!;\n const lvh = nfh.vertices[rIndex]!;\n\n const re: Edge = [nfh, rIndex];\n const le: Edge = [nfh, lIndex];\n\n const ro = orientation(q, right, nvh.point!);\n const lo = orientation(q, left, nvh.point!);\n\n // const ctx = layerManager.getLayer(\"draw\")!.ctx;\n // ctx.beginPath();\n // ctx.strokeStyle = \"red\";\n // ctx.lineJoin = \"round\";\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(left[0]), g2ly(left[1]));\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(nvh[0]), g2ly(nvh[1]));\n // ctx.strokeStyle = \"blue\";\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(right[0]), g2ly(right[1]));\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(nvh[0]), g2ly(nvh[1]));\n // ctx.closePath();\n // ctx.stroke();\n\n // Right edge is seen if the new vertex is ccw of the right ray\n if (ro === Sign.COUNTERCLOCKWISE) {\n if (re[0].isConstrained(re[1])) {\n // See if current right ray is rvh\n if (right !== rvh.point!) rawOutput.push(raySegIntersection(q, right, nvh.point!, rvh.point!));\n if (lo === Sign.COUNTERCLOCKWISE) rawOutput.push(raySegIntersection(q, left, nvh.point!, rvh.point!));\n } else {\n if (lo === Sign.COUNTERCLOCKWISE) return expandEdge(q, left, right, nfh, rIndex, rawOutput);\n else expandEdge(q, nvh.point!, right, nfh, rIndex, rawOutput);\n }\n }\n\n if (ro !== Sign.CLOCKWISE && lo !== Sign.COUNTERCLOCKWISE) {\n rawOutput.push(nvh.point!);\n }\n\n if (lo === Sign.CLOCKWISE) {\n if (le[0].isConstrained(le[1])) {\n if (ro === Sign.CLOCKWISE) {\n rawOutput.push(raySegIntersection(q, right, nvh.point!, lvh.point!));\n }\n if (left !== lvh.point!) {\n rawOutput.push(raySegIntersection(q, left, nvh.point!, lvh.point!));\n }\n return;\n } else {\n if (ro === Sign.CLOCKWISE) {\n return expandEdge(q, left, right, nfh, lIndex, rawOutput);\n } else {\n return expandEdge(q, left, nvh.point!, nfh, lIndex, rawOutput);\n }\n }\n }\n}\n\nfunction raySegIntersection(q: Point, b: Point, s: Point, t: Point) {\n const denominator = (t[1] - s[1]) * (b[0] - q[0]) - (t[0] - s[0]) * (b[1] - q[1]);\n const ua = ((t[0] - s[0]) * (q[1] - s[1]) - (t[1] - s[1]) * (q[0] - s[0])) / denominator;\n // const ub = ((b[0] - q.x) * (q.y - s[1]) - (b[1] - q.y) * (q.x - s[0])) / denominator;\n const x = q[0] + ua * (b[0] - q[0]);\n const y = q[1] + ua * (b[1] - q[1]);\n\n return [x, y];\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',[_vm._v(\"#X\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.xCount),expression:\"xCount\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.xCount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.xCount=$event.target.value}}}),_c('div',[_vm._v(\"#Y\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.yCount),expression:\"yCount\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.yCount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.yCount=$event.target.value}}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=template&id=2104f147&\"","import { render, staticRenderFns } from \"./edit_dialog.vue?vue&type=template&id=23de098e&scoped=true&\"\nimport script from \"./edit_dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./edit_dialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23de098e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"modal\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"mask\",class:{'modal-mask': _vm.mask, 'dialog-mask': !_vm.mask},on:{\"click\":_vm.close,\"dragover\":function($event){$event.preventDefault();return _vm.dragOver($event)}}},[_c('div',{ref:\"container\",staticClass:\"modal-container\",style:({'background-color': _vm.colour}),on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._t(\"header\",null,{\"dragStart\":_vm.dragStart,\"dragEnd\":_vm.dragEnd}),_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=template&id=c2851f0e&scoped=true&\"","export class Settings {\n static angleSteps = 4;\n static drawAngleLines = false;\n static drawFirstLightHit = false;\n static skipPlayerFOW = false;\n static skipLightFOW = false;\n\n static tempFill: string = \"fog\";\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { coreStore } from \"@/core/store\";\n\n@Component\nexport default class Login extends Vue {\n username = \"\";\n password = \"\";\n error = \"\";\n\n login() {\n axios\n .post(\"/api/login\", {\n username: this.username,\n password: this.password,\n })\n .then((response: AxiosResponse) => {\n coreStore.setUsername(this.username);\n coreStore.setAuthenticated(true);\n this.$router.push(this.$route.query.redirect || \"/\");\n })\n .catch((error: AxiosError) => {\n if (error.response) this.error = error.response.statusText;\n else this.error = \"Unknown error occured\";\n });\n }\n\n register() {\n axios\n .post(\"/api/register\", {\n username: this.username,\n password: this.password,\n })\n .then((response: AxiosResponse) => {\n coreStore.setUsername(this.username);\n coreStore.setAuthenticated(true);\n this.$router.push(this.$route.query.redirect || \"/\");\n })\n .catch((error: AxiosError) => {\n if (error.response) this.error = error.response.statusText;\n else this.error = \"Unknown error occured\";\n });\n }\n\n focusin(event: { target?: { nextElementSibling?: HTMLElement } }) {\n if (event.target && event.target.nextElementSibling) {\n const span = event.target.nextElementSibling;\n span.style.opacity = \"0\";\n }\n }\n\n focusout(event: { target?: { nextElementSibling?: HTMLElement } }) {\n if (event.target && event.target.nextElementSibling) {\n const span = event.target.nextElementSibling;\n span.style.opacity = \"1\";\n }\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(\"Create basic token\")])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('label',{attrs:{\"for\":\"createtokendialog-text\"}},[_vm._v(\"Text\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],attrs:{\"type\":\"text\",\"id\":\"createtokendialog-name\"},domProps:{\"value\":(_vm.text)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.text=$event.target.value}}}),_c('label',[_vm._v(\"Colours\")]),_c('div',{staticClass:\"colours\"},[_c('span',[_vm._v(\"Fill:\")]),_c('color-picker',{attrs:{\"color\":_vm.fillColour},on:{\"update:color\":function($event){_vm.fillColour=$event}}}),_c('span',[_vm._v(\"Border:\")]),_c('color-picker',{attrs:{\"color\":_vm.borderColour},on:{\"update:color\":function($event){_vm.borderColour=$event}}})],1),_c('canvas',{ref:\"canvas\",attrs:{\"width\":\"100px\",\"height\":\"100px\"}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=template&id=73816298&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(\"div\")}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=template&id=1e034b42&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=script&lang=ts&\"","import Component from \"vue-class-component\";\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Line } from \"@/game/shapes/line\";\nimport { Text } from \"@/game/shapes/text\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\n@Component\nexport class RulerTool extends Tool {\n name = \"Ruler\";\n active = false;\n startPoint: GlobalPoint | null = null;\n ruler: Line | null = null;\n text: Text | null = null;\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No draw layer!\");\n return;\n }\n this.active = true;\n this.startPoint = l2g(getMouse(event));\n this.ruler = new Line(this.startPoint, this.startPoint, 3, gameStore.rulerColour);\n this.text = new Text(this.startPoint.clone(), \"\", \"bold 20px serif\");\n this.ruler.addOwner(gameStore.username);\n this.text.addOwner(gameStore.username);\n layer.addShape(this.ruler, true, true);\n layer.addShape(this.text, true, true);\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active || this.ruler === null || this.startPoint === null || this.text === null) return;\n\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No draw layer!\");\n return;\n }\n const endPoint = l2g(getMouse(event));\n\n this.ruler.endPoint = endPoint;\n socket.emit(\"Shape.Update\", { shape: this.ruler!.asDict(), redraw: true, temporary: true });\n\n const diffsign = Math.sign(endPoint.x - this.startPoint.x) * Math.sign(endPoint.y - this.startPoint.y);\n const xdiff = Math.abs(endPoint.x - this.startPoint.x);\n const ydiff = Math.abs(endPoint.y - this.startPoint.y);\n const label =\n Math.round((Math.sqrt(xdiff ** 2 + ydiff ** 2) * gameStore.unitSize) / gameStore.gridSize) + \" ft\";\n const angle = Math.atan2(diffsign * ydiff, xdiff);\n const xmid = Math.min(this.startPoint.x, endPoint.x) + xdiff / 2;\n const ymid = Math.min(this.startPoint.y, endPoint.y) + ydiff / 2;\n this.text.refPoint = new GlobalPoint(xmid, ymid);\n this.text.text = label;\n this.text.angle = angle;\n socket.emit(\"Shape.Update\", { shape: this.text.asDict(), redraw: true, temporary: true });\n layer.invalidate(true);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.ruler === null || this.startPoint === null || this.text === null) return;\n\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = false;\n\n layer.removeShape(this.ruler, true, true);\n layer.removeShape(this.text, true, true);\n layer.invalidate(true);\n this.ruler = this.startPoint = this.text = null;\n }\n}\n","import { render, staticRenderFns } from \"./modal.vue?vue&type=template&id=c2851f0e&scoped=true&\"\nimport script from \"./modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./modal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c2851f0e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=script&lang=ts&\"","import { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\nimport { CDT } from \"./cdt\";\n\nexport let PA_CDT = {\n vision: new CDT(),\n movement: new CDT(),\n};\n\nexport function triangulate(target: \"vision\" | \"movement\", partial: boolean = false) {\n const cdt = new CDT();\n\n let shapes;\n if (target === \"vision\") shapes = gameStore.visionBlockers;\n else shapes = gameStore.movementblockers;\n\n for (const sh of shapes) {\n const shape = layerManager.UUIDMap.get(sh)!;\n if (partial && !shape.visibleInCanvas(layerManager.getLayer()!.canvas)) continue;\n for (let i = 0; i < shape.points.length; i++) {\n cdt.insertConstraint(shape.points[i], shape.points[(i + 1) % shape.points.length]);\n }\n }\n // LEFT WALL\n cdt.insertConstraint([-1e8, -1e8], [-1e8, 1e8]);\n cdt.insertConstraint([-1e8, 1e8], [-1e11, 1e8]);\n cdt.insertConstraint([-1e11, 1e8], [-1e11, -1e8]);\n cdt.insertConstraint([-1e11, -1e8], [-1e8, -1e8]);\n // TOP WALL\n cdt.insertConstraint([-1e8, -1e8], [1e8, -1e8]);\n cdt.insertConstraint([1e8, -1e8], [1e8, -1e11]);\n cdt.insertConstraint([1e8, -1e11], [-1e8, -1e11]);\n cdt.insertConstraint([-1e8, -1e11], [-1e8, -1e8]);\n // RIGHT WALL\n cdt.insertConstraint([1e8, -1e8], [1e8, 1e8]);\n cdt.insertConstraint([1e8, 1e8], [1e11, 1e8]);\n cdt.insertConstraint([1e11, 1e8], [1e11, -1e8]);\n cdt.insertConstraint([1e11, -1e8], [1e8, -1e8]);\n // BOT WALL\n cdt.insertConstraint([-1e8, 1e8], [1e8, 1e8]);\n cdt.insertConstraint([1e8, 1e8], [1e8, 1e11]);\n cdt.insertConstraint([1e8, 1e11], [-1e8, 1e11]);\n cdt.insertConstraint([-1e8, 1e11], [-1e8, 1e8]);\n PA_CDT[target] = cdt;\n (window).CDT = PA_CDT;\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n \"color-picker\": ColorPicker,\n },\n})\nexport default class EditDialog extends Vue {\n @Prop() shape!: Shape;\n\n visible = false;\n\n get owned(): boolean {\n return this.shape.ownedBy();\n }\n\n mounted() {\n EventBus.$on(\"EditDialog.Open\", (shape: Shape) => {\n this.shape = shape;\n this.visible = true;\n });\n EventBus.$on(\"EditDialog.AddLabel\", (label: string) => {\n if (this.visible) {\n this.shape.labels.push(gameStore.labels[label]);\n this.updateShape(true);\n }\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"EditDialog.Open\");\n EventBus.$off(\"EditDialog.AddLabel\");\n }\n\n updated() {\n this.addEmpty();\n }\n\n addEmpty() {\n if (this.shape.owners[this.shape.owners.length - 1] !== \"\") this.shape.addOwner(\"\");\n if (\n !this.shape.trackers.length ||\n this.shape.trackers[this.shape.trackers.length - 1].name !== \"\" ||\n this.shape.trackers[this.shape.trackers.length - 1].value !== 0\n )\n this.shape.trackers.push({ uuid: uuidv4(), name: \"\", value: 0, maxvalue: 0, visible: false });\n if (\n !this.shape.auras.length ||\n this.shape.auras[this.shape.auras.length - 1].name !== \"\" ||\n this.shape.auras[this.shape.auras.length - 1].value !== 0\n )\n this.shape.auras.push({\n uuid: uuidv4(),\n name: \"\",\n value: 0,\n dim: 0,\n visionSource: false,\n colour: \"rgba(0,0,0,0)\",\n visible: false,\n });\n }\n updateShape(redraw: boolean, temporary = false) {\n if (!this.owned) return;\n socket.emit(\"Shape.Update\", { shape: this.shape.asDict(), redraw, temporary });\n if (redraw) layerManager.invalidate();\n this.addEmpty();\n }\n setToken(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.setIsToken(event.target.checked);\n this.updateShape(true);\n }\n setVisionBlocker(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.checkVisionSources();\n this.updateShape(true);\n }\n setMovementBlocker(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.setMovementBlock(event.target.checked);\n this.updateShape(false);\n }\n updateAnnotation(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n const hadAnnotation = this.shape.annotation !== \"\";\n this.shape.annotation = event.target.value;\n if (this.shape.annotation !== \"\" && !hadAnnotation) {\n gameStore.annotations.push(this.shape.uuid);\n if (layerManager.hasLayer(\"draw\")) layerManager.getLayer(\"draw\")!.invalidate(true);\n } else if (this.shape.annotation === \"\" && hadAnnotation) {\n gameStore.annotations.splice(gameStore.annotations.findIndex(an => an === this.shape.uuid));\n if (layerManager.hasLayer(\"draw\")) layerManager.getLayer(\"draw\")!.invalidate(true);\n }\n this.updateShape(false);\n }\n updateOwner(event: { target: HTMLInputElement }, oldValue: string) {\n if (!this.owned) return;\n this.shape.updateOwner(oldValue, event.target.value);\n this.updateShape(gameStore.fowLOS);\n }\n removeOwner(value: string) {\n if (!this.owned) return;\n this.shape.removeOwner(value);\n this.updateShape(gameStore.fowLOS);\n }\n removeTracker(uuid: string) {\n if (!this.owned) return;\n this.shape.trackers = this.shape.trackers.filter(tr => tr.uuid !== uuid);\n this.updateShape(false);\n }\n removeAura(uuid: string) {\n if (!this.owned) return;\n this.shape.auras = this.shape.auras.filter(au => au.uuid !== uuid);\n this.shape.checkVisionSources();\n this.updateShape(true);\n }\n updateAuraVisionSource(aura: Aura) {\n if (!this.owned) return;\n aura.visionSource = !aura.visionSource;\n const i = gameStore.visionSources.findIndex(ls => ls.aura === aura.uuid);\n if (aura.visionSource && i === -1) gameStore.visionSources.push({ shape: this.shape.uuid, aura: aura.uuid });\n else if (!aura.visionSource && i >= 0) gameStore.visionSources.splice(i, 1);\n this.updateShape(true);\n }\n updateAuraColour(aura: Aura, colour: string) {\n if (!this.owned) return;\n const layer = layerManager.getLayer(this.shape.layer);\n if (layer === undefined) return;\n layer.invalidate(!aura.visionSource);\n }\n openLabelManager() {\n EventBus.$emit(\"LabelManager.Open\");\n }\n removeLabel(uuid: string) {\n if(!this.owned) return;\n this.shape.labels = this.shape.labels.filter(l => l.uuid !== uuid);\n this.updateShape(true);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.getActiveLayer() !== undefined)?_c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.x + 'px',\"top\":_vm.y + 'px'},on:{\"close\":_vm.close}},[(_vm.getLayers().length > 1)?_c('li',[_vm._v(\"Layer\\n \"),_c('ul',_vm._l((_vm.getLayers()),function(layer){return _c('li',{key:layer.name,style:([_vm.getActiveLayer().name === layer.name ? {'background-color':'#82c8a0'}: {}]),on:{\"click\":function($event){return _vm.setLayer(layer.name)}}},[_vm._v(_vm._s(layer.name))])}),0)]):_vm._e(),_c('li',{on:{\"click\":_vm.moveToBack}},[_vm._v(\"Move to back\")]),_c('li',{on:{\"click\":_vm.moveToFront}},[_vm._v(\"Move to front\")]),_c('li',{on:{\"click\":_vm.addInitiative}},[_vm._v(_vm._s(_vm.getInitiativeWord())+\" initiative\")]),_c('li',{on:{\"click\":_vm.openEditDialog}},[_vm._v(\"Show properties\")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=template&id=6c66d243&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class ConfirmDialog extends Vue {\n $refs!: {\n confirm: HTMLButtonElement;\n };\n\n visible = false;\n yes = \"Yes\";\n no = \"No\";\n title = \"\";\n\n resolve = (ok: boolean) => {};\n reject = () => {};\n\n confirm() {\n this.resolve(true);\n this.close();\n }\n deny() {\n this.resolve(false);\n this.close();\n }\n close() {\n this.reject();\n this.visible = false;\n this.title = \"\";\n }\n open(title: string, yes = \"yes\", no = \"no\"): Promise {\n this.yes = yes;\n this.no = no;\n this.title = title;\n\n this.visible = true;\n this.$nextTick(() => {\n this.$refs.confirm.focus();\n });\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./map.vue?vue&type=template&id=2104f147&\"\nimport script from \"./map.vue?vue&type=script&lang=ts&\"\nexport * from \"./map.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"accordion\"},[_c('div',{attrs:{\"id\":\"header\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleDisplay($event)}}},[_c('input',{ref:\"overall\",attrs:{\"type\":\"checkbox\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleCategory($event)}}}),_c('strong',[_vm._v(_vm._s(_vm.title))]),(_vm.showArrow)?[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showArrow && !_vm.active),expression:\"showArrow && !active\"}],staticClass:\"down-Arrow\"},[_vm._v(\"▼\")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showArrow && _vm.active),expression:\"showArrow && active\"}],staticClass:\"up-Arrow\"},[_vm._v(\"▲\")])]:_vm._e()],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],attrs:{\"id\":\"body\"}},_vm._l((_vm.items),function(item){return _c('div',{key:item[0],staticClass:\"item\",on:{\"click\":function($event){return _vm.toggleSelection(item[0])}}},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.selected.includes(item[0])},on:{\"click\":function($event){$event.preventDefault();}}}),_vm._v(\" \"+_vm._s(item[1])+\"\\n \")])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=template&id=0bf2b7ba&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":_vm.close},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(_vm._s(_vm.title))])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('button',{ref:\"confirm\",on:{\"click\":_vm.confirm}},[_vm._v(_vm._s(_vm.yes))]),(!!_vm.no)?_c('button',{on:{\"click\":_vm.deny}},[_vm._v(_vm._s(_vm.no))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=template&id=1883e207&scoped=true&\"","import { render, staticRenderFns } from \"./dmsettings.vue?vue&type=template&id=b908e87c&scoped=true&\"\nimport script from \"./dmsettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./dmsettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b908e87c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\n\nimport { socket } from \"@/assetManager/socket\";\nimport { assetStore } from \"@/assetManager/store\";\nimport { getComponent, getRef } from \"@/core/utils\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class AssetContextMenu extends Vue {\n visible = false;\n left = 0;\n top = 0;\n open(event: MouseEvent, inode: number) {\n if (!assetStore.selected.includes(inode)) getComponent().select(event, inode);\n\n this.visible = true;\n this.left = event.pageX;\n this.top = event.pageY;\n this.$nextTick(() => {\n (this.$children[0].$el).focus();\n });\n }\n close() {\n this.visible = false;\n }\n rename() {\n if (assetStore.selected.length !== 1) return;\n const asset = assetStore.idMap.get(assetStore.selected[0])!;\n\n getRef(\"prompt\")\n .prompt(\"New name:\", `Renaming ${asset.name}`)\n .then(\n (name: string) => {\n socket.emit(\"Asset.Rename\", {\n asset: asset.id,\n name,\n });\n asset.name = name;\n getComponent().$forceUpdate();\n },\n () => {},\n );\n this.close();\n }\n remove() {\n if (assetStore.selected.length === 0) return;\n getRef(\"confirm\")\n .open(\"Are you sure you wish to remove this?\")\n .then(\n (result: boolean) => {\n if (result) {\n for (const sel of assetStore.selected) {\n socket.emit(\"Asset.Remove\", sel);\n if (assetStore.files.includes(sel))\n assetStore.files.splice(assetStore.files.indexOf(sel), 1);\n else assetStore.folders.splice(assetStore.folders.indexOf(sel), 1);\n }\n assetStore.clearSelected();\n }\n },\n () => {},\n );\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class LabelManager extends Vue {\n visible = false;\n newCategory = \"\";\n newName = \"\";\n search = \"\";\n\n mounted() {\n EventBus.$on(\"LabelManager.Open\", () => {\n this.visible = true;\n this.newCategory = \"\";\n this.newName = \"\";\n this.$nextTick(() => (this.$refs.search).focus());\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"LabelManager.Open\");\n }\n\n get labels() {\n const cat: {[category: string]: Label[]} = {'': []};\n for (const uuid of Object.keys(gameStore.labels)) {\n const label = gameStore.labels[uuid];\n if (this.search.length && `${label.category.toLowerCase()}${label.name.toLowerCase()}`.search(this.search.toLowerCase()) < 0) continue;\n if (label.user !== gameStore.username) continue;\n if (!label.category) cat[''].push(label);\n else {\n if (!(label.category in cat)) cat[label.category] = [];\n cat[label.category].push(label);\n cat[label.category].sort((a, b) => a.name.localeCompare(b.name));\n }\n }\n return cat;\n }\n\n get categories() {\n return Object.keys(this.labels).sort();\n }\n\n selectLabel(label: string) {\n EventBus.$emit(\"EditDialog.AddLabel\", label);\n this.visible = false;\n }\n\n toggleVisibility(label: Label) {\n label.visible = !label.visible;\n socket.emit(\"Label.Visibility.Set\", { uuid: label.uuid, visible: label.visible });\n }\n\n addLabel() {\n if (this.newName === \"\") return;\n const label = {\n uuid: uuidv4(),\n category: this.newCategory,\n name: this.newName,\n visible: false,\n user: gameStore.username,\n };\n gameStore.addLabel(label);\n socket.emit(\"Label.Add\", label);\n this.newCategory = \"\";\n this.newName = \"\";\n }\n\n deleteLabel(uuid: string) {\n gameStore.deleteLabel({ uuid, user: gameStore.username });\n socket.emit(\"Label.Delete\", uuid);\n }\n}\n","import { ServerPolygon } from \"../comm/types/shapes\";\nimport { GlobalPoint, LocalPoint } from \"../geom\";\nimport { g2lx, g2ly, g2lz, l2g } from \"../units\";\nimport { getFogColour } from \"../utils\";\nimport { BoundingRect } from \"./boundingrect\";\nimport { Shape } from \"./shape\";\n\nexport class Polygon extends Shape {\n type = \"polygon\";\n _vertices: GlobalPoint[] = [];\n\n constructor(\n startPoint: GlobalPoint,\n vertices: GlobalPoint[] = [],\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, fillColour, strokeColour, uuid);\n this._vertices = vertices;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n const delta = point.subtract(this._refPoint);\n this._refPoint = point;\n for (let i = 0; i < this._vertices.length; i++) this._vertices[i] = this._vertices[i].add(delta);\n }\n\n get vertices() {\n return [this._refPoint, ...this._vertices];\n }\n\n asDict() {\n return Object.assign(this.getBaseDict(), {\n vertices: this._vertices.map(p => ({ x: p.x, y: p.y })),\n });\n }\n\n fromDict(data: ServerPolygon) {\n super.fromDict(data);\n this._vertices = data.vertices.map(v => new GlobalPoint(v.x, v.y));\n }\n\n get points() {\n return this.vertices.map(point => [point.x, point.y]);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n\n if (this.strokeColour === \"fog\") ctx.strokeStyle = getFogColour();\n else if (this.vertices.length === 2) ctx.strokeStyle = this.fillColour;\n else ctx.strokeStyle = this.strokeColour;\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n ctx.lineWidth = g2lz(2);\n\n ctx.beginPath();\n ctx.moveTo(g2lx(this.vertices[0].x), g2ly(this.vertices[0].y));\n for (let i = 1; i <= this.vertices.length; i++) {\n const vertex = this.vertices[i % this.vertices.length];\n ctx.lineTo(g2lx(vertex.x), g2ly(vertex.y));\n }\n ctx.fill();\n ctx.stroke();\n }\n\n contains(point: GlobalPoint): boolean {\n return this.getBoundingBox().contains(point);\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n return this.getBoundingBox().center();\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this._refPoint = l2g(point);\n else this._vertices[resizePoint - 1] = l2g(point);\n }\n getBoundingBox(): BoundingRect {\n let minx: number = this.refPoint.x;\n let maxx: number = this.refPoint.x;\n let miny: number = this.refPoint.y;\n let maxy: number = this.refPoint.y;\n for (const p of this._vertices) {\n if (p.x < minx) minx = p.x;\n if (p.x > maxx) maxx = p.x;\n if (p.y < miny) miny = p.y;\n if (p.y > maxy) maxy = p.y;\n }\n return new BoundingRect(new GlobalPoint(minx, miny), maxx - minx, maxy - miny);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IS_DM),expression:\"IS_DM\"}]},[_vm._v(\"Mode\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IS_DM),expression:\"IS_DM\"}],staticClass:\"selectgroup\"},_vm._l((_vm.modes),function(mode){return _c('div',{key:mode,staticClass:\"option\",class:{'option-selected': _vm.modeSelect === mode},on:{\"click\":function($event){_vm.modeSelect = mode}}},[_vm._v(_vm._s(mode))])}),0),_c('div',[_vm._v(\"Shape\")]),_c('div',{staticClass:\"selectgroup\"},_vm._l((_vm.shapes),function(shape){return _c('div',{key:shape,staticClass:\"option\",class:{'option-selected': _vm.shapeSelect === shape},on:{\"click\":function($event){_vm.shapeSelect = shape}}},[_c('i',{staticClass:\"fas\",class:'fa-' + shape})])}),0),_c('div',[_vm._v(\"Colours\")]),_c('div',{staticClass:\"selectgroup\"},[_c('color-picker',{staticClass:\"option\",attrs:{\"color\":_vm.fillColour},on:{\"update:color\":function($event){_vm.fillColour=$event}}}),_c('color-picker',{staticClass:\"option\",attrs:{\"color\":_vm.borderColour},on:{\"update:color\":function($event){_vm.borderColour=$event}}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shapeSelect === 'paint-brush'),expression:\"shapeSelect === 'paint-brush'\"}]},[_vm._v(\"Brush size\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.brushSize),expression:\"brushSize\"},{name:\"show\",rawName:\"v-show\",value:(_vm.shapeSelect === 'paint-brush'),expression:\"shapeSelect === 'paint-brush'\"}],staticStyle:{\"max-width\":\"100px\"},attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.brushSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.brushSize=$event.target.value}}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=template&id=639cd890&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shapes.length > 0),expression:\"shapes.length > 0\"}]},_vm._l((_vm.shapes),function(shape){return _c('div',{key:shape.uuid},[_c('div',{attrs:{\"id\":\"selection-menu\"}},[_c('div',{attrs:{\"id\":\"selection-edit-button\"},on:{\"click\":_vm.openEditDialog}},[_c('i',{staticClass:\"fas fa-edit\"})]),_c('div',{attrs:{\"id\":\"selection-name\"}},[_vm._v(_vm._s(shape.name))]),_c('div',{attrs:{\"id\":\"selection-trackers\"}},[_vm._l((_vm.visibleTrackers),function(tracker){return [_c('div',{key:'name-' + tracker.uuid},[_vm._v(_vm._s(tracker.name))]),_c('div',{key:'value-' + tracker.uuid,staticClass:\"selection-tracker-value\",on:{\"click\":function($event){return _vm.changeValue(tracker, false)}}},[(tracker.maxvalue === 0)?[_vm._v(_vm._s(tracker.value))]:[_vm._v(_vm._s(tracker.value)+\" / \"+_vm._s(tracker.maxvalue))]],2)]})],2),_c('div',{attrs:{\"id\":\"selection-auras\"}},[_vm._l((_vm.visibleAuras),function(aura){return [_c('div',{key:'name-' + aura.uuid},[_vm._v(_vm._s(aura.name))]),_c('div',{key:'value-' + aura.uuid,staticClass:\"selection-tracker-value\",on:{\"click\":function($event){return _vm.changeValue(aura, true)}}},[(aura.dim === 0)?[_vm._v(_vm._s(aura.value))]:[_vm._v(_vm._s(aura.value)+\" / \"+_vm._s(aura.dim))]],2)]})],2)]),_c('edit-dialog',{ref:\"editDialog\",refInFor:true,attrs:{\"shape\":shape}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=template&id=43d09857&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',{attrs:{\"id\":\"accordion-container\"}},_vm._l((_vm.categories),function(category){return _c('accordion',{key:category,attrs:{\"title\":category === '' ? 'no category' : category,\"showArrow\":false,\"items\":_vm.labels[category],\"initialValues\":_vm.initalValues[category]},on:{\"selectionupdate\":_vm.updateSelection}})}),1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=template&id=dca395d6&scoped=true&\"","import { render, staticRenderFns } from \"./manager.vue?vue&type=template&id=5b0def98&\"\nimport script from \"./manager.vue?vue&type=script&lang=ts&\"\nexport * from \"./manager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./manager.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./tool.vue?vue&type=template&id=1e034b42&\"\nimport script from \"./tool.vue?vue&type=script&lang=ts&\"\nexport * from \"./tool.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./tool.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":_vm.close},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(_vm._s(_vm.title))])}}])},[_c('div',{staticClass:\"modal-body\"},[_vm._v(\"\\n \"+_vm._s(_vm.question)+\"\\n \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.answer),expression:\"answer\"}],ref:\"answer\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.answer)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.answer=$event.target.value}}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=template&id=0602c2e6&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport draggable from \"vuedraggable\";\nVue.component(\"draggable\", draggable);\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { InitiativeData, InitiativeEffect } from \"@/game/comm/types/general\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { gameManager } from '../manager';\n\n@Component({\n components: {\n Modal,\n draggable,\n },\n})\nexport default class Initiative extends Vue {\n visible = false;\n data: InitiativeData[] = [];\n currentActor: string | null = null;\n roundCounter = 0;\n visionLock = false;\n cameraLock = false;\n _activeTokens: string[] = [];\n\n mounted() {\n EventBus.$on(\"Initiative.Clear\", this.clear);\n EventBus.$on(\"Initiative.Remove\", (data: string) => this.removeInitiative(data));\n EventBus.$on(\"Initiative.Show\", () => (this.visible = true));\n\n socket.on(\"Initiative.Set\", (data: InitiativeData[]) => {\n this.data = data;\n });\n socket.on(\"Initiative.Turn.Set\", (data: string) => this.setTurn(data));\n socket.on(\"Initiative.Turn.Update\", (data: string) => this.updateTurn(data, false));\n socket.on(\"Initiative.Round.Update\", (data: number) => this.setRound(data, false));\n socket.on(\"Initiative.Effect.New\", (data: { actor: string; effect: InitiativeEffect }) => {\n const actor = this.getActor(data.actor);\n if (actor === undefined) return;\n this.createEffect(actor, data.effect, false);\n });\n socket.on(\"Initiative.Effect.Update\", (data: { actor: string; effect: InitiativeEffect }) =>\n this.updateEffect(data.actor, data.effect, false),\n );\n }\n\n beforeDestroy() {\n EventBus.$off(\"Initiative.Clear\");\n EventBus.$off(\"Initiative.Remove\");\n EventBus.$off(\"Initiative.Show\");\n }\n\n // Utilities\n clear() {\n this.data = [];\n this.currentActor = null;\n }\n getActor(actorId: string) {\n return this.data.find(a => a.uuid === actorId);\n }\n contains(uuid: string) {\n return this.data.some(d => d.uuid === uuid);\n }\n owns(actor: InitiativeData): boolean {\n if (gameStore.IS_DM) return true;\n const shape = layerManager.UUIDMap.get(actor.uuid);\n // Shapes that are unknown to this client are hidden from this client but owned by other clients\n if (shape === undefined) return false;\n return shape.owners.includes(gameStore.username);\n }\n getDefaultEffect() {\n return { uuid: uuidv4(), name: \"New Effect\", turns: 10 };\n }\n fakeSetData(dataTransfer: DataTransfer) {\n dataTransfer.setData(\"Hack\", \"\");\n }\n syncInitiative(data: InitiativeData | { uuid: string }) {\n socket.emit(\"Initiative.Update\", data);\n }\n // Events\n addInitiative(data: InitiativeData) {\n const d = this.data.findIndex(a => a.uuid === data.uuid);\n if (d >= 0) return;\n if (data.initiative === undefined) data.initiative = 0;\n this.syncInitiative(data);\n }\n removeInitiative(uuid: string) {\n const d = this.data.findIndex(a => a.uuid === uuid);\n if (d < 0 || this.data[d].group) return;\n this.syncInitiative({ uuid });\n // Remove highlight\n const shape = layerManager.UUIDMap.get(uuid);\n if (shape === undefined) return;\n if (shape.showHighlight) {\n shape.showHighlight = false;\n layerManager.getLayer(shape.layer)!.invalidate(true);\n }\n }\n updateOrder() {\n if (!gameStore.IS_DM) return;\n socket.emit(\"Initiative.Set\", this.data.map(d => d.uuid));\n }\n updateTurn(actorId: string | null, sync: boolean) {\n if (!gameStore.IS_DM && sync) return;\n this.currentActor = actorId;\n const actor = this.data.find(a => a.uuid === actorId);\n if (actor === undefined) return;\n if (actor.effects) {\n for (let e = actor.effects.length - 1; e >= 0; e--) {\n if (actor.effects[e].turns <= 0) actor.effects.splice(e, 1);\n else actor.effects[e].turns--;\n }\n }\n if (this.visionLock) {\n if (actorId !== null && gameStore.ownedtokens.includes(actorId)) gameStore.setActiveTokens([actorId]);\n else gameStore.setActiveTokens([]);\n }\n if (this.cameraLock) {\n if (actorId !== null) {\n const shape = layerManager.UUIDMap.get(actorId);\n if (shape !== undefined && shape.ownedBy()) {\n gameManager.setCenterPosition(shape.center());\n }\n }\n }\n if (sync) socket.emit(\"Initiative.Turn.Update\", actorId);\n }\n setRound(round: number, sync: boolean) {\n if (!gameStore.IS_DM && sync) return;\n this.roundCounter = round;\n if (sync) socket.emit(\"Initiative.Round.Update\", round);\n }\n setTurn(actorId: string | null) {\n this.currentActor = actorId;\n }\n nextTurn() {\n if (!gameStore.IS_DM) return;\n const order = this.data;\n const next = order[(order.findIndex(a => a.uuid === this.currentActor) + 1) % order.length];\n if (this.data[0].uuid === next.uuid) this.setRound(this.roundCounter + 1, true);\n this.updateTurn(next.uuid, true);\n }\n toggleHighlight(actor: InitiativeData, show: boolean) {\n const shape = layerManager.UUIDMap.get(actor.uuid);\n if (shape === undefined) return;\n shape.showHighlight = show;\n layerManager.getLayer(shape.layer)!.invalidate(true);\n }\n toggleOption(actor: InitiativeData, option: \"visible\" | \"group\") {\n if (!this.owns(actor)) return;\n actor[option] = !actor[option];\n this.syncInitiative(actor);\n }\n createEffect(actor: InitiativeData, effect: InitiativeEffect, sync: boolean) {\n if (!this.owns(actor)) return;\n actor.effects.push(effect);\n if (sync) socket.emit(\"Initiative.Effect.New\", { actor: actor.uuid, effect });\n }\n syncEffect(actor: InitiativeData, effect: InitiativeEffect) {\n if (!this.owns(actor)) return;\n socket.emit(\"Initiative.Effect.Update\", { actor: actor.uuid, effect });\n }\n updateEffect(actorId: string, effect: InitiativeEffect, sync: boolean) {\n const actor = this.data.find(a => a.uuid === actorId);\n if (actor === undefined) return;\n const effectIndex = actor.effects.findIndex(e => e.uuid === effect.uuid);\n if (effectIndex === undefined) return;\n actor.effects[effectIndex] = effect;\n if (sync) this.syncEffect(actor, effect);\n else this.$forceUpdate();\n }\n toggleVisionLock() {\n this.visionLock = !this.visionLock;\n if (this.visionLock) {\n this._activeTokens = [...gameStore._activeTokens];\n if (this.currentActor !== null && gameStore.ownedtokens.includes(this.currentActor)) gameStore.setActiveTokens([this.currentActor]);\n } else {\n gameStore.setActiveTokens(this._activeTokens);\n }\n }\n}\n","import { render, staticRenderFns } from \"./selection_info.vue?vue&type=template&id=43d09857&scoped=true&\"\nimport script from \"./selection_info.vue?vue&type=script&lang=ts&\"\nexport * from \"./selection_info.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./selection_info.vue?vue&type=style&index=0&id=43d09857&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43d09857\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nimport { Action, getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { AssetList } from \"@/core/comm/types\";\nimport { socket } from \"@/game/api/socket\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { g2l, l2g } from \"@/game/units\";\nimport { zoomValue } from \"@/game/utils\";\nimport { BoundingVolume } from \"@/game/visibility/bvh/bvh\";\nimport { triangulate } from \"@/game/visibility/te/pa\";\nimport { rootStore } from \"@/store\";\n\nexport interface GameState {\n boardInitialized: boolean;\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"game\", namespaced: true })\nclass GameStore extends VuexModule implements GameState {\n // This is a limited view of selectable layers that is used to generate the layer selection UI and ability to switch layers\n // See the layerManager for proper layer management tools\n layers: string[] = [];\n selectedLayerIndex = -1;\n boardInitialized = false;\n\n locations: string[] = [];\n\n assets: AssetList = {};\n\n notes: Note[] = [];\n\n IS_DM = false;\n FAKE_PLAYER = false;\n isLocked = false;\n gridSize = 50;\n username = \"\";\n roomName = \"\";\n roomCreator = \"\";\n invitationCode = \"\";\n players: { id: number; name: string; }[] = [];\n\n gridColour = \"rgba(0, 0, 0, 1)\";\n fowColour = \"rgba(0, 0, 0, 1)\";\n rulerColour = \"rgba(255, 0, 0, 1)\";\n panX = 0;\n panY = 0;\n\n zoomDisplay = 0.5;\n // zoomFactor = 1;\n\n unitSize = 5;\n useGrid = true;\n fullFOW = false;\n fowOpacity = 0.3;\n fowLOS = false;\n locationName = \"\";\n\n visionSources: { shape: string; aura: string }[] = [];\n visionBlockers: string[] = [];\n annotations: string[] = [];\n movementblockers: string[] = [];\n ownedtokens: string[] = [];\n _activeTokens: string[] = [];\n\n BV = Object.freeze(new BoundingVolume([]));\n\n visionMode: \"bvh\" | \"triangle\" = \"bvh\";\n drawTEContour = false;\n visionRangeMin = 1640;\n visionRangeMax = 3281;\n\n clipboard: ServerShape[] = [];\n\n // Maps are not yet supported in Vue untill 3.X, so for now we're using a plain old object\n labels: { [uuid: string]: Label } = {};\n\n filterNoLabel = false;\n labelFilters: string[] = [];\n\n showUI = true;\n\n get selectedLayer() {\n return this.layers[this.selectedLayerIndex];\n }\n\n get zoomFactor() {\n return zoomValue(this.zoomDisplay);\n }\n\n get activeTokens() {\n if (this._activeTokens.length === 0) return this.ownedtokens;\n return this._activeTokens;\n }\n\n @Mutation\n setFakePlayer(value: boolean) {\n this.FAKE_PLAYER = value;\n this.IS_DM = !value;\n layerManager.invalidate();\n }\n\n @Mutation\n setZoomDisplay(zoom: number) {\n if (zoom === this.zoomDisplay) return;\n if (zoom < 0) zoom = 0;\n if (zoom > 1) zoom = 1;\n this.zoomDisplay = zoom;\n layerManager.invalidate();\n }\n\n @Mutation\n setVisionMode(data: { mode: \"bvh\" | \"triangle\"; sync: boolean }) {\n this.visionMode = data.mode;\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_mode: data.mode });\n }\n\n @Mutation\n setBoardInitialized(boardInitialized: boolean) {\n this.boardInitialized = boardInitialized;\n }\n\n @Mutation\n toggleUnlabeledFilter() {\n this.filterNoLabel = !this.filterNoLabel;\n }\n\n @Mutation\n addLabel(label: Label) {\n Vue.set(this.labels, label.uuid, label);\n }\n\n @Mutation\n setLabelFilters(filters: string[]) {\n this.labelFilters = filters;\n }\n\n @Mutation\n setLabelVisibility(data: { user: string; uuid: string; visible: boolean }) {\n if (!(data.uuid in this.labels)) return;\n this.labels[data.uuid].visible = data.visible;\n }\n\n @Mutation\n deleteLabel(data: { uuid: string; user: string }) {\n if (!(data.uuid in this.labels)) return;\n const label = this.labels[data.uuid];\n const updatedLayers: Set = new Set();\n for (const shape of layerManager.UUIDMap.values()) {\n const i = shape.labels.indexOf(label);\n if (i >= 0) {\n shape.labels.splice(i, 1);\n updatedLayers.add(shape.layer);\n }\n }\n for (const layer of updatedLayers) layerManager.getLayer(layer)!.invalidate(false);\n Vue.delete(this.labels, data.uuid);\n }\n\n @Mutation\n setDM(isDM: boolean) {\n this.IS_DM = isDM;\n }\n\n @Mutation\n setUsername(username: string) {\n this.username = username;\n }\n\n @Mutation\n setRoomName(name: string) {\n this.roomName = name;\n }\n\n @Mutation\n setRoomCreator(name: string) {\n this.roomCreator = name;\n }\n\n @Mutation\n setInvitationCode(code: string) {\n this.invitationCode = code;\n }\n\n @Mutation\n addLayer(name: string) {\n this.layers.push(name);\n if (this.selectedLayerIndex === -1) this.selectedLayerIndex = this.layers.indexOf(name);\n }\n\n @Mutation\n selectLayer(data: { name: string; sync: boolean }) {\n const index = this.layers.indexOf(data.name);\n if (index >= 0) this.selectedLayerIndex = index;\n if (data.sync) socket.emit(\"Client.ActiveLayer.Set\", data.name);\n }\n\n @Mutation\n newNote(data: { note: Note; sync: boolean }) {\n this.notes.push(data.note);\n if (data.sync) socket.emit(\"Note.New\", data.note);\n }\n\n @Mutation\n setAssets(assets: AssetList) {\n this.assets = assets;\n }\n\n @Mutation\n setLocations(locations: string[]) {\n this.locations = locations;\n }\n\n @Mutation\n resetLayerInfo() {\n this.layers = [];\n this.selectedLayerIndex = -1;\n }\n\n @Mutation\n recalculateVision(partial = false) {\n if (this.boardInitialized) {\n if (this.visionMode === \"triangle\") triangulate(\"vision\", partial);\n else this.BV = Object.freeze(new BoundingVolume(this.visionBlockers));\n }\n }\n\n @Mutation\n recalculateMovement(partial = false) {\n if (this.boardInitialized && this.visionMode === \"triangle\") triangulate(\"movement\", partial);\n }\n\n @Mutation\n updateZoom(data: { newZoomDisplay: number; zoomLocation: GlobalPoint }) {\n if (data.newZoomDisplay === this.zoomDisplay) return;\n if (data.newZoomDisplay < 0) data.newZoomDisplay = 0;\n if (data.newZoomDisplay > 1) data.newZoomDisplay = 1;\n const oldLoc = g2l(data.zoomLocation);\n this.zoomDisplay = data.newZoomDisplay;\n const newLoc = l2g(oldLoc);\n // Change the pan settings to keep the zoomLocation in the same exact location before and after the zoom.\n const diff = newLoc.subtract(data.zoomLocation);\n this.panX += diff.x;\n this.panY += diff.y;\n layerManager.invalidate();\n sendClientOptions();\n }\n\n @Mutation\n setGridColour(data: { colour: string; sync: boolean }) {\n this.gridColour = data.colour;\n layerManager.getGridLayer()!.drawGrid();\n if (data.sync) socket.emit(\"Client.Options.Set\", { gridColour: data.colour });\n }\n\n @Mutation\n setFOWColour(data: { colour: string; sync: boolean }) {\n this.fowColour = data.colour;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Client.Options.Set\", { fowColour: data.colour });\n }\n\n @Mutation\n setRulerColour(data: { colour: string; sync: boolean }) {\n this.rulerColour = data.colour;\n if (data.sync) socket.emit(\"Client.Options.Set\", { rulerColour: data.colour });\n }\n\n @Mutation\n setPanX(x: number) {\n this.panX = x;\n }\n\n @Mutation\n setPanY(y: number) {\n this.panY = y;\n }\n\n @Mutation\n increasePanX(increase: number) {\n this.panX += increase;\n }\n\n @Mutation\n increasePanY(increase: number) {\n this.panY += increase;\n }\n\n @Mutation\n setUnitSize(data: { unitSize: number; sync: boolean }) {\n if (this.unitSize !== data.unitSize && data.unitSize > 0 && data.unitSize < Infinity) {\n this.unitSize = data.unitSize;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Location.Options.Set\", { unit_size: data.unitSize });\n }\n }\n\n @Mutation\n setUseGrid(data: { useGrid: boolean; sync: boolean }) {\n if (this.useGrid !== data.useGrid) {\n this.useGrid = data.useGrid;\n const gridLayer = layerManager.getGridLayer()!;\n if (data.useGrid) gridLayer.canvas.style.display = \"block\";\n else gridLayer.canvas.style.display = \"none\";\n if (data.sync) socket.emit(\"Location.Options.Set\", { use_grid: data.useGrid });\n }\n }\n\n @Mutation\n setGridSize(data: { gridSize: number; sync: boolean }): void {\n if (this.gridSize !== data.gridSize && data.gridSize > 0) {\n this.gridSize = data.gridSize;\n const gridLayer = layerManager.getGridLayer();\n if (gridLayer !== undefined) gridLayer.drawGrid();\n if (data.sync) socket.emit(\"Gridsize.Set\", data.gridSize);\n }\n }\n\n @Mutation\n setVisionRangeMin(data: { value: number; sync: boolean }): void {\n this.visionRangeMin = data.value;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_min_range: data.value });\n }\n\n @Mutation\n setVisionRangeMax(data: { value: number; sync: boolean }): void {\n this.visionRangeMax = Math.max(data.value, this.visionRangeMin);\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_max_range: this.visionRangeMax });\n }\n\n @Mutation\n setFullFOW(data: { fullFOW: boolean; sync: boolean }) {\n if (this.fullFOW !== data.fullFOW) {\n this.fullFOW = data.fullFOW;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { full_fow: data.fullFOW });\n }\n }\n\n @Mutation\n setFOWOpacity(data: { fowOpacity: number; sync: boolean }) {\n this.fowOpacity = data.fowOpacity;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { fow_opacity: data.fowOpacity });\n }\n\n @Mutation\n setLineOfSight(data: { fowLOS: boolean; sync: boolean }) {\n if (this.fowLOS !== data.fowLOS) {\n this.fowLOS = data.fowLOS;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Location.Options.Set\", { fow_los: data.fowLOS });\n }\n }\n\n @Mutation\n setLocationName(name: string) {\n this.locationName = name;\n }\n\n @Mutation\n updateNote(data: { note: Note; sync: boolean }) {\n const actualNote = this.notes.find(n => n.uuid === data.note.uuid);\n if (actualNote === undefined) return;\n actualNote.title = data.note.title;\n actualNote.text = data.note.text;\n if (data.sync) socket.emit(\"Note.Update\", actualNote);\n }\n\n @Mutation\n removeNote(data: { note: Note; sync: boolean }) {\n this.notes = this.notes.filter(n => n.uuid !== data.note.uuid);\n if (data.sync) socket.emit(\"Note.Remove\", data.note.uuid);\n }\n\n @Mutation\n toggleUI() {\n this.showUI = !this.showUI;\n }\n\n @Mutation\n setClipboard(clipboard: ServerShape[]) {\n this.clipboard = clipboard;\n }\n\n @Mutation\n setActiveTokens(tokens: string[]) {\n this._activeTokens = tokens;\n layerManager.invalidateLight();\n }\n\n @Mutation\n addActiveToken(token: string) {\n this._activeTokens.push(token);\n layerManager.invalidateLight();\n }\n\n @Mutation\n removeActiveToken(token: string) {\n if (this._activeTokens.length === 0) {\n this._activeTokens = [...this.ownedtokens];\n }\n this._activeTokens.splice(this._activeTokens.indexOf(token), 1);\n layerManager.invalidateLight();\n }\n\n @Mutation\n setPlayers(players: { id: number; name: string; }[]) {\n this.players = players;\n }\n\n @Mutation\n addPlayer(player: { id: number; name: string }) {\n this.players.push(player);\n }\n\n @Mutation\n kickPlayer(playerId: number) {\n this.players = this.players.filter(p => p.id !== playerId);\n }\n\n @Mutation\n setIsLocked(data: {isLocked: boolean, sync: boolean}) {\n this.isLocked = data.isLocked;\n if (data.sync) {\n socket.emit(\"Room.Info.Set.Locked\", this.isLocked);\n }\n }\n\n @Action\n clear() {\n (this.context.state).visionSources = [];\n (this.context.state).visionBlockers = [];\n (this.context.state).ownedtokens = [];\n (this.context.state).annotations = [];\n (this.context.state).movementblockers = [];\n (this.context.state).notes = [];\n this.context.commit(\"recalculateVision\");\n this.context.commit(\"recalculateMovement\");\n }\n}\n\nexport const gameStore = getModule(GameStore);\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=script&lang=ts&\"","import { ServerAura } from \"@/game/comm/types/shapes\";\n\nexport const aurasFromServer = (auras: ServerAura[]): Aura[] => {\n const result = [];\n for (const aura of auras) {\n result.push({\n uuid: aura.uuid,\n visionSource: aura.vision_source,\n visible: aura.visible,\n name: aura.name,\n value: aura.value,\n dim: aura.dim,\n colour: aura.colour,\n });\n }\n return result;\n};\n\nexport const aurasToServer = (auras: Aura[]): ServerAura[] => {\n const result = [];\n for (const aura of auras) {\n result.push({\n uuid: aura.uuid,\n vision_source: aura.visionSource,\n visible: aura.visible,\n name: aura.name,\n value: aura.value,\n dim: aura.dim,\n colour: aura.colour,\n });\n }\n return result;\n};\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./note.vue?vue&type=template&id=7a3669fd&scoped=true&\"\nimport script from \"./note.vue?vue&type=script&lang=ts&\"\nexport * from \"./note.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a3669fd\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./initiative.vue?vue&type=template&id=62228cde&scoped=true&\"\nimport script from \"./initiative.vue?vue&type=script&lang=ts&\"\nexport * from \"./initiative.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./initiative.vue?vue&type=style&index=0&id=62228cde&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62228cde\",\n null\n \n)\n\nexport default component.exports","import { ServerLayer } from \"@/game/comm/types/general\";\nimport { FOWLayer } from \"@/game/layers/fow\";\nimport { FOWPlayersLayer } from \"@/game/layers/fowplayers\";\nimport { GridLayer } from \"@/game/layers/grid\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\nexport function createLayer(layerInfo: ServerLayer) {\n // Create canvas element\n const canvas = document.createElement(\"canvas\");\n canvas.style.zIndex = layerManager.layers.length.toString();\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n\n // Create the Layer instance\n let layer: Layer;\n if (layerInfo.type_ === \"grid\") layer = new GridLayer(canvas, layerInfo.name);\n else if (layerInfo.type_ === \"fow\") layer = new FOWLayer(canvas, layerInfo.name);\n else if (layerInfo.type_ === \"fow-players\") layer = new FOWPlayersLayer(canvas, layerInfo.name);\n else layer = new Layer(canvas, layerInfo.name);\n layer.selectable = layerInfo.selectable;\n layer.playerEditable = layerInfo.player_editable;\n layerManager.addLayer(layer);\n\n // Add the element to the DOM\n const layers = document.getElementById(\"layers\");\n if (layers === null) {\n console.warn(\"Layers div is missing, this will prevent the main game board from loading!\");\n return;\n }\n if (layerInfo.name !== \"fow-players\") layers.appendChild(canvas);\n\n if (layerInfo.type_ === \"grid\" && layerInfo.size) gameStore.setGridSize({ gridSize: layerInfo.size, sync: false });\n // Load layer shapes\n layer.setShapes(layerInfo.shapes);\n}\n","import { render, staticRenderFns } from \"./labels.vue?vue&type=template&id=e477c214&scoped=true&\"\nimport script from \"./labels.vue?vue&type=script&lang=ts&\"\nexport * from \"./labels.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e477c214\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{attrs:{\"id\":\"toolselect\"}},[_c('ul',_vm._l((_vm.visibleTools),function(tool){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.toolVisible(tool)),expression:\"toolVisible(tool)\"}],key:tool,ref:tool + '-selector',refInFor:true,class:{'tool-selected': _vm.currentTool === tool},on:{\"mousedown\":function($event){_vm.currentTool = tool}}},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(tool))])])}),0)]),_c('div',[[_c('select-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Select'),expression:\"currentTool === 'Select'\"}],ref:\"selectTool\"}),_c('pan-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Pan'),expression:\"currentTool === 'Pan'\"}]}),_c('keep-alive',[_c('draw-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Draw'),expression:\"currentTool === 'Draw'\"}]})],1),_c('ruler-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Ruler'),expression:\"currentTool === 'Ruler'\"}]}),_c('map-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Map'),expression:\"currentTool === 'Map'\"}]}),_c('filter-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Filter'),expression:\"currentTool === 'Filter'\"}]}),_c('vision-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Vision'),expression:\"currentTool === 'Vision'\"}]}),_c('shape-menu',{ref:\"shapecontext\"}),_c('createtoken-dialog',{ref:\"createtokendialog\"})]],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=template&id=b6e1f51c&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"focusin\":_vm.focusin,\"focusout\":_vm.focusout,\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('fieldset',[_c('legend',{staticClass:\"legend\"},[_vm._v(\"PlanarAlly\")]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],attrs:{\"type\":\"text\",\"name\":\"username\",\"placeholder\":\"Username\",\"autocomplete\":\"username\",\"required\":\"\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._m(0)]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"type\":\"password\",\"name\":\"password\",\"placeholder\":\"Password\",\"autocomplete\":\"current-password\",\"required\":\"\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._m(1)]),_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('button',{staticStyle:{\"visibility\":\"hidden\",\"display\":\"none\"},attrs:{\"type\":\"submit\",\"name\":\"login\"}}),_c('button',{staticClass:\"submit\",attrs:{\"type\":\"button\",\"name\":\"register\",\"title\":\"Register\"},on:{\"click\":_vm.register}},[_c('i',{staticClass:\"fas fa-plus\"})]),_vm._m(2)])]),(_vm.error)?_c('div',{staticClass:\"feedback\"},[_c('p',{staticClass:\"error\"},[_c('strong',[_vm._v(\"Error:\")]),_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-user-circle\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-lock\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"submit\",attrs:{\"type\":\"submit\",\"name\":\"login\",\"title\":\"Login\"}},[_c('i',{staticClass:\"fas fa-arrow-right\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=template&id=bc30fc14&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport EditDialog from \"@/game/ui/selection/edit_dialog.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\n\n@Component({\n components: {\n \"edit-dialog\": EditDialog,\n },\n})\nexport default class SelectionInfo extends Vue {\n shape: Shape | null = null;\n\n mounted() {\n EventBus.$on(\"SelectionInfo.Shape.Set\", (shape: Shape | null) => {\n this.shape = shape;\n });\n }\n\n get shapes() {\n if (this.shape === null) return [];\n return [this.shape];\n }\n\n get visibleTrackers() {\n if (this.shape === null) return [];\n return this.shape.trackers.filter(tr => tr.name !== '' || tr.value !== 0);\n }\n\n get visibleAuras() {\n if (this.shape === null) return [];\n return this.shape.auras.filter(au => au.name !== '' || au.value !== 0);\n }\n\n beforeDestroy() {\n EventBus.$off(\"SelectionInfo.Shape.Set\");\n }\n\n openEditDialog() {\n (this.$refs.editDialog).visible = true;\n }\n changeValue(object: Tracker | Aura, redraw: boolean) {\n if (this.shape === null) return;\n getRef(\"prompt\")\n .prompt(`New ${object.name} value:`, `Updating ${object.name}`)\n .then(\n (value: string) => {\n if (this.shape === null) return;\n const ogValue = object.value;\n if (value[0] === \"+\" || value[0] === \"-\") object.value += parseInt(value, 10);\n else object.value = parseInt(value, 10);\n if (isNaN(object.value)) object.value = ogValue;\n socket.emit(\"Shape.Update\", { shape: this.shape.asDict(), redraw, temporary: false });\n if (redraw) layerManager.invalidate();\n },\n () => {},\n );\n }\n}\n","import { AssetList } from \"@/core/comm/types\";\nimport { socket } from \"@/game/api/socket\";\nimport { BoardInfo, Note, ServerClient, ServerLocation } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createLayer } from \"@/game/layers/utils\";\nimport { gameManager } from \"@/game/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { router } from \"@/router\";\nimport { zoomDisplay } from \"../utils\";\n\nsocket.on(\"connect\", () => {\n console.log(\"Connected\");\n});\nsocket.on(\"disconnect\", () => {\n console.log(\"Disconnected\");\n});\nsocket.on(\"connect_error\", (error: any) => {\n console.error(\"Could not connect to game session.\");\n router.push(\"/dashboard\");\n});\nsocket.on(\"error\", (error: any) => {\n console.error(\"Game session does not exist.\");\n router.push(\"/dashboard\");\n});\nsocket.on(\"redirect\", (destination: string) => {\n console.log(\"redirecting\");\n router.push(destination);\n});\nsocket.on(\"Room.Info.Set\", (data: { name: string; creator: string; invitationCode: string, isLocked: boolean, players: { id: number; name: string }[] }) => {\n gameStore.setRoomName(data.name);\n gameStore.setRoomCreator(data.creator);\n gameStore.setInvitationCode(data.invitationCode);\n gameStore.setIsLocked({isLocked: data.isLocked, sync: false});\n gameStore.setPlayers(data.players);\n});\nsocket.on(\"Room.Info.InvitationCode.Set\", (invitationCode: string) => {\n gameStore.setInvitationCode(invitationCode);\n EventBus.$emit(\"DmSettings.RefreshedInviteCode\");\n});\nsocket.on(\"Room.Info.Players.Add\", (data: {id: number, name: string}) => {\n gameStore.addPlayer(data);\n});\nsocket.on(\"Username.Set\", (username: string) => {\n gameStore.setUsername(username);\n gameStore.setDM(username === decodeURIComponent(window.location.pathname.split(\"/\")[2]));\n});\nsocket.on(\"Client.Options.Set\", (options: ServerClient) => {\n gameStore.setGridColour({ colour: options.grid_colour, sync: false });\n gameStore.setFOWColour({ colour: options.fow_colour, sync: false });\n gameStore.setRulerColour({ colour: options.ruler_colour, sync: false });\n gameStore.setPanX(options.pan_x);\n gameStore.setPanY(options.pan_y);\n gameStore.setZoomDisplay(zoomDisplay(options.zoom_factor));\n // gameStore.setZoomDisplay(0.5);\n if (options.active_layer) layerManager.selectLayer(options.active_layer, false);\n if (layerManager.getGridLayer() !== undefined) layerManager.getGridLayer()!.invalidate();\n});\nsocket.on(\"Location.Set\", (data: Partial) => {\n if (data.name !== undefined) gameStore.setLocationName(data.name);\n if (data.unit_size !== undefined) gameStore.setUnitSize({ unitSize: data.unit_size, sync: false });\n if (data.use_grid !== undefined) gameStore.setUseGrid({ useGrid: data.use_grid, sync: false });\n if (data.full_fow !== undefined) gameStore.setFullFOW({ fullFOW: data.full_fow, sync: false });\n if (data.fow_opacity !== undefined) gameStore.setFOWOpacity({ fowOpacity: data.fow_opacity, sync: false });\n if (data.fow_los !== undefined) gameStore.setLineOfSight({ fowLOS: data.fow_los, sync: false });\n if (data.vision_min_range !== undefined) gameStore.setVisionRangeMin({ value: data.vision_min_range, sync: false });\n if (data.vision_max_range !== undefined) gameStore.setVisionRangeMax({ value: data.vision_max_range, sync: false });\n if (data.vision_mode !== undefined) {\n gameStore.setVisionMode({ mode: data.vision_mode, sync: false });\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n }\n});\nsocket.on(\"Position.Set\", (data: { x: number; y: number }) => {\n gameManager.setCenterPosition(new GlobalPoint(data.x, data.y));\n});\nsocket.on(\"Notes.Set\", (notes: Note[]) => {\n for (const note of notes) gameStore.newNote({ note, sync: false });\n});\nsocket.on(\"Asset.List.Set\", (assets: AssetList) => {\n gameStore.setAssets(assets);\n});\nsocket.on(\"Board.Set\", (locationInfo: BoardInfo) => {\n gameStore.clear();\n gameStore.setLocations(locationInfo.locations);\n document.getElementById(\"layers\")!.innerHTML = \"\";\n gameStore.resetLayerInfo();\n layerManager.reset();\n for (const layer of locationInfo.layers) createLayer(layer);\n // Force the correct opacity render on other layers.\n layerManager.selectLayer(layerManager.getLayer()!.name, false);\n EventBus.$emit(\"Initiative.Clear\");\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n gameStore.setBoardInitialized(true);\n});\nsocket.on(\"Gridsize.Set\", (gridSize: number) => {\n gameStore.setGridSize({ gridSize, sync: false });\n});\nsocket.on(\"Shape.Add\", (shape: ServerShape) => {\n gameManager.addShape(shape);\n});\nsocket.on(\"Shape.Remove\", (shape: ServerShape) => {\n if (!layerManager.UUIDMap.has(shape.uuid)) {\n console.log(`Attempted to remove an unknown shape`);\n return;\n }\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${shape.layer}`);\n return;\n }\n const layer = layerManager.getLayer(shape.layer)!;\n layer.removeShape(layerManager.UUIDMap.get(shape.uuid)!, false);\n layer.invalidate(false);\n});\nsocket.on(\"Shape.Order.Set\", (data: { shape: ServerShape; index: number }) => {\n if (!layerManager.UUIDMap.has(data.shape.uuid)) {\n console.log(`Attempted to move the shape order of an unknown shape`);\n return;\n }\n if (!layerManager.hasLayer(data.shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${data.shape.layer}`);\n return;\n }\n const shape = layerManager.UUIDMap.get(data.shape.uuid)!;\n const layer = layerManager.getLayer(shape.layer)!;\n layer.moveShapeOrder(shape, data.index, false);\n});\nsocket.on(\"Shape.Layer.Change\", (data: { uuid: string; layer: string }) => {\n const shape = layerManager.UUIDMap.get(data.uuid);\n if (shape === undefined) return;\n shape.moveLayer(data.layer, false);\n});\nsocket.on(\"Shape.Update\", (data: { shape: ServerShape; redraw: boolean; move: boolean, temporary: boolean }) => {\n gameManager.updateShape(data);\n});\nsocket.on(\"Temp.Clear\", (shapes: ServerShape[]) => {\n shapes.forEach(shape => {\n if (!layerManager.UUIDMap.has(shape.uuid)) {\n console.log(\"Attempted to remove an unknown temporary shape\");\n return;\n }\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${shape.layer}`);\n return;\n }\n const realShape = layerManager.UUIDMap.get(shape.uuid)!;\n layerManager.getLayer(shape.layer)!.removeShape(realShape, false);\n });\n});\nsocket.on(\"Labels.Set\", (labels: Label[]) => {\n for (const label of labels) gameStore.addLabel(label);\n});\nsocket.on(\"Label.Visibility.Set\", (data: { user: string; uuid: string; visible: boolean }) => {\n gameStore.setLabelVisibility(data);\n});\nsocket.on(\"Label.Add\", (data: Label) => {\n gameStore.addLabel(data);\n});\nsocket.on(\"Label.Delete\", (data: { user: string; uuid: string }) => {\n gameStore.deleteLabel(data);\n});\nsocket.on(\"Labels.Filter.Add\", (uuid: string) => {\n gameStore.labelFilters.push(uuid);\n layerManager.invalidate();\n})\nsocket.on(\"Labels.Filter.Remove\", (uuid: string) => {\n const idx = gameStore.labelFilters.indexOf(uuid);\n if (idx >= 0) {\n gameStore.labelFilters.splice(idx, 1);\n layerManager.invalidate();\n }\n})\nsocket.on(\"Labels.Filters.Set\", (filters: string[]) => {\n gameStore.setLabelFilters(filters);\n})\n"],"sourceRoot":""} \ No newline at end of file diff --git a/server/static/js/app-legacy.3ba691e3.js b/server/static/js/app-legacy.3ba691e3.js deleted file mode 100644 index fa47f301c..000000000 --- a/server/static/js/app-legacy.3ba691e3.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function t(t){for(var s,r,a=t[0],l=t[1],c=t[2],d=0,h=[];de.fillText(t.text,t.x,t.y)),e.restore()}contains(e){return!1}center(e){}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){}getMaxHeight(e){const t=this.getLines(e),i=30;return i*t.length}getMaxWidth(e){const t=this.getLines(e),i=t.map(t=>e.measureText(t.text).width);return Math.max(...i)}getLines(e){const t=this.text.split("\n"),i=[],s=e.canvas.width,n=30,o=0;let r=0;for(const a of t){let t="";const l=a.split(" ");for(const a of l){const l=t+a+" ",c=e.measureText(l),u=c.width;u>s?(e.fillText(t,o,r),i.push({text:t,x:o,y:r}),t=a+" ",r+=n):t=l}i.push({text:t,x:o,y:r}),r+=n}return i}}t.Text=r},"01be":function(e,t,i){"use strict";var s=i("919a"),n=i.n(s);n.a},"033f":function(e,t,i){"use strict";i.r(t);var s=i("da7f"),n=i("a68b");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("a83f");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"6c66d243",null);t["default"]=a.exports},"034f":function(e,t,i){"use strict";var s=i("64a9"),n=i.n(s);n.a},"0525":function(e,t,i){},"0584":function(e,t,i){"use strict";var s=i("de21"),n=i.n(s);n.a},"0634":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("c345a"),l=i("60a3");let c=class extends o.default{constructor(){super(...arguments),this.display=!1,this.left=0,this.top=0,this.transparent=!1}mounted(){this.transparent=0===this.$refs.chromePicker.val.rgba.a,this.setPosition()}open(){this.display||this.disabled||(this.setPosition(),this.display=!0,this.$nextTick(()=>this.$children[0].$el.focus()))}updateColor(e){this.transparent=0===e.rgba.a;const t=n.default(e.rgba).toRgbString();this.$emit("update:color",t),this.$emit("input",t)}closePicker(){this.display=!1,this.$emit("change",this.color)}setPosition(){const e=this.$el.getBoundingClientRect();e.right+224>window.innerWidth?this.left=e.left-224:this.left=e.right,e.bottom+242>window.innerHeight?this.top=e.top-242:this.top=e.bottom}};s.__decorate([l.Prop(String)],c.prototype,"color",void 0),s.__decorate([l.Prop(Boolean)],c.prototype,"disabled",void 0),c=s.__decorate([r.default({components:{"chrome-picker":a.Chrome}})],c),t.default=c},"07f5":function(e,t,i){"use strict";i.r(t);var s=i("69fb"),n=i("d588");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("561b"),i("e6c4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"3d0578ba",null);t["default"]=a.exports},"0a75":function(e,t,i){},"0bc6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("8055"));function o(e){t.socket.io.opts.query=`user=${e.params.creator}&room=${e.params.room}`,t.socket.connect()}t.socket=n.default(location.protocol+"//"+location.host+"/planarally",{autoConnect:!1}),t.createConnection=o},"0cf7":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("4aec")),a=s.__importDefault(i("a535")),l=s.__importDefault(i("cec2")),c=i("5338"),u=i("2d5b"),d=i("4a5b");let h=class extends n.default{constructor(){super(...arguments),this.path=[],this.draggingSelection=!1}get folders(){return u.assetStore.folders}get files(){return u.assetStore.files}get selected(){return u.assetStore.selected}get idMap(){return u.assetStore.idMap}get currentFolder(){return this.path.length?this.path[this.path.length-1]:u.assetStore.root}get parentFolder(){let e=this.path[this.path.length-2];return void 0===e&&(e=u.assetStore.root),e}get firstSelectedFile(){for(const e of u.assetStore.selected)if(u.assetStore.idMap.get(e).file_hash)return u.assetStore.idMap.get(e);return null}changeDirectory(e){e<0?this.path.pop():this.path.push(e),u.assetStore.clearSelected(),c.socket.emit("Folder.Get",this.currentFolder)}createDirectory(){const e=window.prompt("New folder name");null!==e&&c.socket.emit("Folder.Create",{name:e,parent:this.currentFolder})}moveInode(e,t){u.assetStore.files.includes(e)?u.assetStore.files.splice(u.assetStore.files.indexOf(e),1):u.assetStore.folders.splice(u.assetStore.folders.indexOf(e),1),u.assetStore.idMap.delete(e),c.socket.emit("Inode.Move",{inode:e,target:t})}select(e,t){if(e.shiftKey&&u.assetStore.selected.length>0){const e=[...u.assetStore.files,...u.assetStore.folders],i=e.indexOf(u.assetStore.selected[u.assetStore.selected.length-1]),s=e.indexOf(t);for(let t=i;t!==s;i0&&this.upload(e.dataTransfer.files,t);this.draggingSelection=!1}prepareUpload(){document.getElementById("files").click()}upload(e,t){const i=document.getElementById("files").files;if(void 0===e){if(!i)return;e=i}void 0===t&&(t=this.currentFolder);const s=1e5;for(const n of e){const e=d.uuidv4(),i=Math.ceil(n.size/s);for(let o=0;o{c.socket.emit("Asset.Upload",{name:n.name,directory:t,data:r.result,slice:o,totalSlices:i,uuid:e})}}}}};h=s.__decorate([o.default({components:{Prompt:l.default,ConfirmDialog:a.default,AssetContextMenu:r.default},beforeRouteEnter(e,t,i){c.socket.connect(),i()},beforeRouteLeave(e,t,i){c.socket.disconnect(),i()}})],h),t.default=h},"0ddd":function(e,t,i){"use strict";i.r(t);var s=i("8f54"),n=i("4bc3");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("9dd4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"6d718094",null);t["default"]=a.exports},1:function(e,t){},1077:function(e,t,i){"use strict";i.r(t);var s=i("f994"),n=i("1eee");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("3cd3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"bc30fc14",null);t["default"]=a.exports},1216:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("6f92"),n=i("92b1"),o=i("98ef"),r=i("4aee");function a(e,t){const i=s.layerManager.getLayer("draw");if(void 0===i)return;const o=i.ctx;o.lineJoin="round",o.lineJoin="round",o.beginPath(),o.strokeStyle=void 0===t?`rgb(${255*Math.random()}, ${255*Math.random()}, ${255*Math.random()})`:t,o.moveTo(n.g2lx(e[0][0]),n.g2ly(e[0][1]));for(const s of e)o.lineTo(n.g2lx(s[0]),n.g2ly(s[1]));o.closePath(),o.stroke()}function l(e,t){const i=s.layerManager.getLayer("draw");if(void 0===i)return;const n=i.ctx;n.lineJoin="round",n.lineJoin="round",n.beginPath(),n.strokeStyle=void 0===t?`rgb(${255*Math.random()}, ${255*Math.random()}, ${255*Math.random()})`:t,n.moveTo(e[0][0],e[0][1]);for(const s of e)n.lineTo(s[0],s[1]);n.closePath(),n.stroke()}function c(e,t){return t?e:n.g2lx(e)}function u(e,t){return t?e:n.g2ly(e)}t.drawPolygon=a,t.drawPolygonL=l;let d=0,h=0;function f(e,t,i,s,n){e.beginPath(),e.strokeStyle=s?"rgba(255, 0, 0, 0.30)":"rgba(0, 0, 0, 0.30)",e.moveTo(c(t[0],n),u(t[1],n)),e.lineTo(c(i[0],n),u(i[1],n)),e.closePath(),e.stroke()}function p(e,t=!0,i=!0,n=0){d=0,h=0;let a=0;const l=s.layerManager.getLayer("draw");if(void 0===l)return;const p=l.ctx;i&&p.clearRect(0,0,2e3,1e3),p.lineJoin="round",p.lineJoin="round";const g=new o.EdgeIterator(e);while(g.valid)g.next(),g.collect();g.collect();do{const e=g.edge.first.vertices[r.ccw(g.edge.second)].point,t=g.edge.first.vertices[r.cw(g.edge.second)].point;if(n>0){if(e[0]===-1/0||t[0]===-1/0){g.next();continue}h++,g.edge.first.constraints[g.edge.second]?(d++,2===n&&console.log(`Edge: (*) ${e} > ${t}`)):2===n&&console.log(`Edge: ${e} > ${t}`)}do{g.next(),g.collect()}while(g.valid)}while(null!==g.pos);for(const s of e.triangles){if(s.isInfinite())continue;a++;const e=[];p.fillStyle="red",void 0!==s.vertices[0]&&(e.push(s.vertices[0].point),p.beginPath(),p.arc(c(s.vertices[0].point[0],t),u(s.vertices[0].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),void 0!==s.vertices[1]&&(e.push(s.vertices[1].point),p.arc(c(s.vertices[1].point[0],t),u(s.vertices[1].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),void 0!==s.vertices[2]&&(e.push(s.vertices[2].point),p.arc(c(s.vertices[2].point[0],t),u(s.vertices[2].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),2===n&&console.log("[T] ",...e,s.constraints),p.moveTo(c(s.vertices[0].point[0],t),u(s.vertices[0].point[1],t)),void 0!==s.vertices[0]&&void 0!==s.vertices[1]&&f(p,s.vertices[0].point,s.vertices[1].point,s.constraints[2],t),void 0!==s.vertices[1]&&void 0!==s.vertices[2]&&f(p,s.vertices[1].point,s.vertices[2].point,s.constraints[0],t),void 0!==s.vertices[2]&&void 0!==s.vertices[0]&&f(p,s.vertices[2].point,s.vertices[0].point,s.constraints[1],t)}n>0&&(console.log(`Edges: ${d}/${h}`),console.log(`Faces: ${a}`))}window.DP=a,window.DPL=l,window.DPT=p},1289:function(e,t,i){"use strict";i.r(t);var s=i("df64"),n=i("d677");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("8790");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"0bf2b7ba",null);t["default"]=a.exports},"12d3":function(e,t,i){"use strict";var s=i("a260"),n=i.n(s);n.a},1327:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importStar(i("66cb")),o=i("4a5b"),r=i("4709"),a=i("f10f"),l=i("92b1");class c extends r.Circle{constructor(e,t,i,s,n,o,r){super(e,t,n,o,r),this.type="circulartoken",this.text=i,this.font=s}asDict(){return Object.assign(this.getBaseDict(),{radius:this.r,text:this.text,font:this.font})}fromDict(e){super.fromDict(e),this.r=e.radius,this.text=e.text,this.font=e.font}draw(e){super.draw(e),e.font=this.font,e.save();const t=l.g2l(this.center());e.textAlign="center",e.textBaseline="middle";const i=o.calcFontScale(e,this.text,l.g2lz(this.r),l.g2lz(this.r)),s=0;e.transform(i,s,-s,i,t.x,t.y),e.fillStyle=n.mostReadable(this.fillColour,["#000","#fff"]).toHexString(),e.fillText(this.text,0,0),e.restore()}getInitiativeRepr(){return{uuid:this.uuid,visible:!a.gameStore.IS_DM,group:!1,source:""===this.name||"Unknown shape"===this.name?this.text:this.name,has_img:!1,effects:[],index:1/0}}}t.CircularToken=c},1625:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("b2ed"),r=i("0180"),a=i("f10f"),l=i("92b1");class c{constructor(){this.shown=!1;const e=new s.GlobalPoint(0,0);this.annotationText=new r.Text(e,"","bold 20px serif",0,"rgba(230, 230, 230, 1)"),this.annotationRect=new o.Rect(e,0,0,"rgba(0, 0, 0, 0.6)")}setActiveText(e){if(void 0===this.layer){if(!n.layerManager.hasLayer("draw"))return void console.warn("There is no draw layer to draw annotations on!");this.layer=n.layerManager.getLayer("draw"),this.layer.addShape(this.annotationRect,!1),this.layer.addShape(this.annotationText,!1)}this.shown=""!==e,this.annotationText.refPoint=l.l2g(new s.LocalPoint(this.layer.canvas.width/2,50)),this.annotationText.text=e;const t=this.shown?this.annotationText.getMaxWidth(this.layer.ctx)+10:0,i=this.shown?this.annotationText.getMaxHeight(this.layer.ctx)+10:0;this.annotationRect.refPoint=l.l2g(new s.LocalPoint(this.layer.canvas.width/2-t/2,30)),this.annotationRect.w=t/a.gameStore.zoomFactor,this.annotationRect.h=i/a.gameStore.zoomFactor,this.layer.invalidate(!0)}}t.AnnotationManager=c},"19f9":function(e,t,i){"use strict";i.r(t);var s=i("264b"),n=i("8cd4");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("314d");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"c7fe324c",null);t["default"]=a.exports},"1c76":function(e,t,i){"use strict";i.r(t);var s=i("2c88"),n=i("300e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("7f1e");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},"1dd6":function(e,t,i){"use strict";i.r(t);var s=i("5ae5"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"1eee":function(e,t,i){"use strict";i.r(t);var s=i("d30b"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"1fd5":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Label manager")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("div",{staticClass:"grid"},[i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Category"}},[e._v("Cat.")])]),i("div",{staticClass:"header name"},[e._v("Name")]),i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Visible"}},[e._v("Vis.")])]),i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Delete"}},[e._v("Del.")])]),i("div",{staticClass:"separator spanrow",staticStyle:{margin:"0 0 7px"}}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.search,expression:"search"}],ref:"search",staticClass:"spanrow",attrs:{type:"text",placeholder:"search"},domProps:{value:e.search},on:{input:function(t){t.target.composing||(e.search=t.target.value)}}})]),i("div",{staticClass:"grid scroll"},[e._l(e.categories,function(t){return[e._l(e.labels[t],function(t){return[i("div",{key:"row-"+t.uuid,staticClass:"row",on:{click:function(i){return e.selectLabel(t.uuid)}}},[t.category?[i("div",{key:"cat-"+t.uuid},[e._v(e._s(t.category))]),i("div",{key:"name-"+t.uuid,staticClass:"name"},[e._v(e._s(t.name))])]:e._e(),t.category?e._e():[i("div",{key:"cat-"+t.uuid}),i("div",{key:"name-"+t.uuid,staticClass:"name"},[e._v(e._s(t.name))])],i("div",{key:"visible-"+t.uuid,class:{"lower-opacity":!t.visible},style:{textAlign:"center"},on:{click:function(i){return i.stopPropagation(),e.toggleVisibility(t)}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{key:"delete-"+t.uuid,on:{click:function(i){return i.stopPropagation(),e.deleteLabel(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})])],2)]})]}),0===e.labels.length?[i("div",{attrs:{id:"no-labels"}},[e._v("No labels exist yet")])]:e._e()],2),i("div",{staticClass:"grid"},[i("div",{staticClass:"separator spanrow"}),i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.newCategory,expression:"newCategory",modifiers:{trim:!0}}],attrs:{type:"text"},domProps:{value:e.newCategory},on:{input:function(t){t.target.composing||(e.newCategory=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}}),i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.newName,expression:"newName",modifiers:{trim:!0}}],attrs:{type:"text"},domProps:{value:e.newName},on:{input:function(t){t.target.composing||(e.newName=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}}),i("button",{attrs:{id:"addLabelButton"},on:{click:function(t){return t.stopPropagation(),e.addLabel(t)}}},[e._v("Add")])])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"206a":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("6c30"),r=i("4709"),a=i("1327"),l=i("5e7c"),c=i("574e"),u=i("b2ed"),d=i("0180"),h=i("e4ea");function f(e){let t;const i=new s.GlobalPoint(e.x,e.y);if("rect"===e.type_){const s=e;t=new u.Rect(i,s.width,s.height,s.fill_colour,s.stroke_colour,s.uuid)}else if("circle"===e.type_){const s=e;t=new r.Circle(i,s.radius,s.fill_colour,s.stroke_colour,s.uuid)}else if("circulartoken"===e.type_){const s=e;t=new a.CircularToken(i,s.radius,s.text,s.font,s.fill_colour,s.stroke_colour,s.uuid)}else if("line"===e.type_){const n=e;t=new l.Line(i,new s.GlobalPoint(n.x2,n.y2),n.line_width,n.stroke_colour,n.uuid)}else if("multiline"===e.type_){const n=e;t=new c.MultiLine(i,n.points.map(e=>new s.GlobalPoint(e.x,e.y)),n.line_width,n.stroke_colour,n.uuid)}else if("polygon"===e.type_){const n=e;t=new h.Polygon(i,n.vertices.map(e=>new s.GlobalPoint(e.x,e.y)),n.fill_colour,n.stroke_colour,n.uuid)}else if("text"===e.type_){const s=e;t=new d.Text(i,s.text,s.font,s.angle,s.fill_colour,s.stroke_colour,s.uuid)}else{if("assetrect"!==e.type_)return;{const s=e,r=new Image(s.width,s.height);s.src.startsWith("http")?r.src=new URL(s.src).pathname:r.src=s.src,t=new o.Asset(r,i,s.width,s.height,s.uuid),r.onload=()=>{n.layerManager.getLayer(e.layer).invalidate(!1)}}}return t.fromDict(e),t}t.createShapeFromDict=f},"208e":function(e,t,i){"use strict";i.r(t);var s=i("27ae"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"223d":function(e,t,i){"use strict";var s=i("e756"),n=i.n(s);n.a},"22bd":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("SelectContext",{ref:"selectcontext"})},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2380:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,colour:"rgba(255, 255, 255, 0.8)",mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("DM Settings")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body",on:{click:e.handleClick}},[i("div",{attrs:{id:"categories"}},e._l(e.categories,function(t,s){return i("div",{key:t,staticClass:"category",class:{selected:e.selection===s},on:{click:function(t){e.selection=s}}},[e._v(e._s(t))])}),0),i("div",{directives:[{name:"show",rawName:"v-show",value:0===e.selection,expression:"selection === 0"}],staticClass:"panel"},[i("div",{staticClass:"spanrow header"},[e._v("Players")]),e._l(e.$store.state.game.players,function(t){return i("div",{key:t.id,staticClass:"row smallrow"},[i("div",[e._v(e._s(t.name))]),i("div",[i("div",{on:{click:function(i){return e.kickPlayer(t.id)}}},[e._v("Kick")])])])}),0===Object.values(e.$store.state.game.players).length?i("div",{staticClass:"row smallrow"},[i("div",{staticClass:"spanrow"},[e._v("There are no players yet, invite some using the link below!")])]):e._e(),i("div",{staticClass:"spanrow header"},[e._v("Invite code")]),i("div",{staticClass:"row"},[i("div",[e._v("Invitation URL:")]),e.showRefreshState?[i("InputCopyElement",{attrs:{value:e.refreshState}})]:[i("InputCopyElement",{attrs:{value:e.invitationUrl}})]],2),i("div",{staticClass:"row",on:{click:e.refreshInviteCode}},[i("div"),i("div",[i("button",[e._v("Refresh invitation code")])])]),i("div",{staticClass:"spanrow header"},[e._v("Danger Zone")]),i("div",{staticClass:"row"},[i("div",[e.locked?[e._v("Unlock")]:[e._v("Lock")],e._v(" Session "),i("i",[e._v("(DM access only)")])],2),i("div",[i("button",{staticClass:"danger",on:{click:e.toggleSessionLock}},[e.locked?[e._v("Unlock")]:[e._v("Lock")],e._v(" this Session")],2)])]),i("div",{staticClass:"row"},[i("div",[e._v("Remove Session")]),i("div",[i("button",{staticClass:"danger",on:{click:e.deleteSession}},[e._v("Delete this Session")])])])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:1===e.selection,expression:"selection === 1"}],staticClass:"panel"},[i("div",{staticClass:"row"},[i("label",{attrs:{for:"useGridInput"}},[e._v("Use grid")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.useGrid,expression:"useGrid"}],attrs:{id:"useGridInput",type:"checkbox"},domProps:{checked:Array.isArray(e.useGrid)?e._i(e.useGrid,null)>-1:e.useGrid},on:{change:function(t){var i=e.useGrid,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.useGrid=i.concat([o])):r>-1&&(e.useGrid=i.slice(0,r).concat(i.slice(r+1)))}else e.useGrid=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"gridSizeInput"}},[e._v("Grid Size (in pixels):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.gridSize,expression:"gridSize",modifiers:{number:!0}}],attrs:{id:"gridSizeInput",type:"number",min:"0"},domProps:{value:e.gridSize},on:{input:function(t){t.target.composing||(e.gridSize=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"unitSizeInput"}},[e._v("Unit Size (in ft.):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.unitSize,expression:"unitSize",modifiers:{number:!0}}],attrs:{id:"unitSizeInput",type:"number"},domProps:{value:e.unitSize},on:{input:function(t){t.target.composing||(e.unitSize=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])])]),i("div",{directives:[{name:"show",rawName:"v-show",value:2===e.selection,expression:"selection === 2"}],staticClass:"panel"},[i("div",{staticClass:"spanrow header"},[e._v("Core")]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fakePlayerInput"}},[e._v("Fake player:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fakePlayer,expression:"fakePlayer"}],attrs:{id:"fakePlayerInput",type:"checkbox"},domProps:{checked:Array.isArray(e.fakePlayer)?e._i(e.fakePlayer,null)>-1:e.fakePlayer},on:{change:function(t){var i=e.fakePlayer,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fakePlayer=i.concat([o])):r>-1&&(e.fakePlayer=i.slice(0,r).concat(i.slice(r+1)))}else e.fakePlayer=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"useFOWInput"}},[e._v("Fill entire canvas with FOW:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fullFOW,expression:"fullFOW"}],attrs:{id:"useFOWInput",type:"checkbox"},domProps:{checked:Array.isArray(e.fullFOW)?e._i(e.fullFOW,null)>-1:e.fullFOW},on:{change:function(t){var i=e.fullFOW,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fullFOW=i.concat([o])):r>-1&&(e.fullFOW=i.slice(0,r).concat(i.slice(r+1)))}else e.fullFOW=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fowLOS"}},[e._v("Only show lights in LoS:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fowLOS,expression:"fowLOS"}],attrs:{id:"fowLOS",type:"checkbox"},domProps:{checked:Array.isArray(e.fowLOS)?e._i(e.fowLOS,null)>-1:e.fowLOS},on:{change:function(t){var i=e.fowLOS,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fowLOS=i.concat([o])):r>-1&&(e.fowLOS=i.slice(0,r).concat(i.slice(r+1)))}else e.fowLOS=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fowOpacity"}},[e._v("FOW opacity:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.fowOpacity,expression:"fowOpacity",modifiers:{number:!0}}],attrs:{id:"fowOpacity",type:"number",min:"0",max:"1",step:"0.1"},domProps:{value:e.fowOpacity},on:{input:function(t){t.target.composing||(e.fowOpacity=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"spanrow header"},[e._v("Advanced")]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"visionMode"}},[e._v("Vision Mode:")]),i("div",[i("select",{attrs:{id:"visionMode"},on:{change:e.changeVisionMode}},[i("option",{domProps:{selected:"bvh"===e.$store.state.game.visionMode}},[e._v("BVH")]),i("option",{domProps:{selected:"triangle"===e.$store.state.game.visionMode}},[e._v("Triangle")])])])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"vmininp"}},[e._v("Minimal full vision (ft):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:e.visionRangeMin,expression:"visionRangeMin",modifiers:{lazy:!0,number:!0}}],attrs:{id:"vmininp",type:"number",min:"0"},domProps:{value:e.visionRangeMin},on:{change:function(t){e.visionRangeMin=e._n(t.target.value)},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"vmaxinp"}},[e._v("Maximal vision (ft):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:e.visionRangeMax,expression:"visionRangeMax",modifiers:{lazy:!0,number:!0}}],attrs:{id:"vmaxinp",type:"number",min:"0"},domProps:{value:e.visionRangeMax},on:{change:function(t){e.visionRangeMax=e._n(t.target.value)},blur:function(t){return e.$forceUpdate()}}})])])])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2469:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=i("4a5b"),r=i("0bc6"),a=i("f312"),l=i("8f0a"),c=i("6f92"),u=i("f10f"),d=i("92b1");class h{constructor(e,t,i,s){this.fillColour="#000",this.strokeColour="rgba(0,0,0,0)",this.name="Unknown shape",this.nameVisible=!0,this.trackers=[],this.auras=[],this.labels=[],this._owners=[],this.visionObstruction=!1,this.movementObstruction=!1,this.isToken=!1,this.showHighlight=!1,this.annotation="",this.globalCompositeOperation="source-over",this.options=new Map,this._refPoint=e,this.uuid=s||o.uuidv4(),void 0!==t&&(this.fillColour=t),void 0!==i&&(this.strokeColour=i)}get refPoint(){return this._refPoint}set refPoint(e){this._refPoint=e}visibleInCanvas(e){return!1}getPointIndex(e,t=0){for(const[i,s]of this.points.entries())if(Math.abs(e.x-s[0])<=t&&Math.abs(e.y-s[1])<=t)return i;return-1}getPointOrientation(e){const t=l.GlobalPoint.fromArray(this.points[(this.points.length+e-1)%this.points.length]),i=l.GlobalPoint.fromArray(this.points[e]),s=l.GlobalPoint.fromArray(this.points[(e+1)%this.points.length]),n=s.subtract(t),o=t.add(n.multiply(.5));return i.subtract(o).normalize()}invalidate(e){const t=c.layerManager.getLayer(this.layer);t&&t.invalidate(e)}checkVisionSources(e=!0){const t=this,i=u.gameStore.visionBlockers.indexOf(this.uuid);let s=!1;this.visionObstruction&&-1===i?(u.gameStore.visionBlockers.push(this.uuid),s=!0):!this.visionObstruction&&i>=0&&(u.gameStore.visionBlockers.splice(i,1),s=!0),s&&e&&u.gameStore.recalculateVision(),this.auras.forEach(e=>{const i=u.gameStore.visionSources,s=i.findIndex(t=>t.aura===e.uuid);e.visionSource&&-1===s?i.push({shape:t.uuid,aura:e.uuid}):!e.visionSource&&s>=0&&i.splice(s,1)});for(let n=u.gameStore.visionSources.length-1;n>=0;n--){const e=u.gameStore.visionSources[n];e.shape===t.uuid&&(t.auras.some(t=>t.uuid===e.aura&&t.visionSource)||u.gameStore.visionSources.splice(n,1))}}setMovementBlock(e,t=!0){this.movementObstruction=e||!1;const i=u.gameStore.movementblockers.indexOf(this.uuid);let s=!1;this.movementObstruction&&-1===i?(u.gameStore.movementblockers.push(this.uuid),s=!0):!this.movementObstruction&&i>=0&&(u.gameStore.movementblockers.splice(i,1),s=!0),s&&t&&u.gameStore.recalculateMovement()}setIsToken(e){if(this.isToken=e,this.ownedBy()){const e=u.gameStore.ownedtokens.indexOf(this.uuid);this.isToken&&-1===e?u.gameStore.ownedtokens.push(this.uuid):!this.isToken&&e>=0&&u.gameStore.ownedtokens.splice(e,1)}}getBaseDict(){return{type_:this.type,uuid:this.uuid,x:this.refPoint.x,y:this.refPoint.y,layer:this.layer,draw_operator:this.globalCompositeOperation,movement_obstruction:this.movementObstruction,vision_obstruction:this.visionObstruction,auras:a.aurasToServer(this.auras),trackers:this.trackers,labels:this.labels,owners:this._owners,fill_colour:this.fillColour,stroke_colour:this.strokeColour,name:this.name,name_visible:this.nameVisible,annotation:this.annotation,is_token:this.isToken,options:JSON.stringify([...this.options])}}fromDict(e){this.layer=e.layer,this.globalCompositeOperation=e.draw_operator,this.movementObstruction=e.movement_obstruction,this.visionObstruction=e.vision_obstruction,this.auras=a.aurasFromServer(e.auras),this.trackers=e.trackers,this.labels=e.labels,this._owners=e.owners,this.isToken=e.is_token,this.nameVisible=e.name_visible,e.annotation&&(this.annotation=e.annotation),e.name&&(this.name=e.name),e.options&&(this.options=new Map(JSON.parse(e.options)))}draw(e){if(void 0!==this.globalCompositeOperation?e.globalCompositeOperation=this.globalCompositeOperation:e.globalCompositeOperation="source-over",this.showHighlight){const t=this.getBoundingBox();e.strokeStyle="red",e.strokeRect(d.g2lx(t.topLeft.x)-5,d.g2ly(t.topLeft.y)-5,d.g2lz(t.w)+10,d.g2lz(t.h)+10)}}drawAuras(e){for(const i of this.auras){if(0===i.value&&0===i.dim)return;e.beginPath();const s=d.g2l(this.center()),o=d.g2lr(i.value+i.dim);if(0===i.dim)e.fillStyle=i.colour;else{const t=e.createRadialGradient(s.x,s.y,d.g2lr(i.value),s.x,s.y,d.g2lr(i.value+i.dim)),o=n.default(i.colour);e.fillStyle=t,t.addColorStop(0,i.colour),t.addColorStop(1,o.setAlpha(0).toRgbString())}if(i.visionSource&&void 0!==i.lastPath)try{e.fill(i.lastPath)}catch(t){e.arc(s.x,s.y,o,0,2*Math.PI),e.fill(),console.warn(t)}else e.arc(s.x,s.y,o,0,2*Math.PI),e.fill()}}getInitiativeRepr(){return{uuid:this.uuid,visible:!u.gameStore.IS_DM,group:!1,source:this.name,has_img:!1,effects:[],index:1/0}}moveLayer(e,t){const i=c.layerManager.getLayer(this.layer),s=c.layerManager.getLayer(e);void 0!==i&&void 0!==s&&(this.layer=e,i.shapes.splice(i.shapes.indexOf(this),1),s.shapes.push(this),i.invalidate(!0),s.invalidate(!1),t&&r.socket.emit("Shape.Layer.Change",{uuid:this.uuid,layer:e}))}get owners(){return Object.freeze(this._owners.slice())}ownedBy(e){return void 0===e&&(e=u.gameStore.username),u.gameStore.IS_DM||this._owners.includes(e)||u.gameStore.FAKE_PLAYER&&u.gameStore.activeTokens.includes(this.uuid)}addOwner(e){this._owners.includes(e)||this._owners.push(e)}updateOwner(e,t){const i=this._owners.findIndex(t=>t===e);i>=0?this._owners.splice(i,1,t):this.addOwner(t)}removeOwner(e){const t=this._owners.findIndex(t=>t===e);this._owners.splice(t,1)}}t.Shape=h},"255e":function(e,t,i){"use strict";i.r(t);var s=i("851c"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"264b":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"menuContainer"}},[i("div",{ref:"rm",style:{left:e.visible.settings?"200px":"0",top:e.visible.locations?"100px":"0"},attrs:{id:"radialmenu"}},[i("div",{staticClass:"rm-wrapper"},[i("div",{staticClass:"rm-toggler"},[i("ul",{staticClass:"rm-list",class:{"rm-list-dm":e.IS_DM}},[e.IS_DM?i("li",{staticClass:"rm-item",attrs:{id:"rm-locations"},on:{click:function(t){e.visible.locations=!e.visible.locations}}},[e._m(0)]):e._e(),i("li",{staticClass:"rm-item",attrs:{id:"rm-settings"},on:{click:function(t){e.visible.settings=!e.visible.settings}}},[e._m(1)])])]),e._m(2)])]),i("transition",{attrs:{name:"settings"},on:{enter:function(t){e.$refs.rm.style.transition="left 500ms"}}},[e.visible.settings?i("div",{ref:"settings",attrs:{id:"menu"},on:{click:e.settingsClick}},[i("div",{staticStyle:{width:"200px",height:"90%","overflow-y":"auto","overflow-x":"hidden"}},[e.IS_DM?[i("button",{staticClass:"menu-accordion"},[e._v("Assets")]),i("div",{staticClass:"menu-accordion-panel"},[i("a",{staticClass:"actionButton",attrs:{href:"/assets",target:"blank",title:"Open asset manager"}},[i("i",{staticClass:"fas fa-external-link-alt"})]),i("div",{staticClass:"directory",attrs:{id:"menu-tokens"}},[i("asset-node",{attrs:{asset:e.assets}}),e.assets?e._e():i("div",[e._v("No assets")])],1)]),i("button",{staticClass:"menu-accordion"},[e._v("Notes")]),i("div",{staticClass:"menu-accordion-panel"},[i("div",{staticClass:"menu-accordion-subpanel",attrs:{id:"menu-notes"}},[i("a",{staticClass:"actionButton",on:{click:e.createNote}},[i("i",{staticClass:"far fa-plus-square"})]),e._l(e.notes,function(t){return i("div",{key:t.uuid,staticStyle:{cursor:"pointer"},on:{click:function(i){return e.openNote(t)}}},[e._v(e._s(t.title||"[?]"))])}),e.notes.length?e._e():i("div",[e._v("No notes")])],2)]),i("button",{staticClass:"menu-accordion",on:{click:e.openDmSettings}},[e._v("DM Options")])]:e._e(),i("button",{staticClass:"menu-accordion"},[e._v("Client Options")]),i("div",{staticClass:"menu-accordion-panel"},[i("div",{staticClass:"menu-accordion-subpanel"},[i("label",{attrs:{for:"gridColour"}},[e._v("Grid Colour:")]),i("color-picker",{attrs:{id:"gridColour",color:e.gridColour},on:{"update:color":function(t){e.gridColour=t}}}),i("label",{attrs:{for:"fowColour"}},[e._v("FOW Colour:")]),i("color-picker",{attrs:{id:"fowColour",color:e.fowColour},on:{"update:color":function(t){e.fowColour=t}}}),i("label",{attrs:{for:"rulerColour"}},[e._v("Ruler Colour:")]),i("color-picker",{attrs:{id:"rulerColour",color:e.rulerColour},on:{"update:color":function(t){e.rulerColour=t}}})],1)])],2),i("router-link",{staticClass:"menu-accordion",staticStyle:{"text-decoration":"none",display:"inline-block",position:"absolute",bottom:"0"},attrs:{to:"/dashboard"}},[e._v("Exit")])],1):e._e()]),i("transition",{attrs:{name:"locations"},on:{enter:function(t){e.$refs.rm.style.transition="top 500ms"}}},[e.IS_DM&&e.visible.locations?i("div",{attrs:{id:"locations-menu"}},[i("div",[e._l(e.locations,function(t){return i("div",{key:t,on:{click:function(i){return e.changeLocation(t)}}},[e._v(e._s(t))])}),i("div",{on:{click:e.createLocation}},[i("i",{staticClass:"fas fa-plus"})])],2)]):e._e()]),i("img",{attrs:{id:"dragImage"}})],1)},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{attrs:{href:"#"}},[i("i",{staticClass:"far fa-compass"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{attrs:{href:"#"}},[i("i",{staticClass:"fas fa-cog"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{staticClass:"rm-topper"},[i("i",{staticClass:"icon-share-alt"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2686:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.note?i("modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("span",{on:{click:function(t){return e.$refs.title.select()}}},[i("i",{staticClass:"fas fa-pencil-alt",staticStyle:{"font-size":"15px"}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.note.title,expression:"note.title"}],ref:"title",domProps:{value:e.note.title},on:{change:e.updateNote,input:function(t){t.target.composing||e.$set(e.note,"title",t.target.value)}}}),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}],null,!1,1320213373)},[i("div",{staticClass:"modal-body"},[i("textarea",{directives:[{name:"model",rawName:"v-model",value:e.note.text,expression:"note.text"}],ref:"textarea",style:{height:e.calcHeight()},domProps:{value:e.note.text},on:{change:e.updateNote,input:function(t){t.target.composing||e.$set(e.note,"text",t.target.value)}}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.removeNote}},[i("i",{staticClass:"far fa-trash-alt"}),e._v(" Remove\n ")])])]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2756:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("496c")),r=s.__importDefault(i("ea6a")),a=i("4a5b"),l=i("0bc6"),c=i("8f0a"),u=i("6f92"),d=i("b2ed"),h=i("f10f"),f=i("2838"),p=i("92b1"),g=i("5a5c");var v;(function(e){e[e["Noop"]=0]="Noop",e[e["Resize"]=1]="Resize",e[e["Drag"]=2]="Drag",e[e["GroupSelect"]=3]="GroupSelect"})(v=t.SelectOperations||(t.SelectOperations={}));const m=new c.GlobalPoint(-1e3,-1e3);let y=class extends r.default{constructor(){super(...arguments),this.name="Select",this.showContextMenu=!1,this.active=!1,this.mode=v.Noop,this.resizePoint=0,this.deltaChanged=!1,this.dragRay=new c.Ray(new c.LocalPoint(0,0),new c.Vector(0,0)),this.selectionStartPoint=m,this.selectionHelper=new d.Rect(m,0,0)}created(){this.selectionHelper.globalCompositeOperation="source-over"}onMouseDown(e){const t=u.layerManager.getLayer();if(void 0===t)return void console.log("No active layer!");this.selectionHelper.owners.includes(h.gameStore.username)||this.selectionHelper.addOwner(h.gameStore.username);const i=g.getMouse(e),s=p.l2g(i);let n,o=!1;n=t.selection.length?t.shapes.concat(t.selection):t.shapes;for(let r=n.length-1;r>=0;r--){const e=n[r];if(this.resizePoint=e.getPointIndex(s,p.l2gz(3)),this.resizePoint>=0){t.selection=[e],a.getRef("selectionInfo").shape=e,this.mode=v.Resize,t.invalidate(!0),o=!0;break}if(e.contains(s)){const s=e;-1===t.selection.indexOf(s)&&(t.selection=[s],a.getRef("selectionInfo").shape=s),this.mode=v.Drag;const n=p.g2l(s.refPoint);this.dragRay=new c.Ray(n,i.subtract(n)),t.invalidate(!0),o=!0;break}}if(!o){this.mode=v.GroupSelect;for(const e of t.selection)a.getRef("selectionInfo").shape=e;this.selectionStartPoint=s,this.selectionHelper.refPoint=this.selectionStartPoint,this.selectionHelper.w=0,this.selectionHelper.h=0,t.selection=[this.selectionHelper],t.invalidate(!0)}this.active=!0}onMouseMove(e){const t=u.layerManager.getLayer();if(void 0===t)return void console.log("No active layer!");const i=g.getMouse(e),s=p.l2g(i);if(this.deltaChanged=!1,this.mode===v.GroupSelect){const e=s;this.selectionHelper.w=Math.abs(e.x-this.selectionStartPoint.x),this.selectionHelper.h=Math.abs(e.y-this.selectionStartPoint.y),this.selectionHelper.refPoint=new c.GlobalPoint(Math.min(this.selectionStartPoint.x,e.x),Math.min(this.selectionStartPoint.y,e.y)),t.invalidate(!0)}else if(t.selection.length){const n=p.g2l(t.selection[t.selection.length-1].refPoint),o=n.add(this.dragRay.direction);let r=i.subtract(o).multiply(1/h.gameStore.zoomFactor);const a=r;if(this.mode===v.Drag){if("tokens"===t.name&&(!e.shiftKey||!h.gameStore.IS_DM))for(const e of t.selection)e.ownedBy()&&e.uuid!==this.selectionHelper.uuid&&(r=f.calculateDelta(r,e),r!==a&&(this.deltaChanged=!0));for(const e of t.selection)e.ownedBy()&&(e.refPoint=e.refPoint.add(r),e!==this.selectionHelper&&(e.visionObstruction&&h.gameStore.recalculateVision(!0),l.socket.emit("Shape.Update",{shape:e.asDict(),redraw:!0,temporary:!0})));t.invalidate(!1)}else if(this.mode===v.Resize)for(const e of t.selection)e.ownedBy()&&(e.resize(this.resizePoint,i),e!==this.selectionHelper&&(e.visionObstruction&&h.gameStore.recalculateVision(!0),l.socket.emit("Shape.Update",{shape:e.asDict(),redraw:!0,temporary:!0})),t.invalidate(!1),this.updateCursor(t,s));else this.updateCursor(t,s)}else document.body.style.cursor="default"}onMouseUp(e){if(!this.active)return;if(void 0===u.layerManager.getLayer())return void console.log("No active layer!");const t=u.layerManager.getLayer();this.mode===v.GroupSelect?(t.clearSelection(),t.shapes.forEach(e=>{if(!e.ownedBy())return;if(e===this.selectionHelper)return;const i=e.getBoundingBox();e.ownedBy()&&this.selectionHelper.refPoint.x<=i.topRight.x&&this.selectionHelper.refPoint.x+this.selectionHelper.w>=i.topLeft.x&&this.selectionHelper.refPoint.y<=i.botLeft.y&&this.selectionHelper.refPoint.y+this.selectionHelper.h>=i.topLeft.y&&t.selection.push(e)}),t.selection.length>0&&t.selection.push(this.selectionHelper),t.invalidate(!0)):t.selection.length&&t.selection.forEach(i=>{if(i.ownedBy()){if(this.mode===v.Drag){if(this.dragRay.origin.x===p.g2lx(i.refPoint.x)&&this.dragRay.origin.y===p.g2ly(i.refPoint.y))return;!h.gameStore.useGrid||e.altKey||this.deltaChanged||i.snapToGrid(),i!==this.selectionHelper&&(i.visionObstruction&&h.gameStore.recalculateVision(),i.movementObstruction&&h.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:i.asDict(),redraw:!0,temporary:!1})),t.invalidate(!1)}this.mode===v.Resize&&(h.gameStore.useGrid&&!e.altKey&&i.resizeToGrid(),i!==this.selectionHelper&&(i.visionObstruction&&h.gameStore.recalculateVision(),i.movementObstruction&&h.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:i.asDict(),redraw:!0,temporary:!1})),t.invalidate(!1))}}),this.mode=v.Noop,this.active=!1}onContextMenu(e){if(void 0===u.layerManager.getLayer())return void console.log("No active layer!");const t=u.layerManager.getLayer(),i=g.getMouse(e),s=p.l2g(i);for(const n of t.selection)if(n.contains(s)&&n!==this.selectionHelper)return t.selection=[n],a.getRef("selectionInfo").shape=n,t.invalidate(!0),void this.$parent.$refs.shapecontext.open(e,n);this.$refs.selectcontext.open(e)}updateCursor(e,t){for(const i of e.selection){const e=i.getPointIndex(t,p.l2gz(3));if(e<0)document.body.style.cursor="default";else{let t=i.getPointOrientation(e).angle();t<0&&(t+=360);const s=22.5;(t>=315+s||t=135+s&&t<225-s)&&(document.body.style.cursor="ew-resize"),(t>=45+s&&t<135-s||t>=225+s&&t<315-s)&&(document.body.style.cursor="ns-resize"),(t>=s&&t<90-s||t>=180+s&&t<270-s)&&(document.body.style.cursor="nwse-resize"),(t>=90+s&&t<180-s||t>=270+s&&t<360-s)&&(document.body.style.cursor="nesw-resize")}}}};y=s.__decorate([n.default({components:{SelectContext:o.default}})],y),t.default=y},"27ae":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("2f62"),a=s.__importDefault(i("6c7c")),l=s.__importDefault(i("d65f")),c=i("4a5b"),u=i("0bc6"),d=i("af17"),h=i("f10f"),f=i("6f92");let p=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.categories=["Admin","Grid","Vision"],this.selection=0,this.showRefreshState=!1,this.refreshState="pending"}mounted(){d.EventBus.$on("DmSettings.Open",()=>{this.visible=!0}),d.EventBus.$on("DmSettings.RefreshedInviteCode",()=>{this.showRefreshState=!1})}beforeDestroy(){d.EventBus.$off("DmSettings.Open"),d.EventBus.$off("DmSettings.RefreshedInviteCode")}get invitationUrl(){return window.location.protocol+"//"+window.location.host+"/invite/"+h.gameStore.invitationCode}get locked(){return h.gameStore.isLocked}get useGrid(){return h.gameStore.useGrid}set useGrid(e){h.gameStore.setUseGrid({useGrid:e,sync:!0})}get unitSize(){return h.gameStore.unitSize}set unitSize(e){"number"===typeof e&&h.gameStore.setUnitSize({unitSize:e,sync:!0})}get gridSize(){return h.gameStore.gridSize}set gridSize(e){"number"===typeof e&&h.gameStore.setGridSize({gridSize:e,sync:!0})}get fakePlayer(){return h.gameStore.FAKE_PLAYER}set fakePlayer(e){h.gameStore.setFakePlayer(e)}get fullFOW(){return h.gameStore.fullFOW}set fullFOW(e){h.gameStore.setFullFOW({fullFOW:e,sync:!0})}get fowOpacity(){return h.gameStore.fowOpacity}set fowOpacity(e){"number"===typeof e&&h.gameStore.setFOWOpacity({fowOpacity:e,sync:!0})}get fowLOS(){return h.gameStore.fowLOS}set fowLOS(e){h.gameStore.setLineOfSight({fowLOS:e,sync:!0})}get visionRangeMin(){return h.gameStore.visionRangeMin}set visionRangeMin(e){"number"===typeof e&&h.gameStore.setVisionRangeMin({value:e,sync:!0})}get visionRangeMax(){return h.gameStore.visionRangeMax}set visionRangeMax(e){"number"===typeof e&&h.gameStore.setVisionRangeMax({value:e,sync:!0})}changeVisionMode(e){const t=e.target.value.toLowerCase();"bvh"!==t&&"triangle"!==t||(h.gameStore.setVisionMode({mode:t,sync:!0}),h.gameStore.recalculateVision(),h.gameStore.recalculateMovement(),f.layerManager.invalidate())}handleClick(e){const t=e.target.firstElementChild;t instanceof HTMLInputElement&&t.click()}refreshInviteCode(){u.socket.emit("Room.Info.InviteCode.Refresh"),this.refreshState="pending",this.showRefreshState=!0}kickPlayer(e){u.socket.emit("Room.Info.Players.Kick",e),h.gameStore.kickPlayer(e)}toggleSessionLock(){h.gameStore.setIsLocked({isLocked:!h.gameStore.isLocked,sync:!0})}deleteSession(){c.getRef("prompt").prompt(`ENTER ${h.gameStore.roomCreator}/${h.gameStore.roomName} TO CONFIRM SESSION REMOVAL.`,"DELETING SESSION").then(e=>{e===`${h.gameStore.roomCreator}/${h.gameStore.roomName}`&&(u.socket.emit("Room.Delete"),this.$router.push("/"))},()=>{})}};p=s.__decorate([o.default({components:{InputCopyElement:a.default,Modal:l.default},computed:Object.assign({},r.mapState("game",["invitationCode"]))})],p),t.default=p},2838:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("f10f"),r=i("d6be"),a=i("98ef"),l=i("4aee");function c(e,t,i){if(0===e.x&&0===e.y)return e;if("bvh"===o.gameStore.visionMode){void 0===i&&(i=[]);const r=t.getBoundingBox(),a=r.offset(e);let l=!1;for(const t of o.gameStore.movementblockers){if(i.includes(t))continue;const o=n.layerManager.UUIDMap.get(t),c=o.getBoundingBox();let u=c.intersectsWithInner(a);if(!u){const t=s.Ray.fromPoints(r.topLeft.add(e.normalize()),a.topLeft),i=t.direction.inverse(),n=[i.x<0,i.y<0];u=c.intersectP(t,i,n).hit}if(u){const n=c.center(),o=r.center(),a=o.subtract(n),u=new s.Vector(1,0),d=new s.Vector(0,1);let h=a.dot(u),f=a.dot(d);h>c.w/2&&(h=c.w/2),h<-c.w/2&&(h=-c.w/2),f>c.h/2&&(f=c.h/2),f<-c.h/2&&(f=-c.h/2);const p=n.add(u.multiply(h)).add(d.multiply(f));p.x===r.topLeft.x||p.x===r.topRight.x?e=new s.Vector(0,e.y):p.y===r.topLeft.y||p.y===r.botLeft.y?e=new s.Vector(e.x,0):p.xr.topRight.x?e=new s.Vector(p.x-r.topRight.x,e.y):p.yr.botLeft.y&&(e=new s.Vector(e.x,p.y-r.botLeft.y)),l=!0,i.push(t);break}}return l&&(e=c(e,t,i)),e}{const i=r.PA_CDT.movement.locate(t.center().asArray(),null).loc;for(const s of t.points){const t=r.PA_CDT.movement.locate(s,i),n=t.loc;null!==n&&(e=u(s,n,e))}return e}}function u(e,t,i,n=[]){const o=new s.GlobalPoint(e[0],e[1]),r=o.add(i).asArray();if(t.contains(r))return i;n.push(t);for(let c=0;c<3;c++){if(n.includes(t.neighbours[c]))continue;const d=t.vertices[l.cw(c)].point,h=t.vertices[l.ccw(c)].point,f=l.intersection(e,r,d,h);if(null===f)continue;if(!t.isConstrained(c))return u(e,t.neighbours[c],i,n);if(f[0]===o.x&&f[1]===o.y){l.orientation;const t=l.orientation(e,r,h);if(t===a.Sign.LEFT_TURN)continue;if(t===a.Sign.ZERO)continue}let p=new s.GlobalPoint(f[0],f[1]).subtract(o).multiply(.8);p.length()<1&&(p=new s.Vector(0,0)),p.length()!["__files"].includes(e)).sort(a.alphSort)}get files(){return this.asset.__files?this.asset.__files.concat().sort((e,t)=>e.name.toLowerCase()>t.name.toLowerCase()?1:-1):[]}toggle(e){for(let t=0;tthis.$children[0].$el.focus())}close(){this.visible=!1,this.shape=null}getLayers(){return c.layerManager.layers.filter(e=>e.selectable&&(u.gameStore.IS_DM||e.playerEditable))}getActiveLayer(){return c.layerManager.getLayer()}getInitiativeWord(){return null===this.shape?"":a.getRef("initiative").contains(this.shape.uuid)?"Show":"Add"}setLayer(e){null!==this.shape&&(this.shape.moveLayer(e,!0),this.close())}moveToBack(){if(null===this.shape)return;const e=this.getActiveLayer();e.moveShapeOrder(this.shape,0,!0),this.close()}moveToFront(){if(null===this.shape)return;const e=this.getActiveLayer();e.moveShapeOrder(this.shape,e.shapes.length-1,!0),this.close()}addInitiative(){if(null===this.shape)return;const e=a.getRef("initiative");e.contains(this.shape.uuid)||e.addInitiative(this.shape.getInitiativeRepr()),e.visible=!0,this.close()}openEditDialog(){l.EventBus.$emit("EditDialog.Open",this.shape),this.close()}};d=s.__decorate([o.default({components:{ContextMenu:r.default}})],d),t.default=d},"314d":function(e,t,i){"use strict";var s=i("4fce"),n=i.n(s);n.a},3411:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("60a3");let a=class extends n.default{constructor(){super(...arguments),this.borderColour="lightgray",this.popupString="",this.showPopup=!1}copy(){navigator.clipboard.writeText(this.value).then(()=>{this.popupString="Copied!",this.showPopup=!0},()=>{console.log("Could not copy to clipboard :("),this.popupString="Error!",this.showPopup=!0})}};s.__decorate([r.Prop()],a.prototype,"value",void 0),a=s.__decorate([o.default],a),t.default=a},3481:function(e,t,i){"use strict";i.r(t);var s=i("47e6"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},3752:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContextMenu",{attrs:{visible:e.visible,left:e.left+"px",top:e.top+"px"},on:{close:e.close}},[i("li",{on:{click:e.rename}},[e._v("Rename")]),i("li",{on:{click:e.remove}},[e._v("Remove")])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"38c9":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("bab4"),n=i("f10f");class o extends s.Layer{invalidate(){this.valid=!1}draw(e){this.valid||this.drawGrid()}drawGrid(){const e=this.ctx;this.clear(),e.beginPath();const t=n.gameStore.gridSize;for(let i=0;ir.layerManager.UUIDMap.get(e))}toggle(e){this.selection.includes(e)?a.gameStore.removeActiveToken(e):a.gameStore.addActiveToken(e)}};l=s.__decorate([n.default],l),t.default=l},"3cd3":function(e,t,i){"use strict";var s=i("b0c0"),n=i.n(s);n.a},"3dfd":function(e,t,i){"use strict";i.r(t);var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"app"}},[i("router-view",{ref:"activeComponent"})],1)},n=[],o=(i("034f"),i("2877")),r={},a=Object(o["a"])(r,s,n,!1,null,null,null);t["default"]=a.exports},4185:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("bab4"),o=i("6f92"),r=i("d1ec"),a=i("4709"),l=i("f10f"),c=i("92b1"),u=i("5a5c"),d=i("cee3");class h extends n.Layer{constructor(e,t){super(e,t),this.isVisionLayer=!0,this.preFogShapes=[],this.virtualCanvas=document.createElement("canvas"),this.virtualCanvas.width=window.innerWidth,this.virtualCanvas.height=window.innerHeight,this.vCtx=this.virtualCanvas.getContext("2d")}addShape(e,t,i,s=!0){super.addShape(e,t,i,s),e.options.has("preFogShape")&&e.options.get("preFogShape")&&this.preFogShapes.push(e)}removeShape(e,t,i){if(e.options.has("preFogShape")&&e.options.get("preFogShape")){const t=this.preFogShapes.findIndex(t=>t.uuid===e.uuid);this.preFogShapes.splice(t,1)}super.removeShape(e,t,i)}draw(){if(!this.valid){const e=this.ctx;if(r.Settings.skipLightFOW)return e.clearRect(0,0,this.canvas.width,this.canvas.height),void(this.valid=!0);const t=e.globalCompositeOperation;e.clearRect(0,0,this.canvas.width,this.canvas.height),e.fillStyle="rgba(0, 0, 0, 1)";const i=o.layerManager.getLayer("draw").ctx;(r.Settings.drawAngleLines||r.Settings.drawFirstLightHit)&&i.clearRect(0,0,i.canvas.width,i.canvas.height),l.gameStore.fullFOW&&o.layerManager.hasLayer("tokens")&&o.layerManager.getLayer("tokens").shapes.forEach(t=>{if(!t.ownedBy()||!t.isToken)return;const i=t.getBoundingBox(),s=c.g2l(t.center()),n=.8*c.g2lz(i.w);e.beginPath(),e.arc(s.x,s.y,n,0,2*Math.PI);const o=e.createRadialGradient(s.x,s.y,n/2,s.x,s.y,n);o.addColorStop(0,"rgba(0, 0, 0, 1)"),o.addColorStop(1,"rgba(0, 0, 0, 0)"),e.fillStyle=o,e.fill()}),this.vCtx.clearRect(0,0,window.innerWidth,window.innerHeight);for(const n of l.gameStore.visionSources){const t=o.layerManager.UUIDMap.get(n.shape);if(void 0===t)continue;const u=t.auras.find(e=>e.uuid===n.aura);if(void 0===u)continue;const h=c.getUnitDistance(u.value+u.dim),f=t.center(),p=c.g2l(f),g=new a.Circle(f,h);if(g.visibleInCanvas(e.canvas))if("bvh"===l.gameStore.visionMode){let t=-1;const n=new Path2D;let o;n.moveTo(p.x,p.y);for(let a=0;a<2*Math.PI;a+=r.Settings.angleSteps/180*Math.PI){const d=new s.GlobalPoint(f.x+h*Math.cos(a),f.y+h*Math.sin(a));r.Settings.drawAngleLines&&(i.beginPath(),i.moveTo(c.g2lx(f.x),c.g2ly(f.y)),i.lineTo(c.g2lx(d.x),c.g2ly(d.y)),i.stroke());const g=s.Ray.fromPoints(f,d),v=l.gameStore.BV.intersect(g);if(0===a&&(o=v.hit?v.intersect:d),v.hit)-1!==t&&(n.arc(p.x,p.y,c.g2lr(u.value+u.dim),t,a),t=-1),n.lineTo(c.g2lx(v.intersect.x),c.g2ly(v.intersect.y));else if(-1===t){t=a;const i=c.g2l(d);e.lineTo(i.x,i.y)}}if(-1===t?n.lineTo(c.g2lx(o.x),c.g2ly(o.y)):n.arc(p.x,p.y,c.g2lr(u.value+u.dim),t,2*Math.PI),l.gameStore.fullFOW){if(u.dim>0){const t=e.createRadialGradient(p.x,p.y,c.g2lr(u.value),p.x,p.y,c.g2lr(u.value+u.dim));t.addColorStop(0,"rgba(0, 0, 0, 1)"),t.addColorStop(1,"rgba(0, 0, 0, 0)"),e.fillStyle=t}else e.fillStyle="rgba(0, 0, 0, 1)";e.fill(n)}u.lastPath=n}else{this.vCtx.globalCompositeOperation="source-over",this.vCtx.fillStyle="rgba(0, 0, 0, 1)";const t=d.computeVisibility(f,"vision");this.vCtx.beginPath(),this.vCtx.moveTo(c.g2lx(t[0][0]),c.g2ly(t[0][1]));for(const e of t)this.vCtx.lineTo(c.g2lx(e[0]),c.g2ly(e[1]));if(this.vCtx.closePath(),this.vCtx.fill(),u.dim>0){const e=this.vCtx.createRadialGradient(p.x,p.y,c.g2lr(u.value),p.x,p.y,c.g2lr(u.value+u.dim));e.addColorStop(0,"rgba(0, 0, 0, 1)"),e.addColorStop(1,"rgba(0, 0, 0, 0)"),this.vCtx.fillStyle=e}else this.vCtx.fillStyle="rgba(0, 0, 0, 1)";this.vCtx.globalCompositeOperation="source-in",this.vCtx.beginPath(),this.vCtx.arc(p.x,p.y,c.g2lr(u.value+u.dim),0,2*Math.PI),this.vCtx.fill(),e.drawImage(this.virtualCanvas,0,0)}}l.gameStore.fowLOS&&(e.globalCompositeOperation="source-in",e.drawImage(o.layerManager.getLayer("fow-players").canvas,0,0));for(const s of this.preFogShapes){if(!s.visibleInCanvas(this.canvas))continue;const t=s.globalCompositeOperation;l.gameStore.fullFOW||("source-over"===s.globalCompositeOperation?s.globalCompositeOperation="destination-out":"destination-out"===s.globalCompositeOperation&&(s.globalCompositeOperation="source-over")),s.draw(e),s.globalCompositeOperation=t}l.gameStore.fullFOW&&(e.globalCompositeOperation="source-out",e.fillStyle=u.getFogColour(),e.fillRect(0,0,e.canvas.width,e.canvas.height)),super.draw(!1),e.globalCompositeOperation=t}}}t.FOWLayer=h},4486:function(e,t,i){"use strict";i.r(t);var s=i("a097"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"45fb":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Edit asset")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("div",{staticClass:"grid"},[i("label",{attrs:{for:"shapeselectiondialog-name"}},[e._v("Name")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.shape.name,expression:"shape.name"}],staticStyle:{"grid-column":"numerator / remove"},attrs:{type:"text",id:"shapeselectiondialog-name",disabled:!e.owned},domProps:{value:e.shape.name},on:{change:function(t){return e.updateShape(!1)},input:function(t){t.target.composing||e.$set(e.shape,"name",t.target.value)}}}),i("div",{style:{opacity:e.shape.nameVisible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(t){e.shape.nameVisible=!e.shape.nameVisible,e.updateShape(!1)}}},[i("i",{staticClass:"fas fa-eye"})]),i("label",{attrs:{for:"shapeselectiondialog-istoken"}},[e._v("Is a token")]),i("input",{staticClass:"styled-checkbox",staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-istoken",disabled:!e.owned},domProps:{checked:e.shape.isToken},on:{click:e.setToken}}),i("label",{attrs:{for:"shapeselectiondialog-visionblocker"}},[e._v("Blocks vision/light")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.shape.visionObstruction,expression:"shape.visionObstruction"}],staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-visionblocker",disabled:!e.owned},domProps:{checked:Array.isArray(e.shape.visionObstruction)?e._i(e.shape.visionObstruction,null)>-1:e.shape.visionObstruction},on:{change:[function(t){var i=e.shape.visionObstruction,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&e.$set(e.shape,"visionObstruction",i.concat([o])):r>-1&&e.$set(e.shape,"visionObstruction",i.slice(0,r).concat(i.slice(r+1)))}else e.$set(e.shape,"visionObstruction",n)},e.setVisionBlocker]}}),i("label",{attrs:{for:"shapeselectiondialog-moveblocker"}},[e._v("Blocks movement")]),i("input",{staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-moveblocker",disabled:!e.owned},domProps:{checked:e.shape.movementObstruction},on:{click:e.setMovementBlocker}}),i("label",{attrs:{for:"shapeselectiondialog-strokecolour"}},[e._v("Border colour")]),i("color-picker",{staticStyle:{"grid-column-start":"remove"},attrs:{color:e.shape.strokeColour,disabled:!e.owned},on:{"update:color":function(t){return e.$set(e.shape,"strokeColour",t)},input:function(t){return e.updateShape(!0,!0)},change:function(t){return e.updateShape(!0)}}}),i("label",{attrs:{for:"shapeselectiondialog-fillcolour"}},[e._v("Fill colour")]),i("color-picker",{staticStyle:{"grid-column-start":"remove"},attrs:{color:e.shape.fillColour,disabled:!e.owned},on:{"update:color":function(t){return e.$set(e.shape,"fillColour",t)},input:function(t){return e.updateShape(!0,!0)},change:function(t){return e.updateShape(!0)}}}),i("div",{staticClass:"spanrow header"},[e._v("Access")]),e._l(e.shape.owners,function(t){return[i("input",{key:t,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t},on:{change:function(i){return e.updateOwner(i,t)}}}),""!==t?i("div",{key:"remove-"+t,style:{opacity:e.owned?1:.3,textAlign:"center",gridColumnStart:"remove"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeOwner(t)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Trackers")]),e._l(e.shape.trackers,function(t){return[i("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"tracker.name"}],key:"name-"+t.uuid,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t.name},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"name",i.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.value,expression:"tracker.value",modifiers:{number:!0}}],key:"value-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.value},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"value",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"fspan-"+t.uuid},[e._v("/")]),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.maxvalue,expression:"tracker.maxvalue",modifiers:{number:!0}}],key:"maxvalue-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.maxvalue},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"maxvalue",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"sspan-"+t.uuid}),i("div",{key:"visibility-"+t.uuid,style:{opacity:t.visible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){t.visible=!t.visible,e.updateShape(!1)}}},[i("i",{staticClass:"fas fa-eye"})]),i("span",{key:"tspan-"+t.uuid}),""!==t.name||0!==t.value?i("div",{key:"remove-"+t.uuid,style:{opacity:e.owned?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeTracker(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Auras")]),e._l(e.shape.auras,function(t){return[i("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"aura.name"}],key:"name-"+t.uuid,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t.name},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"name",i.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.value,expression:"aura.value",modifiers:{number:!0}}],key:"value-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.value},on:{change:function(t){return e.updateShape(!0)},input:function(i){i.target.composing||e.$set(t,"value",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"fspan-"+t.uuid},[e._v("/")]),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.dim,expression:"aura.dim",modifiers:{number:!0}}],key:"dimvalue-"+t.uuid,attrs:{type:"text",title:"Dim value",disabled:!e.owned},domProps:{value:t.dim},on:{change:function(t){return e.updateShape(!0)},input:function(i){i.target.composing||e.$set(t,"dim",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("color-picker",{key:"colour-"+t.uuid,attrs:{color:t.colour,disabled:!e.owned},on:{"update:color":function(i){return e.$set(t,"colour",i)},input:function(i){return e.updateAuraColour(t,i)},change:function(t){return e.updateShape(!0)}}}),i("div",{key:"visibility-"+t.uuid,style:{opacity:t.visible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){t.visible=!t.visible,e.updateShape(!0)}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{key:"visionsource-"+t.uuid,style:{opacity:t.visionSource?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.updateAuraVisionSource(t)}}},[i("i",{staticClass:"fas fa-lightbulb"})]),""!==t.name||0!==t.value?i("div",{key:"remove-"+t.uuid,style:{opacity:e.owned?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeAura(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Labels")]),i("div",{staticClass:"spanrow",attrs:{id:"labels"}},[e._l(e.shape.labels,function(t){return i("div",{key:t.uuid,staticClass:"label"},[t.category?[i("div",{staticClass:"label-user"},[e._v(e._s(t.category))]),i("div",{staticClass:"label-main",on:{click:function(i){return e.removeLabel(t.uuid)}}},[e._v(e._s(t.name))])]:e._e(),t.category?e._e():[i("div",{staticClass:"label-main",on:{click:function(i){return e.removeLabel(t.uuid)}}},[e._v(e._s(t.name))])]],2)}),e.owned?i("div",{staticClass:"label",attrs:{id:"label-add"}},[i("div",{staticClass:"label-main",on:{click:e.openLabelManager}},[e._v("+")])]):e._e()],2),i("div",{staticClass:"spanrow header"},[e._v("Annotation")]),i("textarea",{staticClass:"spanrow",attrs:{disabled:!e.owned},domProps:{value:e.shape.annotation},on:{change:e.updateAnnotation}})],2)])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},4709:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("f10f"),a=i("2838"),l=i("92b1"),c=i("5a5c");class u extends o.Shape{constructor(e,t,i,s,n){super(e,i,s,n),this.type="circle",this.r=t||1}asDict(){return Object.assign(this.getBaseDict(),{radius:this.r})}fromDict(e){super.fromDict(e),this.r=e.radius}getBoundingBox(){return new n.BoundingRect(new s.GlobalPoint(this.refPoint.x-this.r,this.refPoint.y-this.r),2*this.r,2*this.r)}get points(){return this.getBoundingBox().points}draw(e){super.draw(e),e.beginPath(),"fog"===this.fillColour?e.fillStyle=c.getFogColour():e.fillStyle=this.fillColour;const t=l.g2l(this.refPoint);e.arc(t.x,t.y,l.g2lz(this.r),0,2*Math.PI),e.fill(),"rgba(0, 0, 0, 0)"!==this.strokeColour&&(e.beginPath(),e.lineWidth=l.g2lz(5),e.strokeStyle=this.strokeColour,e.arc(t.x,t.y,l.g2lz(this.r),0,2*Math.PI),e.stroke())}contains(e){return Math.pow(e.x-this.refPoint.x,2)+Math.pow(e.y-this.refPoint.y,2){const t=16*Math.random()|0,i="x"===e?t:3&t|8;return i.toString(16)})}function o(e){return e.charAt(0).toUpperCase()+e.slice(1)}function r(e,t){return e.toLowerCase()t(e)?i[1].push(e):i[0].push(e)),i}function u(e,t,i,s){const n=.2*Number(e.font.split("px")[0]),o=e.measureText(t).width;return Math.min(i/o,s/n)}function d(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>{return"%"+e.charCodeAt(0).toString(16)})}t.uuidv4=n,t.capitalize=o,t.alphSort=r,t.getHTMLFont=a,t.getHTMLTextWidth=l,t.partition=c,t.calcFontScale=u,t.fixedEncodeURIComponent=d;class h{constructor(){this.keys=[],this.values=[]}get length(){return this.keys.length}get(e){return this.values[this.keys.indexOf(e)]}getIndexValue(e){return this.values[e]}getIndexKey(e){return this.keys[e]}set(e,t){this.keys.push(e),this.values.push(t)}has(e){return this.indexOf(e)>=0}indexOf(e){return this.keys.indexOf(e)}remove(e){const t=this.indexOf(e);this.keys.splice(t,1),this.values.splice(t,1)}}function f(){return s.app.$children[0].$refs.activeComponent}function p(e){const t=s.app.$children[0].$refs.activeComponent;return t.$refs[e]}t.OrderedMap=h,t.getComponent=f,t.getRef=p},"4aec":function(e,t,i){"use strict";i.r(t);var s=i("3752"),n=i("f51a");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},"4aee":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("98ef");function n(e){return(e+2)%3}function o(e){return(e+1)%3}function r(e,t){const i=new s.EdgeCirculator(e,null);if(i.valid)do{const n=3-i.t.indexV(e)-i.ri,o=i.t.vertices[n];if(!o.infinite){if(o===t)return{includes:!0,vi:t,fr:i.t,i:i.ri};{const n=c(e.point,t.point,o.point);if(n===s.Sign.COLLINEAR&&a(e.point,o.point,t.point))return{includes:!0,vi:o,fr:i.t,i:i.ri}}}}while(i.next());return{includes:!1}}function a(e,t,i){let n,o;return l(0,e,i)===s.Sign.EQUAL?(n=l(1,e,t),o=l(1,t,i)):(n=l(0,e,t),o=l(0,t,i)),n===s.Sign.SMALLER&&o===s.Sign.SMALLER||n===s.Sign.LARGER&&o===s.Sign.LARGER}function l(e,t,i){return t[e]i[e]?s.Sign.LARGER:s.Sign.EQUAL}function c(e,t,i){const n=e[0],o=e[1],r=t[0],a=t[1],l=i[0],c=i[1],d=r-n,h=a-o,f=l-n,p=c-o,g=u(d,h,f,p);let v=Math.abs(d),m=Math.abs(h);const y=Math.abs(f),b=Math.abs(p);if(vm&&([v,m]=[m,v]),v<2e-162&&0===v)return s.Sign.ZERO;if(m<1e153){const e=Number.EPSILON*v*m;if(g>e)return s.Sign.POSITIVE;if(g<-e)return s.Sign.NEGATIVE}return s.Sign.ZERO}function u(e,t,i,s){return e*s-t*i}function d(e,t,i){return u(t[0]-e[0],t[1]-e[1],i[0]-e[0],i[1]-e[1])<0}function h(e,t,i){if(!e.isInfinite())return f(e.vertices[0].point,e.vertices[1].point,e.vertices[2].point,t,i);throw new Error("SSS")}function f(e,t,i,n,o){const r=m(e,t,i,n);if(r!==s.Sign.ON_ORIENTED_BOUNDARY||!o)return r;const a=[e,t,i,n];a.sort((e,t)=>e[0]-t[0]||e[1]-t[1]);for(const l of a.reverse()){if(l===n)return s.Sign.ON_NEGATIVE_SIDE;let o=c(e,t,n);if(l===i&&o!==s.Sign.COLLINEAR)return o;if(o=c(e,n,i),l===t&&o!==s.Sign.COLLINEAR)return o;if(o=c(n,t,i),l===e&&o!==s.Sign.COLLINEAR)return o}return s.Sign.ON_NEGATIVE_SIDE}function p(e,t){return e[0]===t[0]&&e[1]===t[1]}function g(e,t){return e[0]y&&([m,y]=[y,m]),m<1e-73&&0===m)return s.Sign.ON_ORIENTED_BOUNDARY;if(y<1e76){const e=Number.EPSILON*m*y*(y*y);if(v>e)return s.Sign.ON_POSITIVE_SIDE;if(v<-e)return s.Sign.ON_NEGATIVE_SIDE}return s.Sign.ZERO}function y(e,t,i,n){switch(c(e,t,i)){case s.Sign.LEFT_TURN:return c(i,n,t)!==s.Sign.RIGHT_TURN;case s.Sign.RIGHT_TURN:return c(i,n,t)!==s.Sign.LEFT_TURN;case s.Sign.COLLINEAR:return!0}}function b(e,t,i,n){switch(c(e,t,i)){case s.Sign.LEFT_TURN:return c(e,t,n)!==s.Sign.LEFT_TURN;case s.Sign.RIGHT_TURN:return c(e,t,n)!==s.Sign.RIGHT_TURN;case s.Sign.COLLINEAR:return!0}}function _(e,t,i,s){const n=x(e,t,i,s);switch(n.intersectionType){case w.POINT:return n.point;case w.NO_INTERSECTION:return null}throw new Error("sdfgighowen")}var w;function S(e,t){if(e[0]===t[0])return[1,0,-e[0]];if(e[1]===t[1])return[0,1,-e[1]];const i=t[0]-e[0],s=t[1]-e[1];return[-s,i,-i*e[1]+s*e[0]]}function x(e,t,i,s){if(!M(e,t,i,s))return{intersectionType:w.NO_INTERSECTION,point:null};const n=S(e,t),o=S(i,s),r=C(n,o);switch(r.intersectionType){case w.POINT:return r}throw new Error("gzseuihgpib")}function C(e,t){const i=e[0]*t[1]-t[0]*e[1],s=e[1]*t[2]-t[1]*e[2],n=t[0]*e[2]-e[0]*t[2];return{intersectionType:w.POINT,point:[s/i,n/i]}}function M(e,t,i,n){if(g(e,t)){if(g(i,n)){if(g(t,i)||g(n,e))return!1}else if(g(t,n)||g(i,e))return!1}else if(g(i,n)){if(g(e,i)||g(n,t))return!1}else if(g(e,n)||g(i,t))return!1;if(g(e,t))if(g(i,n))switch(v(e,i)){case s.Sign.SMALLER:switch(v(t,i)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(t,n)){case s.Sign.SMALLER:return y(e,t,i,n);case s.Sign.EQUAL:return!0;default:return b(e,t,i,n)}}case s.Sign.EQUAL:return!0;default:switch(v(n,e)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(n,t)){case s.Sign.SMALLER:return y(i,n,e,t);case s.Sign.EQUAL:return!0;default:return b(i,n,e,t)}}}else switch(v(e,n)){case s.Sign.SMALLER:switch(v(t,n)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(t,i)){case s.Sign.SMALLER:return y(e,t,n,i);case s.Sign.EQUAL:return!0;default:return b(e,t,n,i)}}case s.Sign.EQUAL:return!0;default:switch(v(i,e)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(i,t)){case s.Sign.SMALLER:return y(n,i,e,t);case s.Sign.EQUAL:return!0;default:return b(n,i,e,t)}}}else if(g(i,n))switch(v(t,i)){case s.Sign.SMALLER:switch(v(e,i)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(e,n)){case s.Sign.SMALLER:return y(t,e,i,n);case s.Sign.EQUAL:return!0;default:return b(t,e,i,n)}}case s.Sign.EQUAL:return!0;default:switch(v(n,t)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(n,e)){case s.Sign.SMALLER:return y(i,n,t,e);case s.Sign.EQUAL:return!0;default:return b(i,n,t,e)}}}else switch(v(t,n)){case s.Sign.SMALLER:switch(v(e,n)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(e,i)){case s.Sign.SMALLER:return y(t,e,n,i);case s.Sign.EQUAL:return!0;default:return b(t,e,n,i)}}case s.Sign.EQUAL:return!0;default:switch(v(i,t)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(i,e)){case s.Sign.SMALLER:return y(n,i,t,e);case s.Sign.EQUAL:return!0;default:return b(n,i,t,e)}}}}function k(e){if(e!==e)return e;if(e===-1/0)return-Number.MAX_VALUE;if(e===1/0)return 1/0;if(e===+Number.MAX_VALUE)return 1/0;let t=e*(e<0?1-Number.EPSILON/2:1+Number.EPSILON);t===e&&(t=Number.MIN_VALUE*Number.EPSILON>0?e+Number.MIN_VALUE*Number.EPSILON:e+Number.MIN_VALUE),t===1/0&&(t=+Number.MAX_VALUE);const i=e+(t-e)/2;ewindow.innerWidth-100&&(t=window.innerWidth-100),i<0&&(i=0),i>window.innerHeight-100&&(i=window.innerHeight-100),this.$refs.container.style.left=t+"px",this.$refs.container.style.top=i+"px",this.$refs.container.style.display="block"}dragOver(e){this.dragging&&(this.$refs.container.style.display="none")}};s.__decorate([r.Prop(Boolean)],a.prototype,"visible",void 0),s.__decorate([r.Prop({type:Boolean,default:!0})],a.prototype,"mask",void 0),s.__decorate([r.Prop({type:String,default:"white"})],a.prototype,"colour",void 0),a=s.__decorate([o.default],a),t.default=a},5338:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("8055")),o=i("2d5b");t.socket=n.default(location.protocol+"//"+location.host+"/pa_assetmgmt",{autoConnect:!1}),t.socket.on("connect",()=>{console.log("Connected")}),t.socket.on("disconnect",()=>{console.log("Disconnected")}),t.socket.on("redirect",e=>{console.log("redirecting"),window.location.href=e}),t.socket.on("Folder.Root.Set",e=>{o.assetStore.setRoot(e)}),t.socket.on("Folder.Set",e=>{if(o.assetStore.clear(),e.children)for(const t of e.children)o.assetStore.idMap.set(t.id,t),t.file_hash?o.assetStore.files.push(t.id):o.assetStore.folders.push(t.id)}),t.socket.on("Folder.Create",e=>{o.assetStore.folders.push(e.id),o.assetStore.idMap.set(e.id,e)}),t.socket.on("Asset.Upload.Finish",e=>{o.assetStore.idMap.set(e.id,e),o.assetStore.files.push(e.id)})},5394:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("1289")),r=s.__importDefault(i("ea6a")),a=i("0bc6"),l=i("6f92"),c=i("f10f");let u=class extends r.default{constructor(){super(...arguments),this.name="Filter",this.active=!1}get labels(){const e={"":[]};for(const t of Object.keys(c.gameStore.labels)){const i=c.gameStore.labels[t];i.category?(i.category in e||(e[i.category]=[]),e[i.category].push([i.uuid,i.name]),e[i.category].sort((e,t)=>e[1].localeCompare(t[1]))):e[""].push([i.uuid,i.name])}return e}get initalValues(){const e={};for(const t of Object.keys(this.labels))e[t]=c.gameStore.labelFilters.filter(e=>this.labels[t].map(e=>e[0]).includes(e));return e}get categories(){return Object.keys(this.labels).sort()}isFilter(e){return c.gameStore.labelFilters.includes(e)}toggleFilter(e){const t=c.gameStore.labelFilters.indexOf(e);t>=0?c.gameStore.labelFilters.splice(t,1):c.gameStore.labelFilters.push(e),l.layerManager.invalidate()}toggleUnlabeled(){c.gameStore.toggleUnlabeledFilter(),l.layerManager.invalidate()}updateSelection(e){if(e.title in this.labels){for(const[t,i]of this.labels[e.title]){const i=c.gameStore.labelFilters.indexOf(t),s=e.selection.includes(t);i>=0&&!s?(c.gameStore.labelFilters.splice(i,1),a.socket.emit("Labels.Filter.Remove",t)):i<0&&s&&(c.gameStore.labelFilters.push(t),a.socket.emit("Labels.Filter.Add",t))}l.layerManager.invalidate()}}};u=s.__decorate([n.default({components:{accordion:o.default}})],u),t.default=u},"53ec":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("60a3");let a=class extends n.default{constructor(){super(...arguments),this.selected=[],this.active=!1}mounted(){this.selected=this.initialValues,this.updateCategory()}toggleDisplay(e){this.active=!this.active}toggleCategory(){const e=this.$refs.overall;e.checked?this.selected=this.items.map(e=>e[0]):this.selected=[],this.$emit("selectionupdate",{title:this.title,selection:this.selected})}updateCategory(){const e=this.$refs.overall;0===this.selected.length?(e.checked=!1,e.indeterminate=!1):this.selected.length===this.items.length?(e.checked=!0,e.indeterminate=!1):(e.checked=!1,e.indeterminate=!0)}toggleSelection(e){const t=this.selected.indexOf(e);-1===t?this.selected.push(e):this.selected.splice(t,1),this.updateCategory(),this.$emit("selectionupdate",{title:this.title,selection:this.selected})}};s.__decorate([r.Prop(String)],a.prototype,"title",void 0),s.__decorate([r.Prop({default:!0,type:Boolean})],a.prototype,"showArrow",void 0),s.__decorate([r.Prop({default:()=>[]})],a.prototype,"items",void 0),s.__decorate([r.Prop({default:()=>[]})],a.prototype,"initialValues",void 0),a=s.__decorate([o.default],a),t.default=a},5459:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},e._l(e.tokens,function(t){return i("div",{key:t.uuid,staticClass:"token",class:{selected:e.selection.includes(t.uuid)},on:{click:function(i){return e.toggle(t.uuid)}}},[t.src?i("img",{attrs:{src:t.src,width:"30px",height:"30px"}}):e._e(),i("div",[e._v(e._s(t.name))])])}),0):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"54fb":function(e,t,i){"use strict";var s=i("c106"),n=i.n(s);n.a},"561b":function(e,t,i){"use strict";var s=i("a450"),n=i.n(s);n.a},"574e":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("92b1"),a=i("5a5c");class l extends o.Shape{constructor(e,t,i,s,n){super(e,"rgba(0, 0, 0, 0)",s||"#000",n),this.type="multiline",this._points=[],this._points=t||[],this.lineWidth=i||3}get refPoint(){return this._refPoint}set refPoint(e){const t=e.subtract(this._refPoint);this._refPoint=e;for(let i=0;i({x:e.x,y:e.y}))})}fromDict(e){super.fromDict(e),this._points=e.points.map(e=>new s.GlobalPoint(e.x,e.y))}get points(){return this._points.map(e=>[e.x,e.y])}getBoundingBox(){let e=this.refPoint.x,t=this.refPoint.x,i=this.refPoint.y,o=this.refPoint.y;for(const s of this._points)s.xt&&(t=s.x),s.yo&&(o=s.y);return new n.BoundingRect(new s.GlobalPoint(e,i),t-e,o-i)}draw(e){super.draw(e),e.beginPath(),e.lineCap="round",e.lineJoin="round",e.moveTo(r.g2lx(this.refPoint.x),r.g2ly(this.refPoint.y));for(const t of this._points)e.lineTo(r.g2lx(t.x),r.g2ly(t.y));"fog"===this.strokeColour?e.strokeStyle=a.getFogColour():e.strokeStyle=this.strokeColour,e.lineWidth=r.g2lz(this.lineWidth),e.stroke()}contains(e){return this.getBoundingBox().contains(e)}center(e){return this.getBoundingBox().center()}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this._refPoint=r.l2g(t):this._points[e-1]=r.l2g(t)}}t.MultiLine=l},"59d8":function(e,t,i){"use strict";i.r(t);var s=i("e5ca"),n=i("6f8d");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("a7b3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"639cd890",null);t["default"]=a.exports},"5a5c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=i("8f0a"),r=i("f10f");function a(e){return new o.LocalPoint(e.pageX,e.pageY)}function l(e=!1){const t=n.default(r.gameStore.fowColour);return r.gameStore.IS_DM?t.setAlpha(e?1:r.gameStore.fowOpacity):t.setAlpha(1),t.toRgbString()}function c(e){return 1/(-5/3+28/15*Math.exp(1.83*e))}function u(e){return Math.log(15/28*(1/e+5/3))/1.83}t.getMouse=a,t.getFogColour=l,t.zoomValue=c,t.zoomDisplay=u},"5a81":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importStar(i("66cb")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("2f62"),l=s.__importDefault(i("3b36")),c=s.__importDefault(i("d65f")),u=i("4a5b"),d=i("8f0a"),h=i("6f92"),f=i("1327"),p=i("f10f"),g=i("92b1"),v=i("60a3");let m=class extends o.default{constructor(){super(...arguments),this.x=0,this.y=0,this.visible=!1,this.text="X",this.fillColour="rgba(255, 255, 255, 1)",this.borderColour="rgba(0, 0, 0, 1)"}mounted(){this.updatePreview()}onTextChange(e,t){this.updatePreview()}onFillChange(e,t){this.updatePreview()}onBorderChange(e,t){this.updatePreview()}open(e,t){this.visible=!0,this.x=e,this.y=t}submit(){const e=h.layerManager.getLayer();if(void 0===e)return;const t=new f.CircularToken(g.l2g(new d.LocalPoint(this.x,this.y)),g.getUnitDistance(p.gameStore.unitSize/2),this.text,"10px serif",this.fillColour,this.borderColour);t.addOwner(p.gameStore.username),e.addShape(t,!0),e.invalidate(!1),this.visible=!1}updatePreview(){const e=this.$refs.canvas.getContext("2d");e.clearRect(0,0,e.canvas.width,e.canvas.height),e.beginPath();const t={x:e.canvas.width/2,y:e.canvas.height/2},i=.9*Math.min(t.x,t.y);e.fillStyle=this.fillColour,e.arc(t.x,t.y,i,0,2*Math.PI),e.fill(),"rgba(0, 0, 0, 0)"!==this.borderColour&&(e.beginPath(),e.lineWidth=5,e.strokeStyle=this.borderColour,e.arc(t.x,t.y,i,0,2*Math.PI),e.stroke()),e.save(),e.textAlign="center",e.textBaseline="middle";const s=u.calcFontScale(e,this.text,i,i),o=0;e.transform(s,o,-o,s,t.x,t.y),e.fillStyle=n.mostReadable(this.fillColour,["#000","#fff"]).toHexString(),e.fillText(this.text,0,0),e.restore()}};s.__decorate([v.Watch("text")],m.prototype,"onTextChange",null),s.__decorate([v.Watch("fillColour")],m.prototype,"onFillChange",null),s.__decorate([v.Watch("borderColour")],m.prototype,"onBorderChange",null),m=s.__decorate([r.default({components:{Modal:c.default,"color-picker":l.default},computed:Object.assign({},a.mapState("game",["unitSize"]))})],m),t.default=m},"5ae5":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f")),a=i("4a5b"),l=i("f10f");let c=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.note=null}open(e){this.visible=!0,this.note=e}calcHeight(){if(this.$refs.textarea){const e=this.$refs.textarea;return e.style.height="auto",e.style.height=e.scrollHeight+"px",e.scrollHeight+"px"}return"100px"}updateNote(){this.note&&l.gameStore.updateNote({note:this.note,sync:!0})}removeNote(){a.getRef("confirm").open("Are you sure you wish to remove this?").then(e=>{e&&this.note&&(l.gameStore.removeNote({note:this.note,sync:!0}),this.visible=!1)},()=>{})}};c=s.__decorate([o.default({components:{Modal:r.default}})],c),t.default=c},"5b69":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=i("60a3"),r=s.__importDefault(i("3b36")),a=s.__importDefault(i("ea6a")),l=i("0bc6"),c=i("8f0a"),u=i("6f92"),d=i("4709"),h=i("5e7c"),f=i("574e"),p=i("e4ea"),g=i("b2ed"),v=i("f10f"),m=i("92b1"),y=i("5a5c");let b=class extends a.default{constructor(){super(...arguments),this.name="Draw",this.active=!1,this.startPoint=null,this.shape=null,this.brushHelper=null,this.ruler=null,this.fillColour="rgba(0, 0, 0, 1)",this.borderColour="rgba(255, 255, 255, 0)",this.shapeSelect="square",this.shapes=["square","circle","draw-polygon","paint-brush"],this.modeSelect="normal",this.modes=["normal","reveal","hide"],this.brushSize=m.getUnitDistance(v.gameStore.unitSize)}get helperSize(){return"paint-brush"===this.shapeSelect?this.brushSize/2:m.getUnitDistance(this.unitSize)/8}get IS_DM(){return v.gameStore.IS_DM}get unitSize(){return v.gameStore.unitSize}get useGrid(){return v.gameStore.useGrid}onFillChange(){this.brushHelper&&(this.brushHelper.fillColour=this.fillColour)}onModeUpdate(e,t){this.onModeChange(e,t)}setupBrush(){null!==this.brushHelper&&("reveal"===this.modeSelect||"hide"===this.modeSelect?(this.brushHelper.options.set("preFogShape",!0),this.brushHelper.options.set("skipDraw",!0),this.brushHelper.fillColour="rgba(0, 0, 0, 1)","reveal"===this.modeSelect?this.brushHelper.globalCompositeOperation="source-over":"hide"===this.modeSelect&&(this.brushHelper.globalCompositeOperation="destination-out")):(this.brushHelper.options.delete("preFogShape"),this.brushHelper.options.delete("skipDraw"),this.brushHelper.globalCompositeOperation="source-over",this.brushHelper.fillColour=this.fillColour))}onModeChange(e,t){if(null===this.brushHelper)return;const i=u.layerManager.getLayer("fow"),s=u.layerManager.getLayer();void 0!==i&&void 0!==s&&(this.setupBrush(),"normal"!==e&&"normal"===t?(s.removeShape(this.brushHelper,!1),i.addShape(this.brushHelper,!1)):"normal"===e&&"normal"!==t&&(s.addShape(this.brushHelper,!1),i.removeShape(this.brushHelper,!1)))}getLayer(){return"normal"===this.modeSelect?u.layerManager.getLayer():u.layerManager.getLayer("fow")}onMouseDown(e){const t=this.getLayer();if(void 0!==t){if(this.active)null!==this.shape&&this.shape instanceof p.Polygon&&this.shape._vertices.push(m.l2g(y.getMouse(e)));else{switch(this.startPoint=m.l2g(y.getMouse(e)),this.active=!0,this.shapeSelect){case"square":this.shape=new g.Rect(this.startPoint.clone(),0,0,this.fillColour,this.borderColour);break;case"circle":this.shape=new d.Circle(this.startPoint.clone(),this.helperSize,this.fillColour,this.borderColour);break;case"paint-brush":this.shape=new f.MultiLine(this.startPoint.clone(),[],this.brushSize),this.shape.fillColour=this.fillColour;break;case"draw-polygon":this.shape=new p.Polygon(this.startPoint.clone(),[],this.fillColour,this.borderColour);break;default:return}"normal"!==this.modeSelect&&(this.shape.options.set("preFogShape",!0),this.shape.options.set("skipDraw",!0),this.shape.fillColour="rgba(0, 0, 0, 1)"),"reveal"===this.modeSelect?this.shape.globalCompositeOperation="source-over":"hide"===this.modeSelect&&(this.shape.globalCompositeOperation="destination-out"),this.shape.addOwner(v.gameStore.username),"fow"===t.name&&"normal"===this.modeSelect&&(this.shape.visionObstruction=!0,this.shape.movementObstruction=!0),t.addShape(this.shape,!0,!1,!1),this.pushBrushBack()}if(null!==this.shape&&this.shape instanceof p.Polygon){const i=m.l2g(y.getMouse(e));null===this.ruler?(this.ruler=new h.Line(i,i,3,"black"),t.addShape(this.ruler,!1)):(this.ruler.refPoint=i,this.ruler.endPoint=i),this.shape.visionObstruction&&v.gameStore.recalculateVision(!0),t.invalidate(!1),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!0})}}else console.log("No active layer!")}onMouseMove(e){const t=m.l2g(y.getMouse(e)),i=this.getLayer();if(void 0!==i){if(null!==this.brushHelper&&(this.brushHelper.r=this.helperSize,this.brushHelper.refPoint=t,this.active||i.invalidate(!1)),this.active&&null!==this.startPoint&&null!==this.shape){switch(this.shapeSelect){case"square":this.shape.w=Math.abs(t.x-this.startPoint.x),this.shape.h=Math.abs(t.y-this.startPoint.y),this.shape.refPoint=new c.GlobalPoint(Math.min(this.startPoint.x,t.x),Math.min(this.startPoint.y,t.y));break;case"circle":this.shape.r=t.subtract(this.startPoint).length();break;case"paint-brush":this.shape._points.push(t);break;case"draw-polygon":this.ruler.endPoint=t;break}this.shape instanceof p.Polygon||(l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!0}),this.shape.visionObstruction&&v.gameStore.recalculateVision(!0)),i.invalidate(!1)}}else console.log("No active layer!")}onMouseUp(e){!this.active||null===this.shape||this.shape instanceof p.Polygon||(!e.altKey&&this.useGrid&&this.shape.resizeToGrid(),this.finaliseShape())}onContextMenu(e){if(!this.active||null===this.shape||!(this.shape instanceof p.Polygon))return;const t=this.getLayer();void 0!==t?(t.removeShape(this.ruler,!1),this.ruler=null,this.finaliseShape()):console.log("No active layer!")}finaliseShape(){null!==this.shape&&(this.shape.visionObstruction&&v.gameStore.recalculateVision(),this.shape.movementObstruction&&v.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!1}),this.active=!1)}onSelect(){const e=this.getLayer();void 0!==e&&(this.brushHelper=new d.Circle(new c.GlobalPoint(-1e3,-1e3),this.brushSize/2,this.fillColour),this.setupBrush(),e.addShape(this.brushHelper,!1))}onDeselect(){const e=this.getLayer();null!==this.brushHelper&&void 0!==e&&e.removeShape(this.brushHelper,!1),this.active&&void 0!==e&&null!==this.shape&&(e.removeShape(this.shape,!0,!1),this.shape=null,this.active=!1,e.invalidate(!1))}pushBrushBack(){const e=this.getLayer();void 0!==e?(null!==this.brushHelper&&e.removeShape(this.brushHelper,!1),this.brushHelper=new d.Circle(new c.GlobalPoint(-1e3,-1e3),this.brushSize/2,this.fillColour),this.setupBrush(),e.addShape(this.brushHelper,!1)):console.log("No active layer!")}};s.__decorate([o.Watch("fillColour")],b.prototype,"onFillChange",null),s.__decorate([o.Watch("modeSelect")],b.prototype,"onModeUpdate",null),b=s.__decorate([n.default({components:{"color-picker":r.default}})],b),t.default=b},"5e7c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("92b1");class a extends o.Shape{constructor(e,t,i,s,n){super(e,"rgba(0, 0, 0, 0)",s||"#000",n),this.type="line",this.endPoint=t,this.lineWidth=void 0===i?1:i}asDict(){return Object.assign(this.getBaseDict(),{x2:this.endPoint.x,y2:this.endPoint.y,line_width:this.lineWidth})}get points(){return[[this.refPoint.x,this.refPoint.y],[this.endPoint.x,this.endPoint.y]]}getBoundingBox(){return new n.BoundingRect(new s.GlobalPoint(Math.min(this.refPoint.x,this.endPoint.x),Math.min(this.refPoint.y,this.endPoint.y)),Math.abs(this.refPoint.x-this.endPoint.x),Math.abs(this.refPoint.y-this.endPoint.y))}draw(e){super.draw(e),e.strokeStyle=this.strokeColour,e.beginPath(),e.moveTo(r.g2lx(this.refPoint.x),r.g2ly(this.refPoint.y)),e.lineTo(r.g2lx(this.endPoint.x),r.g2ly(this.endPoint.y)),e.lineWidth=this.lineWidth,e.stroke()}contains(e){return!1}center(e){}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this.refPoint=r.l2g(t):this.endPoint=r.l2g(t)}}t.Line=a},"5ed5":function(e,t,i){},"5f86":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("8c4f"));o.default.use(r.default);const a=s.__importDefault(i("e914")),l=s.__importDefault(i("1077")),c=s.__importDefault(i("cad7")),u=s.__importDefault(i("47f7")),d=s.__importDefault(i("c6b4")),h=s.__importDefault(i("07f5")),f=s.__importDefault(i("ce87")),p=i("cc67");t.router=new r.default({mode:"history",base:"/",routes:[{path:"/",redirect:"/dashboard"},{path:"/_load",name:"load",component:u.default},{path:"/assets",component:a.default,meta:{auth:!0}},{path:"/auth",component:{template:""},children:[{path:"login",component:l.default},{path:"logout",component:c.default}]},{path:"/invite/:code",component:f.default,meta:{auth:!0}},{path:"/dashboard",component:d.default,meta:{auth:!0}},{path:"/game/:creator/:room",component:h.default,meta:{auth:!0}}]}),t.router.beforeEach((e,i,s)=>{p.coreStore.initialized||"/_load"===e.path?e.matched.some(e=>e.meta.auth)&&!p.coreStore.authenticated?s({path:"/auth/login",query:{redirect:e.path}}):s():(s({path:"/_load"}),n.default.get("/api/auth").then(i=>{i.data.auth&&(p.coreStore.setAuthenticated(!0),p.coreStore.setUsername(i.data.username)),p.coreStore.setInitialized(!0),t.router.push(e.path)}).catch(()=>{console.error("Authentication check could not be fulfilled.")}))})},"5fa9":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9"));let r=class extends n.default{constructor(){super(...arguments),this.name="",this.selected=!1,this.active=!1}get detailRight(){const e=this.$parent.$refs[this.name+"-selector"][0].getBoundingClientRect(),t=e.left+e.width/2;return`${window.innerWidth-Math.min(window.innerWidth-25,t+75)}px`}get detailArrow(){const e=this.$parent.$refs[this.name+"-selector"][0].getBoundingClientRect(),t=e.left+e.width/2,i=Math.min(window.innerWidth-25,t+75);return`${i-t-14}px`}created(){this.$parent.$on("mousedown",(e,t)=>{t===this.name&&this.onMouseDown(e)}),this.$parent.$on("mouseup",(e,t)=>{t===this.name&&this.onMouseUp(e)}),this.$parent.$on("mousemove",(e,t)=>{t===this.name&&this.onMouseMove(e)}),this.$parent.$on("contextmenu",(e,t)=>{t===this.name&&this.onContextMenu(e)}),this.$parent.$on("tools-select-change",(e,t)=>{t===this.name?(this.selected=!1,this.onDeselect()):e===this.name&&(this.selected=!0,this.onSelect())})}onSelect(){}onDeselect(){}onMouseDown(e){}onMouseUp(e){}onMouseMove(e){}onContextMenu(e){}};r=s.__decorate([o.default],r),t.default=r},6100:function(e,t,i){"use strict";i.r(t);var s=i("f974"),n=i("e94f");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("d75e");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b6e1f51c",null);t["default"]=a.exports},6465:function(e,t,i){"use strict";i.r(t);var s=i("5fa9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"64a9":function(e,t,i){},6542:function(e,t,i){},"676f":function(e,t,i){},"69fb":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"main"},on:{mouseleave:e.mouseleave,wheel:e.zoom}},[e.showUI?i("menu-bar"):e._e(),i("div",{attrs:{id:"board"}},[e.ready.manager?[i("tool-bar",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],ref:"tools"})]:e._e(),i("div",{attrs:{id:"layers"},on:{mousedown:e.mousedown,mouseup:e.mouseup,mousemove:e.mousemove,contextmenu:function(t){return t.preventDefault(),t.stopPropagation(),e.contextmenu(t)},dragover:function(e){e.preventDefault()},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.drop(t)}}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showUI&&e.layers.length>1,expression:"showUI && layers.length>1"}],attrs:{id:"layerselect"}},[i("ul",e._l(e.layers,function(t){return i("li",{key:t.name,class:{"layer-selected":t===e.selectedLayer},on:{mousedown:function(i){return e.selectLayer(t)}}},[i("a",{attrs:{href:"#"}},[e._v(e._s(t))])])}),0)])],2),i("selection-info",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],ref:"selectionInfo"}),i("initiative-dialog",{ref:"initiative",attrs:{id:"initiativedialog"}}),i("note-dialog",{ref:"note"}),i("label-dialog",{ref:"labels"}),e.IS_DM||e.FAKE_PLAYER?i("dm-settings",{ref:"dmsettings"}):e._e(),i("zoom-slider",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],attrs:{id:"zoomer",height:6,width:200,min:0,max:1,interval:.1,"dot-width":8,"dot-height":20,"tooltip-dir":"bottom",tooltip:"hover",formatter:e.zoomDisplay.toFixed(1),"slider-style":{"border-radius":"15%"},"bg-style":{"background-color":"#fff","box-shadow":"0.5px 0.5px 3px 1px rgba(0, 0, 0, .36)"},"process-style":{"background-color":"#fff"}},model:{value:e.zoomDisplay,callback:function(t){e.zoomDisplay=t},expression:"zoomDisplay"}}),i("prompt-dialog",{ref:"prompt"}),i("confirm-dialog",{ref:"confirm"})],1)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"6a95":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"input-copy"},on:{mouseleave:function(t){e.showPopup=!1}}},[i("input",{attrs:{type:"text",disabled:"disabled",id:"input-element"},domProps:{value:e.value}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopup,expression:"showPopup"}],attrs:{id:"show-popup"}},[e._v(e._s(e.popupString))]),i("div",{attrs:{id:"copy-button"},on:{click:e.copy}},[i("i",{staticClass:"far fa-copy"})])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"6c30":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("c266"),n=i("f10f"),o=i("92b1");class r extends s.BaseRect{constructor(e,t,i,s,n){super(t,i,s,void 0,void 0,n),this.type="assetrect",this.src="",this.img=e}asDict(){return Object.assign(this.getBaseDict(),{src:this.src})}fromDict(e){super.fromDict(e),this.src=e.src}draw(e){super.draw(e);try{e.drawImage(this.img,o.g2lx(this.refPoint.x),o.g2ly(this.refPoint.y),o.g2lz(this.w),o.g2lz(this.h))}catch(t){console.warn(`Shape ${this.uuid} could not load the image ${this.src}`)}}getInitiativeRepr(){return{uuid:this.uuid,visible:!n.gameStore.IS_DM,group:!1,source:this.src,has_img:!0,effects:[],index:1/0}}}t.Asset=r},"6c7c":function(e,t,i){"use strict";i.r(t);var s=i("6a95"),n=i("9088");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("2900");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"20bfdb3e",null);t["default"]=a.exports},"6e4a":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("98ef"),n=i("4aee");class o{constructor(){this.tds=new s.TDS}insertConstraint(e,t){const i=this.insert(e),s=this.insert(t);i!==s&&this.insertConstraintV(i,s)}insertConstraintV(e,t){const i=[[e,t]];while(i.length>0){const e=i.pop(),t=n.edgeInfo(e[0],e[1]);if(t.includes){this.markConstraint(t.fr,t.i),t.vi!==e[1]&&i.push([t.vi,e[1]]);continue}const s=this.findIntersectedFaces(e[0],e[1]);s.found?s.vi!==e[0]&&s.vi!==e[1]?(i.push([e[0],s.vi]),i.push([s.vi,e[1]])):i.push(e):(this.triangulateHole(s.intersectedFaces,s.listAB,s.listBA),s.vi!==e[1]&&i.push([s.vi,e[1]]))}}triangulateHole(e,t,i){const s=[];this.triangulateHole2(e,t,i,s),this.propagatingFlipE(s)}triangulateHole2(e,t,i,s){if(t.length>0){this.triangulateHalfHole(t,s),this.triangulateHalfHole(i,s);const n=t[0][0],o=i[0][0];n.neighbours[2]=o,o.neighbours[2]=n,n.constraints[2]=!0,o.constraints[2]=!0;while(e.length>0)this.tds.deleteTriangle(e.shift())}}triangulateHalfHole(e,t){let i,o,r=0;const a=()=>e[r],l=()=>e[i],c=a()[0].vertices[n.ccw(a()[1])];let u,d,h,f,p,g;i=r,++i;do{d=a()[0],p=a()[1],null!==d.neighbours[p]&&(u=d.neighbours[p],f=n.cw(u.indexV(d.vertices[n.cw(p)])),d=u.neighbours[f],p=this.tds.mirrorIndex(u,f)),h=l()[0],g=l()[1],null!==h.neighbours[g]&&(u=h.neighbours[g],f=n.cw(u.indexV(h.vertices[n.cw(g)])),h=u.neighbours[f],g=this.tds.mirrorIndex(u,f));const v=d.vertices[n.ccw(p)],m=d.vertices[n.cw(p)],y=h.vertices[n.cw(g)],b=n.orientation(v.point,m.point,y.point);switch(b){case s.Sign.RIGHT_TURN:{const s=this.tds.createTriangle(v,y,m,null,null,null);t.push([s,2]),s.neighbours[1]=d,s.neighbours[0]=h,d.neighbours[p]=s,h.neighbours[g]=s,d.isConstrained(p)&&(s.constraints[1]=!0),h.isConstrained(g)&&(s.constraints[0]=!0),v.triangle=s,m.triangle=s,y.triangle=s,o=r+1,e.splice(r,0,[s,2]),e.splice(Math.max(o,i),1),e.splice(Math.min(o,i),1),i=r,v!==c?--r:++i;break}case s.Sign.LEFT_TURN:case s.Sign.COLLINEAR:++r,++i;break}}while(i0){t=r[0][0],a=r[0][1],l=t.neighbours[a],c=this.tds.mirrorIndex(t,a),u=[t,a],r.splice(r.findIndex(e=>e[0]===u[0]&&e[1]===u[1]),1),d[0]=[t,n.cw(a)],d[1]=[t,n.ccw(a)],d[2]=[l,n.cw(c)],d[3]=[l,n.ccw(c)];for(const e of d){const t=e[0],i=e[1];s=[t.neighbours[i],this.tds.mirrorIndex(t,i)],this.lessEdge(e,s)?r.splice(r.findIndex(t=>t[0]===e[0]&&t[1]===e[1]),1):r.splice(r.findIndex(e=>e[0]===s[0]&&e[1]===s[1]),1)}this.flip(t,a);for(const e of d){const t=e[0],i=e[1];this.isFlipable(t,i)&&(s=[t.neighbours[i],this.tds.mirrorIndex(t,i)],this.lessEdge(e,s)?r.push(e):r.push(s))}}}flip(e,t){const i=e.neighbours[t],s=this.tds.mirrorIndex(e,t),o=e.neighbours[n.cw(t)],r=this.tds.mirrorIndex(e,n.cw(t)),a=e.neighbours[n.ccw(t)],l=this.tds.mirrorIndex(e,n.ccw(t)),c=i.neighbours[n.cw(s)],u=this.tds.mirrorIndex(i,n.cw(s)),d=i.neighbours[n.ccw(s)],h=this.tds.mirrorIndex(i,n.ccw(s));this.tds.flip(e,t),e.constraints[e.indexT(i)]=!1,i.constraints[i.indexT(e)]=!1,o.neighbours[r].constraints[this.tds.mirrorIndex(o,r)]=o.constraints[r],a.neighbours[l].constraints[this.tds.mirrorIndex(a,l)]=a.constraints[l],c.neighbours[u].constraints[this.tds.mirrorIndex(c,u)]=c.constraints[u],d.neighbours[h].constraints[this.tds.mirrorIndex(d,h)]=d.constraints[h]}isFlipable(e,t,i=!0){const o=e.neighbours[t];return!e.isInfinite()&&!o.isInfinite()&&(!e.constraints[t]&&n.sideOfOrientedCircle(o,e.vertices[t].point,i)===s.Sign.ON_POSITIVE_SIDE)}insertb(e,t,i,o){let r,a,l=!1;i===s.LocateType.EDGE&&t.isConstrained(o)&&(l=!0,r=t.vertices[n.ccw(o)],a=t.vertices[n.cw(o)]);const c=this.insertc(e,t,i,o);return l?this.updateConstraintsIncident(c,r,a):i!==s.LocateType.VERTEX&&this.clearConstraintsIncident(c),2===this.tds.dimension&&this.updateConstraintsOpposite(c),c}updateConstraintsIncident(e,t,i){if(0!==this.tds.dimension)if(1===this.tds.dimension){const t=new s.EdgeCirculator(e,null);do{t.t.constraints[2]=!0}while(t.next())}else{const o=new s.FaceCirculator(e,null);do{const s=o.t.indexV(e),r=n.cw(s),a=n.ccw(s);o.t.vertices[r]===t||o.t.vertices[r]===i?(o.t.constraints[a]=!0,o.t.constraints[r]=!1):(o.t.constraints[a]=!1,o.t.constraints[r]=!0)}while(o.next())}}clearConstraintsIncident(e){const t=new s.EdgeCirculator(e,null);if(t.valid)do{const e=t.t,i=t.ri;e.constraints[i]=!1,2===this.tds.dimension&&(e.neighbours[i].constraints[this.tds.mirrorIndex(e,i)]=!1)}while(t.next())}insertc(e,t,i,n){if(1===this.tds.vertices.length)return this.insertFirst(e);if(2===this.tds.vertices.length)return i===s.LocateType.VERTEX?this.tds.finiteVertex:this.insertSecond(e);switch(i){case s.LocateType.VERTEX:return t.vertices[n];case s.LocateType.OUTSIDE_AFFINE_HULL:return this.insertOutsideAffineHull(e);case s.LocateType.OUTSIDE_CONVEX_HULL:return this.insertOutsideConvexHull(e,t);case s.LocateType.EDGE:return this.insertInEdge(e,t,n);case s.LocateType.FACE:return this.insertInFace(e,t)}throw new Error("qwe")}insertInEdge(e,t,i){const s=this.tds.insertInEdge(t,i);return s.point=e,s}insertInFace(e,t){const i=this.tds.insertInFace(t);return i.point=e,i}insertFirst(e){const t=this.tds.insertDimUp();return t.point=e,t}insertSecond(e){const t=this.tds.insertDimUp(this.tds._infinite,!0);return t.point=e,t}insertOutsideAffineHull(e){let t=!1;if(1===this.tds.dimension){const i=this.tds.finiteEdge.first,o=n.orientation(i.vertices[0].point,i.vertices[1].point,e);t=o===s.Sign.COUNTERCLOCKWISE}const i=this.tds.insertDimUp(this.tds._infinite,t);return i.point=e,i}insertOutsideConvexHull(e,t){let i;if(1===this.tds.dimension)throw new Error("sdfasdasd");return i=this.insertOutsideConvexHull2(e,t),i.point=e,i}insertOutsideConvexHull2(e,t){let i=t.indexV(this.tds._infinite);const o=[],r=[];let a=new s.FaceCirculator(this.tds._infinite,t),l=!1;while(!l){a.prev(),i=a.t.indexV(this.tds._infinite);const t=a.t.vertices[n.ccw(i)].point,r=a.t.vertices[n.cw(i)].point;n.orientation(e,t,r)===s.Sign.LEFT_TURN?o.push(a.t):l=!0}a=new s.FaceCirculator(this.tds._infinite,t),l=!1;while(!l){a.next(),i=a.t.indexV(this.tds._infinite);const t=a.t.vertices[n.ccw(i)].point,o=a.t.vertices[n.cw(i)].point;n.orientation(e,t,o)===s.Sign.LEFT_TURN?r.push(a.t):l=!0}const c=this.tds.insertInFace(t);let u;c.point=e;while(o.length>0)u=o[0],i=n.ccw(u.indexV(this.tds._infinite)),this.tds.flip(u,i),o.shift();while(r.length>0)u=r[0],i=n.cw(u.indexV(this.tds._infinite)),this.tds.flip(u,i),r.shift();a=new s.FaceCirculator(c,null);while(!a.t.isInfinite())a.next();return this.tds._infinite.triangle=a.t,c}locate(e,t){let i=0,o=0;if(this.tds.dimension<0)return i=s.LocateType.OUTSIDE_AFFINE_HULL,o=4,{loc:null,lt:i,li:o};if(0===this.tds.dimension)return i=n.xyEqual(e,this.tds.finiteVertex.triangle.vertices[0].point)?s.LocateType.VERTEX:s.LocateType.OUTSIDE_AFFINE_HULL,o=4,{loc:null,lt:i,li:o};if(1===this.tds.dimension)return this.marchLocate1D(e);if(null===t){const e=this.tds._infinite.triangle;t=e.neighbours[e.indexV(this.tds._infinite)]}else t.isInfinite()&&(t=t.neighbours[t.indexV(this.tds._infinite)]);return this.marchLocate2D(t,e)}marchLocate1D(e){const t=this.tds._infinite.triangle,i=t.indexV(this.tds._infinite),o=t.neighbours[i],r=n.orientation(o.vertices[0].point,o.vertices[1].point,e);if(r===s.Sign.RIGHT_TURN||r===s.Sign.LEFT_TURN)return{loc:new s.Triangle,lt:s.LocateType.OUTSIDE_AFFINE_HULL,li:4};const a=o.indexT(t);if(n.collinearBetween(e,o.vertices[1-a].point,o.vertices[a].point))return{loc:t,lt:s.LocateType.OUTSIDE_CONVEX_HULL,li:i};if(n.xyEqual(e,o.vertices[1-a].point))return{loc:o,lt:s.LocateType.VERTEX,li:1-a};throw new Error("sdfsdf")}marchLocate2D(e,t){let i,o,r=null,a=!0;while(1){if(e.isInfinite())return{loc:e,lt:s.LocateType.OUTSIDE_CONVEX_HULL,li:e.indexV(this.tds._infinite)};const l=0,c=e.vertices[0].point,u=e.vertices[1].point,d=e.vertices[2].point;let h,f,p;if(a){if(r=e,a=!1,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}}else if(l)if(e.neighbours[0]===r){if(r=e,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}f=s.Sign.POSITIVE}else if(e.neighbours[1]===r){if(r=e,f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}p=s.Sign.POSITIVE}else{if(r=e,p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}h=s.Sign.POSITIVE}else if(e.neighbours[0]===r){if(r=e,p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}if(h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}f=s.Sign.POSITIVE}else if(e.neighbours[1]===r){if(r=e,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}p=s.Sign.POSITIVE}else{if(r=e,f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}h=s.Sign.POSITIVE}const g=(h===s.Sign.COLLINEAR?1:0)+(f===s.Sign.COLLINEAR?1:0)+(p===s.Sign.COLLINEAR?1:0);switch(g){case 0:i=s.LocateType.FACE,o=4;break;case 1:i=s.LocateType.EDGE,o=h===s.Sign.COLLINEAR?2:f===s.Sign.COLLINEAR?0:1;break;case 2:i=s.LocateType.VERTEX,o=h!==s.Sign.COLLINEAR?2:f!==s.Sign.COLLINEAR?0:1;break}if(void 0===i||void 0===o)throw new Error("ert");return{loc:e,lt:i,li:o}}}iLocate(e,t){if(this.tds.dimension<2)return t;if(null===t){const e=this.tds._infinite.triangle;t=e.neighbours[e.indexV(this.tds._infinite)]}else t.isInfinite()&&(t=t.neighbours[t.indexV(this.tds._infinite)]);let i=null,s=t,o=!0,r=2500;while(1){if(!r--)return s;if(s.isInfinite())return s;const t=s.vertices[0].point,a=s.vertices[1].point,l=s.vertices[2].point;if(o){if(i=s,o=!1,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}if(n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}}else if(s.neighbours[0]===i){if(i=s,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}}else if(s.neighbours[1]===i){if(i=s,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}}else{if(i=s,n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}}break}return s}}t.CDT=o},"6f8d":function(e,t,i){"use strict";i.r(t);var s=i("5b69"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"6f92":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6c30"),o=i("f10f"),r=i("92b1");class a{constructor(){this.layers=[],this.width=window.innerWidth,this.height=window.innerHeight,this.UUIDMap=new Map,this.interval=30,this.drawLoop=()=>{for(let e=this.layers.length-1;e>=0;e--)this.layers[e].draw();requestAnimationFrame(this.drawLoop)},requestAnimationFrame(this.drawLoop)}reset(){this.layers=[],this.UUIDMap=new Map}setWidth(e){this.width=e;for(const t of this.layers)t.canvas.width=e,t.width=e}setHeight(e){this.height=e;for(const t of this.layers)t.canvas.height=e,t.height=e}addLayer(e){this.layers.push(e),(o.gameStore.IS_DM||e.playerEditable)&&e.selectable&&o.gameStore.addLayer(e.name)}hasLayer(e){return this.layers.some(t=>t.name===e)}getLayer(e){e=void 0===e?o.gameStore.selectedLayer:e;for(const t of this.layers)if(t.name===e)return t}selectLayer(e,t=!0){let i=!1;for(const s of this.layers)s.selectable&&(i&&"fow"!==s.name?s.ctx.globalAlpha=.3:s.ctx.globalAlpha=1,e===s.name&&(o.gameStore.selectLayer({name:e,sync:t}),i=!0),s.clearSelection(),s.invalidate(!0))}getGridLayer(){return this.getLayer("grid")}hasSelection(){const e=this.getSelection();return void 0!==e&&e.length>0}getSelection(){const e=this.getLayer();if(void 0!==e)return e.selection}invalidate(){for(let e=this.layers.length-1;e>=0;e--)this.layers[e].invalidate(!0)}invalidateLight(){for(let e=this.layers.length-1;e>=0;e--)this.layers[e].isVisionLayer&&this.layers[e].invalidate(!0)}dropAsset(e){const t=this.getLayer();if(void 0===t||null===e||null===e.dataTransfer)return;const i=document.createElement("img");i.src=e.dataTransfer.getData("text/plain");const a=new n.Asset(i,new s.GlobalPoint(r.l2gx(e.clientX),r.l2gy(e.clientY)),r.l2gz(i.width),r.l2gz(i.height));if(a.src=new URL(i.src).pathname,o.gameStore.useGrid){const e=o.gameStore.gridSize;a.refPoint=new s.GlobalPoint(Math.round(a.refPoint.x/e)*e,Math.round(a.refPoint.y/e)*e),a.w=Math.max(Math.round(a.w/e)*e,e),a.h=Math.max(Math.round(a.h/e)*e,e)}t.addShape(a,!0)}}t.layerManager=new a,window.lm=t.layerManager},7018:function(e,t,i){"use strict";i.r(t);var s=i("ebb9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},7420:function(e,t,i){"use strict";i.r(t);var s=i("d320"),n=i("778b");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("c969");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"73816298",null);t["default"]=a.exports},"76b3":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{constructor(e,t){this.children=[],this.nPrimitives=e,this.bbox=t}}t.BoundingNode=s;class n extends s{constructor(e,t,i){super(t,i),this.firstPrimOffset=e}}t.LeafNode=n;class o extends s{constructor(e,t,i){super(0,t.bbox.union(i.bbox)),this.dimension=e,this.children.push(t),this.children.push(i)}}t.InteriorNode=o},"778b":function(e,t,i){"use strict";i.r(t);var s=i("5a81"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"77a6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4a5b"),n=i("0bc6"),o=i("2b48"),r=i("af17"),a=i("8f0a"),l=i("6f92"),c=i("206a"),u=i("f10f"),d=i("2838");function h(e){if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement);else if("Delete"===e.key||"Del"===e.key||"Backspace"===e.key){if(void 0===l.layerManager.getLayer)return void console.log("No active layer selected for delete operation");const e=l.layerManager.getLayer();for(let t=e.selection.length-1;t>=0;t--){const i=e.selection[t];s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==i.uuid?(e.removeShape(i,!0,!1),r.EventBus.$emit("SelectionInfo.Shape.Set",null),r.EventBus.$emit("Initiative.Remove",i.uuid)):e.selection.splice(t,1)}}}function f(e){if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)65===e.keyCode&&e.ctrlKey&&e.target.select();else if(e.keyCode>=37&&e.keyCode<=40){const t=Math.round(u.gameStore.gridSize);let i=t*(e.keyCode%2),r=t*(e.keyCode%2?0:1);if(l.layerManager.hasSelection()){const t=l.layerManager.getSelection();i*=e.keyCode<=38?-1:1,r*=e.keyCode<=38?-1:1;let o=new a.Vector(i,r);if(!e.shiftKey||!u.gameStore.IS_DM)for(const e of t)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==e.uuid&&(o=d.calculateDelta(o,e));for(const e of t)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==e.uuid&&(e.refPoint=e.refPoint.add(o),n.socket.emit("Shape.Position.Update",{shape:e.asDict(),redraw:!0,temporary:!1}));u.gameStore.recalculateVision(),l.layerManager.getLayer().invalidate(!1)}else u.gameStore.increasePanX(i*(e.keyCode<=38?1:-1)),u.gameStore.increasePanY(r*(e.keyCode<=38?1:-1)),l.layerManager.invalidate(),o.sendClientOptions()}else if(68===e.keyCode){const e=l.layerManager.getLayer();e&&(e.clearSelection(),e.invalidate(!0))}else if("u"===e.key&&e.ctrlKey)e.preventDefault(),e.stopPropagation(),u.gameStore.toggleUI();else if("c"===e.key&&e.ctrlKey){const e=l.layerManager.getLayer();if(!e)return;if(!e.selection)return;const t=[];for(const i of e.selection)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==i.uuid&&t.push(i.asDict());u.gameStore.setClipboard(t)}else if("v"===e.key&&e.ctrlKey){const e=l.layerManager.getLayer();if(!e)return;if(!u.gameStore.clipboard)return;e.selection=[];for(const t of u.gameStore.clipboard){t.x+=10,t.y+=10,t.uuid=s.uuidv4();const i=t.trackers;t.trackers=[];for(const e of i){const i=Object.assign({},e,{uuid:s.uuidv4()});t.trackers.push(i)}const n=t.auras;t.auras=[];for(const e of n){const i=Object.assign({},e,{uuid:s.uuidv4()});t.auras.push(i)}const o=c.createShapeFromDict(t);void 0!==o&&(e.addShape(o,!0),e.selection.push(o))}1===e.selection.length?r.EventBus.$emit("SelectionInfo.Shape.Set",e.selection[0]):r.EventBus.$emit("SelectionInfo.Shape.Set",null),e.invalidate(!1)}}t.onKeyUp=h,t.onKeyDown=f},"78c7":function(e,t,i){"use strict";var s=i("9227"),n=i.n(s);n.a},"7aaa":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("033f")),r=s.__importDefault(i("7420")),a=s.__importDefault(i("59d8")),l=s.__importDefault(i("bea6")),c=s.__importDefault(i("dec1")),u=s.__importDefault(i("4899")),d=s.__importDefault(i("c277")),h=s.__importDefault(i("9f58")),f=i("6f92"),p=i("9cb7"),g=i("f10f"),v=i("d5df"),m=i("92b1"),y=i("5a5c"),b=s.__importDefault(i("65d9"));let _=class extends n.default{constructor(){super(...arguments),this.currentTool="Select",this.tools=["Select","Pan","Draw","Ruler","Map","Filter","Vision"],this.dmTools=["Map"]}get IS_DM(){return g.gameStore.IS_DM}get currentToolComponent(){return`${this.currentTool.toLowerCase()}-tool`}get visibleTools(){return this.tools.filter(e=>!this.dmTools.includes(e)||this.IS_DM)}toolVisible(e){return"Filter"===e?Object.keys(g.gameStore.labels).length>0:"Vision"!==e||g.gameStore.ownedtokens.length>1}mousedown(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(1===e.button)t="Pan";else if(0!==e.button)return;this.$emit("mousedown",e,t)}mouseup(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(1===e.button)t="Pan";else if(0!==e.button)return;this.$emit("mouseup",e,t)}mousemove(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(0!==(4&e.buttons))t="Pan";else if((1&e.button)>1)return;this.$emit("mousemove",e,t);let i=!1;for(const s of g.gameStore.annotations)if(f.layerManager.UUIDMap.has(s)&&f.layerManager.hasLayer("draw")){const t=f.layerManager.UUIDMap.get(s);t.contains(m.l2g(y.getMouse(e)))&&(i=!0,p.gameManager.annotationManager.setActiveText(t.annotation))}!i&&p.gameManager.annotationManager.shown&&p.gameManager.annotationManager.setActiveText("")}mouseleave(e){0!==(1&e.buttons)&&this.$emit("mouseup",e,this.currentTool)}contextmenu(e){"CANVAS"===e.target.tagName&&2===e.button&&"CANVAS"===e.target.tagName&&this.$emit("contextmenu",e,this.currentTool)}};_=s.__decorate([b.default({components:{"select-tool":d.default,"pan-tool":u.default,"draw-tool":a.default,"ruler-tool":v.RulerTool,"map-tool":c.default,"filter-tool":l.default,"vision-tool":h.default,"shape-menu":o.default,"createtoken-dialog":r.default},watch:{currentTool(e,t){this.$emit("tools-select-change",e,t)}}})],_),t.default=_},"7ba5":function(e,t,i){"use strict";i.r(t);var s=i("fbdd"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"7e15":function(e,t,i){"use strict";i.r(t);var s=i("52a8"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"7eb7":function(e,t,i){"use strict";var s=i("cd76"),n=i.n(s);n.a},"7f1e":function(e,t,i){"use strict";var s=i("fe11"),n=i.n(s);n.a},"839d":function(e,t,i){},"851c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f"));let a=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.question="",this.answer="",this.title="",this.resolve=e=>{},this.reject=()=>{}}submit(){this.resolve(this.answer),this.close()}close(){this.reject(),this.visible=!1,this.question="",this.answer="",this.title=""}prompt(e,t){return this.question=e,this.title=t,this.visible=!0,this.$nextTick(()=>{this.$refs.answer.focus()}),new Promise((e,t)=>{this.resolve=e,this.reject=t})}};a=s.__decorate([o.default({components:{Modal:r.default}})],a),t.default=a},8790:function(e,t,i){"use strict";var s=i("a912"),n=i.n(s);n.a},"88af":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[e._v(e._s(e.message))])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"8cd4":function(e,t,i){"use strict";i.r(t);var s=i("9587"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"8db6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("92b1");class o{constructor(e,t,i){this.w=t,this.h=i,this.topLeft=e,this.topRight=new s.GlobalPoint(e.x+t,e.y),this.botRight=new s.GlobalPoint(e.x+t,e.y+i),this.botLeft=new s.GlobalPoint(e.x,e.y+i)}contains(e){return this.topLeft.x<=e.x&&this.topRight.x>=e.x&&this.topLeft.y<=e.y&&this.botLeft.y>=e.y}get points(){return 0===this.w||0===this.h?[[this.topLeft.x,this.topLeft.y]]:[[this.topLeft.x,this.topLeft.y],[this.botLeft.x,this.botLeft.y],[this.botRight.x,this.botRight.y],[this.topRight.x,this.topRight.y]]}offset(e){return new o(this.topLeft.add(e),this.w,this.h)}union(e){const t=Math.min(this.topLeft.x,e.topLeft.x),i=Math.max(this.topRight.x,e.topRight.x),n=Math.min(this.topLeft.y,e.topLeft.y),r=Math.max(this.botLeft.y,e.botLeft.y);return new o(new s.GlobalPoint(t,n),i-t,r-n)}getDiagCorner(e){return e?this.botRight:this.topLeft}intersectsWith(e){return!(e.topLeft.x>this.topRight.x||e.topRight.xthis.botLeft.y||e.botLeft.y=this.topRight.x||e.topRight.x<=this.topLeft.x||e.topLeft.y>=this.botLeft.y||e.botLeft.y<=this.topLeft.y)}intersectP(e,t,i){let s=t.x*(this.getDiagCorner(i[0]).x-e.origin.x),n=t.x*(this.getDiagCorner(!i[0]).x-e.origin.x);const o=t.y*(this.getDiagCorner(i[1]).y-e.origin.y),r=t.y*(this.getDiagCorner(!i[1]).y-e.origin.y);return s>r||o>n?{hit:!1,min:s,max:n}:(o>s&&(s=o),r0,min:s,max:n})}center(){return this.topLeft.add(new s.Vector(this.w/2,this.h/2))}getMaxExtent(){return this.w>this.h?0:1}visibleInCanvas(e){const t=!(n.g2lx(this.topLeft.x)>e.width||n.g2ly(this.topLeft.y)>e.height||n.g2lx(this.topRight.x)<0||n.g2ly(this.botRight.y)<0);return!!t}}t.BoundingRect=o},"8e60":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"formcontainer"}},[e.owned||e.joined?i("form",[i("fieldset",[i("legend",{staticClass:"legend"},[e._v("Your sessions")]),i("div",{staticClass:"input"},[e._l(e.owned,function(t,s){return i("router-link",{key:"o-"+s,attrs:{to:"/game/"+t[1]+"/"+t[0]}},[e._v(e._s(t[0]))])}),e._l(e.joined,function(t,s){return i("router-link",{key:"j-"+s,attrs:{to:"/game/"+t[1]+"/"+t[0]}},[e._v(e._s(t[1])+"/"+e._s(t[0]))])})],2),0===e.owned.length?i("div",{staticClass:"input"},[e._v("No active sessions")]):e._e()])]):e._e(),e._m(0),i("form",{on:{submit:function(t){return t.preventDefault(),e.createRoom(t)}}},[i("fieldset",[e.owned||e.joined?i("div",{staticClass:"input"},[e._v("Create a new session")]):i("legend",{staticClass:"legend"},[e._v("Create a session")]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.newSessionName,expression:"newSessionName"}],attrs:{type:"text",name:"room_name",placeholder:"Session Name"},domProps:{value:e.newSessionName},on:{input:function(t){t.target.composing||(e.newSessionName=t.target.value)}}}),e._m(1)]),e._m(2)])]),i("div",{attrs:{id:"account-options"}},[i("form",{on:{submit:function(e){e.preventDefault()}}},[i("router-link",{staticClass:"submit",attrs:{tag:"button",title:"Account Settings",to:"/account"}},[i("i",{staticClass:"fas fa-cog"})])],1),i("form",{on:{submit:function(e){e.preventDefault()}}},[i("router-link",{staticClass:"submit",attrs:{tag:"button",title:"Logout",to:"/auth/logout"}},[i("i",{staticClass:"fas fa-sign-out-alt"})])],1)])])},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("h4",[i("span",[e._v("OR")])])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fab fa-d-and-d"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"submit",attrs:{type:"submit",title:"Create"}},[i("i",{staticClass:"fas fa-arrow-right"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"8f0a":function(e,t,i){"use strict";function s(e,t){const i=e.x-t.x,s=e.y-t.y;return Math.sqrt(i*i+s*s)}Object.defineProperty(t,"__esModule",{value:!0}),t.getPointDistance=s;class n{constructor(e,t){this.x=e,this.y=t}static fromArray(e){return new n(e[0],e[1])}add(e){return new n(this.x+e.x,this.y+e.y)}subtract(e){return new a(this.x-e.x,this.y-e.y)}clone(){return new n(this.x,this.y)}get(e){return 0===e?this.x:this.y}asArray(){return[this.x,this.y]}}t.Point=n;class o extends n{add(e){return super.add(e)}subtract(e){return super.subtract(e)}clone(){return super.clone()}static fromArray(e){return new o(e[0],e[1])}}t.GlobalPoint=o;class r extends n{add(e){return super.add(e)}subtract(e){return super.subtract(e)}clone(){return super.clone()}}t.LocalPoint=r;class a{constructor(e,t){this.x=e,this.y=t}dot(e){return this.x*e.x+this.y*e.y}inverse(){return new a(0===this.x?0:1/this.x,0===this.y?0:1/this.y)}length(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}normalize(){const e=this.length();return new a(this.x/e,this.y/e)}reverse(){return new a(-this.x,-this.y)}multiply(e){return new a(this.x*e,this.y*e)}angle(){return 180*Math.atan2(this.y,this.x)/Math.PI}}t.Vector=a;class l{constructor(e,t,i){this.direction=t,this.origin=e,void 0===i&&(i=1/0),this.tMax=i}static fromPoints(e,t){const i=new a(t.x-e.x,t.y-e.y);let s;return s=Math.abs(i.x)>.01?(t.x-e.x)/i.x:(t.y-e.y)/i.y,new l(e,i,s)}get(e){return new n(this.origin.x+e*this.direction.x,this.origin.y+e*this.direction.y)}getDistance(e,t){return Math.sqrt(Math.pow(t-e,2)*(Math.pow(this.direction.x,2)+Math.pow(this.direction.y,2)))}getT(e,t){return e+Math.sqrt(Math.pow(t,2)/(Math.pow(this.direction.x,2)+Math.pow(this.direction.y,2)))}}t.Ray=l},"8f54":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",[e._l(e.folders,function(t){return i("li",{key:t,staticClass:"folder",on:{click:function(t){return t.stopPropagation(),e.toggle(t)}}},[e._v("\n "+e._s(t)+"\n "),i("asset-node",{attrs:{asset:e.asset[t]}})],1)}),e._l(e.files,function(t){return i("li",{key:t.name,staticClass:"file draggable token",attrs:{draggable:"true"},on:{mouseover:function(i){e.showImage=t.hash},mouseout:function(t){e.showImage=null},dragstart:function(i){return e.dragStart(i,"/static/assets/"+t.hash)}}},[e._v("\n "+e._s(t.name)+"\n "),e.showImage==t.hash?i("div",{staticClass:"preview"},[i("img",{staticClass:"asset-preview-image",attrs:{src:"/static/assets/"+t.hash}})]):e._e()])})],2)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},9088:function(e,t,i){"use strict";i.r(t);var s=i("3411"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"919a":function(e,t,i){},"91df":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("6f79"));i("fe80");const a=i("2ef0"),l=s.__importDefault(i("a535")),c=s.__importDefault(i("cec2")),u=s.__importDefault(i("f5fe")),d=s.__importDefault(i("f74c")),h=s.__importDefault(i("19f9")),f=s.__importDefault(i("f551")),p=s.__importDefault(i("f086")),g=s.__importDefault(i("6100")),v=i("0bc6"),m=i("77a6"),y=i("bb17"),b=i("6f92"),_=i("f10f"),w=i("92b1"),S=i("8f0a"),x=s.__importDefault(i("e0e8"));let C=class extends n.default{constructor(){super(...arguments),this.ready={manager:!1,tools:!1}}get showUI(){return _.gameStore.showUI}get IS_DM(){return _.gameStore.IS_DM}get FAKE_PLAYER(){return _.gameStore.FAKE_PLAYER}get layers(){return _.gameStore.layers}get selectedLayer(){return _.gameStore.selectedLayer}get zoomDisplay(){return _.gameStore.zoomDisplay}set zoomDisplay(e){_.gameStore.updateZoom({newZoomDisplay:e,zoomLocation:w.l2g(new S.LocalPoint(window.innerWidth/2,window.innerHeight/2))})}mounted(){window.addEventListener("resize",this.resizeWindow),window.addEventListener("keyup",m.onKeyUp),window.addEventListener("keydown",m.onKeyDown),this.ready.manager=!0}destroyed(){window.removeEventListener("resize",this.resizeWindow),window.removeEventListener("keyup",m.onKeyUp),window.removeEventListener("keydown",m.onKeyDown),this.ready.manager=!1}zoom(e){a.throttle(y.scrollZoom)(e)}resizeWindow(){b.layerManager.setWidth(window.innerWidth),b.layerManager.setHeight(window.innerHeight),b.layerManager.invalidate()}mousedown(e){this.$refs.tools.mousedown(e)}mouseup(e){this.$refs.tools.mouseup(e)}mousemove(e){this.$refs.tools.mousemove(e)}mouseleave(e){this.$refs.tools.mouseleave(e)}contextmenu(e){this.$refs.tools.contextmenu(e)}selectLayer(e){b.layerManager.selectLayer(e)}drop(e){if(null!==e&&null!==e.dataTransfer)if(e.dataTransfer.files.length>0)this.$refs.confirm.open("Uploading files should be done through the asset manager.","Ok","").then(()=>{},()=>{});else{if(""===e.dataTransfer.getData("text/plain"))return;b.layerManager.dropAsset(e)}}};C=s.__decorate([o.default({components:{"tool-bar":g.default,"selection-info":p.default,"prompt-dialog":c.default,"confirm-dialog":l.default,"menu-bar":h.default,"initiative-dialog":u.default,"zoom-slider":r.default,"note-dialog":f.default,"label-dialog":d.default,"dm-settings":x.default},beforeRouteEnter(e,t,i){v.createConnection(e),i()},beforeRouteLeave(e,t,i){v.socket.disconnect(),i()}})],C),t.default=C},9227:function(e,t,i){},"92b1":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("f10f");function o(e){const t=n.gameStore.zoomFactor,i=n.gameStore.panX,o=n.gameStore.panY;return new s.LocalPoint((e.x+i)*t,(e.y+o)*t)}function r(e){return o(new s.GlobalPoint(e,0)).x}function a(e){return o(new s.GlobalPoint(0,e)).y}function l(e){return e*n.gameStore.zoomFactor}function c(e){return e/n.gameStore.unitSize*n.gameStore.gridSize}function u(e){return l(c(e))}function d(e){const t=n.gameStore.zoomFactor,i=n.gameStore.panX,o=n.gameStore.panY;return e instanceof s.LocalPoint?new s.GlobalPoint(e.x/t-i,e.y/t-o):new s.Ray(d(e.origin),e.direction.multiply(1/t),e.tMax)}function h(e){return d(new s.LocalPoint(e,0)).x}function f(e){return d(new s.LocalPoint(0,e)).y}function p(e){return e/n.gameStore.zoomFactor}function g(e){return p(c(e))}t.g2l=o,t.g2lx=r,t.g2ly=a,t.g2lz=l,t.getUnitDistance=c,t.g2lr=u,t.l2g=d,t.l2gx=h,t.l2gy=f,t.l2gz=p,t.l2gr=g,window.g2lx=r,window.g2ly=a},9587:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("2f62"),a=s.__importDefault(i("3b36")),l=s.__importDefault(i("0ddd")),c=i("4a5b"),u=i("0bc6"),d=i("f10f"),h=i("af17");let f=class extends n.default{constructor(){super(...arguments),this.visible={settings:!1,locations:!1}}get IS_DM(){return d.gameStore.IS_DM||d.gameStore.FAKE_PLAYER}get gridColour(){return d.gameStore.gridColour}set gridColour(e){d.gameStore.setGridColour({colour:e,sync:!0})}get fowColour(){return d.gameStore.fowColour}set fowColour(e){d.gameStore.setFOWColour({colour:e,sync:!0})}get rulerColour(){return d.gameStore.rulerColour}set rulerColour(e){d.gameStore.setRulerColour({colour:e,sync:!0})}settingsClick(e){if(e.target.classList.contains("menu-accordion")){e.target.classList.toggle("menu-accordion-active");const t=e.target.nextElementSibling;null!==t&&(t.style.display=""===t.style.display?"block":"")}}changeLocation(e){u.socket.emit("Location.Change",e)}createLocation(){c.getRef("prompt").prompt("New location name:","Create new location").then(e=>{u.socket.emit("Location.New",e)},()=>{})}createNote(){const e={title:"New note",text:"",uuid:c.uuidv4()};d.gameStore.newNote({note:e,sync:!0}),this.openNote(e)}openNote(e){c.getRef("note").open(e)}openDmSettings(){h.EventBus.$emit("DmSettings.Open")}};f=s.__decorate([o.default({components:{"color-picker":a.default,"asset-node":l.default},computed:Object.assign({},r.mapState("game",["locations","assets","notes"]))})],f),t.default=f},"979e":function(e,t,i){"use strict";i.r(t);var s=i("0634"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"98ef":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4aee");let n;var o,r;function a(){return[t.INFINITE,t.INFINITE]}t.INFINITE=-Infinity,function(e){e[e["NEGATIVE"]=-1]="NEGATIVE",e[e["ZERO"]=0]="ZERO",e[e["POSITIVE"]=1]="POSITIVE",e[e["RIGHT_TURN"]=-1]="RIGHT_TURN",e[e["LEFT_TURN"]=1]="LEFT_TURN",e[e["SMALLER"]=-1]="SMALLER",e[e["EQUAL"]=0]="EQUAL",e[e["LARGER"]=1]="LARGER",e[e["CLOCKWISE"]=-1]="CLOCKWISE",e[e["COUNTERCLOCKWISE"]=1]="COUNTERCLOCKWISE",e[e["COLLINEAR"]=0]="COLLINEAR",e[e["COPLANAR"]=0]="COPLANAR",e[e["DEGENERATE"]=0]="DEGENERATE",e[e["ON_NEGATIVE_SIDE"]=-1]="ON_NEGATIVE_SIDE",e[e["ON_ORIENTED_BOUNDARY"]=0]="ON_ORIENTED_BOUNDARY",e[e["ON_POSITIVE_SIDE"]=1]="ON_POSITIVE_SIDE"}(o=t.Sign||(t.Sign={})),function(e){e[e["UNDEFINED"]=-1]="UNDEFINED",e[e["VERTEX_VERTEX"]=0]="VERTEX_VERTEX",e[e["VERTEX_EDGE"]=1]="VERTEX_EDGE",e[e["EDGE_VERTEX"]=2]="EDGE_VERTEX",e[e["EDGE_EDGE"]=3]="EDGE_EDGE"}(r||(r={}));class l{constructor(...e){this.vertices=[],this.neighbours=[null,null,null],this.constraints=[!1,!1,!1],this.uid=l._counter++,this.vertices=e}from(e){return this.vertices=e.vertices.slice(0,e.vertices.length),this.neighbours=e.neighbours.slice(0,e.neighbours.length),this.constraints=e.constraints.slice(0,e.constraints.length),this}get dimension(){return this.vertices.length-1}addVertex(e){void 0===e&&console.log("UNDEFINED HIERE"),this.vertices.push(e),e.triangle=this}isConstrained(e){return this.constraints[e]}reorient(){this.vertices=[this.vertices[1],this.vertices[0],this.vertices[2]].slice(0,this.vertices.length),this.neighbours=[this.neighbours[1],this.neighbours[0],this.neighbours[2]],this.constraints=[this.constraints[1],this.constraints[0],this.constraints[2]]}indexV(e){return this.vertices.indexOf(e)}indexT(e){return this.neighbours.indexOf(e)}isInfinite(e){return void 0===e?this.vertices.includes(n):this.vertices[s.ccw(e)].infinite||this.vertices[s.cw(e)].infinite}contains(e){const t=-this.vertices[1].point[1]*this.vertices[2].point[0]+this.vertices[0].point[1]*(-this.vertices[1].point[0]+this.vertices[2].point[0])+this.vertices[0].point[0]*(this.vertices[1].point[1]-this.vertices[2].point[1])+this.vertices[1].point[0]*this.vertices[2].point[1],i=t<0?-1:1,s=(this.vertices[0].point[1]*this.vertices[2].point[0]-this.vertices[0].point[0]*this.vertices[2].point[1]+(this.vertices[2].point[1]-this.vertices[0].point[1])*e[0]+(this.vertices[0].point[0]-this.vertices[2].point[0])*e[1])*i;if(s<0)return!1;const n=(this.vertices[0].point[0]*this.vertices[1].point[1]-this.vertices[0].point[1]*this.vertices[1].point[0]+(this.vertices[0].point[1]-this.vertices[1].point[1])*e[0]+(this.vertices[1].point[0]-this.vertices[0].point[0])*e[1])*i;return n>0&&s+nt!==e)}setAdjacency(e,t,i,s){e.neighbours[t]=i,i.neighbours[s]=e}get finiteVertex(){return this.vertices[1]}get infiniteVertex(){const e=new c(a());return e.infinite=!0,e}get finiteEdge(){if(this.dimension<1)throw new Error("aspo");const e=new d(this);while(e.valid)e.next();return e.collect()}insertDimUp(e=new c,t=!0){const i=this.createVertex();let s,n;switch(this.dimension++,this.dimension){case 0:s=this.triangles[0],n=new l(i),this.triangles.push(n),this.setAdjacency(s,0,n,0),i.triangle=n;break;case 1:case 2:{const o=[],r=this.triangles.slice(0,this.triangles.length);for(const t of r){const s=(new l).from(t);this.triangles.push(s),t.vertices[this.dimension]=i,s.vertices[this.dimension]=e,this.setAdjacency(t,this.dimension,s,this.dimension),t.vertices.includes(e)&&o.push(s)}for(const e of r){const t=e.neighbours[this.dimension];for(let i=0;ie.center.center().get(r)0){if(i=!0,s=e.tMax=d.min,n=d.max,0===o||t)break;r=a[--o]}else c[u.dimension]?(a[o++]=r+1,r=u.secondChildOffset):(a[o++]=u.secondChildOffset,r++);else{if(0===o)break;r=a[--o]}}return{hit:i,intersect:e.get(s),tMin:s,tMax:n}}compact(){this.offset=0,null!==this.root&&this.flatten(this.root)}flatten(e){const t=this.offset,i=this.offset++;if(0===e.nPrimitives){this.flatten(e.children[0]);const i=this.flatten(e.children[1]);this.nodes[t]={bbox:e.bbox,dimension:e.dimension,nPrimitives:0,secondChildOffset:i}}else this.nodes[t]={bbox:e.bbox,primitivesOffset:e.firstPrimOffset,nPrimitives:e.nPrimitives};return i}createLeaf(e,t,i,s){const n=this.orderedPrims.length;for(let o=e;o{i(t=>{t.owned=e.data.owned,t.joined=e.data.joined})}).catch(e=>{i(t=>{t.error=e.message})})}createRoom(e){n.default.post("/api/rooms",{name:this.newSessionName}).then(e=>{this.$router.push(`/game/${a.coreStore.username}/${this.newSessionName}`)}).catch(e=>{this.error=e.message})}};l=s.__decorate([r.default],l),t.default=l},a535:function(e,t,i){"use strict";i.r(t);var s=i("e06e"),n=i("f30c");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("223d");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"1883e207",null);t["default"]=a.exports},a68b:function(e,t,i){"use strict";i.r(t);var s=i("308b"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},a7b3:function(e,t,i){"use strict";var s=i("6542"),n=i.n(s);n.a},a83f:function(e,t,i){"use strict";var s=i("0525"),n=i.n(s);n.a},a912:function(e,t,i){},aa69:function(e,t,i){"use strict";i.r(t);var s=i("0cf7"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},af17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026"));t.EventBus=new n.default},b0ac:function(e,t,i){"use strict";i.r(t);var s=i("a474"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b0c0:function(e,t,i){},b2ed:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("c266"),n=i("f10f"),o=i("92b1"),r=i("5a5c");class a extends s.BaseRect{constructor(e,t,i,s,n,o){super(e,t,i,s,n,o),this.type="rect"}asDict(){return super.getBaseDict()}draw(e){super.draw(e),"fog"===this.fillColour?e.fillStyle=r.getFogColour():e.fillStyle=this.fillColour;const t=n.gameStore.zoomFactor,i=o.g2l(this.refPoint);e.fillRect(i.x,i.y,this.w*t,this.h*t),"rgba(0, 0, 0, 0)"!==this.strokeColour&&(e.strokeStyle=this.strokeColour,e.lineWidth=5,e.strokeRect(i.x,i.y,this.w*t,this.h*t))}}t.Rect=a},b599:function(e,t,i){},b6bc:function(e,t,i){"use strict";i.r(t);var s=i("5394"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b809:function(e,t,i){"use strict";i.r(t);var s=i("ca56"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b906:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("bab4"),o=i("6f92"),r=i("d1ec"),a=i("f10f"),l=i("92b1"),c=i("cee3");class u extends n.Layer{constructor(){super(...arguments),this.isVisionLayer=!0}draw(){if(!this.valid){const t=this.ctx;if(!a.gameStore.fowLOS||r.Settings.skipPlayerFOW)return t.clearRect(0,0,this.canvas.width,this.canvas.height),void(this.valid=!0);t.clearRect(0,0,this.canvas.width,this.canvas.height);const i=t.globalCompositeOperation;t.fillStyle="rgba(0, 0, 0, 1)",a.gameStore.IS_DM||super.draw(!a.gameStore.fullFOW);const n=t.canvas.width+t.canvas.height;for(const u of a.gameStore.activeTokens){const i=o.layerManager.UUIDMap.get(u);if(void 0===i)continue;const d=i.center(),h=l.g2l(d);if("bvh"===a.gameStore.visionMode){t.beginPath();let e=-1;for(let i=0;i<2*Math.PI;i+=r.Settings.angleSteps/2/180*Math.PI){const o=Math.cos(i),r=Math.sin(i),c=new s.Ray(d,new s.Vector(o,r)),u=a.gameStore.BV.intersect(c);u.hit?(-1!==e&&(t.arc(h.x,h.y,n,e,i),e=-1),t.lineTo(l.g2lx(u.intersect.x),l.g2ly(u.intersect.y))):-1===e&&(t.lineTo(h.x+n*o,h.y+n*r),e=i)}-1!==e?t.arc(h.x,h.y,n,e,2*Math.PI):t.closePath(),t.fill()}else{{const e=t.createRadialGradient(h.x,h.y,l.g2lr(a.gameStore.visionRangeMin),h.x,h.y,l.g2lr(a.gameStore.visionRangeMax));e.addColorStop(0,"rgba(0, 0, 0, 1)"),e.addColorStop(1,"rgba(0, 0, 0, 0)"),t.fillStyle=e}try{const s=c.computeVisibility(i.center(),"vision");t.beginPath(),t.moveTo(l.g2lx(s[0][0]),l.g2ly(s[0][1]));for(const e of s)t.lineTo(l.g2lx(e[0]),l.g2ly(e[1]));t.closePath(),t.fill()}catch(e){}}}a.gameStore.IS_DM&&super.draw(!a.gameStore.fullFOW),t.globalCompositeOperation=i}}}t.FOWPlayersLayer=u},bab4:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("0bc6"),n=i("af17"),o=i("6f92"),r=i("206a"),a=i("f10f"),l=i("92b1");class c{constructor(e,t){this.selectable=!1,this.playerEditable=!1,this.isVisionLayer=!1,this.valid=!1,this.shapes=[],this.selection=[],this.selectionColor="#CC0000",this.selectionWidth=2,this.canvas=e,this.name=t,this.width=e.width,this.height=e.height,this.ctx=e.getContext("2d")}invalidate(e){this.valid=!1,e||o.layerManager.invalidateLight()}addShape(e,t,i,n=!0){void 0===i&&(i=!1),e.layer=this.name,this.shapes.push(e),o.layerManager.UUIDMap.set(e.uuid,e),e.checkVisionSources(n),e.setMovementBlock(e.movementObstruction,n),e.ownedBy(a.gameStore.username)&&e.isToken&&a.gameStore.ownedtokens.push(e.uuid),e.annotation.length&&a.gameStore.annotations.push(e.uuid),t&&s.socket.emit("Shape.Add",{shape:e.asDict(),temporary:i}),n&&this.invalidate(!t)}setShapes(e){for(const t of e){const e=r.createShapeFromDict(t);if(void 0===e)return void console.log(`Shape with unknown type ${t.type_} could not be added`);this.addShape(e,!1,!1,!1)}this.clearSelection(),this.invalidate(!1)}removeShape(e,t,i){void 0===i&&(i=!1),this.shapes.splice(this.shapes.indexOf(e),1),t&&s.socket.emit("Shape.Remove",{shape:e.asDict(),temporary:i});const n=a.gameStore.visionSources.findIndex(t=>t.shape===e.uuid),r=a.gameStore.visionBlockers.findIndex(t=>t===e.uuid),l=a.gameStore.movementblockers.findIndex(t=>t===e.uuid),c=a.gameStore.annotations.findIndex(t=>t===e.uuid);n>=0&&a.gameStore.visionSources.splice(n,1),r>=0&&a.gameStore.visionBlockers.splice(r,1),l>=0&&a.gameStore.movementblockers.splice(l,1),c>=0&&a.gameStore.annotations.splice(c,1);const u=a.gameStore.annotations.indexOf(e.uuid);u>=0&&a.gameStore.annotations.splice(u,1);const d=a.gameStore.ownedtokens.indexOf(e.uuid);d>=0&&a.gameStore.ownedtokens.splice(d,1),o.layerManager.UUIDMap.delete(e.uuid);const h=this.selection.indexOf(e);h>=0&&this.selection.splice(h,1),r>=0&&a.gameStore.recalculateVision(),l>=0&&a.gameStore.recalculateMovement(),this.invalidate(!t)}clear(){this.ctx.clearRect(0,0,this.width,this.height)}clearSelection(){this.selection=[],n.EventBus.$emit("SelectionInfo.Shape.Set",null)}draw(e){if(!this.valid){const t=this.ctx,i=t.globalCompositeOperation;e=void 0===e||e,e&&this.clear();const s=this;if(this.shapes.forEach(e=>{e.options.has("skipDraw")&&e.options.get("skipDraw")||void 0!==o.layerManager.getLayer()&&e.visibleInCanvas(s.canvas)&&("fow"===s.name&&e.visionObstruction&&o.layerManager.getLayer().name!==s.name||e.drawAuras(t))}),this.shapes.forEach(e=>{e.options.has("skipDraw")&&e.options.get("skipDraw")||0===e.labels.length&&a.gameStore.filterNoLabel||e.labels.length&&a.gameStore.labelFilters.length&&!e.labels.some(e=>a.gameStore.labelFilters.includes(e.uuid))||void 0!==o.layerManager.getLayer()&&e.visibleInCanvas(s.canvas)&&("fow"===s.name&&e.visionObstruction&&o.layerManager.getLayer().name!==s.name||e.draw(t))}),null!=this.selection){t.fillStyle=this.selectionColor,t.strokeStyle=this.selectionColor,t.lineWidth=this.selectionWidth;const e=a.gameStore.zoomFactor;this.selection.forEach(i=>{t.globalCompositeOperation=i.globalCompositeOperation;const s=i.getBoundingBox();t.strokeRect(l.g2lx(s.topLeft.x),l.g2ly(s.topLeft.y),s.w*e,s.h*e);for(const e of i.points)t.beginPath(),t.arc(l.g2lx(e[0]),l.g2ly(e[1]),3,0,2*Math.PI),t.fill();t.beginPath(),t.moveTo(l.g2lx(i.points[0][0]),l.g2ly(i.points[0][1]));for(let e=1;e<=i.points.length;e++){const s=i.points[e%i.points.length];t.lineTo(l.g2lx(s[0]),l.g2ly(s[1]))}t.stroke()})}t.globalCompositeOperation=i,this.valid=!0}}moveShapeOrder(e,t,i){const n=this.shapes.indexOf(e);n!==t&&(this.shapes.splice(n,1),this.shapes.splice(t,0,e),i&&s.socket.emit("Shape.Order.Set",{shape:e.asDict(),index:t}),this.invalidate(!0))}}t.Layer=c},bb17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("f10f"),n=i("92b1"),o=i("5a5c");function r(e){if(!e.target||!e.target.tagName||"CANVAS"!==e.target.tagName)return;let t;t=-1*Math.sign(e.deltaY),s.gameStore.updateZoom({newZoomDisplay:s.gameStore.zoomDisplay-.1*t,zoomLocation:n.l2g(o.getMouse(e))})}t.scrollZoom=r},bea6:function(e,t,i){"use strict";i.r(t);var s=i("e8bb"),n=i("b6bc");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("e3f5"),i("99ea");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"dca395d6",null);t["default"]=a.exports},c106:function(e,t,i){},c159:function(e,t,i){},c266:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("f10f"),a=i("2838"),l=i("92b1");class c extends o.Shape{constructor(e,t,i,s,n,o){super(e,s,n,o),this.w=t,this.h=i}getBaseDict(){return Object.assign(super.getBaseDict(),{width:this.w,height:this.h})}getBoundingBox(){return new n.BoundingRect(this.refPoint,this.w,this.h)}get points(){if(0===this.w||0===this.h)return[[this.refPoint.x,this.refPoint.y]];const e=this.refPoint.add(new s.Vector(0,this.h)),t=this.refPoint.add(new s.Vector(this.w,this.h)),i=this.refPoint.add(new s.Vector(this.w,0));return[[this.refPoint.x,this.refPoint.y],[e.x,e.y],[t.x,t.y],[i.x,i.y]]}contains(e){return this.refPoint.x<=e.x&&this.refPoint.x+this.w>=e.x&&this.refPoint.y<=e.y&&this.refPoint.y+this.h>=e.y}center(e){if(void 0===e)return this.refPoint.add(new s.Vector(this.w/2,this.h/2));this.refPoint=new s.GlobalPoint(e.x-this.w/2,e.y-this.h/2)}visibleInCanvas(e){if(super.visibleInCanvas(e))return!0;const t=!(l.g2lx(this.refPoint.x)>e.width||l.g2ly(this.refPoint.y)>e.height||l.g2lx(this.refPoint.x+this.w)<0||l.g2ly(this.refPoint.y+this.h)<0);return!!t}snapToGrid(){const e=r.gameStore.gridSize,t=this.center(),i=t.x,n=t.y;let o,l;o=this.w/e%2===0?Math.round(i/e)*e-this.w/2:(Math.round((i+e/2)/e)-.5)*e-this.w/2,l=this.h/e%2===0?Math.round(n/e)*e-this.h/2:(Math.round((n+e/2)/e)-.5)*e-this.h/2;const c=a.calculateDelta(new s.Vector(o-this.refPoint.x,l-this.refPoint.y),this);this.refPoint=this.refPoint.add(c),this.invalidate(!1)}resizeToGrid(){const e=r.gameStore.gridSize;this.refPoint=new s.GlobalPoint(Math.round(this.refPoint.x/e)*e,Math.round(this.refPoint.y/e)*e),this.w=Math.max(Math.round(this.w/e)*e,e),this.h=Math.max(Math.round(this.h/e)*e,e),this.invalidate(!1)}resize(e,t){const i=r.gameStore.zoomFactor;switch(e){case 0:this.w=l.g2lx(this.refPoint.x)+this.w*i-t.x,this.h=l.g2ly(this.refPoint.y)+this.h*i-t.y,this.refPoint=l.l2g(t);break;case 1:this.w=l.g2lx(this.refPoint.x)+this.w*i-t.x,this.h=t.y-l.g2ly(this.refPoint.y),this.refPoint=new s.GlobalPoint(l.l2gx(t.x),this.refPoint.y);break;case 2:this.w=t.x-l.g2lx(this.refPoint.x),this.h=t.y-l.g2ly(this.refPoint.y);break;case 3:this.w=t.x-l.g2lx(this.refPoint.x),this.h=l.g2ly(this.refPoint.y)+this.h*i-t.y,this.refPoint=new s.GlobalPoint(this.refPoint.x,l.l2gy(t.y));break}this.w/=i,this.h/=i,this.w<0&&(this.refPoint=this.refPoint.add(new s.Vector(this.w,0)),this.w=Math.abs(this.w)),this.h<0&&(this.refPoint=this.refPoint.add(new s.Vector(0,this.h)),this.h=Math.abs(this.h))}}t.BaseRect=c},c277:function(e,t,i){"use strict";i.r(t);var s=i("22bd"),n=i("e27a");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},c31c:function(e,t,i){},c5ff:function(e,t,i){},c6b4:function(e,t,i){"use strict";i.r(t);var s=i("8e60"),n=i("b0ac");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("d767");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"61eb1455",null);t["default"]=a.exports},c969:function(e,t,i){"use strict";var s=i("3a20"),n=i.n(s);n.a},c9a2:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"AssetManager"}},[i("div",{attrs:{id:"titlebar"}},[e._v("Asset Manager")]),i("div",{attrs:{id:"main"}},[i("div",{attrs:{id:"assets"},on:{dragover:function(t){return t.preventDefault(),e.moveDrag(t)},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.stopDrag(t,e.currentFolder)}}},[i("div",{attrs:{id:"breadcrumbs"}},[i("div",[e._v("/")]),e._l(e.path,function(t){return i("div",{key:t},[e._v(e._s(e.idMap.get(t).name))])})],2),i("div",{attrs:{id:"actionbar"}},[i("input",{attrs:{id:"files",type:"file",multiple:"",hidden:""},on:{change:function(t){return e.upload()}}}),i("div",{attrs:{title:"Create folder"},on:{click:e.createDirectory}},[i("i",{staticClass:"fas fa-plus-square"})]),i("div",{attrs:{title:"Upload files"},on:{click:e.prepareUpload}},[i("i",{staticClass:"fas fa-upload"})])]),i("div",{attrs:{id:"explorer"}},[e.path.length?i("div",{staticClass:"inode folder",on:{dblclick:function(t){return e.changeDirectory(-1)},dragover:function(t){return t.preventDefault(),e.moveDrag(t)},dragleave:function(t){return t.preventDefault(),e.leaveDrag(t)},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.stopDrag(t,e.parentFolder)}}},[i("i",{staticClass:"fas fa-folder",staticStyle:{"font-size":"50px"}}),i("div",{staticClass:"title"},[e._v("..")])]):e._e(),e._l(e.folders,function(t){return i("div",{key:t,staticClass:"inode folder",class:{"inode-selected":e.selected.includes(t)},attrs:{draggable:"true"},on:{click:function(i){return e.select(i,t)},dblclick:function(i){return e.changeDirectory(t)},contextmenu:function(i){return i.preventDefault(),e.$refs.cm.open(i,t)},dragstart:function(i){return e.startDrag(i,t)},dragover:function(t){return t.preventDefault(),e.moveDrag(t)},dragleave:function(t){return t.preventDefault(),e.leaveDrag(t)},drop:function(i){return i.preventDefault(),i.stopPropagation(),e.stopDrag(i,t)}}},[i("i",{staticClass:"fas fa-folder",staticStyle:{"font-size":"50px"}}),i("div",{staticClass:"title"},[e._v(e._s(e.idMap.get(t).name))])])}),e._l(e.files,function(t){return i("div",{key:t,staticClass:"inode file",class:{"inode-selected":e.selected.includes(t)},attrs:{draggable:"true"},on:{click:function(i){return e.select(i,t)},contextmenu:function(i){return i.preventDefault(),e.$refs.cm.open(i,t)},dragstart:function(i){return e.startDrag(i,t)}}},[i("img",{attrs:{src:"/static/assets/"+e.idMap.get(t).file_hash,width:"50"}}),i("div",{staticClass:"title"},[e._v(e._s(e.idMap.get(t).name))])])})],2)]),e.firstSelectedFile?i("div",{attrs:{id:"asset-details"}},[i("div",{attrs:{id:"asset-detail-title"}},[e._v(e._s(e.firstSelectedFile.name))]),i("img",{attrs:{src:"/static/assets/"+e.firstSelectedFile.file_hash}})]):e._e()]),i("AssetContextMenu",{ref:"cm"}),i("Prompt",{ref:"prompt"}),i("ConfirmDialog",{ref:"confirm"})],1)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},ca56:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("1c76")),a=i("0bc6"),l=i("af17"),c=i("f10f"),u=i("92b1");let d=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.x=0,this.y=0}get IS_DM(){return c.gameStore.IS_DM}open(e){this.visible=!0,this.x=e.pageX,this.y=e.pageY,this.$nextTick(()=>this.$children[0].$el.focus())}close(){this.visible=!1}bringPlayers(){c.gameStore.IS_DM&&(a.socket.emit("Players.Bring",{x:u.l2gx(this.x),y:u.l2gy(this.y)}),this.close())}createToken(){this.$parent.$parent.$refs.createtokendialog.open(this.x,this.y),this.close()}showInitiative(){l.EventBus.$emit("Initiative.Show"),this.close()}};d=s.__decorate([o.default({components:{ContextMenu:r.default}})],d),t.default=d},cad7:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("cc67");r.default.registerHooks(["beforeRouteEnter"]);let l=class extends o.default{beforeRouteEnter(e,t,i){n.default.post("/api/logout").then(()=>{a.coreStore.setAuthenticated(!1),a.coreStore.setUsername(""),i({path:"/auth/login"})})}};l=s.__decorate([r.default({})],l),t.default=l},cc67:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=i("6fc5"),o=i("3a0b");let r=class extends n.VuexModule{constructor(){super(...arguments),this.authenticated=!1,this.initialized=!1,this.username=""}setAuthenticated(e){this.authenticated=e}setInitialized(e){this.initialized=e}setUsername(e){this.username=e}};s.__decorate([n.Mutation],r.prototype,"setAuthenticated",null),s.__decorate([n.Mutation],r.prototype,"setInitialized",null),s.__decorate([n.Mutation],r.prototype,"setUsername",null),r=s.__decorate([n.Module({dynamic:!0,store:o.rootStore,name:"core"})],r),t.coreStore=n.getModule(r)},cd49:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("3dfd")),r=i("5f86"),a=i("3a0b");n.default.config.productionTip=!1,n.default.config.devtools=!0,n.default.config.performance=!0,t.app=new n.default({router:r.router,store:a.rootStore,render:e=>e(o.default)}).$mount("#app"),window.app=t.app},cd76:function(e,t,i){},cde6:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9"));let r=class extends n.default{};r=s.__decorate([o.default({props:["visible","left","top"]})],r),t.default=r},ce4c:function(e,t,i){},ce87:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9"));let a=class extends o.default{beforeRouteEnter(e,t,i){n.default.post("/api/invite",{code:e.params.code}).then(e=>{i({path:e.data.sessionUrl})}).catch(e=>{console.error("Invitation code could not be redeemed"),i({path:"/dashboard"})})}};a=s.__decorate([r.default({template:""})],a),t.default=a},cec2:function(e,t,i){"use strict";i.r(t);var s=i("eb57"),n=i("255e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("0584");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"0602c2e6",null);t["default"]=a.exports},cee3:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("f10f"),n=i("1216"),o=i("d6be"),r=i("98ef"),a=i("4aee");function l(e,t,i){void 0===i&&(i=s.gameStore.drawTEContour);const r=[e.x,e.y],a=[],l=o.PA_CDT[t].locate(r,null).loc;return null===l?(console.error("Triangle not found"),[]):(a.push(l.vertices[1].point),l.isConstrained(0)||c(r,l.vertices[2].point,l.vertices[1].point,l,0,a),a.push(l.vertices[2].point),l.isConstrained(1)||c(r,l.vertices[0].point,l.vertices[2].point,l,1,a),a.push(l.vertices[0].point),l.isConstrained(2)||c(r,l.vertices[1].point,l.vertices[0].point,l,2,a),i&&n.drawPolygon(a,"red"),a)}function c(e,t,i,s,n,o){const l=s.neighbours[n],d=l.indexT(s),h=a.ccw(d),f=a.cw(d),p=l.vertices[d],g=l.vertices[f],v=l.vertices[h],m=[l,h],y=[l,f],b=a.orientation(e,i,p.point),_=a.orientation(e,t,p.point);if(b===r.Sign.COUNTERCLOCKWISE)if(m[0].isConstrained(m[1]))i!==g.point&&o.push(u(e,i,p.point,g.point)),_===r.Sign.COUNTERCLOCKWISE&&o.push(u(e,t,p.point,g.point));else{if(_===r.Sign.COUNTERCLOCKWISE)return c(e,t,i,l,h,o);c(e,p.point,i,l,h,o)}if(b!==r.Sign.CLOCKWISE&&_!==r.Sign.COUNTERCLOCKWISE&&o.push(p.point),_===r.Sign.CLOCKWISE)return y[0].isConstrained(y[1])?(b===r.Sign.CLOCKWISE&&o.push(u(e,i,p.point,v.point)),void(t!==v.point&&o.push(u(e,t,p.point,v.point)))):b===r.Sign.CLOCKWISE?c(e,t,i,l,f,o):c(e,t,p.point,l,f,o)}function u(e,t,i,s){const n=(s[1]-i[1])*(t[0]-e[0])-(s[0]-i[0])*(t[1]-e[1]),o=((s[0]-i[0])*(e[1]-i[1])-(s[1]-i[1])*(e[0]-i[0]))/n,r=e[0]+o*(t[0]-e[0]),a=e[1]+o*(t[1]-e[1]);return[r,a]}t.computeVisibility=l},cf8f:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",[e._v("#X")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.xCount,expression:"xCount"}],attrs:{type:"text"},domProps:{value:e.xCount},on:{input:function(t){t.target.composing||(e.xCount=t.target.value)}}}),i("div",[e._v("#Y")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.yCount,expression:"yCount"}],attrs:{type:"text"},domProps:{value:e.yCount},on:{input:function(t){t.target.composing||(e.yCount=t.target.value)}}})]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d065:function(e,t,i){"use strict";i.r(t);var s=i("45fb"),n=i("f8b3");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("514b");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"23de098e",null);t["default"]=a.exports},d19a:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"modal"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"mask",class:{"modal-mask":e.mask,"dialog-mask":!e.mask},on:{click:e.close,dragover:function(t){return t.preventDefault(),e.dragOver(t)}}},[i("div",{ref:"container",staticClass:"modal-container",style:{"background-color":e.colour},on:{click:function(e){e.stopPropagation()}}},[e._t("header",null,{dragStart:e.dragStart,dragEnd:e.dragEnd}),e._t("default")],2)])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d1ec:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{}s.angleSteps=4,s.drawAngleLines=!1,s.drawFirstLightHit=!1,s.skipPlayerFOW=!1,s.skipLightFOW=!1,s.tempFill="fog",t.Settings=s},d30b:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("cc67");let l=class extends o.default{constructor(){super(...arguments),this.username="",this.password="",this.error=""}login(){n.default.post("/api/login",{username:this.username,password:this.password}).then(e=>{a.coreStore.setUsername(this.username),a.coreStore.setAuthenticated(!0),this.$router.push(this.$route.query.redirect||"/")}).catch(e=>{e.response?this.error=e.response.statusText:this.error="Unknown error occured"})}register(){n.default.post("/api/register",{username:this.username,password:this.password}).then(e=>{a.coreStore.setUsername(this.username),a.coreStore.setAuthenticated(!0),this.$router.push(this.$route.query.redirect||"/")}).catch(e=>{e.response?this.error=e.response.statusText:this.error="Unknown error occured"})}focusin(e){if(e.target&&e.target.nextElementSibling){const t=e.target.nextElementSibling;t.style.opacity="0"}}focusout(e){if(e.target&&e.target.nextElementSibling){const t=e.target.nextElementSibling;t.style.opacity="1"}}};l=s.__decorate([r.default],l),t.default=l},d320:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v("Create basic token")])}}])},[i("div",{staticClass:"modal-body"},[i("label",{attrs:{for:"createtokendialog-text"}},[e._v("Text")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.text,expression:"text"}],attrs:{type:"text",id:"createtokendialog-name"},domProps:{value:e.text},on:{input:function(t){t.target.composing||(e.text=t.target.value)}}}),i("label",[e._v("Colours")]),i("div",{staticClass:"colours"},[i("span",[e._v("Fill:")]),i("color-picker",{attrs:{color:e.fillColour},on:{"update:color":function(t){e.fillColour=t}}}),i("span",[e._v("Border:")]),i("color-picker",{attrs:{color:e.borderColour},on:{"update:color":function(t){e.borderColour=t}}})],1),i("canvas",{ref:"canvas",attrs:{width:"100px",height:"100px"}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.submit}},[e._v("Submit")])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d323:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div")},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d588:function(e,t,i){"use strict";i.r(t);var s=i("91df"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},d5df:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("ea6a")),r=i("0bc6"),a=i("8f0a"),l=i("6f92"),c=i("5e7c"),u=i("0180"),d=i("f10f"),h=i("92b1"),f=i("5a5c");let p=class extends o.default{constructor(){super(...arguments),this.name="Ruler",this.active=!1,this.startPoint=null,this.ruler=null,this.text=null}onMouseDown(e){const t=l.layerManager.getLayer("draw");void 0!==t?(this.active=!0,this.startPoint=h.l2g(f.getMouse(e)),this.ruler=new c.Line(this.startPoint,this.startPoint,3,d.gameStore.rulerColour),this.text=new u.Text(this.startPoint.clone(),"","bold 20px serif"),this.ruler.addOwner(d.gameStore.username),this.text.addOwner(d.gameStore.username),t.addShape(this.ruler,!0,!0),t.addShape(this.text,!0,!0)):console.log("No draw layer!")}onMouseMove(e){if(!this.active||null===this.ruler||null===this.startPoint||null===this.text)return;const t=l.layerManager.getLayer("draw");if(void 0===t)return void console.log("No draw layer!");const i=h.l2g(f.getMouse(e));this.ruler.endPoint=i,r.socket.emit("Shape.Update",{shape:this.ruler.asDict(),redraw:!0,temporary:!0});const s=Math.sign(i.x-this.startPoint.x)*Math.sign(i.y-this.startPoint.y),n=Math.abs(i.x-this.startPoint.x),o=Math.abs(i.y-this.startPoint.y),c=Math.round(Math.sqrt(Math.pow(n,2)+Math.pow(o,2))*d.gameStore.unitSize/d.gameStore.gridSize)+" ft",u=Math.atan2(s*o,n),p=Math.min(this.startPoint.x,i.x)+n/2,g=Math.min(this.startPoint.y,i.y)+o/2;this.text.refPoint=new a.GlobalPoint(p,g),this.text.text=c,this.text.angle=u,r.socket.emit("Shape.Update",{shape:this.text.asDict(),redraw:!0,temporary:!0}),t.invalidate(!0)}onMouseUp(e){if(!this.active||null===this.ruler||null===this.startPoint||null===this.text)return;const t=l.layerManager.getLayer("draw");void 0!==t?(this.active=!1,t.removeShape(this.ruler,!0,!0),t.removeShape(this.text,!0,!0),t.invalidate(!0),this.ruler=this.startPoint=this.text=null):console.log("No active layer!")}};p=s.__decorate([n.default],p),t.RulerTool=p},d65f:function(e,t,i){"use strict";i.r(t);var s=i("d19a"),n=i("7e15");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("9e35");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"c2851f0e",null);t["default"]=a.exports},d677:function(e,t,i){"use strict";i.r(t);var s=i("53ec"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},d6be:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("6f92"),n=i("f10f"),o=i("6e4a");function r(e,i=!1){const r=new o.CDT;let a;a="vision"===e?n.gameStore.visionBlockers:n.gameStore.movementblockers;for(const t of a){const e=s.layerManager.UUIDMap.get(t);if(!i||e.visibleInCanvas(s.layerManager.getLayer().canvas))for(let t=0;t{this.shape=e,this.visible=!0}),d.EventBus.$on("EditDialog.AddLabel",e=>{this.visible&&(this.shape.labels.push(f.gameStore.labels[e]),this.updateShape(!0))})}beforeDestroy(){d.EventBus.$off("EditDialog.Open"),d.EventBus.$off("EditDialog.AddLabel")}updated(){this.addEmpty()}addEmpty(){""!==this.shape.owners[this.shape.owners.length-1]&&this.shape.addOwner(""),this.shape.trackers.length&&""===this.shape.trackers[this.shape.trackers.length-1].name&&0===this.shape.trackers[this.shape.trackers.length-1].value||this.shape.trackers.push({uuid:c.uuidv4(),name:"",value:0,maxvalue:0,visible:!1}),this.shape.auras.length&&""===this.shape.auras[this.shape.auras.length-1].name&&0===this.shape.auras[this.shape.auras.length-1].value||this.shape.auras.push({uuid:c.uuidv4(),name:"",value:0,dim:0,visionSource:!1,colour:"rgba(0,0,0,0)",visible:!1})}updateShape(e,t=!1){this.owned&&(u.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:e,temporary:t}),e&&h.layerManager.invalidate(),this.addEmpty())}setToken(e){this.owned&&(this.shape.setIsToken(e.target.checked),this.updateShape(!0))}setVisionBlocker(e){this.owned&&(this.shape.checkVisionSources(),this.updateShape(!0))}setMovementBlocker(e){this.owned&&(this.shape.setMovementBlock(e.target.checked),this.updateShape(!1))}updateAnnotation(e){if(!this.owned)return;const t=""!==this.shape.annotation;this.shape.annotation=e.target.value,""===this.shape.annotation||t?""===this.shape.annotation&&t&&(f.gameStore.annotations.splice(f.gameStore.annotations.findIndex(e=>e===this.shape.uuid)),h.layerManager.hasLayer("draw")&&h.layerManager.getLayer("draw").invalidate(!0)):(f.gameStore.annotations.push(this.shape.uuid),h.layerManager.hasLayer("draw")&&h.layerManager.getLayer("draw").invalidate(!0)),this.updateShape(!1)}updateOwner(e,t){this.owned&&(this.shape.updateOwner(t,e.target.value),this.updateShape(f.gameStore.fowLOS))}removeOwner(e){this.owned&&(this.shape.removeOwner(e),this.updateShape(f.gameStore.fowLOS))}removeTracker(e){this.owned&&(this.shape.trackers=this.shape.trackers.filter(t=>t.uuid!==e),this.updateShape(!1))}removeAura(e){this.owned&&(this.shape.auras=this.shape.auras.filter(t=>t.uuid!==e),this.shape.checkVisionSources(),this.updateShape(!0))}updateAuraVisionSource(e){if(!this.owned)return;e.visionSource=!e.visionSource;const t=f.gameStore.visionSources.findIndex(t=>t.aura===e.uuid);e.visionSource&&-1===t?f.gameStore.visionSources.push({shape:this.shape.uuid,aura:e.uuid}):!e.visionSource&&t>=0&&f.gameStore.visionSources.splice(t,1),this.updateShape(!0)}updateAuraColour(e,t){if(!this.owned)return;const i=h.layerManager.getLayer(this.shape.layer);void 0!==i&&i.invalidate(!e.visionSource)}openLabelManager(){d.EventBus.$emit("LabelManager.Open")}removeLabel(e){this.owned&&(this.shape.labels=this.shape.labels.filter(t=>t.uuid!==e),this.updateShape(!0))}};s.__decorate([r.Prop()],p.prototype,"shape",void 0),p=s.__decorate([o.default({components:{Modal:l.default,"color-picker":a.default}})],p),t.default=p},da7f:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return void 0!==e.getActiveLayer()?i("ContextMenu",{attrs:{visible:e.visible,left:e.x+"px",top:e.y+"px"},on:{close:e.close}},[e.getLayers().length>1?i("li",[e._v("Layer\n "),i("ul",e._l(e.getLayers(),function(t){return i("li",{key:t.name,style:[e.getActiveLayer().name===t.name?{"background-color":"#82c8a0"}:{}],on:{click:function(i){return e.setLayer(t.name)}}},[e._v(e._s(t.name))])}),0)]):e._e(),i("li",{on:{click:e.moveToBack}},[e._v("Move to back")]),i("li",{on:{click:e.moveToFront}},[e._v("Move to front")]),i("li",{on:{click:e.addInitiative}},[e._v(e._s(e.getInitiativeWord())+" initiative")]),i("li",{on:{click:e.openEditDialog}},[e._v("Show properties")])]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},dc37:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f"));let a=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.yes="Yes",this.no="No",this.title="",this.resolve=e=>{},this.reject=()=>{}}confirm(){this.resolve(!0),this.close()}deny(){this.resolve(!1),this.close()}close(){this.reject(),this.visible=!1,this.title=""}open(e,t="yes",i="no"){return this.yes=t,this.no=i,this.title=e,this.visible=!0,this.$nextTick(()=>{this.$refs.confirm.focus()}),new Promise((e,t)=>{this.resolve=e,this.reject=t})}};a=s.__decorate([o.default({components:{Modal:r.default}})],a),t.default=a},dcb4:function(e,t,i){"use strict";var s=i("ce4c"),n=i.n(s);n.a},de21:function(e,t,i){},dec1:function(e,t,i){"use strict";i.r(t);var s=i("cf8f"),n=i("3481");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},df64:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"accordion"},[i("div",{attrs:{id:"header"},on:{click:function(t){return t.preventDefault(),e.toggleDisplay(t)}}},[i("input",{ref:"overall",attrs:{type:"checkbox"},on:{click:function(t){return t.stopPropagation(),e.toggleCategory(t)}}}),i("strong",[e._v(e._s(e.title))]),e.showArrow?[i("span",{directives:[{name:"show",rawName:"v-show",value:e.showArrow&&!e.active,expression:"showArrow && !active"}],staticClass:"down-Arrow"},[e._v("▼")]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.showArrow&&e.active,expression:"showArrow && active"}],staticClass:"up-Arrow"},[e._v("▲")])]:e._e()],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],attrs:{id:"body"}},e._l(e.items,function(t){return i("div",{key:t[0],staticClass:"item",on:{click:function(i){return e.toggleSelection(t[0])}}},[i("input",{attrs:{type:"checkbox"},domProps:{checked:e.selected.includes(t[0])},on:{click:function(e){e.preventDefault()}}}),e._v(" "+e._s(t[1])+"\n ")])}),0)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e06e:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible},on:{close:e.close},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v(e._s(e.title))])}}])},[i("div",{staticClass:"modal-body"},[i("button",{ref:"confirm",on:{click:e.confirm}},[e._v(e._s(e.yes))]),e.no?i("button",{on:{click:e.deny}},[e._v(e._s(e.no))]):e._e()])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e0e8:function(e,t,i){"use strict";i.r(t);var s=i("2380"),n=i("208e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("dcb4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b908e87c",null);t["default"]=a.exports},e0e9:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("1c76")),a=i("5338"),l=i("2d5b"),c=i("4a5b");let u=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.left=0,this.top=0}open(e,t){l.assetStore.selected.includes(t)||c.getComponent().select(e,t),this.visible=!0,this.left=e.pageX,this.top=e.pageY,this.$nextTick(()=>{this.$children[0].$el.focus()})}close(){this.visible=!1}rename(){if(1!==l.assetStore.selected.length)return;const e=l.assetStore.idMap.get(l.assetStore.selected[0]);c.getRef("prompt").prompt("New name:",`Renaming ${e.name}`).then(t=>{a.socket.emit("Asset.Rename",{asset:e.id,name:t}),e.name=t,c.getComponent().$forceUpdate()},()=>{}),this.close()}remove(){0!==l.assetStore.selected.length&&(c.getRef("confirm").open("Are you sure you wish to remove this?").then(e=>{if(e){for(const e of l.assetStore.selected)a.socket.emit("Asset.Remove",e),l.assetStore.files.includes(e)?l.assetStore.files.splice(l.assetStore.files.indexOf(e),1):l.assetStore.folders.splice(l.assetStore.folders.indexOf(e),1);l.assetStore.clearSelected()}},()=>{}),this.close())}};u=s.__decorate([o.default({components:{ContextMenu:r.default}})],u),t.default=u},e27a:function(e,t,i){"use strict";i.r(t);var s=i("2756"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},e3f5:function(e,t,i){"use strict";var s=i("a126"),n=i.n(s);n.a},e4b0:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f")),a=i("4a5b"),l=i("0bc6"),c=i("af17"),u=i("f10f");let d=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.newCategory="",this.newName="",this.search=""}mounted(){c.EventBus.$on("LabelManager.Open",()=>{this.visible=!0,this.newCategory="",this.newName="",this.$nextTick(()=>this.$refs.search.focus())})}beforeDestroy(){c.EventBus.$off("LabelManager.Open")}get labels(){const e={"":[]};for(const t of Object.keys(u.gameStore.labels)){const i=u.gameStore.labels[t];this.search.length&&`${i.category.toLowerCase()}${i.name.toLowerCase()}`.search(this.search.toLowerCase())<0||i.user===u.gameStore.username&&(i.category?(i.category in e||(e[i.category]=[]),e[i.category].push(i),e[i.category].sort((e,t)=>e.name.localeCompare(t.name))):e[""].push(i))}return e}get categories(){return Object.keys(this.labels).sort()}selectLabel(e){c.EventBus.$emit("EditDialog.AddLabel",e),this.visible=!1}toggleVisibility(e){e.visible=!e.visible,l.socket.emit("Label.Visibility.Set",{uuid:e.uuid,visible:e.visible})}addLabel(){if(""===this.newName)return;const e={uuid:a.uuidv4(),category:this.newCategory,name:this.newName,visible:!1,user:u.gameStore.username};u.gameStore.addLabel(e),l.socket.emit("Label.Add",e),this.newCategory="",this.newName=""}deleteLabel(e){u.gameStore.deleteLabel({uuid:e,user:u.gameStore.username}),l.socket.emit("Label.Delete",e)}};d=s.__decorate([o.default({components:{Modal:r.default}})],d),t.default=d},e4ea:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("92b1"),o=i("5a5c"),r=i("8db6"),a=i("2469");class l extends a.Shape{constructor(e,t=[],i,s,n){super(e,i,s,n),this.type="polygon",this._vertices=[],this._vertices=t}get refPoint(){return this._refPoint}set refPoint(e){const t=e.subtract(this._refPoint);this._refPoint=e;for(let i=0;i({x:e.x,y:e.y}))})}fromDict(e){super.fromDict(e),this._vertices=e.vertices.map(e=>new s.GlobalPoint(e.x,e.y))}get points(){return this.vertices.map(e=>[e.x,e.y])}draw(e){super.draw(e),e.lineCap="round",e.lineJoin="round","fog"===this.strokeColour?e.strokeStyle=o.getFogColour():2===this.vertices.length?e.strokeStyle=this.fillColour:e.strokeStyle=this.strokeColour,"fog"===this.fillColour?e.fillStyle=o.getFogColour():e.fillStyle=this.fillColour,e.lineWidth=n.g2lz(2),e.beginPath(),e.moveTo(n.g2lx(this.vertices[0].x),n.g2ly(this.vertices[0].y));for(let t=1;t<=this.vertices.length;t++){const i=this.vertices[t%this.vertices.length];e.lineTo(n.g2lx(i.x),n.g2ly(i.y))}e.fill(),e.stroke()}contains(e){return this.getBoundingBox().contains(e)}center(e){return this.getBoundingBox().center()}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this._refPoint=n.l2g(t):this._vertices[e-1]=n.l2g(t)}getBoundingBox(){let e=this.refPoint.x,t=this.refPoint.x,i=this.refPoint.y,n=this.refPoint.y;for(const s of this._vertices)s.xt&&(t=s.x),s.yn&&(n=s.y);return new r.BoundingRect(new s.GlobalPoint(e,i),t-e,n-i)}}t.Polygon=l},e5ca:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.IS_DM,expression:"IS_DM"}]},[e._v("Mode")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.IS_DM,expression:"IS_DM"}],staticClass:"selectgroup"},e._l(e.modes,function(t){return i("div",{key:t,staticClass:"option",class:{"option-selected":e.modeSelect===t},on:{click:function(i){e.modeSelect=t}}},[e._v(e._s(t))])}),0),i("div",[e._v("Shape")]),i("div",{staticClass:"selectgroup"},e._l(e.shapes,function(t){return i("div",{key:t,staticClass:"option",class:{"option-selected":e.shapeSelect===t},on:{click:function(i){e.shapeSelect=t}}},[i("i",{staticClass:"fas",class:"fa-"+t})])}),0),i("div",[e._v("Colours")]),i("div",{staticClass:"selectgroup"},[i("color-picker",{staticClass:"option",attrs:{color:e.fillColour},on:{"update:color":function(t){e.fillColour=t}}}),i("color-picker",{staticClass:"option",attrs:{color:e.borderColour},on:{"update:color":function(t){e.borderColour=t}}})],1),i("div",{directives:[{name:"show",rawName:"v-show",value:"paint-brush"===e.shapeSelect,expression:"shapeSelect === 'paint-brush'"}]},[e._v("Brush size")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.brushSize,expression:"brushSize"},{name:"show",rawName:"v-show",value:"paint-brush"===e.shapeSelect,expression:"shapeSelect === 'paint-brush'"}],staticStyle:{"max-width":"100px"},attrs:{type:"text"},domProps:{value:e.brushSize},on:{input:function(t){t.target.composing||(e.brushSize=t.target.value)}}})]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e6c4:function(e,t,i){"use strict";var s=i("839d"),n=i.n(s);n.a},e756:function(e,t,i){},e8bb:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",{attrs:{id:"accordion-container"}},e._l(e.categories,function(t){return i("accordion",{key:t,attrs:{title:""===t?"no category":t,showArrow:!1,items:e.labels[t],initialValues:e.initalValues[t]},on:{selectionupdate:e.updateSelection}})}),1)]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e914:function(e,t,i){"use strict";i.r(t);var s=i("c9a2"),n=i("aa69");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("78c7");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},e94f:function(e,t,i){"use strict";i.r(t);var s=i("7aaa"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},ea6a:function(e,t,i){"use strict";i.r(t);var s=i("d323"),n=i("6465");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("12d3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},ea7c:function(e,t,i){"use strict";var s=i("2dad"),n=i.n(s);n.a},eb57:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible},on:{close:e.close},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v(e._s(e.title))])}}])},[i("div",{staticClass:"modal-body"},[e._v("\n "+e._s(e.question)+"\n "),i("input",{directives:[{name:"model",rawName:"v-model",value:e.answer,expression:"answer"}],ref:"answer",attrs:{type:"text"},domProps:{value:e.answer},on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.submit(t)},input:function(t){t.target.composing||(e.answer=t.target.value)}}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.submit}},[e._v("Submit")])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},ebb9:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("310e"));n.default.component("draggable",r.default);const a=s.__importDefault(i("d65f")),l=i("4a5b"),c=i("0bc6"),u=i("af17"),d=i("6f92"),h=i("f10f"),f=i("9cb7");let p=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.data=[],this.currentActor=null,this.roundCounter=0,this.visionLock=!1,this.cameraLock=!1,this._activeTokens=[]}mounted(){u.EventBus.$on("Initiative.Clear",this.clear),u.EventBus.$on("Initiative.Remove",e=>this.removeInitiative(e)),u.EventBus.$on("Initiative.Show",()=>this.visible=!0),c.socket.on("Initiative.Set",e=>{this.data=e}),c.socket.on("Initiative.Turn.Set",e=>this.setTurn(e)),c.socket.on("Initiative.Turn.Update",e=>this.updateTurn(e,!1)),c.socket.on("Initiative.Round.Update",e=>this.setRound(e,!1)),c.socket.on("Initiative.Effect.New",e=>{const t=this.getActor(e.actor);void 0!==t&&this.createEffect(t,e.effect,!1)}),c.socket.on("Initiative.Effect.Update",e=>this.updateEffect(e.actor,e.effect,!1))}beforeDestroy(){u.EventBus.$off("Initiative.Clear"),u.EventBus.$off("Initiative.Remove"),u.EventBus.$off("Initiative.Show")}clear(){this.data=[],this.currentActor=null}getActor(e){return this.data.find(t=>t.uuid===e)}contains(e){return this.data.some(t=>t.uuid===e)}owns(e){if(h.gameStore.IS_DM)return!0;const t=d.layerManager.UUIDMap.get(e.uuid);return void 0!==t&&t.owners.includes(h.gameStore.username)}getDefaultEffect(){return{uuid:l.uuidv4(),name:"New Effect",turns:10}}fakeSetData(e){e.setData("Hack","")}syncInitiative(e){c.socket.emit("Initiative.Update",e)}addInitiative(e){const t=this.data.findIndex(t=>t.uuid===e.uuid);t>=0||(void 0===e.initiative&&(e.initiative=0),this.syncInitiative(e))}removeInitiative(e){const t=this.data.findIndex(t=>t.uuid===e);if(t<0||this.data[t].group)return;this.syncInitiative({uuid:e});const i=d.layerManager.UUIDMap.get(e);void 0!==i&&i.showHighlight&&(i.showHighlight=!1,d.layerManager.getLayer(i.layer).invalidate(!0))}updateOrder(){h.gameStore.IS_DM&&c.socket.emit("Initiative.Set",this.data.map(e=>e.uuid))}updateTurn(e,t){if(!h.gameStore.IS_DM&&t)return;this.currentActor=e;const i=this.data.find(t=>t.uuid===e);if(void 0!==i){if(i.effects)for(let e=i.effects.length-1;e>=0;e--)i.effects[e].turns<=0?i.effects.splice(e,1):i.effects[e].turns--;if(this.visionLock&&(null!==e&&h.gameStore.ownedtokens.includes(e)?h.gameStore.setActiveTokens([e]):h.gameStore.setActiveTokens([])),this.cameraLock&&null!==e){const t=d.layerManager.UUIDMap.get(e);void 0!==t&&t.ownedBy()&&f.gameManager.setCenterPosition(t.center())}t&&c.socket.emit("Initiative.Turn.Update",e)}}setRound(e,t){!h.gameStore.IS_DM&&t||(this.roundCounter=e,t&&c.socket.emit("Initiative.Round.Update",e))}setTurn(e){this.currentActor=e}nextTurn(){if(!h.gameStore.IS_DM)return;const e=this.data,t=e[(e.findIndex(e=>e.uuid===this.currentActor)+1)%e.length];this.data[0].uuid===t.uuid&&this.setRound(this.roundCounter+1,!0),this.updateTurn(t.uuid,!0)}toggleHighlight(e,t){const i=d.layerManager.UUIDMap.get(e.uuid);void 0!==i&&(i.showHighlight=t,d.layerManager.getLayer(i.layer).invalidate(!0))}toggleOption(e,t){this.owns(e)&&(e[t]=!e[t],this.syncInitiative(e))}createEffect(e,t,i){this.owns(e)&&(e.effects.push(t),i&&c.socket.emit("Initiative.Effect.New",{actor:e.uuid,effect:t}))}syncEffect(e,t){this.owns(e)&&c.socket.emit("Initiative.Effect.Update",{actor:e.uuid,effect:t})}updateEffect(e,t,i){const s=this.data.find(t=>t.uuid===e);if(void 0===s)return;const n=s.effects.findIndex(e=>e.uuid===t.uuid);void 0!==n&&(s.effects[n]=t,i?this.syncEffect(s,t):this.$forceUpdate())}toggleVisionLock(){this.visionLock=!this.visionLock,this.visionLock?(this._activeTokens=[...h.gameStore._activeTokens],null!==this.currentActor&&h.gameStore.ownedtokens.includes(this.currentActor)&&h.gameStore.setActiveTokens([this.currentActor])):h.gameStore.setActiveTokens(this._activeTokens)}};p=s.__decorate([o.default({components:{Modal:a.default,draggable:r.default}})],p),t.default=p},ee96:function(e,t,i){},f086:function(e,t,i){"use strict";i.r(t);var s=i("a112"),n=i("7ba5");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("01be");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"674cf937",null);t["default"]=a.exports},f10f:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=i("6fc5"),r=i("0bc6"),a=i("2b48"),l=i("6f92"),c=i("92b1"),u=i("5a5c"),d=i("99e3"),h=i("d6be"),f=i("3a0b");let p=class extends o.VuexModule{constructor(){super(...arguments),this.layers=[],this.selectedLayerIndex=-1,this.boardInitialized=!1,this.locations=[],this.assets={},this.notes=[],this.IS_DM=!1,this.FAKE_PLAYER=!1,this.isLocked=!1,this.gridSize=50,this.username="",this.roomName="",this.roomCreator="",this.invitationCode="",this.players=[],this.gridColour="rgba(0, 0, 0, 1)",this.fowColour="rgba(0, 0, 0, 1)",this.rulerColour="rgba(255, 0, 0, 1)",this.panX=0,this.panY=0,this.zoomDisplay=.5,this.unitSize=5,this.useGrid=!0,this.fullFOW=!1,this.fowOpacity=.3,this.fowLOS=!1,this.locationName="",this.visionSources=[],this.visionBlockers=[],this.annotations=[],this.movementblockers=[],this.ownedtokens=[],this._activeTokens=[],this.BV=Object.freeze(new d.BoundingVolume([])),this.visionMode="bvh",this.drawTEContour=!1,this.visionRangeMin=1640,this.visionRangeMax=3281,this.clipboard=[],this.labels={},this.filterNoLabel=!1,this.labelFilters=[],this.showUI=!0}get selectedLayer(){return this.layers[this.selectedLayerIndex]}get zoomFactor(){return u.zoomValue(this.zoomDisplay)}get activeTokens(){return 0===this._activeTokens.length?this.ownedtokens:this._activeTokens}setFakePlayer(e){this.FAKE_PLAYER=e,this.IS_DM=!e,l.layerManager.invalidate()}setZoomDisplay(e){e!==this.zoomDisplay&&(e<0&&(e=0),e>1&&(e=1),this.zoomDisplay=e,l.layerManager.invalidate())}setVisionMode(e){this.visionMode=e.mode,e.sync&&r.socket.emit("Location.Options.Set",{vision_mode:e.mode})}setBoardInitialized(e){this.boardInitialized=e}toggleUnlabeledFilter(){this.filterNoLabel=!this.filterNoLabel}addLabel(e){n.default.set(this.labels,e.uuid,e)}setLabelFilters(e){this.labelFilters=e}setLabelVisibility(e){e.uuid in this.labels&&(this.labels[e.uuid].visible=e.visible)}deleteLabel(e){if(!(e.uuid in this.labels))return;const t=this.labels[e.uuid],i=new Set;for(const s of l.layerManager.UUIDMap.values()){const e=s.labels.indexOf(t);e>=0&&(s.labels.splice(e,1),i.add(s.layer))}for(const s of i)l.layerManager.getLayer(s).invalidate(!1);n.default.delete(this.labels,e.uuid)}setDM(e){this.IS_DM=e}setUsername(e){this.username=e}setRoomName(e){this.roomName=e}setRoomCreator(e){this.roomCreator=e}setInvitationCode(e){this.invitationCode=e}addLayer(e){this.layers.push(e),-1===this.selectedLayerIndex&&(this.selectedLayerIndex=this.layers.indexOf(e))}selectLayer(e){const t=this.layers.indexOf(e.name);t>=0&&(this.selectedLayerIndex=t),e.sync&&r.socket.emit("Client.ActiveLayer.Set",e.name)}newNote(e){this.notes.push(e.note),e.sync&&r.socket.emit("Note.New",e.note)}setAssets(e){this.assets=e}setLocations(e){this.locations=e}resetLayerInfo(){this.layers=[],this.selectedLayerIndex=-1}recalculateVision(e=!1){this.boardInitialized&&("triangle"===this.visionMode?h.triangulate("vision",e):this.BV=Object.freeze(new d.BoundingVolume(this.visionBlockers)))}recalculateMovement(e=!1){this.boardInitialized&&"triangle"===this.visionMode&&h.triangulate("movement",e)}updateZoom(e){if(e.newZoomDisplay===this.zoomDisplay)return;e.newZoomDisplay<0&&(e.newZoomDisplay=0),e.newZoomDisplay>1&&(e.newZoomDisplay=1);const t=c.g2l(e.zoomLocation);this.zoomDisplay=e.newZoomDisplay;const i=c.l2g(t),s=i.subtract(e.zoomLocation);this.panX+=s.x,this.panY+=s.y,l.layerManager.invalidate(),a.sendClientOptions()}setGridColour(e){this.gridColour=e.colour,l.layerManager.getGridLayer().drawGrid(),e.sync&&r.socket.emit("Client.Options.Set",{gridColour:e.colour})}setFOWColour(e){this.fowColour=e.colour,l.layerManager.invalidate(),e.sync&&r.socket.emit("Client.Options.Set",{fowColour:e.colour})}setRulerColour(e){this.rulerColour=e.colour,e.sync&&r.socket.emit("Client.Options.Set",{rulerColour:e.colour})}setPanX(e){this.panX=e}setPanY(e){this.panY=e}increasePanX(e){this.panX+=e}increasePanY(e){this.panY+=e}setUnitSize(e){this.unitSize!==e.unitSize&&e.unitSize>0&&e.unitSize<1/0&&(this.unitSize=e.unitSize,l.layerManager.invalidate(),e.sync&&r.socket.emit("Location.Options.Set",{unit_size:e.unitSize}))}setUseGrid(e){if(this.useGrid!==e.useGrid){this.useGrid=e.useGrid;const t=l.layerManager.getGridLayer();e.useGrid?t.canvas.style.display="block":t.canvas.style.display="none",e.sync&&r.socket.emit("Location.Options.Set",{use_grid:e.useGrid})}}setGridSize(e){if(this.gridSize!==e.gridSize&&e.gridSize>0){this.gridSize=e.gridSize;const t=l.layerManager.getGridLayer();void 0!==t&&t.drawGrid(),e.sync&&r.socket.emit("Gridsize.Set",e.gridSize)}}setVisionRangeMin(e){this.visionRangeMin=e.value,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{vision_min_range:e.value})}setVisionRangeMax(e){this.visionRangeMax=Math.max(e.value,this.visionRangeMin),l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{vision_max_range:this.visionRangeMax})}setFullFOW(e){this.fullFOW!==e.fullFOW&&(this.fullFOW=e.fullFOW,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{full_fow:e.fullFOW}))}setFOWOpacity(e){this.fowOpacity=e.fowOpacity,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{fow_opacity:e.fowOpacity})}setLineOfSight(e){this.fowLOS!==e.fowLOS&&(this.fowLOS=e.fowLOS,l.layerManager.invalidate(),e.sync&&r.socket.emit("Location.Options.Set",{fow_los:e.fowLOS}))}setLocationName(e){this.locationName=e}updateNote(e){const t=this.notes.find(t=>t.uuid===e.note.uuid);void 0!==t&&(t.title=e.note.title,t.text=e.note.text,e.sync&&r.socket.emit("Note.Update",t))}removeNote(e){this.notes=this.notes.filter(t=>t.uuid!==e.note.uuid),e.sync&&r.socket.emit("Note.Remove",e.note.uuid)}toggleUI(){this.showUI=!this.showUI}setClipboard(e){this.clipboard=e}setActiveTokens(e){this._activeTokens=e,l.layerManager.invalidateLight()}addActiveToken(e){this._activeTokens.push(e),l.layerManager.invalidateLight()}removeActiveToken(e){0===this._activeTokens.length&&(this._activeTokens=[...this.ownedtokens]),this._activeTokens.splice(this._activeTokens.indexOf(e),1),l.layerManager.invalidateLight()}setPlayers(e){this.players=e}addPlayer(e){this.players.push(e)}kickPlayer(e){this.players=this.players.filter(t=>t.id!==e)}setIsLocked(e){this.isLocked=e.isLocked,e.sync&&r.socket.emit("Room.Info.Set.Locked",this.isLocked)}clear(){this.context.state.visionSources=[],this.context.state.visionBlockers=[],this.context.state.ownedtokens=[],this.context.state.annotations=[],this.context.state.movementblockers=[],this.context.state.notes=[],this.context.commit("recalculateVision"),this.context.commit("recalculateMovement")}};s.__decorate([o.Mutation],p.prototype,"setFakePlayer",null),s.__decorate([o.Mutation],p.prototype,"setZoomDisplay",null),s.__decorate([o.Mutation],p.prototype,"setVisionMode",null),s.__decorate([o.Mutation],p.prototype,"setBoardInitialized",null),s.__decorate([o.Mutation],p.prototype,"toggleUnlabeledFilter",null),s.__decorate([o.Mutation],p.prototype,"addLabel",null),s.__decorate([o.Mutation],p.prototype,"setLabelFilters",null),s.__decorate([o.Mutation],p.prototype,"setLabelVisibility",null),s.__decorate([o.Mutation],p.prototype,"deleteLabel",null),s.__decorate([o.Mutation],p.prototype,"setDM",null),s.__decorate([o.Mutation],p.prototype,"setUsername",null),s.__decorate([o.Mutation],p.prototype,"setRoomName",null),s.__decorate([o.Mutation],p.prototype,"setRoomCreator",null),s.__decorate([o.Mutation],p.prototype,"setInvitationCode",null),s.__decorate([o.Mutation],p.prototype,"addLayer",null),s.__decorate([o.Mutation],p.prototype,"selectLayer",null),s.__decorate([o.Mutation],p.prototype,"newNote",null),s.__decorate([o.Mutation],p.prototype,"setAssets",null),s.__decorate([o.Mutation],p.prototype,"setLocations",null),s.__decorate([o.Mutation],p.prototype,"resetLayerInfo",null),s.__decorate([o.Mutation],p.prototype,"recalculateVision",null),s.__decorate([o.Mutation],p.prototype,"recalculateMovement",null),s.__decorate([o.Mutation],p.prototype,"updateZoom",null),s.__decorate([o.Mutation],p.prototype,"setGridColour",null),s.__decorate([o.Mutation],p.prototype,"setFOWColour",null),s.__decorate([o.Mutation],p.prototype,"setRulerColour",null),s.__decorate([o.Mutation],p.prototype,"setPanX",null),s.__decorate([o.Mutation],p.prototype,"setPanY",null),s.__decorate([o.Mutation],p.prototype,"increasePanX",null),s.__decorate([o.Mutation],p.prototype,"increasePanY",null),s.__decorate([o.Mutation],p.prototype,"setUnitSize",null),s.__decorate([o.Mutation],p.prototype,"setUseGrid",null),s.__decorate([o.Mutation],p.prototype,"setGridSize",null),s.__decorate([o.Mutation],p.prototype,"setVisionRangeMin",null),s.__decorate([o.Mutation],p.prototype,"setVisionRangeMax",null),s.__decorate([o.Mutation],p.prototype,"setFullFOW",null),s.__decorate([o.Mutation],p.prototype,"setFOWOpacity",null),s.__decorate([o.Mutation],p.prototype,"setLineOfSight",null),s.__decorate([o.Mutation],p.prototype,"setLocationName",null),s.__decorate([o.Mutation],p.prototype,"updateNote",null),s.__decorate([o.Mutation],p.prototype,"removeNote",null),s.__decorate([o.Mutation],p.prototype,"toggleUI",null),s.__decorate([o.Mutation],p.prototype,"setClipboard",null),s.__decorate([o.Mutation],p.prototype,"setActiveTokens",null),s.__decorate([o.Mutation],p.prototype,"addActiveToken",null),s.__decorate([o.Mutation],p.prototype,"removeActiveToken",null),s.__decorate([o.Mutation],p.prototype,"setPlayers",null),s.__decorate([o.Mutation],p.prototype,"addPlayer",null),s.__decorate([o.Mutation],p.prototype,"kickPlayer",null),s.__decorate([o.Mutation],p.prototype,"setIsLocked",null),s.__decorate([o.Action],p.prototype,"clear",null),p=s.__decorate([o.Module({dynamic:!0,store:f.rootStore,name:"game",namespaced:!0})],p),t.gameStore=o.getModule(p)},f30c:function(e,t,i){"use strict";i.r(t);var s=i("dc37"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f312:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aurasFromServer=e=>{const t=[];for(const i of e)t.push({uuid:i.uuid,visionSource:i.vision_source,visible:i.visible,name:i.name,value:i.value,dim:i.dim,colour:i.colour});return t},t.aurasToServer=e=>{const t=[];for(const i of e)t.push({uuid:i.uuid,vision_source:i.visionSource,visible:i.visible,name:i.name,value:i.value,dim:i.dim,colour:i.colour});return t}},f51a:function(e,t,i){"use strict";i.r(t);var s=i("e0e9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f551:function(e,t,i){"use strict";i.r(t);var s=i("2686"),n=i("1dd6");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("28b6");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"7a3669fd",null);t["default"]=a.exports},f5fe:function(e,t,i){"use strict";i.r(t);var s=i("a014"),n=i("7018");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("ea7c");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"07fc8ff2",null);t["default"]=a.exports},f692:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4185"),n=i("b906"),o=i("38c9"),r=i("bab4"),a=i("6f92"),l=i("f10f");function c(e){const t=document.createElement("canvas");let i;t.style.zIndex=a.layerManager.layers.length.toString(),t.width=window.innerWidth,t.height=window.innerHeight,i="grid"===e.type_?new o.GridLayer(t,e.name):"fow"===e.type_?new s.FOWLayer(t,e.name):"fow-players"===e.type_?new n.FOWPlayersLayer(t,e.name):new r.Layer(t,e.name),i.selectable=e.selectable,i.playerEditable=e.player_editable,a.layerManager.addLayer(i);const c=document.getElementById("layers");null!==c?("fow-players"!==e.name&&c.appendChild(t),"grid"===e.type_&&e.size&&l.gameStore.setGridSize({gridSize:e.size,sync:!1}),i.setShapes(e.shapes)):console.warn("Layers div is missing, this will prevent the main game board from loading!")}t.createLayer=c},f74c:function(e,t,i){"use strict";i.r(t);var s=i("1fd5"),n=i("29a2");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("7eb7");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"e477c214",null);t["default"]=a.exports},f8b3:function(e,t,i){"use strict";i.r(t);var s=i("d8ee"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f974:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{attrs:{id:"toolselect"}},[i("ul",e._l(e.visibleTools,function(t){return i("li",{directives:[{name:"show",rawName:"v-show",value:e.toolVisible(t),expression:"toolVisible(tool)"}],key:t,ref:t+"-selector",refInFor:!0,class:{"tool-selected":e.currentTool===t},on:{mousedown:function(i){e.currentTool=t}}},[i("a",{attrs:{href:"#"}},[e._v(e._s(t))])])}),0)]),i("div",[[i("select-tool",{directives:[{name:"show",rawName:"v-show",value:"Select"===e.currentTool,expression:"currentTool === 'Select'"}],ref:"selectTool"}),i("pan-tool",{directives:[{name:"show",rawName:"v-show",value:"Pan"===e.currentTool,expression:"currentTool === 'Pan'"}]}),i("keep-alive",[i("draw-tool",{directives:[{name:"show",rawName:"v-show",value:"Draw"===e.currentTool,expression:"currentTool === 'Draw'"}]})],1),i("ruler-tool",{directives:[{name:"show",rawName:"v-show",value:"Ruler"===e.currentTool,expression:"currentTool === 'Ruler'"}]}),i("map-tool",{directives:[{name:"show",rawName:"v-show",value:"Map"===e.currentTool,expression:"currentTool === 'Map'"}]}),i("filter-tool",{directives:[{name:"show",rawName:"v-show",value:"Filter"===e.currentTool,expression:"currentTool === 'Filter'"}]}),i("vision-tool",{directives:[{name:"show",rawName:"v-show",value:"Vision"===e.currentTool,expression:"currentTool === 'Vision'"}]}),i("shape-menu",{ref:"shapecontext"}),i("createtoken-dialog",{ref:"createtokendialog"})]],2)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},f994:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("form",{on:{focusin:e.focusin,focusout:e.focusout,submit:function(t){return t.preventDefault(),e.login(t)}}},[i("fieldset",[i("legend",{staticClass:"legend"},[e._v("PlanarAlly")]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],attrs:{type:"text",name:"username",placeholder:"Username",autocomplete:"username",required:""},domProps:{value:e.username},on:{input:function(t){t.target.composing||(e.username=t.target.value)}}}),e._m(0)]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],attrs:{type:"password",name:"password",placeholder:"Password",autocomplete:"current-password",required:""},domProps:{value:e.password},on:{input:function(t){t.target.composing||(e.password=t.target.value)}}}),e._m(1)]),i("div",{staticStyle:{display:"flex"}},[i("button",{staticStyle:{visibility:"hidden",display:"none"},attrs:{type:"submit",name:"login"}}),i("button",{staticClass:"submit",attrs:{type:"button",name:"register",title:"Register"},on:{click:e.register}},[i("i",{staticClass:"fas fa-plus"})]),e._m(2)])]),e.error?i("div",{staticClass:"feedback"},[i("p",{staticClass:"error"},[i("strong",[e._v("Error:")]),e._v("\n "+e._s(e.error)+"\n ")])]):e._e()])},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fas fa-user-circle"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fas fa-lock"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"submit",attrs:{type:"submit",name:"login",title:"Login"}},[i("i",{staticClass:"fas fa-arrow-right"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},fbdd:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d065")),a=i("4a5b"),l=i("0bc6"),c=i("af17"),u=i("6f92");let d=class extends n.default{constructor(){super(...arguments),this.shape=null}mounted(){c.EventBus.$on("SelectionInfo.Shape.Set",e=>{this.shape=e})}beforeDestroy(){c.EventBus.$off("SelectionInfo.Shape.Set")}openEditDialog(){this.$refs.editDialog.visible=!0}changeValue(e,t){null!==this.shape&&a.getRef("prompt").prompt(`New ${e.name} value:`,`Updating ${e.name}`).then(i=>{if(null===this.shape)return;const s=e.value;"+"===i[0]||"-"===i[0]?e.value+=parseInt(i,10):e.value=parseInt(i,10),isNaN(e.value)&&(e.value=s),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:t,temporary:!1}),t&&u.layerManager.invalidate()},()=>{})}};d=s.__decorate([o.default({components:{"edit-dialog":r.default}})],d),t.default=d},fcac:function(e,t,i){},fe11:function(e,t,i){},fe80:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("0bc6"),n=i("af17"),o=i("8f0a"),r=i("6f92"),a=i("f692"),l=i("9cb7"),c=i("f10f"),u=i("5f86"),d=i("5a5c");s.socket.on("connect",()=>{console.log("Connected")}),s.socket.on("disconnect",()=>{console.log("Disconnected")}),s.socket.on("connect_error",e=>{console.error("Could not connect to game session."),u.router.push("/dashboard")}),s.socket.on("error",e=>{console.error("Game session does not exist."),u.router.push("/dashboard")}),s.socket.on("redirect",e=>{console.log("redirecting"),u.router.push(e)}),s.socket.on("Room.Info.Set",e=>{c.gameStore.setRoomName(e.name),c.gameStore.setRoomCreator(e.creator),c.gameStore.setInvitationCode(e.invitationCode),c.gameStore.setIsLocked({isLocked:e.isLocked,sync:!1}),c.gameStore.setPlayers(e.players)}),s.socket.on("Room.Info.InvitationCode.Set",e=>{c.gameStore.setInvitationCode(e),n.EventBus.$emit("DmSettings.RefreshedInviteCode")}),s.socket.on("Room.Info.Players.Add",e=>{c.gameStore.addPlayer(e)}),s.socket.on("Username.Set",e=>{c.gameStore.setUsername(e),c.gameStore.setDM(e===window.location.pathname.split("/")[2])}),s.socket.on("Client.Options.Set",e=>{c.gameStore.setGridColour({colour:e.grid_colour,sync:!1}),c.gameStore.setFOWColour({colour:e.fow_colour,sync:!1}),c.gameStore.setRulerColour({colour:e.ruler_colour,sync:!1}),c.gameStore.setPanX(e.pan_x),c.gameStore.setPanY(e.pan_y),c.gameStore.setZoomDisplay(d.zoomDisplay(e.zoom_factor)),e.active_layer&&r.layerManager.selectLayer(e.active_layer,!1),void 0!==r.layerManager.getGridLayer()&&r.layerManager.getGridLayer().invalidate()}),s.socket.on("Location.Set",e=>{void 0!==e.name&&c.gameStore.setLocationName(e.name),void 0!==e.unit_size&&c.gameStore.setUnitSize({unitSize:e.unit_size,sync:!1}),void 0!==e.use_grid&&c.gameStore.setUseGrid({useGrid:e.use_grid,sync:!1}),void 0!==e.full_fow&&c.gameStore.setFullFOW({fullFOW:e.full_fow,sync:!1}),void 0!==e.fow_opacity&&c.gameStore.setFOWOpacity({fowOpacity:e.fow_opacity,sync:!1}),void 0!==e.fow_los&&c.gameStore.setLineOfSight({fowLOS:e.fow_los,sync:!1}),void 0!==e.vision_min_range&&c.gameStore.setVisionRangeMin({value:e.vision_min_range,sync:!1}),void 0!==e.vision_max_range&&c.gameStore.setVisionRangeMax({value:e.vision_max_range,sync:!1}),void 0!==e.vision_mode&&(c.gameStore.setVisionMode({mode:e.vision_mode,sync:!1}),c.gameStore.recalculateVision(),c.gameStore.recalculateMovement())}),s.socket.on("Position.Set",e=>{l.gameManager.setCenterPosition(new o.GlobalPoint(e.x,e.y))}),s.socket.on("Notes.Set",e=>{for(const t of e)c.gameStore.newNote({note:t,sync:!1})}),s.socket.on("Asset.List.Set",e=>{c.gameStore.setAssets(e)}),s.socket.on("Board.Set",e=>{c.gameStore.clear(),c.gameStore.setLocations(e.locations),document.getElementById("layers").innerHTML="",c.gameStore.resetLayerInfo(),r.layerManager.reset();for(const t of e.layers)a.createLayer(t);r.layerManager.selectLayer(r.layerManager.getLayer().name,!1),n.EventBus.$emit("Initiative.Clear"),c.gameStore.recalculateVision(),c.gameStore.recalculateMovement(),c.gameStore.setBoardInitialized(!0)}),s.socket.on("Gridsize.Set",e=>{c.gameStore.setGridSize({gridSize:e,sync:!1})}),s.socket.on("Shape.Add",e=>{l.gameManager.addShape(e)}),s.socket.on("Shape.Remove",e=>{if(!r.layerManager.UUIDMap.has(e.uuid))return void console.log("Attempted to remove an unknown shape");if(!r.layerManager.hasLayer(e.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.layer}`);const t=r.layerManager.getLayer(e.layer);t.removeShape(r.layerManager.UUIDMap.get(e.uuid),!1),t.invalidate(!1)}),s.socket.on("Shape.Order.Set",e=>{if(!r.layerManager.UUIDMap.has(e.shape.uuid))return void console.log("Attempted to move the shape order of an unknown shape");if(!r.layerManager.hasLayer(e.shape.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.shape.layer}`);const t=r.layerManager.UUIDMap.get(e.shape.uuid),i=r.layerManager.getLayer(t.layer);i.moveShapeOrder(t,e.index,!1)}),s.socket.on("Shape.Layer.Change",e=>{const t=r.layerManager.UUIDMap.get(e.uuid);void 0!==t&&t.moveLayer(e.layer,!1)}),s.socket.on("Shape.Update",e=>{l.gameManager.updateShape(e)}),s.socket.on("Temp.Clear",e=>{e.forEach(e=>{if(!r.layerManager.UUIDMap.has(e.uuid))return void console.log("Attempted to remove an unknown temporary shape");if(!r.layerManager.hasLayer(e.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.layer}`);const t=r.layerManager.UUIDMap.get(e.uuid);r.layerManager.getLayer(e.layer).removeShape(t,!1)})}),s.socket.on("Labels.Set",e=>{for(const t of e)c.gameStore.addLabel(t)}),s.socket.on("Label.Visibility.Set",e=>{c.gameStore.setLabelVisibility(e)}),s.socket.on("Label.Add",e=>{c.gameStore.addLabel(e)}),s.socket.on("Label.Delete",e=>{c.gameStore.deleteLabel(e)}),s.socket.on("Labels.Filter.Add",e=>{c.gameStore.labelFilters.push(e),r.layerManager.invalidate()}),s.socket.on("Labels.Filter.Remove",e=>{const t=c.gameStore.labelFilters.indexOf(e);t>=0&&(c.gameStore.labelFilters.splice(t,1),r.layerManager.invalidate())}),s.socket.on("Labels.Filters.Set",e=>{c.gameStore.setLabelFilters(e)})}}); -//# sourceMappingURL=app-legacy.3ba691e3.js.map \ No newline at end of file diff --git a/server/static/js/app-legacy.3ba691e3.js.map b/server/static/js/app-legacy.3ba691e3.js.map deleted file mode 100644 index 2192fe6b1..000000000 --- a/server/static/js/app-legacy.3ba691e3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/game/shapes/text.ts","webpack:///./src/game/ui/selection/selection_info.vue?cd1b","webpack:///./src/game/ui/selection/shapecontext.vue","webpack:///./src/App.vue?5b85","webpack:///./src/core/components/modals/prompt.vue?d33d","webpack:///./src/core/components/colorpicker.vue?4d88","webpack:///./src/game/game.vue","webpack:///./src/game/api/socket.ts","webpack:///./src/assetManager/manager.vue?5633","webpack:///./src/game/ui/menu/asset_node.vue","webpack:///./src/auth/login.vue","webpack:///./src/game/visibility/te/draw.ts","webpack:///./src/core/components/accordion.vue","webpack:///./src/game/ui/tools/tool.vue?5b17","webpack:///./src/game/shapes/circulartoken.ts","webpack:///./src/game/ui/annotation.ts","webpack:///./src/game/ui/menu/menu.vue","webpack:///./src/core/components/contextmenu.vue","webpack:///./src/game/ui/note.vue?49b7","webpack:///./src/auth/login.vue?c159","webpack:///./src/game/ui/labels.vue?7431","webpack:///./src/game/ui/labels.vue?1ecb","webpack:///./src/game/shapes/utils.ts","webpack:///./src/game/ui/dmsettings.vue?f205","webpack:///./src/core/components/modals/confirm.vue?e6fb","webpack:///./src/game/ui/tools/select.vue?bf1f","webpack:///./src/game/ui/tools/select.vue?29b9","webpack:///./src/game/ui/dmsettings.vue?6fd0","webpack:///./src/game/ui/dmsettings.vue?814f","webpack:///./src/game/shapes/shape.ts","webpack:///./src/core/components/modals/prompt.vue?d457","webpack:///./src/game/ui/menu/menu.vue?93b3","webpack:///./src/game/ui/menu/menu.vue?44af","webpack:///./src/game/ui/note.vue?07e2","webpack:///./src/game/ui/note.vue?23aa","webpack:///./src/game/ui/tools/select.vue?49f9","webpack:///./src/game/ui/dmsettings.vue?fed3","webpack:///./src/game/ui/tools/utils.ts","webpack:///./src/game/ui/note.vue?a508","webpack:///./src/core/components/inputCopy.vue?4a5e","webpack:///./src/game/ui/labels.vue?15af","webpack:///./src/game/ui/tools/vision.vue?4f0c","webpack:///./src/game/api/utils.ts","webpack:///./src/game/ui/menu/asset_node.vue?f519","webpack:///./src/core/components/colorpicker.vue?893c","webpack:///./src/core/components/contextmenu.vue?98ca","webpack:///./src/core/components/contextmenu.vue?7efa","webpack:///./src/assetManager/store.ts","webpack:///./src/core/components/contextmenu.vue?50e1","webpack:///./src/game/ui/selection/shapecontext.vue?1cf6","webpack:///./src/game/ui/menu/menu.vue?b354","webpack:///./src/core/components/inputCopy.vue?f87b","webpack:///./src/game/ui/tools/map.vue?284a","webpack:///./src/assetManager/contextMenu.vue?7572","webpack:///./src/assetManager/contextMenu.vue?bce4","webpack:///./src/game/layers/grid.ts","webpack:///./src/core/components/colorpicker.vue?ec60","webpack:///./src/core/components/colorpicker.vue?7374","webpack:///./src/store.ts","webpack:///./src/core/components/colorpicker.vue","webpack:///./src/game/ui/tools/vision.vue?48bb","webpack:///./src/auth/login.vue?3521","webpack:///./src/App.vue?fbef","webpack:///./src/App.vue","webpack:///./src/game/layers/fow.ts","webpack:///./src/core/components/load.vue?18c2","webpack:///./src/game/ui/selection/edit_dialog.vue?37d7","webpack:///./src/game/ui/selection/edit_dialog.vue?6334","webpack:///./src/game/shapes/circle.ts","webpack:///./src/game/ui/tools/map.vue?a3ab","webpack:///./src/core/components/load.vue","webpack:///./src/game/ui/tools/pan.ts","webpack:///./src/game/ui/tools/selectcontext.vue","webpack:///./src/core/utils.ts","webpack:///./src/assetManager/contextMenu.vue","webpack:///./src/game/visibility/te/triag.ts","webpack:///./src/game/ui/menu/asset_node.vue?1f27","webpack:///./src/game/ui/tools/selectcontext.vue?ddec","webpack:///./src/game/ui/tools/selectcontext.vue?3109","webpack:///./src/game/ui/tools/vision.vue?d25b","webpack:///./src/game/ui/selection/edit_dialog.vue?1206","webpack:///./src/core/components/modals/modal.vue?44ae","webpack:///./src/assetManager/socket.ts","webpack:///./src/game/ui/tools/filter.vue?ee60","webpack:///./src/core/components/accordion.vue?3e09","webpack:///./src/game/ui/tools/vision.vue?4389","webpack:///./src/game/ui/tools/vision.vue?9b57","webpack:///./src/game/ui/tools/selectcontext.vue?6c84","webpack:///./src/game/game.vue?5550","webpack:///./src/game/shapes/multiline.ts","webpack:///./src/game/ui/tools/draw.vue","webpack:///./src/game/utils.ts","webpack:///./src/game/ui/tools/createtoken_modal.vue?d0df","webpack:///./src/game/ui/note.vue?f9bd","webpack:///./src/game/ui/tools/draw.vue?b96d","webpack:///./src/game/shapes/line.ts","webpack:///./src/router.ts","webpack:///./src/game/ui/tools/tool.vue?d136","webpack:///./src/game/ui/tools/tools.vue","webpack:///./src/game/ui/tools/tool.vue?8ce3","webpack:///./src/game/game.vue?8424","webpack:///./src/game/game.vue?5780","webpack:///./src/core/components/inputCopy.vue?fac9","webpack:///./src/core/components/inputCopy.vue?0a6a","webpack:///./src/game/shapes/asset.ts","webpack:///./src/core/components/inputCopy.vue","webpack:///./src/game/visibility/te/cdt.ts","webpack:///./src/game/ui/tools/draw.vue?1261","webpack:///./src/game/layers/manager.ts","webpack:///./src/game/ui/initiative.vue?c7e1","webpack:///./src/game/ui/tools/createtoken_modal.vue","webpack:///./src/game/visibility/bvh/node.ts","webpack:///./src/game/ui/tools/createtoken_modal.vue?f918","webpack:///./src/game/events/keyboard.ts","webpack:///./src/assetManager/manager.vue?433f","webpack:///./src/game/ui/tools/tools.vue?25b2","webpack:///./src/game/ui/selection/selection_info.vue?2310","webpack:///./src/core/components/modals/modal.vue?09d2","webpack:///./src/game/ui/labels.vue?e465","webpack:///./src/core/components/contextmenu.vue?a0a2","webpack:///./src/core/components/modals/prompt.vue?4e1b","webpack:///./src/core/components/accordion.vue?3d26","webpack:///./src/core/components/load.vue?55c2","webpack:///./src/core/components/load.vue?0f87","webpack:///./src/game/ui/menu/menu.vue?8b23","webpack:///./src/game/shapes/boundingrect.ts","webpack:///./src/dashboard/main.vue?3f3b","webpack:///./src/dashboard/main.vue?94d1","webpack:///./src/game/geom.ts","webpack:///./src/game/ui/menu/asset_node.vue?edd5","webpack:///./src/game/ui/menu/asset_node.vue?3fe9","webpack:///./src/core/components/inputCopy.vue?946f","webpack:///./src/game/game.vue?5592","webpack:///./src/game/units.ts","webpack:///./src/game/ui/menu/menu.vue?ae57","webpack:///./src/core/components/colorpicker.vue?1682","webpack:///./src/game/visibility/te/tds.ts","webpack:///./src/game/visibility/bvh/bvh.ts","webpack:///./src/game/ui/tools/filter.vue?1da1","webpack:///./src/game/manager.ts","webpack:///./src/game/ui/menu/asset_node.vue?0d0e","webpack:///./src/core/components/modals/modal.vue?9335","webpack:///./src/game/ui/tools/vision.vue","webpack:///./src/game/ui/initiative.vue?4f75","webpack:///./src/game/ui/initiative.vue?3968","webpack:///./src/core/components/load.vue?8cd0","webpack:///./src/game/ui/selection/selection_info.vue?d49d","webpack:///./src/game/ui/selection/selection_info.vue?4f48","webpack:///./src/dashboard/main.vue?3f72","webpack:///./src/core/components/modals/confirm.vue","webpack:///./src/game/ui/selection/shapecontext.vue?aac0","webpack:///./src/game/ui/tools/draw.vue?60f4","webpack:///./src/game/ui/selection/shapecontext.vue?c203","webpack:///./src/assetManager/manager.vue?a11e","webpack:///./src/game/event-bus.ts","webpack:///./src/dashboard/main.vue?d5a9","webpack:///./src/game/shapes/rect.ts","webpack:///./src/game/ui/tools/filter.vue?b0f4","webpack:///./src/game/ui/tools/selectcontext.vue?6f66","webpack:///./src/game/layers/fowplayers.ts","webpack:///./src/game/layers/layer.ts","webpack:///./src/game/events/mouse.ts","webpack:///./src/game/ui/tools/filter.vue","webpack:///./src/game/shapes/baserect.ts","webpack:///./src/game/ui/tools/select.vue","webpack:///./src/dashboard/main.vue","webpack:///./src/game/ui/tools/createtoken_modal.vue?6f0b","webpack:///./src/assetManager/manager.vue?4d34","webpack:///./src/assetManager/manager.vue?a045","webpack:///./src/game/ui/tools/selectcontext.vue?d61f","webpack:///./src/auth/logout.ts","webpack:///./src/core/store.ts","webpack:///./src/main.ts","webpack:///./src/core/components/contextmenu.vue?f402","webpack:///./src/invitation/invitation.ts","webpack:///./src/core/components/modals/prompt.vue","webpack:///./src/game/visibility/te/te.ts","webpack:///./src/game/ui/tools/map.vue?272d","webpack:///./src/game/ui/tools/map.vue?7f60","webpack:///./src/game/ui/selection/edit_dialog.vue","webpack:///./src/core/components/modals/modal.vue?6b25","webpack:///./src/core/components/modals/modal.vue?12fd","webpack:///./src/game/settings.ts","webpack:///./src/auth/login.vue?283c","webpack:///./src/game/ui/tools/createtoken_modal.vue?432c","webpack:///./src/game/ui/tools/createtoken_modal.vue?5fcc","webpack:///./src/game/ui/tools/tool.vue?940c","webpack:///./src/game/ui/tools/tool.vue?f5ba","webpack:///./src/game/game.vue?d01c","webpack:///./src/game/ui/tools/ruler.ts","webpack:///./src/core/components/modals/modal.vue","webpack:///./src/core/components/accordion.vue?4b34","webpack:///./src/game/visibility/te/pa.ts","webpack:///./src/game/ui/tools/tools.vue?4580","webpack:///./src/dashboard/main.vue?1359","webpack:///./src/game/ui/selection/edit_dialog.vue?9a84","webpack:///./src/game/ui/selection/shapecontext.vue?2b61","webpack:///./src/game/ui/selection/shapecontext.vue?9807","webpack:///./src/core/components/modals/confirm.vue?f9ee","webpack:///./src/game/ui/dmsettings.vue?7896","webpack:///./src/game/ui/tools/map.vue","webpack:///./src/core/components/accordion.vue?8b79","webpack:///./src/core/components/accordion.vue?6229","webpack:///./src/core/components/modals/confirm.vue?05b2","webpack:///./src/core/components/modals/confirm.vue?be48","webpack:///./src/game/ui/dmsettings.vue","webpack:///./src/assetManager/contextMenu.vue?1b1b","webpack:///./src/game/ui/tools/select.vue?b7fd","webpack:///./src/game/ui/tools/filter.vue?6447","webpack:///./src/game/ui/labels.vue?8d8f","webpack:///./src/game/shapes/polygon.ts","webpack:///./src/game/ui/tools/draw.vue?5a94","webpack:///./src/game/ui/tools/draw.vue?03b4","webpack:///./src/game/game.vue?4949","webpack:///./src/game/ui/tools/filter.vue?e935","webpack:///./src/game/ui/tools/filter.vue?fa63","webpack:///./src/assetManager/manager.vue","webpack:///./src/game/ui/tools/tools.vue?fa4a","webpack:///./src/game/ui/tools/tool.vue","webpack:///./src/game/ui/initiative.vue?4ce1","webpack:///./src/core/components/modals/prompt.vue?75bb","webpack:///./src/core/components/modals/prompt.vue?36e2","webpack:///./src/game/ui/initiative.vue?36c8","webpack:///./src/game/ui/selection/selection_info.vue","webpack:///./src/game/store.ts","webpack:///./src/core/components/modals/confirm.vue?a22f","webpack:///./src/game/comm/conversion/aura.ts","webpack:///./src/assetManager/contextMenu.vue?1e9a","webpack:///./src/game/ui/note.vue","webpack:///./src/game/ui/initiative.vue","webpack:///./src/game/layers/utils.ts","webpack:///./src/game/ui/labels.vue","webpack:///./src/game/ui/selection/edit_dialog.vue?3800","webpack:///./src/game/ui/tools/tools.vue?9477","webpack:///./src/game/ui/tools/tools.vue?c2f7","webpack:///./src/auth/login.vue?3574","webpack:///./src/auth/login.vue?8f9e","webpack:///./src/game/ui/selection/selection_info.vue?5d62","webpack:///./src/game/api/events.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","app","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","boundingrect_1","shape_1","units_1","Text","Shape","[object Object]","position","text","font","angle","fillColour","strokeColour","uuid","super","this","type","assign","getBaseDict","points","refPoint","x","y","BoundingRect","ctx","draw","fillStyle","save","dest","g2l","translate","rotate","textAlign","getLines","map","line","fillText","restore","point","centerPoint","canvas","getBoundingBox","visibleInCanvas","resizePoint","lines","lineHeight","widths","measureText","width","Math","max","split","allLines","maxWidth","targetLine","words","word","testLine","metrics","testWidth","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_style_index_0_id_674cf937_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_style_index_0_id_674cf937_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","__webpack_exports__","_shapecontext_vue_vue_type_template_id_6c66d243_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","__WEBPACK_IMPORT_KEY__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__","component","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_style_index_0_id_0602c2e6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_style_index_0_id_0602c2e6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tinycolor2_1","tslib_1","__importDefault","vue_1","vue_class_component_1","vue_color_1","vue_property_decorator_1","ColorPicker","default","display","left","top","transparent","$refs","chromePicker","val","rgba","a","setPosition","disabled","$nextTick","$children","$el","focus","newColor","toRgbString","$emit","color","rect","getBoundingClientRect","right","innerWidth","bottom","innerHeight","__decorate","Prop","String","Boolean","components","chrome-picker","Chrome","_game_vue_vue_type_template_id_3d0578ba_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__","socket_io_client_1","createConnection","route","socket","io","opts","query","params","creator","room","connect","location","protocol","host","autoConnect","contextMenu_vue_1","confirm_vue_1","prompt_vue_1","socket_1","store_1","utils_1","AssetManager","path","draggingSelection","folders","assetStore","files","selected","idMap","currentFolder","root","parentFolder","parent","undefined","firstSelectedFile","sel","file_hash","nextFolder","pop","clearSelected","emit","prompt","inode","target","includes","indexOf","delete","event","shiftKey","inodes","start","end","ctrlKey","file","dataTransfer","setData","dropEffect","classList","contains","add","remove","moveInode","upload","document","getElementById","click","fls","CHUNK_SIZE","uuidv4","slices","ceil","size","fr","FileReader","readAsArrayBuffer","min","onload","e","directory","totalSlices","Prompt","ConfirmDialog","AssetContextMenu","to","from","next","disconnect","_asset_node_vue_vue_type_template_id_6d718094_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_login_vue_vue_type_template_id_bc30fc14_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","manager_1","tds_1","triag_1","drawPolygon","polygon","colour","dl","layerManager","getLayer","lineJoin","beginPath","strokeStyle","random","moveTo","g2lx","g2ly","lineTo","closePath","stroke","drawPolygonL","xx","local","yy","I","J","drl","constrained","drawPolygonT","tds","clear","logs","T","clearRect","ei","EdgeIterator","valid","collect","fromP","edge","first","vertices","ccw","second","toP","cw","Infinity","constraints","console","log","pos","triangles","isInfinite","po","arc","PI","fill","DP","DPL","DPT","_accordion_vue_vue_type_template_id_0bf2b7ba_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tinycolor","__importStar","circle_1","CircularToken","Circle","center","radius","fromDict","textBaseline","xs","calcFontScale","g2lz","ys","transform","mostReadable","toHexString","visible","gameStore","IS_DM","group","source","has_img","effects","index","geom_1","rect_1","text_1","AnnotationManager","shown","origin","GlobalPoint","annotationText","annotationRect","Rect","layer","hasLayer","warn","addShape","l2g","LocalPoint","getMaxWidth","height","getMaxHeight","w","zoomFactor","h","invalidate","_menu_vue_vue_type_template_id_c7fe324c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_contextmenu_vue_vue_type_template_id_256dde9c___WEBPACK_IMPORTED_MODULE_0__","_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","render","_vm","_h","$createElement","_c","_self","attrs","mask","on","close","$event","scopedSlots","_u","fn","staticClass","draggable","dragstart","dragStart","dragend","dragEnd","_v","title","staticStyle","margin","directives","rawName","expression","ref","placeholder","domProps","input","composing","search","_l","category","labels","label","selectLabel","_s","_e","class","lower-opacity","style","stopPropagation","toggleVisibility","deleteLabel","id","modifiers","trim","newCategory","blur","$forceUpdate","newName","addLabel","staticRenderFns","asset_1","circulartoken_1","line_1","multiline_1","polygon_1","createShapeFromDict","shape","sh","type_","fill_colour","stroke_colour","circ","token","Line","x2","y2","line_width","multiline","MultiLine","Polygon","v","asset","img","Image","src","startsWith","URL","pathname","Asset","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_style_index_0_id_1883e207_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_style_index_0_id_1883e207_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","handleClick","selection","$store","state","game","player","kickPlayer","values","players","refreshState","invitationUrl","refreshInviteCode","toggleSessionLock","deleteSession","for","checked","Array","isArray","useGrid","_i","change","$$a","$$el","$$c","$$v","$$i","concat","number","gridSize","_n","unitSize","fakePlayer","fullFOW","fowLOS","step","fowOpacity","changeVisionMode","visionMode","lazy","visionRangeMin","visionRangeMax","aura_1","nameVisible","trackers","auras","_owners","visionObstruction","movementObstruction","isToken","showHighlight","annotation","globalCompositeOperation","options","Map","_refPoint","delta","idx","entries","abs","prev","fromArray","vec","subtract","mid","multiply","normalize","skipLightUpdate","recalculate","self","obstructionIndex","visionBlockers","update","recalculateVision","forEach","au","ls","visionSources","findIndex","aura","visionSource","some","blocksMovement","movementblockers","recalculateMovement","ownedBy","ownedtokens","draw_operator","movement_obstruction","vision_obstruction","aurasToServer","owners","name_visible","is_token","JSON","stringify","aurasFromServer","parse","bbox","strokeRect","topLeft","dim","loc","innerRange","g2lr","gradient","createRadialGradient","tc","addColorStop","setAlpha","lastPath","sync","oldLayer","newLayer","shapes","freeze","username","FAKE_PLAYER","activeTokens","owner","oldValue","newValue","ownerIndex","addOwner","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","settings","locations","rm-list-dm","_m","enter","rm","transition","settingsClick","overflow-y","overflow-x","href","assets","createNote","note","cursor","openNote","notes","openDmSettings","gridColour","update:color","fowColour","rulerColour","text-decoration","changeLocation","createLocation","select","font-size","updateNote","$set","calcHeight","removeNote","selectcontext_vue_1","tool_vue_1","utils_2","utils_3","SelectOperations","SelectTool","showContextMenu","active","Noop","deltaChanged","dragRay","Ray","Vector","selectionStartPoint","selectionHelper","mouse","getMouse","globalMouse","selectionStack","hit","getPointIndex","l2gz","getRef","Resize","Drag","localRefPoint","GroupSelect","endPoint","og","direction","ogDelta","calculateDelta","asDict","redraw","temporary","resize","updateCursor","body","clearSelection","topRight","botLeft","altKey","snapToGrid","resizeToGrid","$parent","shapecontext","open","selectcontext","getPointOrientation","SelectContext","vuex_1","inputCopy_vue_1","modal_vue_1","event_bus_1","DmSettings","categories","showRefreshState","EventBus","$on","$off","invitationCode","locked","isLocked","setUseGrid","setUnitSize","setGridSize","setFakePlayer","setFullFOW","setFOWOpacity","setLineOfSight","setVisionRangeMin","setVisionRangeMax","toLowerCase","setVisionMode","child","firstElementChild","HTMLInputElement","setIsLocked","roomCreator","roomName","then","$router","InputCopyElement","Modal","computed","mapState","pa_1","done","ogSelBBox","newSelBBox","offset","refine","movementBlocker","blocker","UUIDMap","blockerBBox","found","intersectsWithInner","ray","fromPoints","invDir","inverse","dirIsNegative","intersectP","bCenter","sCenter","ux","uy","dx","dot","dy","centerTriangle","PA_CDT","movement","locate","asArray","lt","triangle","checkTriangle","skip","endpoint","neighbours","_cw","_ccw","ix","intersection","isConstrained","orientation","Sign","LEFT_TURN","ZERO","newDelta","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_style_index_0_id_7a3669fd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_style_index_0_id_7a3669fd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_style_index_0_id_20bfdb3e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_style_index_0_id_20bfdb3e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","sendClientOptions","locationOptions","panX","panY","AssetNode","showImage","keys","filter","el","sort","alphSort","__files","b","children","imageSource","querySelector","setDragImage","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_style_index_0_id_f8744d60_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_style_index_0_id_f8744d60_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tabindex","_t","vuex_module_decorators_1","AssetStore","VuexModule","Mutation","Module","dynamic","store","rootStore","namespaced","getModule","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","contextmenu_vue_1","ShapeContext","activeLayer","pageX","pageY","layers","selectable","playerEditable","moveLayer","getActiveLayer","moveShapeOrder","initiative","addInitiative","getInitiativeRepr","ContextMenu","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_style_index_0_id_c7fe324c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_style_index_0_id_c7fe324c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","borderColour","popupString","showPopup","navigator","clipboard","writeText","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","rename","layer_1","GridLayer","Layer","doClear","drawGrid","gs","lineWidth","currentTarget","closePicker","z-index","updateColor","use","Store","_colorpicker_vue_vue_type_template_id_f8744d60_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","VisionTool","tokens","removeActiveToken","addActiveToken","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_bc30fc14_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_bc30fc14_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","script","componentNormalizer","settings_1","te_1","FOWLayer","isVisionLayer","preFogShapes","virtualCanvas","createElement","vCtx","getContext","has","removeShape","Settings","skipLightFOW","originalOperation","dctx","drawAngleLines","drawFirstLightHit","bb","lcenter","alm","light","find","auraLength","getUnitDistance","auraCircle","lastArcAngle","Path2D","firstPoint","angleSteps","anglePoint","cos","sin","lightRay","hitResult","BV","intersect","computeVisibility","drawImage","preShape","ogComposite","getFogColour","fillRect","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","grid-column","owned","updateShape","opacity","grid-column-start","setToken","setVisionBlocker","setMovementBlocker","updateOwner","gridColumnStart","removeOwner","tracker","removeTracker","updateAuraColour","updateAuraVisionSource","removeAura","removeLabel","openLabelManager","updateAnnotation","pow","targetX","targetY","round","diff","sqrt","baserect_1","MapTool","xCount","yCount","startPoint","clone","BaseRect","_load_vue_vue_type_template_id_ff095222___WEBPACK_IMPORTED_MODULE_0__","_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__","PanTool","panStart","distance","increasePanX","increasePanY","_selectcontext_vue_vue_type_template_id_2e7d4582_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","main_1","replace","toString","capitalize","charAt","toUpperCase","getHTMLFont","element","parentElement","getComputedStyle","getPropertyValue","getHTMLTextWidth","fakeElement","appendChild","partition","arr","predicate","ret","Number","fontWidth","fixedEncodeURIComponent","str","encodeURIComponent","charCodeAt","OrderedMap","getComponent","activeComponent","_contextMenu_vue_vue_type_template_id_dbbd4d08___WEBPACK_IMPORTED_MODULE_0__","_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","edgeInfo","va","vb","ec","EdgeCirculator","indv","indexV","ri","infinite","vi","orient","COLLINEAR","collinearBetween","q","cPQ","cQR","compare","EQUAL","SMALLER","LARGER","px","py","qx","qy","rx","ry","pqx","pqy","prx","pry","det","determinant","maxX","maxY","aprX","aprY","eps","EPSILON","POSITIVE","NEGATIVE","a00","a01","a10","a11","hasInexactNegativeOrientation","sideOfOrientedCircle","perturb","sideOfOrientedCircleP","Error","p0","p1","p2","os","getOrientedSide","ON_ORIENTED_BOUNDARY","reverse","ON_NEGATIVE_SIDE","xyEqual","xySmaller","xyCompare","qpx","qpy","rpx","rpy","tpx","tpy","tqx","tqy","rqx","rqy","maxx","maxy","arpx","arpy","atqx","atqy","atpx","atpy","arqx","arqy","ON_POSITIVE_SIDE","segSegDoIntersectCrossing","p3","p4","RIGHT_TURN","segSegDoIntersectContained","pa","pb","pc","pd","getIntersectionType","intersectionType","IntersectionType","POINT","NO_INTERSECTION","getLine","doIntersect","l1","l2","info","getIntersectionTypeLine","la","lb","denom","nom1","nom2","A1","A2","B1","B2","nextUp","MAX_VALUE","MIN_VALUE","ulp","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","bringPlayers","createToken","showInitiative","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_style_index_0_id_46baf892_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_style_index_0_id_46baf892_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_style_index_0_id_23de098e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_style_index_0_id_23de098e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","positioned","offsetX","offsetY","screenX","screenY","dragging","updatePosition","container","offsetWidth","offsetHeight","clientX","clientY","parseInt","destination","setRoot","folder","set","accordion_vue_1","FilterTool","cat","","localeCompare","initalValues","labelFilters","f","toggleUnlabeledFilter","_","accordion","Accordion","initialValues","updateCategory","overall","items","indeterminate","item","--detailRight","detailRight","--detailArrow","detailArrow","toggle","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_style_index_0_id_2e7d4582_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_style_index_0_id_2e7d4582_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_points","minx","miny","lineCap","_draw_vue_vue_type_template_id_639cd890_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","opposite","zoomValue","exp","zoomDisplay","colorpicker_vue_1","CreateTokenModal","updatePreview","Watch","color-picker","NoteDialog","textarea","scrollHeight","DrawTool","brushHelper","ruler","shapeSelect","modeSelect","modes","brushSize","helperSize","onModeChange","fowLayer","normalLayer","setupBrush","_vertices","pushBrushBack","lastPoint","finaliseShape","axios_1","vue_router_1","manager_vue_1","login_vue_1","logout_1","load_vue_1","main_vue_1","game_vue_1","invitation_1","router","base","routes","redirect","meta","auth","template","beforeEach","coreStore","initialized","matched","record","authenticated","response","setAuthenticated","setUsername","setInitialized","catch","error","Tool","tool","onMouseDown","onMouseUp","onMouseMove","onContextMenu","onDeselect","onSelect","_tools_vue_vue_type_template_id_b6e1f51c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","mouseleave","wheel","zoom","ready","mousedown","mouseup","mousemove","contextmenu","preventDefault","dragover","drop","showUI","layer-selected","selectedLayer","selectLayer","interval","dot-width","dot-height","tooltip-dir","tooltip","formatter","toFixed","slider-style","border-radius","bg-style","background-color","box-shadow","process-style","model","callback","copy","topleft","_inputCopy_vue_vue_type_template_id_20bfdb3e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","CDT","TDS","insert","insertConstraintV","stack","markConstraint","intersectionInfo","findIntersectedFaces","triangulateHole","intersectedFaces","listAB","listBA","edges","triangulateHole2","propagatingFlipE","triangulateHalfHole","fl","deleteTriangle","conflictBoundaries","iN","iT","iC","current","n1","n2","ind","ind1","ind2","mirrorIndex","v0","v1","v2","newlf","createTriangle","vaa","vbb","aa","lfc","LineFaceCirculator","lf","rf","indexT","unshift","previousFace","currentVertex","i1","i2","vcc","vdd","pi","BoundingBox","dilate","overlaps","removeConstrainedEdge","dimension","indf","locateInfo","iLocate","insertb","li","flipAround","propagatingFlip","depth","isFlipable","maxDepth","ni","flip","e1","e2","uid","eni","eI","edgeSet","lessEdge","indn","ed","tt","ii","u","t1","t2","t3","i3","t4","i4","insertInConstrainedEdge","LocateType","EDGE","insertc","updateConstraintsIncident","VERTEX","clearConstraintsIncident","updateConstraintsOpposite","c1","c2","fc","FaceCirculator","cwi","ccwi","insertFirst","finiteVertex","insertSecond","OUTSIDE_AFFINE_HULL","insertOutsideAffineHull","OUTSIDE_CONVEX_HULL","insertOutsideConvexHull","insertInEdge","FACE","insertInFace","insertDimUp","_infinite","conform","finiteEdge","COUNTERCLOCKWISE","insertOutsideConvexHull2","ccwlist","cwlist","th","marchLocate1D","marchLocate2D","ff","iv","pqt","Triangle","leftFirst","o0","o1","o2","sum","nTurns","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","LayerManager","drawLoop","requestAnimationFrame","addLayer","globalAlpha","getSelection","image","getData","l2gx","l2gy","lm","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_createtoken_modal_vue_vue_type_template_id_73816298_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","BoundingNode","nPrimitives","LeafNode","firstPrimOffset","InteriorNode","union","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","utils_4","onKeyUp","HTMLTextAreaElement","selectTool","onKeyDown","keyCode","hasSelection","toggleUI","setClipboard","clip","oldTrackers","newTracker","oldAuras","newAura","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","shapecontext_vue_1","createtoken_modal_vue_1","draw_vue_1","filter_vue_1","map_vue_1","pan_1","select_vue_1","vision_vue_1","manager_2","ruler_1","Tools","currentTool","tools","dmTools","currentToolComponent","visibleTools","tagName","targetTool","button","buttons","annotations","gameManager","annotationManager","setActiveText","select-tool","pan-tool","draw-tool","ruler-tool","RulerTool","map-tool","filter-tool","vision-tool","shape-menu","createtoken-dialog","watch","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_style_index_0_id_e477c214_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_style_index_0_id_e477c214_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","question","answer","resolve","reject","Promise","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_style_index_0_id_0bf2b7ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_style_index_0_id_0bf2b7ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","message","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","botRight","vector","other","xmin","xmax","ymin","ymax","botright","dirIsNeg","txmin","getDiagCorner","txmax","tymin","tymax","tMax","coreVisible","joined","submit","createRoom","newSessionName","tag","getPointDistance","Point","scale","atan2","maxT","mouseover","hash","mouseout","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","vue_slider_component_1","lodash_1","initiative_vue_1","labels_vue_1","menu_vue_1","note_vue_1","selection_info_vue_1","tools_vue_1","keyboard_1","mouse_1","dmsettings_vue_1","Game","manager","updateZoom","newZoomDisplay","zoomLocation","addEventListener","resizeWindow","removeEventListener","throttle","scrollZoom","setWidth","setHeight","confirm","dropAsset","tool-bar","selection-info","prompt-dialog","confirm-dialog","menu-bar","initiative-dialog","zoom-slider","note-dialog","label-dialog","dm-settings","obj","z","l2gr","asset_node_vue_1","MenuBar","setGridColour","setFOWColour","setRulerColour","nextElementSibling","newNote","asset-node","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_INFINITE_VERTEX","LineFaceState","newPoint","INFINITE","_counter","vertex","A","sign","Vertex","_point","_ri","Edge","_es","associatedEdge","increment","tr","dir","UNDEFINED","_tr","ic","vt","vr","pqr","VERTEX_VERTEX","VERTEX_EDGE","EDGE_VERTEX","EDGE_EDGE","createVertex","addVertex","infiniteVertex","n0","trig","t0","i0","setAdjacency","deleteList","neighbour","lfit","reorient","vCW","vCCW","tri","bl","bli","vv","g","x1","y1","dist","node_1","BoundingVolume","totalNodes","buildData","orderedPrims","nodes","recursiveBuild","compact","node","createLeaf","centroidBbox","getMaxExtent","pMid","partitionedData","flattened","stopOnFirstHit","tMin","todoOffset","nodeNum","todo","secondChildOffset","flatten","myOffset","secondOffset","primitivesOffset","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_1_id_dca395d6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_1_id_dca395d6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","annotation_1","GameManager","selectedTool","oldShape","redrawInitiative","checkVisionSources","setMovementBlock","setIsToken","localPos","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_style_index_0_id_6d718094_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_style_index_0_id_6d718094_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_id_c2851f0e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_id_c2851f0e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_vision_vue_vue_type_template_id_46baf892_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","fakeSetData","updateOrder","actor","flex-direction","align-items","initiative-selected","currentActor","mouseenter","toggleHighlight","notAllowed","owns","syncInitiative","createEffect","getDefaultEffect","toggleOption","removeInitiative","effect","updateEffect","turns","roundCounter","visionLock","toggleVisionLock","cameraLock","setRound","updateTurn","nextTurn","LoadComponent","openEditDialog","changeValue","maxvalue","registerHooks","Dashboard","vm","err","post","_confirm_vue_vue_type_template_id_1883e207_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_style_index_0_id_639cd890_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_style_index_0_id_639cd890_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_style_index_0_id_6c66d243_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_style_index_0_id_6c66d243_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","FOWPlayersLayer","skipPlayerFOW","maxLength","tokenId","_a","selectionColor","selectionWidth","invalidateLight","serverShape","lsI","lbI","mbI","anI","annotationIndex","ownedIndex","ogOP","drawAuras","filterNoLabel","destinationIndex","oldIdx","deltaY","_filter_vue_vue_type_template_id_dca395d6_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","topright","botleft","mx","my","_select_vue_vue_type_template_id_048b3482___WEBPACK_IMPORTED_MODULE_0__","_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_main_vue_vue_type_template_id_61eb1455_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_style_index_0_id_73816298_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_style_index_0_id_73816298_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","moveDrag","stopDrag","multiple","hidden","createDirectory","prepareUpload","dblclick","changeDirectory","dragleave","leaveDrag","inode-selected","cm","startDrag","createtokendialog","Logout","CoreStore","init","App_vue_1","router_1","config","productionTip","devtools","performance","$mount","props","Initiative","code","sessionUrl","_prompt_vue_vue_type_template_id_0602c2e6_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","draw_1","drawt","drawTEContour","Q","rawOutput","expandEdge","fh","nfh","nIndex","rIndex","lIndex","nvh","rvh","lvh","re","le","ro","lo","raySegIntersection","CLOCKWISE","denominator","ua","_edit_dialog_vue_vue_type_template_id_23de098e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","modal-mask","dialog-mask","dragOver","tempFill","Login","password","$route","statusText","span","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","diffsign","xdiff","ydiff","xmid","ymid","_modal_vue_vue_type_template_id_c2851f0e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","cdt_1","triangulate","partial","cdt","insertConstraint","vision","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_style_index_0_id_b6e1f51c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_style_index_0_id_b6e1f51c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_style_index_0_id_61eb1455_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_style_index_0_id_61eb1455_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","EditDialog","addEmpty","hadAnnotation","an","getLayers","setLayer","moveToBack","moveToFront","getInitiativeWord","yes","no","ok","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_style_index_0_id_b908e87c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_style_index_0_id_b908e87c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_map_vue_vue_type_template_id_2104f147___WEBPACK_IMPORTED_MODULE_0__","_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","toggleDisplay","toggleCategory","showArrow","toggleSelection","deny","_dmsettings_vue_vue_type_template_id_b908e87c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","LabelManager","user","option-selected","max-width","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_1_id_3d0578ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_1_id_3d0578ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","selectionupdate","updateSelection","_manager_vue_vue_type_template_id_5b0def98___WEBPACK_IMPORTED_MODULE_0__","_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_tool_vue_vue_type_template_id_1e034b42___WEBPACK_IMPORTED_MODULE_0__","_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_style_index_0_id_07fc8ff2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_style_index_0_id_07fc8ff2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","keyup","_k","vuedraggable_1","_activeTokens","setTurn","getActor","actorId","setActiveTokens","setCenterPosition","order","show","option","effectIndex","syncEffect","_selection_info_vue_vue_type_template_id_674cf937_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","bvh_1","GameStore","selectedLayerIndex","boardInitialized","locationName","vision_mode","filters","updatedLayers","Set","isDM","oldLoc","newLoc","getGridLayer","increase","unit_size","gridLayer","use_grid","vision_min_range","vision_max_range","full_fow","fow_opacity","fow_los","actualNote","playerId","context","commit","Action","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","vision_source","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_note_vue_vue_type_template_id_7a3669fd_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_initiative_vue_vue_type_template_id_07fc8ff2_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","fow_1","fowplayers_1","grid_1","createLayer","layerInfo","zIndex","player_editable","setShapes","_labels_vue_vue_type_template_id_e477c214_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","toolVisible","refInFor","tool-selected","focusin","focusout","login","autocomplete","required","visibility","register","edit_dialog_vue_1","SelectionInfo","editDialog","ogValue","isNaN","edit-dialog","setRoomName","setRoomCreator","setInvitationCode","setPlayers","addPlayer","setDM","grid_colour","fow_colour","ruler_colour","setPanX","pan_x","setPanY","pan_y","setZoomDisplay","zoom_factor","active_layer","setLocationName","setAssets","locationInfo","setLocations","innerHTML","resetLayerInfo","reset","setBoardInitialized","realShape","setLabelVisibility","setLabelFilters"],"mappings":"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","file":"static/js/app-legacy.3ba691e3.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2l } from \"@/game/units\";\n\nexport class Text extends Shape {\n type = \"text\";\n text: string;\n font: string;\n angle: number;\n constructor(\n position: GlobalPoint,\n text: string,\n font: string,\n angle?: number,\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(position, fillColour, strokeColour, uuid);\n this.text = text;\n this.font = font;\n this.angle = angle || 0;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n text: this.text,\n font: this.font,\n angle: this.angle,\n });\n }\n get points() {\n return [[this.refPoint.x, this.refPoint.y]];\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(this.refPoint, 5, 5); // TODO: fix this bounding box\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.font = this.font;\n ctx.fillStyle = this.fillColour;\n ctx.save();\n const dest = g2l(this.refPoint);\n ctx.translate(dest.x, dest.y);\n ctx.rotate(this.angle);\n ctx.textAlign = \"center\";\n this.getLines(ctx).map(line => ctx.fillText(line.text, line.x, line.y));\n ctx.restore();\n }\n contains(point: GlobalPoint): boolean {\n return false; // TODO\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {} // TODO\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {}\n\n getMaxHeight(ctx: CanvasRenderingContext2D) {\n const lines = this.getLines(ctx);\n const lineHeight = 30;\n return lineHeight * lines.length;\n }\n\n getMaxWidth(ctx: CanvasRenderingContext2D) {\n const lines = this.getLines(ctx);\n const widths = lines.map(line => ctx.measureText(line.text).width);\n return Math.max(...widths);\n }\n\n private getLines(ctx: CanvasRenderingContext2D) {\n const lines = this.text.split(\"\\n\");\n const allLines: { text: string; x: number; y: number }[] = [];\n const maxWidth = ctx.canvas.width;\n const lineHeight = 30;\n const x = 0; // this.refPoint.x;\n let y = 0; // this.refPoint.y;\n\n for (const line of lines) {\n let targetLine = \"\";\n const words = line.split(\" \");\n for (const word of words) {\n const testLine = targetLine + word + \" \";\n const metrics = ctx.measureText(testLine);\n const testWidth = metrics.width;\n if (testWidth > maxWidth) {\n ctx.fillText(targetLine, x, y);\n allLines.push({ text: targetLine, x, y });\n targetLine = word + \" \";\n y += lineHeight;\n } else {\n targetLine = testLine;\n }\n }\n allLines.push({ text: targetLine, x, y });\n y += lineHeight;\n }\n return allLines;\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=style&index=0&id=674cf937&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=style&index=0&id=674cf937&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./shapecontext.vue?vue&type=template&id=6c66d243&scoped=true&\"\nimport script from \"./shapecontext.vue?vue&type=script&lang=ts&\"\nexport * from \"./shapecontext.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c66d243\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport tinycolor from \"tinycolor2\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Chrome } from \"vue-color\";\nimport { Prop } from \"vue-property-decorator\";\n\n@Component({\n components: {\n \"chrome-picker\": Chrome,\n },\n})\nexport default class ColorPicker extends Vue {\n @Prop(String) color!: string;\n @Prop(Boolean) disabled!: boolean;\n\n display = false;\n left = 0;\n top = 0;\n transparent = false;\n\n mounted() {\n this.transparent = (this.$refs.chromePicker).val.rgba.a === 0;\n this.setPosition();\n }\n\n open() {\n if (this.display || this.disabled) return; // click on the picker itself\n this.setPosition();\n this.display = true;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n updateColor(value: { rgba: { r: number; g: number; b: number; a: number } }) {\n this.transparent = value.rgba.a === 0;\n const newColor = tinycolor(value.rgba).toRgbString();\n this.$emit(\"update:color\", newColor);\n this.$emit(\"input\", newColor);\n }\n closePicker() {\n this.display = false;\n this.$emit(\"change\", this.color);\n }\n setPosition() {\n const rect = this.$el.getBoundingClientRect();\n // 224 is the width of the picker, 242 the height\n if (rect.right + 224 > window.innerWidth) this.left = rect.left - 224;\n else this.left = rect.right;\n if (rect.bottom + 242 > window.innerHeight) this.top = rect.top - 242;\n else this.top = rect.bottom;\n }\n}\n","import { render, staticRenderFns } from \"./game.vue?vue&type=template&id=3d0578ba&scoped=true&\"\nimport script from \"./game.vue?vue&type=script&lang=ts&\"\nexport * from \"./game.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./game.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d0578ba\",\n null\n \n)\n\nexport default component.exports","import io from \"socket.io-client\";\nimport { Route } from \"vue-router\";\n\nexport const socket = io(location.protocol + \"//\" + location.host + \"/planarally\", { autoConnect: false });\n\nexport function createConnection(route: Route) {\n socket.io.opts.query = `user=${route.params.creator}&room=${route.params.room}`;\n socket.connect();\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport AssetContextMenu from \"@/assetManager/contextMenu.vue\";\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\n\nimport { socket } from \"@/assetManager/socket\";\nimport { assetStore } from \"@/assetManager/store\";\nimport { Asset } from \"@/core/comm/types\";\nimport { uuidv4 } from \"@/core/utils\";\n\n@Component({\n components: {\n Prompt,\n ConfirmDialog,\n AssetContextMenu,\n },\n beforeRouteEnter(to, from, next) {\n socket.connect();\n next();\n },\n beforeRouteLeave(to, from, next) {\n socket.disconnect();\n next();\n },\n})\nexport default class AssetManager extends Vue {\n path: number[] = [];\n draggingSelection = false;\n\n get folders(): number[] {\n return assetStore.folders;\n }\n\n get files(): number[] {\n return assetStore.files;\n }\n\n get selected(): number[] {\n return assetStore.selected;\n }\n\n get idMap() {\n return assetStore.idMap;\n }\n\n get currentFolder(): number {\n if (this.path.length) return this.path[this.path.length - 1];\n return assetStore.root;\n }\n get parentFolder(): number {\n let parent = this.path[this.path.length - 2];\n if (parent === undefined) parent = assetStore.root;\n return parent;\n }\n get firstSelectedFile(): Asset | null {\n for (const sel of assetStore.selected) {\n if (assetStore.idMap.get(sel)!.file_hash) {\n return assetStore.idMap.get(sel)!;\n }\n }\n return null;\n }\n changeDirectory(nextFolder: number) {\n if (nextFolder < 0) this.path.pop();\n else this.path.push(nextFolder);\n assetStore.clearSelected();\n socket.emit(\"Folder.Get\", this.currentFolder);\n }\n createDirectory() {\n const name = window.prompt(\"New folder name\");\n if (name !== null) {\n socket.emit(\"Folder.Create\", { name, parent: this.currentFolder });\n }\n }\n moveInode(inode: number, target: number) {\n if (assetStore.files.includes(inode)) assetStore.files.splice(assetStore.files.indexOf(inode), 1);\n else assetStore.folders.splice(assetStore.folders.indexOf(inode), 1);\n assetStore.idMap.delete(inode);\n socket.emit(\"Inode.Move\", { inode, target });\n }\n select(event: MouseEvent, inode: number) {\n if (event.shiftKey && assetStore.selected.length > 0) {\n const inodes = [...assetStore.files, ...assetStore.folders];\n const start = inodes.indexOf(assetStore.selected[assetStore.selected.length - 1]);\n const end = inodes.indexOf(inode);\n for (let i = start; i !== end; start < end ? i++ : i--) {\n if (i === start) continue;\n assetStore.selected.push(inodes[i]);\n }\n assetStore.selected.push(inodes[end]);\n } else {\n if (!event.ctrlKey) {\n assetStore.clearSelected();\n }\n assetStore.selected.push(inode);\n }\n }\n startDrag(event: DragEvent, file: number) {\n if (event.dataTransfer === null) return;\n event.dataTransfer.setData(\"Hack\", \"ittyHack\");\n event.dataTransfer.dropEffect = \"move\";\n if (!assetStore.selected.includes(file)) assetStore.selected.push(file);\n this.draggingSelection = true;\n }\n moveDrag(event: DragEvent) {\n if ((event.target).classList.contains(\"folder\"))\n (event.target).classList.add(\"inode-selected\");\n }\n leaveDrag(event: DragEvent) {\n if ((event.target).classList.contains(\"folder\"))\n (event.target).classList.remove(\"inode-selected\");\n }\n stopDrag(event: DragEvent, target: number) {\n (event.target).classList.remove(\"inode-selected\");\n if (this.draggingSelection) {\n if (\n (target === assetStore.root || assetStore.folders.includes(target)) &&\n !assetStore.selected.includes(target)\n ) {\n for (const inode of assetStore.selected) {\n this.moveInode(inode, target);\n }\n }\n assetStore.clearSelected();\n } else if (event.dataTransfer && event.dataTransfer.files.length > 0) {\n this.upload(event.dataTransfer.files, target);\n }\n this.draggingSelection = false;\n }\n prepareUpload() {\n document.getElementById(\"files\")!.click();\n }\n upload(fls?: FileList, target?: number) {\n const files = (document.getElementById(\"files\")!).files;\n if (fls === undefined) {\n if (files) fls = files;\n else return;\n }\n if (target === undefined) target = this.currentFolder;\n const CHUNK_SIZE = 100000;\n for (const file of fls) {\n const uuid = uuidv4();\n const slices = Math.ceil(file.size / CHUNK_SIZE);\n for (let slice = 0; slice < slices; slice++) {\n const fr = new FileReader();\n fr.readAsArrayBuffer(\n file.slice(\n slice * CHUNK_SIZE,\n slice * CHUNK_SIZE + Math.min(CHUNK_SIZE, file.size - slice * CHUNK_SIZE),\n ),\n );\n fr.onload = e => {\n socket.emit(\"Asset.Upload\", {\n name: file.name,\n directory: target,\n data: fr.result,\n slice,\n totalSlices: slices,\n uuid,\n });\n };\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./asset_node.vue?vue&type=template&id=6d718094&scoped=true&\"\nimport script from \"./asset_node.vue?vue&type=script&lang=ts&\"\nexport * from \"./asset_node.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d718094\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=bc30fc14&scoped=true&\"\nimport script from \"./login.vue?vue&type=script&lang=ts&\"\nexport * from \"./login.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc30fc14\",\n null\n \n)\n\nexport default component.exports","import { layerManager } from \"@/game/layers/manager\";\nimport { g2lx, g2ly } from \"@/game/units\";\nimport { EdgeIterator, TDS } from \"./tds\";\nimport { ccw, cw } from \"./triag\";\n\nexport function drawPolygon(polygon: number[][], colour?: string) {\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n ctx.beginPath();\n ctx.strokeStyle =\n colour === undefined ? `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})` : colour;\n ctx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) {\n ctx.lineTo(g2lx(point[0]), g2ly(point[1]));\n }\n ctx.closePath();\n ctx.stroke();\n}\n\nexport function drawPolygonL(polygon: number[][], colour?: string) {\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n ctx.beginPath();\n ctx.strokeStyle =\n colour === undefined ? `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})` : colour;\n ctx.moveTo(polygon[0][0], polygon[0][1]);\n for (const point of polygon) {\n ctx.lineTo(point[0], point[1]);\n }\n ctx.closePath();\n ctx.stroke();\n}\n\nfunction x(xx: number, local: boolean) {\n if (local) return xx;\n else return g2lx(xx);\n}\n\nfunction y(yy: number, local: boolean) {\n if (local) return yy;\n else return g2ly(yy);\n}\n\nlet I = 0;\nlet J = 0;\n\nfunction drl(ctx: CanvasRenderingContext2D, from: number[], to: number[], constrained: boolean, local: boolean) {\n // J++;\n // if (constrained) {\n // I++;\n // console.log(\"*\", from, to);\n // } else {\n // console.log(\" \", from, to);\n // }\n ctx.beginPath();\n ctx.strokeStyle = constrained ? \"rgba(255, 0, 0, 0.30)\" : \"rgba(0, 0, 0, 0.30)\";\n ctx.moveTo(x(from[0], local), y(from[1], local));\n ctx.lineTo(x(to[0], local), y(to[1], local));\n ctx.closePath();\n ctx.stroke();\n}\n\nfunction drawPolygonT(tds: TDS, local = true, clear = true, logs: 0 | 1 | 2 = 0) {\n I = 0;\n J = 0;\n let T = 0;\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n if (clear) ctx.clearRect(0, 0, 2000, 1000);\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n const ei = new EdgeIterator(tds);\n while (ei.valid) {\n ei.next();\n ei.collect();\n }\n ei.collect();\n do {\n const fromP = ei.edge.first!.vertices[ccw(ei.edge.second)]!.point!;\n const toP = ei.edge.first!.vertices[cw(ei.edge.second)]!.point!;\n if (logs > 0) {\n if (fromP[0] === -Infinity || toP[0] === -Infinity) {\n ei.next();\n continue;\n }\n J++;\n if (ei.edge.first!.constraints[ei.edge.second]) {\n I++;\n if (logs === 2) console.log(`Edge: (*) ${fromP} > ${toP}`);\n } else if (logs === 2) console.log(`Edge: ${fromP} > ${toP}`);\n }\n do {\n ei.next();\n ei.collect();\n } while (ei.valid);\n } while (ei.pos !== null);\n for (const t of tds.triangles) {\n if (t.isInfinite()) continue;\n T++;\n const po = [];\n ctx.fillStyle = \"red\";\n if (t.vertices[0] !== undefined) {\n po.push(t.vertices[0]!.point);\n ctx.beginPath();\n ctx.arc(x(t.vertices[0]!.point![0], local), y(t.vertices[0]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (t.vertices[1] !== undefined) {\n po.push(t.vertices[1]!.point);\n ctx.arc(x(t.vertices[1]!.point![0], local), y(t.vertices[1]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (t.vertices[2] !== undefined) {\n po.push(t.vertices[2]!.point);\n ctx.arc(x(t.vertices[2]!.point![0], local), y(t.vertices[2]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (logs === 2) console.log(\"[T] \", ...po, t.constraints);\n\n ctx.moveTo(x(t.vertices[0]!.point![0], local), y(t.vertices[0]!.point![1], local));\n if (t.vertices[0] !== undefined && t.vertices[1] !== undefined)\n drl(ctx, t.vertices[0]!.point!, t.vertices[1]!.point!, t.constraints[2], local);\n if (t.vertices[1] !== undefined && t.vertices[2] !== undefined)\n drl(ctx, t.vertices[1]!.point!, t.vertices[2]!.point!, t.constraints[0], local);\n if (t.vertices[2] !== undefined && t.vertices[0] !== undefined)\n drl(ctx, t.vertices[2]!.point!, t.vertices[0]!.point!, t.constraints[1], local);\n }\n if (logs > 0) {\n console.log(`Edges: ${I}/${J}`);\n console.log(`Faces: ${T}`);\n }\n}\n\n(window).DP = drawPolygon;\n(window).DPL = drawPolygonL;\n(window).DPT = drawPolygonT;\n","import { render, staticRenderFns } from \"./accordion.vue?vue&type=template&id=0bf2b7ba&scoped=true&\"\nimport script from \"./accordion.vue?vue&type=script&lang=ts&\"\nexport * from \"./accordion.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0bf2b7ba\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=style&index=0&lang=css&\"","import * as tinycolor from \"tinycolor2\";\n\nimport { calcFontScale } from \"@/core/utils\";\nimport { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerCircularToken } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lz } from \"@/game/units\";\n\nexport class CircularToken extends Circle {\n type = \"circulartoken\";\n text: string;\n font: string;\n constructor(\n center: GlobalPoint,\n r: number,\n text: string,\n font: string,\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(center, r, fillColour, strokeColour, uuid);\n this.text = text;\n this.font = font;\n }\n asDict(): ServerCircularToken {\n return Object.assign(this.getBaseDict(), {\n radius: this.r,\n text: this.text,\n font: this.font,\n });\n }\n fromDict(data: ServerCircularToken) {\n super.fromDict(data);\n this.r = data.radius;\n this.text = data.text;\n this.font = data.font;\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.font = this.font;\n ctx.save();\n const dest = g2l(this.center());\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n const xs = calcFontScale(ctx, this.text, g2lz(this.r), g2lz(this.r));\n const ys = 0;\n ctx.transform(xs, ys, -ys, xs, dest.x, dest.y);\n ctx.fillStyle = tinycolor.mostReadable(this.fillColour, [\"#000\", \"#fff\"]).toHexString();\n ctx.fillText(this.text, 0, 0);\n ctx.restore();\n }\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.name === \"\" || this.name === \"Unknown shape\" ? this.text : this.name,\n has_img: false,\n effects: [],\n index: Infinity,\n };\n }\n}\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Text } from \"@/game/shapes/text\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\n\nexport class AnnotationManager {\n annotationText: Text;\n annotationRect: Rect;\n layer: Layer | undefined;\n shown: boolean = false;\n\n constructor() {\n const origin = new GlobalPoint(0, 0);\n this.annotationText = new Text(origin, \"\", \"bold 20px serif\", 0, \"rgba(230, 230, 230, 1)\");\n this.annotationRect = new Rect(origin, 0, 0, \"rgba(0, 0, 0, 0.6)\");\n }\n\n setActiveText(text: string) {\n if (this.layer === undefined) {\n if (layerManager.hasLayer(\"draw\")) {\n this.layer = layerManager.getLayer(\"draw\")!;\n this.layer.addShape(this.annotationRect, false);\n this.layer.addShape(this.annotationText, false);\n } else {\n console.warn(\"There is no draw layer to draw annotations on!\");\n return;\n }\n }\n this.shown = text !== \"\";\n this.annotationText.refPoint = l2g(new LocalPoint(this.layer.canvas.width / 2, 50));\n this.annotationText.text = text;\n const width = this.shown ? this.annotationText.getMaxWidth(this.layer.ctx) + 10 : 0;\n const height = this.shown ? this.annotationText.getMaxHeight(this.layer.ctx) + 10 : 0;\n this.annotationRect.refPoint = l2g(new LocalPoint(this.layer.canvas.width / 2 - width / 2, 30));\n this.annotationRect.w = width / gameStore.zoomFactor;\n this.annotationRect.h = height / gameStore.zoomFactor;\n this.layer.invalidate(true);\n }\n}\n","import { render, staticRenderFns } from \"./menu.vue?vue&type=template&id=c7fe324c&scoped=true&\"\nimport script from \"./menu.vue?vue&type=script&lang=ts&\"\nexport * from \"./menu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c7fe324c\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./contextmenu.vue?vue&type=template&id=256dde9c&\"\nimport script from \"./contextmenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./contextmenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./contextmenu.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Label manager\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Category\"}},[_vm._v(\"Cat.\")])]),_c('div',{staticClass:\"header name\"},[_vm._v(\"Name\")]),_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Visible\"}},[_vm._v(\"Vis.\")])]),_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Delete\"}},[_vm._v(\"Del.\")])]),_c('div',{staticClass:\"separator spanrow\",staticStyle:{\"margin\":\"0 0 7px\"}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search),expression:\"search\"}],ref:\"search\",staticClass:\"spanrow\",attrs:{\"type\":\"text\",\"placeholder\":\"search\"},domProps:{\"value\":(_vm.search)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.search=$event.target.value}}})]),_c('div',{staticClass:\"grid scroll\"},[_vm._l((_vm.categories),function(category){return [_vm._l((_vm.labels[category]),function(label){return [_c('div',{key:'row-'+label.uuid,staticClass:\"row\",on:{\"click\":function($event){return _vm.selectLabel(label.uuid)}}},[(label.category)?[_c('div',{key:'cat-'+label.uuid},[_vm._v(_vm._s(label.category))]),_c('div',{key:'name-'+label.uuid,staticClass:\"name\"},[_vm._v(_vm._s(label.name))])]:_vm._e(),(!label.category)?[_c('div',{key:'cat-'+label.uuid}),_c('div',{key:'name-'+label.uuid,staticClass:\"name\"},[_vm._v(_vm._s(label.name))])]:_vm._e(),_c('div',{key:'visible-'+label.uuid,class:{'lower-opacity': !label.visible},style:({textAlign: 'center'}),on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleVisibility(label)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{key:'delete-'+label.uuid,on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteLabel(label.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])],2)]})]}),(_vm.labels.length === 0)?[_c('div',{attrs:{\"id\":\"no-labels\"}},[_vm._v(\"No labels exist yet\")])]:_vm._e()],2),_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"separator spanrow\"}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newCategory),expression:\"newCategory\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newCategory)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newCategory=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newName),expression:\"newName\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newName=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('button',{attrs:{\"id\":\"addLabelButton\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.addLabel($event)}}},[_vm._v(\"Add\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=template&id=e477c214&scoped=true&\"","import {\n ServerAsset,\n ServerCircle,\n ServerCircularToken,\n ServerLine,\n ServerMultiLine,\n ServerPolygon,\n ServerRect,\n ServerShape,\n ServerText,\n} from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Asset } from \"@/game/shapes/asset\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { CircularToken } from \"@/game/shapes/circulartoken\";\nimport { Line } from \"@/game/shapes/line\";\nimport { MultiLine } from \"@/game/shapes/multiline\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { Text } from \"@/game/shapes/text\";\nimport { Polygon } from \"./polygon\";\n\nexport function createShapeFromDict(shape: ServerShape) {\n let sh: Shape;\n\n // A fromJSON and toJSON on Shape would be cleaner but ts does not allow for static abstracts so yeah.\n\n // Shape Type specifics\n\n const refPoint = new GlobalPoint(shape.x, shape.y);\n if (shape.type_ === \"rect\") {\n const rect = shape;\n sh = new Rect(refPoint, rect.width, rect.height, rect.fill_colour, rect.stroke_colour, rect.uuid);\n } else if (shape.type_ === \"circle\") {\n const circ = shape;\n sh = new Circle(refPoint, circ.radius, circ.fill_colour, circ.stroke_colour, circ.uuid);\n } else if (shape.type_ === \"circulartoken\") {\n const token = shape;\n sh = new CircularToken(\n refPoint,\n token.radius,\n token.text,\n token.font,\n token.fill_colour,\n token.stroke_colour,\n token.uuid,\n );\n } else if (shape.type_ === \"line\") {\n const line = shape;\n sh = new Line(refPoint, new GlobalPoint(line.x2, line.y2), line.line_width, line.stroke_colour, line.uuid);\n } else if (shape.type_ === \"multiline\") {\n const multiline = shape;\n sh = new MultiLine(\n refPoint,\n multiline.points.map(p => new GlobalPoint(p.x, p.y)),\n multiline.line_width,\n multiline.stroke_colour,\n multiline.uuid,\n );\n } else if (shape.type_ === \"polygon\") {\n const polygon = shape;\n sh = new Polygon(\n refPoint,\n polygon.vertices.map(v => new GlobalPoint(v.x, v.y)),\n polygon.fill_colour,\n polygon.stroke_colour,\n polygon.uuid,\n );\n } else if (shape.type_ === \"text\") {\n const text = shape;\n sh = new Text(refPoint, text.text, text.font, text.angle, text.fill_colour, text.stroke_colour, text.uuid);\n } else if (shape.type_ === \"assetrect\") {\n const asset = shape;\n const img = new Image(asset.width, asset.height);\n if (asset.src.startsWith(\"http\")) img.src = new URL(asset.src).pathname;\n else img.src = asset.src;\n sh = new Asset(img, refPoint, asset.width, asset.height, asset.uuid);\n img.onload = () => {\n layerManager.getLayer(shape.layer)!.invalidate(false);\n };\n } else {\n return undefined;\n }\n sh.fromDict(shape);\n return sh;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SelectContext',{ref:\"selectcontext\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=template&id=048b3482&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"colour\":'rgba(255, 255, 255, 0.8)',\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"DM Settings\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\",on:{\"click\":_vm.handleClick}},[_c('div',{attrs:{\"id\":\"categories\"}},_vm._l((_vm.categories),function(category,c){return _c('div',{key:category,staticClass:\"category\",class:{'selected': _vm.selection === c},on:{\"click\":function($event){_vm.selection = c}}},[_vm._v(_vm._s(category))])}),0),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 0),expression:\"selection === 0\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Players\")]),_vm._l((_vm.$store.state.game.players),function(player){return _c('div',{key:player.id,staticClass:\"row smallrow\"},[_c('div',[_vm._v(_vm._s(player.name))]),_c('div',[_c('div',{on:{\"click\":function($event){return _vm.kickPlayer(player.id)}}},[_vm._v(\"Kick\")])])])}),(Object.values(_vm.$store.state.game.players).length === 0)?_c('div',{staticClass:\"row smallrow\"},[_c('div',{staticClass:\"spanrow\"},[_vm._v(\"There are no players yet, invite some using the link below!\")])]):_vm._e(),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Invite code\")]),_c('div',{staticClass:\"row\"},[_c('div',[_vm._v(\"Invitation URL:\")]),(_vm.showRefreshState)?[_c('InputCopyElement',{attrs:{\"value\":_vm.refreshState}})]:[_c('InputCopyElement',{attrs:{\"value\":_vm.invitationUrl}})]],2),_c('div',{staticClass:\"row\",on:{\"click\":_vm.refreshInviteCode}},[_c('div'),_c('div',[_c('button',[_vm._v(\"Refresh invitation code\")])])]),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Danger Zone\")]),_c('div',{staticClass:\"row\"},[_c('div',[(_vm.locked)?[_vm._v(\"Unlock\")]:[_vm._v(\"Lock\")],_vm._v(\" Session \"),_c('i',[_vm._v(\"(DM access only)\")])],2),_c('div',[_c('button',{staticClass:\"danger\",on:{\"click\":_vm.toggleSessionLock}},[(_vm.locked)?[_vm._v(\"Unlock\")]:[_vm._v(\"Lock\")],_vm._v(\" this Session\")],2)])]),_c('div',{staticClass:\"row\"},[_c('div',[_vm._v(\"Remove Session\")]),_c('div',[_c('button',{staticClass:\"danger\",on:{\"click\":_vm.deleteSession}},[_vm._v(\"Delete this Session\")])])])],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 1),expression:\"selection === 1\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"useGridInput\"}},[_vm._v(\"Use grid\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.useGrid),expression:\"useGrid\"}],attrs:{\"id\":\"useGridInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.useGrid)?_vm._i(_vm.useGrid,null)>-1:(_vm.useGrid)},on:{\"change\":function($event){var $$a=_vm.useGrid,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.useGrid=$$a.concat([$$v]))}else{$$i>-1&&(_vm.useGrid=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.useGrid=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"gridSizeInput\"}},[_vm._v(\"Grid Size (in pixels):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.gridSize),expression:\"gridSize\",modifiers:{\"number\":true}}],attrs:{\"id\":\"gridSizeInput\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.gridSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.gridSize=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"unitSizeInput\"}},[_vm._v(\"Unit Size (in ft.):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.unitSize),expression:\"unitSize\",modifiers:{\"number\":true}}],attrs:{\"id\":\"unitSizeInput\",\"type\":\"number\"},domProps:{\"value\":(_vm.unitSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.unitSize=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 2),expression:\"selection === 2\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Core\")]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fakePlayerInput\"}},[_vm._v(\"Fake player:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fakePlayer),expression:\"fakePlayer\"}],attrs:{\"id\":\"fakePlayerInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fakePlayer)?_vm._i(_vm.fakePlayer,null)>-1:(_vm.fakePlayer)},on:{\"change\":function($event){var $$a=_vm.fakePlayer,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fakePlayer=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fakePlayer=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fakePlayer=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"useFOWInput\"}},[_vm._v(\"Fill entire canvas with FOW:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fullFOW),expression:\"fullFOW\"}],attrs:{\"id\":\"useFOWInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fullFOW)?_vm._i(_vm.fullFOW,null)>-1:(_vm.fullFOW)},on:{\"change\":function($event){var $$a=_vm.fullFOW,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fullFOW=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fullFOW=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fullFOW=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fowLOS\"}},[_vm._v(\"Only show lights in LoS:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fowLOS),expression:\"fowLOS\"}],attrs:{\"id\":\"fowLOS\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fowLOS)?_vm._i(_vm.fowLOS,null)>-1:(_vm.fowLOS)},on:{\"change\":function($event){var $$a=_vm.fowLOS,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fowLOS=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fowLOS=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fowLOS=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fowOpacity\"}},[_vm._v(\"FOW opacity:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.fowOpacity),expression:\"fowOpacity\",modifiers:{\"number\":true}}],attrs:{\"id\":\"fowOpacity\",\"type\":\"number\",\"min\":\"0\",\"max\":\"1\",\"step\":\"0.1\"},domProps:{\"value\":(_vm.fowOpacity)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.fowOpacity=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Advanced\")]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"visionMode\"}},[_vm._v(\"Vision Mode:\")]),_c('div',[_c('select',{attrs:{\"id\":\"visionMode\"},on:{\"change\":_vm.changeVisionMode}},[_c('option',{domProps:{\"selected\":_vm.$store.state.game.visionMode === 'bvh'}},[_vm._v(\"BVH\")]),_c('option',{domProps:{\"selected\":_vm.$store.state.game.visionMode === 'triangle'}},[_vm._v(\"Triangle\")])])])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"vmininp\"}},[_vm._v(\"Minimal full vision (ft):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(_vm.visionRangeMin),expression:\"visionRangeMin\",modifiers:{\"lazy\":true,\"number\":true}}],attrs:{\"id\":\"vmininp\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.visionRangeMin)},on:{\"change\":function($event){_vm.visionRangeMin=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"vmaxinp\"}},[_vm._v(\"Maximal vision (ft):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(_vm.visionRangeMax),expression:\"visionRangeMax\",modifiers:{\"lazy\":true,\"number\":true}}],attrs:{\"id\":\"vmaxinp\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.visionRangeMax)},on:{\"change\":function($event){_vm.visionRangeMax=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=template&id=b908e87c&scoped=true&\"","import tinycolor from \"tinycolor2\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { aurasFromServer, aurasToServer } from \"@/game/comm/conversion/aura\";\nimport { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz } from \"@/game/units\";\n\nexport abstract class Shape {\n // Used to create class instance from server shape data\n abstract readonly type: string;\n // The unique ID of this shape\n readonly uuid: string;\n // The layer the shape is currently on\n layer!: string;\n\n // A reference point regarding that specific shape's structure\n protected _refPoint: GlobalPoint;\n\n // Fill colour of the shape\n fillColour: string = \"#000\";\n strokeColour: string = \"rgba(0,0,0,0)\";\n // The optional name associated with the shape\n name = \"Unknown shape\";\n nameVisible = true;\n\n // Associated trackers/auras/owners\n trackers: Tracker[] = [];\n auras: Aura[] = [];\n labels: Label[] = [];\n protected _owners: string[] = [];\n\n // Block light sources\n visionObstruction = false;\n // Prevent shapes from overlapping with this shape\n movementObstruction = false;\n // Does this shape represent a playable token\n isToken = false;\n // Show a highlight box\n showHighlight = false;\n\n // Mouseover annotation\n annotation: string = \"\";\n\n // Draw modus to use\n globalCompositeOperation: string = \"source-over\";\n\n // Additional options for specialized uses\n options: Map = new Map();\n\n constructor(refPoint: GlobalPoint, fillColour?: string, strokeColour?: string, uuid?: string) {\n this._refPoint = refPoint;\n this.uuid = uuid || uuidv4();\n if (fillColour !== undefined) this.fillColour = fillColour;\n if (strokeColour !== undefined) this.strokeColour = strokeColour;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n this._refPoint = point;\n }\n\n abstract getBoundingBox(): BoundingRect;\n\n // If inWorldCoord is\n abstract contains(point: GlobalPoint): boolean;\n\n abstract center(): GlobalPoint;\n abstract center(centerPoint: GlobalPoint): void;\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n // for (const aura of this.auras) {\n // if (aura.value > 0) {\n // const auraCircle = new Circle(this.center(), aura.value);\n // if (auraCircle.visibleInCanvas(canvas)) return true;\n // }\n // }\n return false;\n }\n\n // Code to snap a shape to the grid\n // This is shape dependent as the shape refPoints are shape specific in\n abstract snapToGrid(): void;\n abstract resizeToGrid(): void;\n abstract resize(resizePoint: number, point: LocalPoint): void;\n\n abstract get points(): number[][];\n\n getPointIndex(p: GlobalPoint, delta = 0): number {\n for (const [idx, point] of this.points.entries()) {\n if (Math.abs(p.x - point[0]) <= delta && Math.abs(p.y - point[1]) <= delta) return idx;\n }\n return -1;\n }\n\n getPointOrientation(i: number): Vector {\n const prev = GlobalPoint.fromArray(this.points[(this.points.length + i - 1) % this.points.length]);\n const point = GlobalPoint.fromArray(this.points[i]);\n const next = GlobalPoint.fromArray(this.points[(i + 1) % this.points.length]);\n const vec = next.subtract(prev);\n const mid = prev.add(vec.multiply(0.5));\n return point.subtract(mid).normalize();\n }\n\n invalidate(skipLightUpdate: boolean) {\n const l = layerManager.getLayer(this.layer);\n if (l) l.invalidate(skipLightUpdate);\n }\n\n checkVisionSources(recalculate = true) {\n const self = this;\n const obstructionIndex = gameStore.visionBlockers.indexOf(this.uuid);\n let update = false;\n if (this.visionObstruction && obstructionIndex === -1) {\n gameStore.visionBlockers.push(this.uuid);\n update = true;\n } else if (!this.visionObstruction && obstructionIndex >= 0) {\n gameStore.visionBlockers.splice(obstructionIndex, 1);\n update = true;\n }\n if (update && recalculate) gameStore.recalculateVision();\n\n // Check if the visionsource auras are in the gameManager\n this.auras.forEach(au => {\n const ls = gameStore.visionSources;\n const i = ls.findIndex(o => o.aura === au.uuid);\n if (au.visionSource && i === -1) {\n ls.push({ shape: self.uuid, aura: au.uuid });\n } else if (!au.visionSource && i >= 0) {\n ls.splice(i, 1);\n }\n });\n // Check if anything in the gameManager referencing this shape is in fact still a visionsource\n for (let i = gameStore.visionSources.length - 1; i >= 0; i--) {\n const ls = gameStore.visionSources[i];\n if (ls.shape === self.uuid) {\n if (!self.auras.some(a => a.uuid === ls.aura && a.visionSource)) gameStore.visionSources.splice(i, 1);\n }\n }\n }\n\n setMovementBlock(blocksMovement: boolean, recalculate = true) {\n this.movementObstruction = blocksMovement || false;\n const obstructionIndex = gameStore.movementblockers.indexOf(this.uuid);\n let update = false;\n if (this.movementObstruction && obstructionIndex === -1) {\n gameStore.movementblockers.push(this.uuid);\n update = true;\n } else if (!this.movementObstruction && obstructionIndex >= 0) {\n gameStore.movementblockers.splice(obstructionIndex, 1);\n update = true;\n }\n if (update && recalculate) gameStore.recalculateMovement();\n }\n\n setIsToken(isToken: boolean) {\n this.isToken = isToken;\n if (this.ownedBy()) {\n const i = gameStore.ownedtokens.indexOf(this.uuid);\n if (this.isToken && i === -1) gameStore.ownedtokens.push(this.uuid);\n else if (!this.isToken && i >= 0) gameStore.ownedtokens.splice(i, 1);\n }\n }\n\n abstract asDict(): ServerShape;\n getBaseDict(): ServerShape {\n return {\n type_: this.type,\n uuid: this.uuid,\n x: this.refPoint.x,\n y: this.refPoint.y,\n layer: this.layer,\n draw_operator: this.globalCompositeOperation,\n movement_obstruction: this.movementObstruction,\n vision_obstruction: this.visionObstruction,\n auras: aurasToServer(this.auras),\n trackers: this.trackers,\n labels: this.labels,\n owners: this._owners,\n fill_colour: this.fillColour,\n stroke_colour: this.strokeColour,\n name: this.name,\n name_visible: this.nameVisible,\n annotation: this.annotation,\n is_token: this.isToken,\n options: JSON.stringify([...this.options]),\n };\n }\n fromDict(data: ServerShape) {\n this.layer = data.layer;\n this.globalCompositeOperation = data.draw_operator;\n this.movementObstruction = data.movement_obstruction;\n this.visionObstruction = data.vision_obstruction;\n this.auras = aurasFromServer(data.auras);\n this.trackers = data.trackers;\n this.labels = data.labels;\n this._owners = data.owners;\n this.isToken = data.is_token;\n this.nameVisible = data.name_visible;\n if (data.annotation) this.annotation = data.annotation;\n if (data.name) this.name = data.name;\n if (data.options) this.options = new Map(JSON.parse(data.options));\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n if (this.globalCompositeOperation !== undefined) ctx.globalCompositeOperation = this.globalCompositeOperation;\n else ctx.globalCompositeOperation = \"source-over\";\n if (this.showHighlight) {\n const bbox = this.getBoundingBox();\n ctx.strokeStyle = \"red\";\n ctx.strokeRect(g2lx(bbox.topLeft.x) - 5, g2ly(bbox.topLeft.y) - 5, g2lz(bbox.w) + 10, g2lz(bbox.h) + 10);\n }\n }\n\n drawAuras(ctx: CanvasRenderingContext2D) {\n for (const aura of this.auras) {\n if (aura.value === 0 && aura.dim === 0) return;\n ctx.beginPath();\n\n const loc = g2l(this.center());\n const innerRange = g2lr(aura.value + aura.dim);\n\n if (aura.dim === 0) ctx.fillStyle = aura.colour;\n else {\n const gradient = ctx.createRadialGradient(\n loc.x,\n loc.y,\n g2lr(aura.value),\n loc.x,\n loc.y,\n g2lr(aura.value + aura.dim),\n );\n const tc = tinycolor(aura.colour);\n ctx.fillStyle = gradient;\n gradient.addColorStop(0, aura.colour);\n gradient.addColorStop(1, tc.setAlpha(0).toRgbString());\n }\n if (!aura.visionSource || aura.lastPath === undefined) {\n ctx.arc(loc.x, loc.y, innerRange, 0, 2 * Math.PI);\n ctx.fill();\n } else {\n try {\n ctx.fill(aura.lastPath);\n } catch (e) {\n ctx.arc(loc.x, loc.y, innerRange, 0, 2 * Math.PI);\n ctx.fill();\n console.warn(e);\n }\n }\n }\n }\n\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.name,\n has_img: false,\n effects: [],\n index: Infinity,\n };\n }\n\n moveLayer(layer: string, sync: boolean) {\n const oldLayer = layerManager.getLayer(this.layer);\n const newLayer = layerManager.getLayer(layer);\n if (oldLayer === undefined || newLayer === undefined) return;\n this.layer = layer;\n // Update layer shapes\n oldLayer.shapes.splice(oldLayer.shapes.indexOf(this), 1);\n newLayer.shapes.push(this);\n // Revalidate layers (light should at most be redone once)\n oldLayer.invalidate(true);\n newLayer.invalidate(false);\n // Sync!\n if (sync) socket.emit(\"Shape.Layer.Change\", { uuid: this.uuid, layer });\n }\n\n get owners() {\n return Object.freeze(this._owners.slice());\n }\n\n ownedBy(username?: string) {\n if (username === undefined) username = gameStore.username;\n return gameStore.IS_DM || this._owners.includes(username) || (gameStore.FAKE_PLAYER && gameStore.activeTokens.includes(this.uuid));\n }\n\n addOwner(owner: string) {\n if (!this._owners.includes(owner)) this._owners.push(owner);\n }\n\n updateOwner(oldValue: string, newValue: string) {\n const ownerIndex = this._owners.findIndex(o => o === oldValue);\n if (ownerIndex >= 0) this._owners.splice(ownerIndex, 1, newValue);\n else this.addOwner(newValue);\n }\n\n removeOwner(owner: string) {\n const ownerIndex = this._owners.findIndex(o => o === owner);\n this._owners.splice(ownerIndex, 1);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"menuContainer\"}},[_c('div',{ref:\"rm\",style:({\n left: _vm.visible.settings ? '200px' : '0',\n top: _vm.visible.locations ? '100px' : '0'\n }),attrs:{\"id\":\"radialmenu\"}},[_c('div',{staticClass:\"rm-wrapper\"},[_c('div',{staticClass:\"rm-toggler\"},[_c('ul',{staticClass:\"rm-list\",class:{ 'rm-list-dm': _vm.IS_DM }},[(_vm.IS_DM)?_c('li',{staticClass:\"rm-item\",attrs:{\"id\":\"rm-locations\"},on:{\"click\":function($event){_vm.visible.locations = !_vm.visible.locations}}},[_vm._m(0)]):_vm._e(),_c('li',{staticClass:\"rm-item\",attrs:{\"id\":\"rm-settings\"},on:{\"click\":function($event){_vm.visible.settings = !_vm.visible.settings}}},[_vm._m(1)])])]),_vm._m(2)])]),_c('transition',{attrs:{\"name\":\"settings\"},on:{\"enter\":function($event){_vm.$refs.rm.style.transition = 'left 500ms'}}},[(_vm.visible.settings)?_c('div',{ref:\"settings\",attrs:{\"id\":\"menu\"},on:{\"click\":_vm.settingsClick}},[_c('div',{staticStyle:{\"width\":\"200px\",\"height\":\"90%\",\"overflow-y\":\"auto\",\"overflow-x\":\"hidden\"}},[(_vm.IS_DM)?[_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Assets\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('a',{staticClass:\"actionButton\",attrs:{\"href\":\"/assets\",\"target\":\"blank\",\"title\":\"Open asset manager\"}},[_c('i',{staticClass:\"fas fa-external-link-alt\"})]),_c('div',{staticClass:\"directory\",attrs:{\"id\":\"menu-tokens\"}},[_c('asset-node',{attrs:{\"asset\":_vm.assets}}),(!_vm.assets)?_c('div',[_vm._v(\"No assets\")]):_vm._e()],1)]),_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Notes\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('div',{staticClass:\"menu-accordion-subpanel\",attrs:{\"id\":\"menu-notes\"}},[_c('a',{staticClass:\"actionButton\",on:{\"click\":_vm.createNote}},[_c('i',{staticClass:\"far fa-plus-square\"})]),_vm._l((_vm.notes),function(note){return _c('div',{key:note.uuid,staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.openNote(note)}}},[_vm._v(_vm._s(note.title || \"[?]\"))])}),(!_vm.notes.length)?_c('div',[_vm._v(\"No notes\")]):_vm._e()],2)]),_c('button',{staticClass:\"menu-accordion\",on:{\"click\":_vm.openDmSettings}},[_vm._v(\"DM Options\")])]:_vm._e(),_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Client Options\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('div',{staticClass:\"menu-accordion-subpanel\"},[_c('label',{attrs:{\"for\":\"gridColour\"}},[_vm._v(\"Grid Colour:\")]),_c('color-picker',{attrs:{\"id\":\"gridColour\",\"color\":_vm.gridColour},on:{\"update:color\":function($event){_vm.gridColour=$event}}}),_c('label',{attrs:{\"for\":\"fowColour\"}},[_vm._v(\"FOW Colour:\")]),_c('color-picker',{attrs:{\"id\":\"fowColour\",\"color\":_vm.fowColour},on:{\"update:color\":function($event){_vm.fowColour=$event}}}),_c('label',{attrs:{\"for\":\"rulerColour\"}},[_vm._v(\"Ruler Colour:\")]),_c('color-picker',{attrs:{\"id\":\"rulerColour\",\"color\":_vm.rulerColour},on:{\"update:color\":function($event){_vm.rulerColour=$event}}})],1)])],2),_c('router-link',{staticClass:\"menu-accordion\",staticStyle:{\"text-decoration\":\"none\",\"display\":\"inline-block\",\"position\":\"absolute\",\"bottom\":\"0\"},attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"Exit\")])],1):_vm._e()]),_c('transition',{attrs:{\"name\":\"locations\"},on:{\"enter\":function($event){_vm.$refs.rm.style.transition = 'top 500ms'}}},[(_vm.IS_DM && _vm.visible.locations)?_c('div',{attrs:{\"id\":\"locations-menu\"}},[_c('div',[_vm._l((_vm.locations),function(location){return _c('div',{key:location,on:{\"click\":function($event){return _vm.changeLocation(location)}}},[_vm._v(_vm._s(location))])}),_c('div',{on:{\"click\":_vm.createLocation}},[_c('i',{staticClass:\"fas fa-plus\"})])],2)]):_vm._e()]),_c('img',{attrs:{\"id\":\"dragImage\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"#\"}},[_c('i',{staticClass:\"far fa-compass\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"#\"}},[_c('i',{staticClass:\"fas fa-cog\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"rm-topper\"},[_c('i',{staticClass:\"icon-share-alt\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=template&id=c7fe324c&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.note !== null)?_c('modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('span',{on:{\"click\":function($event){return _vm.$refs.title.select()}}},[_c('i',{staticClass:\"fas fa-pencil-alt\",staticStyle:{\"font-size\":\"15px\"}})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.title),expression:\"note.title\"}],ref:\"title\",domProps:{\"value\":(_vm.note.title)},on:{\"change\":_vm.updateNote,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.note, \"title\", $event.target.value)}}}),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}],null,false,1320213373)},[_c('div',{staticClass:\"modal-body\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.text),expression:\"note.text\"}],ref:\"textarea\",style:({'height': _vm.calcHeight()}),domProps:{\"value\":(_vm.note.text)},on:{\"change\":_vm.updateNote,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.note, \"text\", $event.target.value)}}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.removeNote}},[_c('i',{staticClass:\"far fa-trash-alt\"}),_vm._v(\" Remove\\n \")])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=template&id=7a3669fd&scoped=true&\"","\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport SelectContext from \"@/game/ui/tools/selectcontext.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\nimport SelectionInfo from \"../selection/selection_info.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint, LocalPoint, Ray, Vector } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz, l2g, l2gz } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\nexport enum SelectOperations {\n Noop,\n Resize,\n Drag,\n GroupSelect,\n}\n\nconst start = new GlobalPoint(-1000, -1000);\n\n@Component({\n components: {\n SelectContext,\n },\n})\nexport default class SelectTool extends Tool {\n name = \"Select\";\n showContextMenu = false;\n active = false;\n\n mode = SelectOperations.Noop;\n resizePoint = 0;\n deltaChanged = false;\n // Because we never drag from the asset's (0, 0) coord and want a smoother drag experience\n // we keep track of the actual offset within the asset.\n dragRay = new Ray(new LocalPoint(0, 0), new Vector(0, 0));\n selectionStartPoint = start;\n selectionHelper = new Rect(start, 0, 0);\n created() {\n this.selectionHelper.globalCompositeOperation = \"source-over\";\n }\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n if (!this.selectionHelper.owners.includes(gameStore.username)) {\n this.selectionHelper.addOwner(gameStore.username);\n }\n\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n\n let hit = false;\n // The selectionStack allows for lower positioned objects that are selected to have precedence during overlap.\n let selectionStack;\n if (!layer.selection.length) selectionStack = layer.shapes;\n else selectionStack = layer.shapes.concat(layer.selection);\n for (let i = selectionStack.length - 1; i >= 0; i--) {\n const shape = selectionStack[i];\n\n this.resizePoint = shape.getPointIndex(globalMouse, l2gz(3));\n\n // Resize case, a corner is selected\n if (this.resizePoint >= 0) {\n layer.selection = [shape];\n getRef(\"selectionInfo\").shape = shape;\n this.mode = SelectOperations.Resize;\n layer.invalidate(true);\n hit = true;\n break;\n\n // Drag case, a shape is selected\n } else if (shape.contains(globalMouse)) {\n const selection = shape;\n if (layer.selection.indexOf(selection) === -1) {\n layer.selection = [selection];\n getRef(\"selectionInfo\").shape = selection;\n }\n this.mode = SelectOperations.Drag;\n const localRefPoint = g2l(selection.refPoint);\n this.dragRay = new Ray(localRefPoint, mouse.subtract(localRefPoint));\n layer.invalidate(true);\n hit = true;\n break;\n }\n }\n\n // GroupSelect case, draw a selection box to select multiple shapes\n if (!hit) {\n this.mode = SelectOperations.GroupSelect;\n for (const selection of layer.selection) getRef(\"selectionInfo\").shape = selection;\n\n this.selectionStartPoint = globalMouse;\n\n this.selectionHelper.refPoint = this.selectionStartPoint;\n this.selectionHelper.w = 0;\n this.selectionHelper.h = 0;\n\n layer.selection = [this.selectionHelper];\n layer.invalidate(true);\n }\n this.active = true;\n }\n onMouseMove(event: MouseEvent) {\n // if (!this.active) return; we require mousemove for the resize cursor\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n this.deltaChanged = false;\n\n if (this.mode === SelectOperations.GroupSelect) {\n // Currently draw on active layer\n const endPoint = globalMouse;\n\n this.selectionHelper.w = Math.abs(endPoint.x - this.selectionStartPoint.x);\n this.selectionHelper.h = Math.abs(endPoint.y - this.selectionStartPoint.y);\n this.selectionHelper.refPoint = new GlobalPoint(\n Math.min(this.selectionStartPoint.x, endPoint.x),\n Math.min(this.selectionStartPoint.y, endPoint.y),\n );\n layer.invalidate(true);\n } else if (layer.selection.length) {\n const og = g2l(layer.selection[layer.selection.length - 1].refPoint);\n const origin = og.add(this.dragRay.direction);\n let delta = mouse.subtract(origin).multiply(1 / gameStore.zoomFactor);\n const ogDelta = delta;\n if (this.mode === SelectOperations.Drag) {\n // If we are on the tokens layer do a movement block check.\n if (layer.name === \"tokens\" && !(event.shiftKey && gameStore.IS_DM)) {\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n if (sel.uuid === this.selectionHelper.uuid) continue; // the selection helper should not be treated as a real shape.\n delta = calculateDelta(delta, sel);\n if (delta !== ogDelta) this.deltaChanged = true;\n }\n }\n // Actually apply the delta on all shapes\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n sel.refPoint = sel.refPoint.add(delta);\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision(true);\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: true });\n }\n }\n layer.invalidate(false);\n } else if (this.mode === SelectOperations.Resize) {\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n sel.resize(this.resizePoint, mouse);\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision(true);\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: true });\n }\n layer.invalidate(false);\n this.updateCursor(layer, globalMouse);\n }\n } else {\n this.updateCursor(layer, globalMouse);\n }\n } else {\n document.body.style.cursor = \"default\";\n }\n }\n onMouseUp(e: MouseEvent): void {\n if (!this.active) return;\n if (layerManager.getLayer() === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const layer = layerManager.getLayer()!;\n\n if (this.mode === SelectOperations.GroupSelect) {\n layer.clearSelection();\n layer.shapes.forEach(shape => {\n if (!shape.ownedBy()) return;\n if (shape === this.selectionHelper) return;\n const bbox = shape.getBoundingBox();\n if (!shape.ownedBy()) return;\n if (\n this.selectionHelper!.refPoint.x <= bbox.topRight.x &&\n this.selectionHelper!.refPoint.x + this.selectionHelper!.w >= bbox.topLeft.x &&\n this.selectionHelper!.refPoint.y <= bbox.botLeft.y &&\n this.selectionHelper!.refPoint.y + this.selectionHelper!.h >= bbox.topLeft.y\n ) {\n layer.selection.push(shape);\n }\n });\n\n // Push the selection helper as the last element of the selection\n // This makes sure that it will be the first one to be hit in the hit detection onMouseDown\n if (layer.selection.length > 0) layer.selection.push(this.selectionHelper);\n\n layer.invalidate(true);\n } else if (layer.selection.length) {\n layer.selection.forEach(sel => {\n if (!sel.ownedBy()) return;\n if (this.mode === SelectOperations.Drag) {\n if (\n this.dragRay.origin!.x === g2lx(sel.refPoint.x) &&\n this.dragRay.origin!.y === g2ly(sel.refPoint.y)\n )\n return;\n\n if (gameStore.useGrid && !e.altKey && !this.deltaChanged) {\n sel.snapToGrid();\n }\n\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision();\n if (sel.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n layer.invalidate(false);\n }\n if (this.mode === SelectOperations.Resize) {\n if (gameStore.useGrid && !e.altKey) {\n sel.resizeToGrid();\n }\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision();\n if (sel.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n layer.invalidate(false);\n }\n });\n }\n this.mode = SelectOperations.Noop;\n this.active = false;\n }\n onContextMenu(event: MouseEvent) {\n if (layerManager.getLayer() === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const layer = layerManager.getLayer()!;\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n\n for (const shape of layer.selection) {\n if (shape.contains(globalMouse) && shape !== this.selectionHelper) {\n layer.selection = [shape];\n getRef(\"selectionInfo\").shape = shape;\n layer.invalidate(true);\n (this.$parent.$refs.shapecontext).open(event, shape);\n return;\n }\n }\n (this.$refs.selectcontext).open(event);\n }\n updateCursor(layer: Layer, globalMouse: GlobalPoint) {\n for (const sel of layer.selection) {\n const resizePoint = sel.getPointIndex(globalMouse, l2gz(3));\n if (resizePoint < 0) document.body.style.cursor = \"default\";\n else {\n let angle = sel.getPointOrientation(resizePoint).angle();\n if (angle < 0) angle += 360;\n const d = 45 / 2;\n if (angle >= 315 + d || angle < d || (angle >= 135 + d && angle < 225 - d))\n document.body.style.cursor = \"ew-resize\";\n if ((angle >= 45 + d && angle < 135 - d) || (angle >= 225 + d && angle < 315 - d))\n document.body.style.cursor = \"ns-resize\";\n if ((angle >= d && angle < 90 - d) || (angle >= 180 + d && angle < 270 - d))\n document.body.style.cursor = \"nwse-resize\";\n if ((angle >= 90 + d && angle < 180 - d) || (angle >= 270 + d && angle < 360 - d))\n document.body.style.cursor = \"nesw-resize\";\n }\n }\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport InputCopyElement from \"@/core/components/inputCopy.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\nimport Prompt from '../../core/components/modals/prompt.vue';\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\nimport { layerManager } from \"../layers/manager\";\n\n@Component({\n components: {\n InputCopyElement,\n Modal,\n },\n computed: {\n ...mapState(\"game\", [\"invitationCode\"]),\n },\n})\nexport default class DmSettings extends Vue {\n visible = false;\n categories = [\"Admin\", \"Grid\", \"Vision\"];\n selection = 0;\n\n showRefreshState = false;\n refreshState = \"pending\";\n\n mounted() {\n EventBus.$on(\"DmSettings.Open\", () => {\n this.visible = true;\n });\n EventBus.$on(\"DmSettings.RefreshedInviteCode\", () => {\n this.showRefreshState = false;\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"DmSettings.Open\");\n EventBus.$off(\"DmSettings.RefreshedInviteCode\");\n }\n\n // Admin\n get invitationUrl(): string {\n return window.location.protocol + '//' + window.location.host + '/invite/' + gameStore.invitationCode;\n }\n get locked(): boolean {\n return gameStore.isLocked;\n }\n // Grid\n get useGrid(): boolean {\n return gameStore.useGrid;\n }\n set useGrid(value: boolean) {\n gameStore.setUseGrid({ useGrid: value, sync: true });\n }\n get unitSize(): number {\n return gameStore.unitSize;\n }\n set unitSize(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setUnitSize({ unitSize: value, sync: true });\n }\n get gridSize(): number {\n return gameStore.gridSize;\n }\n set gridSize(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setGridSize({ gridSize: value, sync: true });\n }\n // Vision\n get fakePlayer(): boolean {\n return gameStore.FAKE_PLAYER;\n }\n set fakePlayer(value: boolean) {\n gameStore.setFakePlayer(value);\n }\n get fullFOW(): boolean {\n return gameStore.fullFOW;\n }\n set fullFOW(value: boolean) {\n gameStore.setFullFOW({ fullFOW: value, sync: true });\n }\n get fowOpacity(): number {\n return gameStore.fowOpacity;\n }\n set fowOpacity(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setFOWOpacity({ fowOpacity: value, sync: true });\n }\n get fowLOS(): boolean {\n return gameStore.fowLOS;\n }\n set fowLOS(value: boolean) {\n gameStore.setLineOfSight({ fowLOS: value, sync: true });\n }\n get visionRangeMin(): number {\n return gameStore.visionRangeMin;\n }\n set visionRangeMin(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setVisionRangeMin({ value, sync: true });\n }\n get visionRangeMax(): number {\n return gameStore.visionRangeMax;\n }\n set visionRangeMax(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setVisionRangeMax({ value, sync: true });\n }\n changeVisionMode(event: { target: HTMLSelectElement }) {\n const value = event.target.value.toLowerCase();\n if (value !== \"bvh\" && value !== \"triangle\") return;\n gameStore.setVisionMode({ mode: value, sync: true });\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n layerManager.invalidate();\n }\n handleClick(event: { target: HTMLElement }) {\n const child = event.target.firstElementChild;\n if (child instanceof HTMLInputElement) {\n child.click();\n }\n }\n refreshInviteCode() {\n socket.emit(\"Room.Info.InviteCode.Refresh\");\n this.refreshState = \"pending\";\n this.showRefreshState = true;\n }\n kickPlayer(id: number) {\n socket.emit(\"Room.Info.Players.Kick\", id);\n gameStore.kickPlayer(id);\n }\n toggleSessionLock() {\n gameStore.setIsLocked({isLocked: !gameStore.isLocked, sync: true});\n }\n deleteSession() {\n getRef(\"prompt\")\n .prompt(`ENTER ${gameStore.roomCreator}/${gameStore.roomName} TO CONFIRM SESSION REMOVAL.`, `DELETING SESSION`)\n .then(\n (value: string) => {\n if (value !== `${gameStore.roomCreator}/${gameStore.roomName}`) return;\n socket.emit(\"Room.Delete\");\n this.$router.push(\"/\");\n },\n () => {},\n );\n }\n}\n","import { GlobalPoint, Ray, Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { PA_CDT } from \"@/game/visibility/te/pa\";\nimport { Point, Sign, Triangle } from \"@/game/visibility/te/tds\";\nimport { ccw, cw, intersection, orientation } from \"@/game/visibility/te/triag\";\n\n// First go through each shape in the selection and see if the delta has to be truncated due to movement blockers\n\n// This is definitely super convoluted and inefficient but I was tired and really wanted the smooth wall sliding collision stuff to work\n// And it does now, so hey ¯\\_(ツ)_/¯\nexport function calculateDelta(delta: Vector, sel: Shape, done?: string[]) {\n if (delta.x === 0 && delta.y === 0) return delta;\n if (gameStore.visionMode === \"bvh\") {\n if (done === undefined) done = [];\n const ogSelBBox = sel.getBoundingBox();\n const newSelBBox = ogSelBBox.offset(delta);\n let refine = false;\n for (const movementBlocker of gameStore.movementblockers) {\n if (done.includes(movementBlocker)) continue;\n const blocker = layerManager.UUIDMap.get(movementBlocker)!;\n const blockerBBox = blocker.getBoundingBox();\n let found = blockerBBox.intersectsWithInner(newSelBBox);\n if (!found) {\n // This is an edge case, precalculating the rays is not worth in this case.\n const ray = Ray.fromPoints(ogSelBBox.topLeft.add(delta.normalize()), newSelBBox.topLeft);\n const invDir = ray.direction.inverse();\n const dirIsNegative = [invDir.x < 0, invDir.y < 0];\n found = blockerBBox.intersectP(ray, invDir, dirIsNegative).hit;\n }\n // Check if the bounding box of our destination would intersect with the bounding box of the movementblocker\n if (found) {\n const bCenter = blockerBBox.center();\n const sCenter = ogSelBBox.center();\n\n const d = sCenter.subtract(bCenter);\n const ux = new Vector(1, 0);\n const uy = new Vector(0, 1);\n let dx = d.dot(ux);\n let dy = d.dot(uy);\n if (dx > blockerBBox.w / 2) dx = blockerBBox.w / 2;\n if (dx < -blockerBBox.w / 2) dx = -blockerBBox.w / 2;\n if (dy > blockerBBox.h / 2) dy = blockerBBox.h / 2;\n if (dy < -blockerBBox.h / 2) dy = -blockerBBox.h / 2;\n\n // Closest point / intersection point between the two bboxes. Not the delta intersect!\n const p = bCenter.add(ux.multiply(dx)).add(uy.multiply(dy));\n\n if (p.x === ogSelBBox.topLeft.x || p.x === ogSelBBox.topRight.x) delta = new Vector(0, delta.y);\n else if (p.y === ogSelBBox.topLeft.y || p.y === ogSelBBox.botLeft.y) delta = new Vector(delta.x, 0);\n else {\n if (p.x < ogSelBBox.topLeft.x) delta = new Vector(p.x - ogSelBBox.topLeft.x, delta.y);\n else if (p.x > ogSelBBox.topRight.x) delta = new Vector(p.x - ogSelBBox.topRight.x, delta.y);\n else if (p.y < ogSelBBox.topLeft.y) delta = new Vector(delta.x, p.y - ogSelBBox.topLeft.y);\n else if (p.y > ogSelBBox.botLeft.y) delta = new Vector(delta.x, p.y - ogSelBBox.botLeft.y);\n }\n refine = true;\n done.push(movementBlocker);\n break;\n }\n }\n if (refine) delta = calculateDelta(delta, sel, done);\n return delta;\n } else {\n const centerTriangle = PA_CDT.movement.locate(sel.center().asArray(), null).loc;\n for (const point of sel.points) {\n const lt = PA_CDT.movement.locate(point, centerTriangle);\n const triangle = lt.loc;\n if (triangle === null) continue;\n delta = checkTriangle(point, triangle, delta);\n }\n return delta;\n }\n}\n\nfunction checkTriangle(point: Point, triangle: Triangle, delta: Vector, skip: Triangle[] = []): Vector {\n const p = new GlobalPoint(point[0], point[1]);\n const endpoint = p.add(delta).asArray();\n if (triangle.contains(endpoint)) return delta;\n skip.push(triangle);\n\n for (let i = 0; i < 3; i++) {\n if (skip.includes(triangle.neighbours[i]!)) continue;\n\n const _cw = triangle.vertices[cw(i)]!.point!;\n const _ccw = triangle.vertices[ccw(i)]!.point!;\n const ix = intersection(point, endpoint, _cw, _ccw);\n\n if (ix === null) continue;\n\n if (!triangle.isConstrained(i)) return checkTriangle(point, triangle.neighbours[i]!, delta, skip);\n\n if (ix[0] === p.x && ix[1] === p.y) {\n const OR = orientation;\n const o = orientation(point, endpoint, _ccw);\n // Remember: canvas y axis is inverted\n if (o === Sign.LEFT_TURN) continue;\n if (o === Sign.ZERO) continue;\n }\n let newDelta = new GlobalPoint(ix[0], ix[1]).subtract(p).multiply(0.8);\n if (newDelta.length() < 1) newDelta = new Vector(0, 0);\n if (newDelta.length() < delta.length()) delta = newDelta;\n }\n return delta;\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=script&lang=ts&\"","import { socket } from \"@/game/api/socket\";\nimport { gameStore } from \"@/game/store\";\n\nexport function sendClientOptions() {\n socket.emit(\"Client.Options.Set\", {\n locationOptions: {\n panX: gameStore.panX,\n panY: gameStore.panY,\n zoomFactor: gameStore.zoomFactor,\n },\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\n\nimport { AssetFile, AssetList } from \"@/core/comm/types\";\nimport { alphSort } from \"@/core/utils\";\n\n@Component({\n name: \"asset-node\",\n})\nexport default class AssetNode extends Vue {\n @Prop() asset!: AssetList;\n\n showImage = null;\n get folders(): string[] {\n return Object.keys(this.asset)\n .filter(el => ![\"__files\"].includes(el))\n .sort(alphSort);\n }\n\n get files(): AssetFile[] {\n if (this.asset.__files)\n return (this.asset.__files)\n .concat()\n .sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1));\n return [];\n }\n\n toggle(event: { target: HTMLElement }) {\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < event.target.children.length; i++) {\n const el = event.target.children[i];\n el.style.display = el.style.display === \"\" ? \"block\" : \"\";\n }\n }\n\n dragStart(event: DragEvent, imageSource: string) {\n this.showImage = null;\n if (event === null || event.dataTransfer === null) return;\n const img = (event.target).querySelector(\".preview\")!;\n event.dataTransfer.setDragImage(img, 0, 0);\n event.dataTransfer.setData(\"text/plain\", imageSource);\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"ContextMenu\",style:({left:_vm.left, top:_vm.top}),attrs:{\"tabindex\":\"-1\"},on:{\"blur\":function($event){return _vm.$emit('close')}}},[_c('ul',[_vm._t(\"default\")],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=template&id=256dde9c&\"","// import Vuex from \"vuex\";\nimport { getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { Asset } from \"@/core/comm/types\";\nimport { rootStore } from \"@/store\";\n\nexport interface AssetState {\n root: number;\n files: number[];\n folders: number[];\n idMap: Map;\n selected: number[];\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"assets\", namespaced: true })\nclass AssetStore extends VuexModule {\n root = -1;\n files: number[] = [];\n folders: number[] = [];\n idMap: Map = new Map();\n selected: number[] = [];\n\n @Mutation\n clear() {\n this.folders = [];\n this.files = [];\n }\n\n @Mutation\n clearSelected() {\n console.log(\"Cleared\");\n this.selected = [];\n }\n\n @Mutation\n setRoot(root: number) {\n this.root = root;\n }\n}\n\nexport const assetStore = getModule(AssetStore);\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\nimport Initiative from \"@/game/ui/initiative.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class ShapeContext extends Vue {\n visible = false;\n x = 0;\n y = 0;\n shape: Shape | null = null;\n get activeLayer(): string {\n const layer = layerManager.getLayer();\n return layer === undefined ? \"\" : layer.name;\n }\n open(event: MouseEvent, shape: Shape) {\n this.visible = true;\n this.x = event.pageX;\n this.y = event.pageY;\n this.shape = shape;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n close() {\n this.visible = false;\n this.shape = null;\n }\n getLayers() {\n return layerManager.layers.filter(l => l.selectable && (gameStore.IS_DM || l.playerEditable));\n }\n getActiveLayer() {\n return layerManager.getLayer();\n }\n getInitiativeWord() {\n if (this.shape === null) return \"\";\n return getRef(\"initiative\").contains(this.shape.uuid) ? \"Show\" : \"Add\";\n }\n setLayer(newLayer: string) {\n if (this.shape === null) return;\n this.shape.moveLayer(newLayer, true);\n this.close();\n }\n moveToBack() {\n if (this.shape === null) return;\n const layer = this.getActiveLayer()!;\n layer.moveShapeOrder(this.shape, 0, true);\n this.close();\n }\n moveToFront() {\n if (this.shape === null) return;\n const layer = this.getActiveLayer()!;\n layer.moveShapeOrder(this.shape, layer.shapes.length - 1, true);\n this.close();\n }\n addInitiative() {\n if (this.shape === null) return;\n const initiative = getRef(\"initiative\");\n if (!initiative.contains(this.shape.uuid)) initiative.addInitiative(this.shape.getInitiativeRepr());\n initiative.visible = true;\n this.close();\n }\n openEditDialog() {\n EventBus.$emit(\"EditDialog.Open\", this.shape);\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class InputCopyElement extends Vue {\n @Prop() value!: string;\n\n borderColour = \"lightgray\";\n popupString = \"\";\n showPopup = false;\n\n copy() {\n (navigator).clipboard.writeText(this.value).then(\n () => {\n this.popupString = \"Copied!\";\n this.showPopup = true;\n },\n () => {\n console.log(\"Could not copy to clipboard :(\");\n this.popupString = \"Error!\";\n this.showPopup = true;\n },\n );\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.left + 'px',\"top\":_vm.top + 'px'},on:{\"close\":_vm.close}},[_c('li',{on:{\"click\":_vm.rename}},[_vm._v(\"Rename\")]),_c('li',{on:{\"click\":_vm.remove}},[_vm._v(\"Remove\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=template&id=dbbd4d08&\"","import { Layer } from \"@/game/layers/layer\";\nimport { gameStore } from \"@/game/store\";\n\nexport class GridLayer extends Layer {\n invalidate(): void {\n this.valid = false;\n }\n draw(doClear?: boolean): void {\n if (!this.valid) {\n this.drawGrid();\n }\n }\n drawGrid(): void {\n const ctx = this.ctx;\n this.clear();\n ctx.beginPath();\n\n const gs = gameStore.gridSize;\n\n for (let i = 0; i < this.width; i += gs * gameStore.zoomFactor) {\n ctx.moveTo(i + (gameStore.panX % gs) * gameStore.zoomFactor, 0);\n ctx.lineTo(i + (gameStore.panX % gs) * gameStore.zoomFactor, this.height);\n ctx.moveTo(0, i + (gameStore.panY % gs) * gameStore.zoomFactor);\n ctx.lineTo(this.width, i + (gameStore.panY % gs) * gameStore.zoomFactor);\n }\n\n ctx.strokeStyle = gameStore.gridColour;\n ctx.lineWidth = 1;\n ctx.stroke();\n this.valid = true;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"outer\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.open($event)}}},[_c('div',{staticClass:\"current-color\",style:(_vm.transparent ? 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)' : 'background-color:' + _vm.color),on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.open($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],staticClass:\"mask\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.closePicker($event)}}}),_c('chrome-picker',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],ref:\"chromePicker\",style:({position: 'fixed', left:_vm.left + 'px', top:_vm.top + 'px', 'z-index': 9999}),attrs:{\"value\":_vm.color,\"tabindex\":\"-1\"},on:{\"input\":_vm.updateColor}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=template&id=f8744d60&scoped=true&\"","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport { AssetState } from \"@/assetManager/store\";\nimport { CoreState } from \"@/core/store\";\nimport { GameState } from \"@/game/store\";\n\nVue.use(Vuex);\n\nexport interface RootState {\n assets: AssetState;\n core: CoreState;\n game: GameState;\n}\n\nexport const rootStore = new Vuex.Store({});\n","import { render, staticRenderFns } from \"./colorpicker.vue?vue&type=template&id=f8744d60&scoped=true&\"\nimport script from \"./colorpicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./colorpicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f8744d60\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { Shape } from \"../../shapes/shape\";\n\n@Component\nexport default class VisionTool extends Tool {\n name = \"Vision\";\n active = false;\n\n get selection(): string[] {\n return gameStore.activeTokens;\n }\n\n get tokens(): Shape[] {\n return gameStore.ownedtokens.map(t => layerManager.UUIDMap.get(t)!);\n }\n\n toggle(uuid: string) {\n if (this.selection.includes(uuid)) gameStore.removeActiveToken(uuid);\n else gameStore.addActiveToken(uuid);\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view',{ref:\"activeComponent\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=196415f0&\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { GlobalPoint, Ray } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Settings } from \"@/game/settings\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz, getUnitDistance } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\nimport { computeVisibility } from \"../visibility/te/te\";\n\nexport class FOWLayer extends Layer {\n isVisionLayer: boolean = true;\n preFogShapes: Shape[] = [];\n virtualCanvas: HTMLCanvasElement;\n vCtx: CanvasRenderingContext2D;\n\n constructor(canvas: HTMLCanvasElement, name: string) {\n super(canvas, name);\n this.virtualCanvas = document.createElement(\"canvas\");\n this.virtualCanvas.width = window.innerWidth;\n this.virtualCanvas.height = window.innerHeight;\n this.vCtx = this.virtualCanvas.getContext(\"2d\")!;\n }\n\n addShape(shape: Shape, sync: boolean, temporary?: boolean, invalidate = true): void {\n super.addShape(shape, sync, temporary, invalidate);\n if (shape.options.has(\"preFogShape\") && shape.options.get(\"preFogShape\")) {\n this.preFogShapes.push(shape);\n }\n }\n\n removeShape(shape: Shape, sync: boolean, temporary?: boolean) {\n if (shape.options.has(\"preFogShape\") && shape.options.get(\"preFogShape\")) {\n const idx = this.preFogShapes.findIndex(s => s.uuid === shape.uuid);\n this.preFogShapes.splice(idx, 1);\n }\n super.removeShape(shape, sync, temporary);\n }\n\n draw(): void {\n if (!this.valid) {\n const ctx = this.ctx;\n\n if (Settings.skipLightFOW) {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.valid = true;\n return;\n }\n\n const originalOperation = ctx.globalCompositeOperation;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n\n const dctx = layerManager.getLayer(\"draw\")!.ctx;\n if (Settings.drawAngleLines || Settings.drawFirstLightHit) {\n dctx.clearRect(0, 0, dctx.canvas.width, dctx.canvas.height);\n }\n\n // At all times provide a minimal vision range to prevent losing your tokens in fog.\n if (gameStore.fullFOW && layerManager.hasLayer(\"tokens\")) {\n layerManager.getLayer(\"tokens\")!.shapes.forEach(sh => {\n if (!sh.ownedBy() || !sh.isToken) return;\n const bb = sh.getBoundingBox();\n const lcenter = g2l(sh.center());\n const alm = 0.8 * g2lz(bb.w);\n ctx.beginPath();\n ctx.arc(lcenter.x, lcenter.y, alm, 0, 2 * Math.PI);\n const gradient = ctx.createRadialGradient(lcenter.x, lcenter.y, alm / 2, lcenter.x, lcenter.y, alm);\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n ctx.fill();\n });\n }\n\n this.vCtx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n\n // First cut out all the light sources\n for (const light of gameStore.visionSources) {\n const shape = layerManager.UUIDMap.get(light.shape);\n if (shape === undefined) continue;\n const aura = shape.auras.find(a => a.uuid === light.aura);\n if (aura === undefined) continue;\n\n const auraLength = getUnitDistance(aura.value + aura.dim);\n const center = shape.center();\n const lcenter = g2l(center);\n\n const auraCircle = new Circle(center, auraLength);\n if (!auraCircle.visibleInCanvas(ctx.canvas)) continue;\n\n if (gameStore.visionMode === \"bvh\") {\n let lastArcAngle = -1;\n\n const path = new Path2D();\n path.moveTo(lcenter.x, lcenter.y);\n let firstPoint: GlobalPoint;\n\n for (let angle = 0; angle < 2 * Math.PI; angle += (Settings.angleSteps / 180) * Math.PI) {\n const anglePoint = new GlobalPoint(\n center.x + auraLength * Math.cos(angle),\n center.y + auraLength * Math.sin(angle),\n );\n if (Settings.drawAngleLines) {\n dctx!.beginPath();\n dctx!.moveTo(g2lx(center.x), g2ly(center.y));\n dctx!.lineTo(g2lx(anglePoint.x), g2ly(anglePoint.y));\n dctx!.stroke();\n }\n\n // Check if there is a hit with one of the nearby light blockers.\n const lightRay = Ray.fromPoints(center, anglePoint);\n const hitResult = gameStore.BV.intersect(lightRay);\n\n if (angle === 0) firstPoint = hitResult.hit ? hitResult.intersect : anglePoint;\n\n // We can move on to the next angle if nothing was hit.\n if (!hitResult.hit) {\n // If an earlier hit caused the aura to leave the arc, we need to go back to the arc\n if (lastArcAngle === -1) {\n // Set the start of a new arc beginning at the current angle\n lastArcAngle = angle;\n // Draw a line from the last non arc location back to the arc\n const dest = g2l(anglePoint);\n ctx.lineTo(dest.x, dest.y);\n }\n continue;\n }\n // If hit , first finish any ongoing arc, then move to the intersection point\n if (lastArcAngle !== -1) {\n path.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), lastArcAngle, angle);\n lastArcAngle = -1;\n }\n path.lineTo(g2lx(hitResult.intersect.x), g2ly(hitResult.intersect.y));\n }\n // Finish the final arc.\n if (lastArcAngle === -1) path.lineTo(g2lx(firstPoint!.x), g2ly(firstPoint!.y));\n else path.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), lastArcAngle, 2 * Math.PI);\n\n if (gameStore.fullFOW) {\n if (aura.dim > 0) {\n // Fill the light aura with a radial dropoff towards the outside.\n const gradient = ctx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(aura.value),\n lcenter.x,\n lcenter.y,\n g2lr(aura.value + aura.dim),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n } else {\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n ctx.fill(path);\n }\n\n aura.lastPath = path;\n } else {\n this.vCtx.globalCompositeOperation = \"source-over\";\n this.vCtx.fillStyle = \"rgba(0, 0, 0, 1)\";\n const polygon = computeVisibility(center, \"vision\");\n this.vCtx.beginPath();\n this.vCtx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) this.vCtx.lineTo(g2lx(point[0]), g2ly(point[1]));\n this.vCtx.closePath();\n this.vCtx.fill();\n if (aura.dim > 0) {\n // Fill the light aura with a radial dropoff towards the outside.\n const gradient = this.vCtx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(aura.value),\n lcenter.x,\n lcenter.y,\n g2lr(aura.value + aura.dim),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n this.vCtx.fillStyle = gradient;\n } else {\n this.vCtx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n this.vCtx.globalCompositeOperation = \"source-in\";\n this.vCtx.beginPath();\n this.vCtx.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), 0, 2 * Math.PI);\n this.vCtx.fill();\n ctx.drawImage(this.virtualCanvas, 0, 0);\n }\n }\n\n // At the DM Side due to opacity of the two fow layers, it looks strange if we just render them on top of eachother like players.\n if (gameStore.fowLOS) {\n ctx.globalCompositeOperation = \"source-in\";\n ctx.drawImage(layerManager.getLayer(\"fow-players\")!.canvas, 0, 0);\n }\n\n for (const preShape of this.preFogShapes) {\n if (!preShape.visibleInCanvas(this.canvas)) continue;\n const ogComposite = preShape.globalCompositeOperation;\n if (!gameStore.fullFOW) {\n if (preShape.globalCompositeOperation === \"source-over\")\n preShape.globalCompositeOperation = \"destination-out\";\n else if (preShape.globalCompositeOperation === \"destination-out\")\n preShape.globalCompositeOperation = \"source-over\";\n }\n preShape.draw(ctx);\n preShape.globalCompositeOperation = ogComposite;\n }\n\n if (gameStore.fullFOW) {\n ctx.globalCompositeOperation = \"source-out\";\n ctx.fillStyle = getFogColour();\n ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n }\n\n super.draw(false);\n\n ctx.globalCompositeOperation = originalOperation;\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Edit asset\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"grid\"},[_c('label',{attrs:{\"for\":\"shapeselectiondialog-name\"}},[_vm._v(\"Name\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shape.name),expression:\"shape.name\"}],staticStyle:{\"grid-column\":\"numerator / remove\"},attrs:{\"type\":\"text\",\"id\":\"shapeselectiondialog-name\",\"disabled\":!_vm.owned},domProps:{\"value\":(_vm.shape.name)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.shape, \"name\", $event.target.value)}}}),_c('div',{style:({opacity: _vm.shape.nameVisible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){_vm.shape.nameVisible = !_vm.shape.nameVisible;_vm.updateShape(false)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('label',{attrs:{\"for\":\"shapeselectiondialog-istoken\"}},[_vm._v(\"Is a token\")]),_c('input',{staticClass:\"styled-checkbox\",staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-istoken\",\"disabled\":!_vm.owned},domProps:{\"checked\":_vm.shape.isToken},on:{\"click\":_vm.setToken}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-visionblocker\"}},[_vm._v(\"Blocks vision/light\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shape.visionObstruction),expression:\"shape.visionObstruction\"}],staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-visionblocker\",\"disabled\":!_vm.owned},domProps:{\"checked\":Array.isArray(_vm.shape.visionObstruction)?_vm._i(_vm.shape.visionObstruction,null)>-1:(_vm.shape.visionObstruction)},on:{\"change\":[function($event){var $$a=_vm.shape.visionObstruction,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.shape, \"visionObstruction\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.shape, \"visionObstruction\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.shape, \"visionObstruction\", $$c)}},_vm.setVisionBlocker]}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-moveblocker\"}},[_vm._v(\"Blocks movement\")]),_c('input',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-moveblocker\",\"disabled\":!_vm.owned},domProps:{\"checked\":_vm.shape.movementObstruction},on:{\"click\":_vm.setMovementBlocker}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-strokecolour\"}},[_vm._v(\"Border colour\")]),_c('color-picker',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"color\":_vm.shape.strokeColour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(_vm.shape, \"strokeColour\", $event)},\"input\":function($event){return _vm.updateShape(true, true)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-fillcolour\"}},[_vm._v(\"Fill colour\")]),_c('color-picker',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"color\":_vm.shape.fillColour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(_vm.shape, \"fillColour\", $event)},\"input\":function($event){return _vm.updateShape(true, true)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Access\")]),_vm._l((_vm.shape.owners),function(owner){return [_c('input',{key:owner,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":owner},on:{\"change\":function($event){return _vm.updateOwner($event, owner)}}}),(owner !== '')?_c('div',{key:'remove-' + owner,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center', gridColumnStart: 'remove'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeOwner(owner)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Trackers\")]),_vm._l((_vm.shape.trackers),function(tracker){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(tracker.name),expression:\"tracker.name\"}],key:'name-'+tracker.uuid,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.name)},on:{\"change\":function($event){return _vm.updateShape(false);},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(tracker.value),expression:\"tracker.value\",modifiers:{\"number\":true}}],key:'value-'+tracker.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.value)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"value\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'fspan-'+tracker.uuid},[_vm._v(\"/\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(tracker.maxvalue),expression:\"tracker.maxvalue\",modifiers:{\"number\":true}}],key:'maxvalue-'+tracker.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.maxvalue)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"maxvalue\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'sspan-'+tracker.uuid}),_c('div',{key:'visibility-'+tracker.uuid,style:({opacity: tracker.visible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){tracker.visible = !tracker.visible;_vm.updateShape(false)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('span',{key:'tspan-'+tracker.uuid}),(tracker.name !== '' || tracker.value !== 0)?_c('div',{key:'remove-'+tracker.uuid,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeTracker(tracker.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Auras\")]),_vm._l((_vm.shape.auras),function(aura){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(aura.name),expression:\"aura.name\"}],key:'name-'+aura.uuid,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.name)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(aura.value),expression:\"aura.value\",modifiers:{\"number\":true}}],key:'value-'+aura.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.value)},on:{\"change\":function($event){return _vm.updateShape(true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"value\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'fspan-'+aura.uuid},[_vm._v(\"/\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(aura.dim),expression:\"aura.dim\",modifiers:{\"number\":true}}],key:'dimvalue-'+aura.uuid,attrs:{\"type\":\"text\",\"title\":\"Dim value\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.dim)},on:{\"change\":function($event){return _vm.updateShape(true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"dim\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('color-picker',{key:'colour-'+aura.uuid,attrs:{\"color\":aura.colour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(aura, \"colour\", $event)},\"input\":function($event){return _vm.updateAuraColour(aura, $event)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('div',{key:'visibility-'+aura.uuid,style:({opacity: aura.visible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){aura.visible = !aura.visible;_vm.updateShape(true)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{key:'visionsource-'+aura.uuid,style:({opacity: aura.visionSource ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.updateAuraVisionSource(aura)}}},[_c('i',{staticClass:\"fas fa-lightbulb\"})]),(aura.name !== '' || aura.value !== 0)?_c('div',{key:'remove-'+aura.uuid,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeAura(aura.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Labels\")]),_c('div',{staticClass:\"spanrow\",attrs:{\"id\":\"labels\"}},[_vm._l((_vm.shape.labels),function(label){return _c('div',{key:label.uuid,staticClass:\"label\"},[(label.category)?[_c('div',{staticClass:\"label-user\"},[_vm._v(_vm._s(label.category))]),_c('div',{staticClass:\"label-main\",on:{\"click\":function($event){return _vm.removeLabel(label.uuid)}}},[_vm._v(_vm._s(label.name))])]:_vm._e(),(!label.category)?[_c('div',{staticClass:\"label-main\",on:{\"click\":function($event){return _vm.removeLabel(label.uuid)}}},[_vm._v(_vm._s(label.name))])]:_vm._e()],2)}),(_vm.owned)?_c('div',{staticClass:\"label\",attrs:{\"id\":\"label-add\"}},[_c('div',{staticClass:\"label-main\",on:{\"click\":_vm.openLabelManager}},[_vm._v(\"+\")])]):_vm._e()],2),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Annotation\")]),_c('textarea',{staticClass:\"spanrow\",attrs:{\"disabled\":!_vm.owned},domProps:{\"value\":_vm.shape.annotation},on:{\"change\":_vm.updateAnnotation}})],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=template&id=23de098e&scoped=true&\"","import { ServerCircle } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2l, g2lz, l2g } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\n\nexport class Circle extends Shape {\n type = \"circle\";\n r: number;\n constructor(center: GlobalPoint, r: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(center, fillColour, strokeColour, uuid);\n this.r = r || 1;\n }\n asDict(): ServerCircle {\n // const base = this.getBaseDict();\n // base.r = this.r;\n // base.border = this.border;\n // return base;\n return Object.assign(this.getBaseDict(), {\n radius: this.r,\n });\n }\n fromDict(data: ServerCircle) {\n super.fromDict(data);\n this.r = data.radius;\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(\n new GlobalPoint(this.refPoint.x - this.r, this.refPoint.y - this.r),\n this.r * 2,\n this.r * 2,\n );\n }\n\n get points() {\n return this.getBoundingBox().points;\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.beginPath();\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n const loc = g2l(this.refPoint);\n ctx.arc(loc.x, loc.y, g2lz(this.r), 0, 2 * Math.PI);\n ctx.fill();\n if (this.strokeColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.beginPath();\n ctx.lineWidth = g2lz(5);\n ctx.strokeStyle = this.strokeColour;\n ctx.arc(loc.x, loc.y, g2lz(this.r), 0, 2 * Math.PI);\n ctx.stroke();\n }\n }\n contains(point: GlobalPoint): boolean {\n return (point.x - this.refPoint.x) ** 2 + (point.y - this.refPoint.y) ** 2 < this.r ** 2;\n }\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n if (centerPoint === undefined) return this.refPoint;\n this.refPoint = centerPoint;\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid() {\n const gs = gameStore.gridSize;\n let targetX;\n let targetY;\n if (((2 * this.r) / gs) % 2 === 0) {\n targetX = Math.round(this.refPoint.x / gs) * gs;\n } else {\n targetX = Math.round((this.refPoint.x - gs / 2) / gs) * gs + this.r;\n }\n if (((2 * this.r) / gs) % 2 === 0) {\n targetY = Math.round(this.refPoint.y / gs) * gs;\n } else {\n targetY = Math.round((this.refPoint.y - gs / 2) / gs) * gs + this.r;\n }\n const delta = calculateDelta(new Vector(targetX - this.refPoint.x, targetY - this.refPoint.y), this);\n this.refPoint = this.refPoint.add(delta);\n this.invalidate(false);\n }\n resizeToGrid() {\n const gs = gameStore.gridSize;\n this.r = Math.max(Math.round(this.r / gs) * gs, gs / 2);\n this.invalidate(false);\n }\n resize(resizePoint: number, point: LocalPoint) {\n const z = gameStore.zoomFactor;\n const diff = l2g(point).subtract(this.refPoint);\n this.r = Math.sqrt(Math.pow(diff.length(), 2) / 2);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class MapTool extends Tool {\n name = \"Map\";\n active = false;\n xCount = 3;\n yCount = 3;\n startPoint: GlobalPoint | null = null;\n rect: Rect | null = null;\n\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = true;\n\n this.startPoint = l2g(getMouse(event));\n this.rect = new Rect(this.startPoint.clone(), 0, 0, \"rgba(0,0,0,0)\", \"black\");\n layer.addShape(this.rect, false, false);\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active || this.rect === null || this.startPoint === null) return;\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n const endPoint = l2g(getMouse(event));\n\n this.rect.w = Math.abs(endPoint.x - this.startPoint.x);\n this.rect.h = Math.abs(endPoint.y - this.startPoint.y);\n this.rect.refPoint = new GlobalPoint(\n Math.min(this.startPoint.x, endPoint.x),\n Math.min(this.startPoint.y, endPoint.y),\n );\n layer.invalidate(false);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.rect === null) return;\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = false;\n\n if (layer.selection.length !== 1) {\n layer.removeShape(this.rect, false, false);\n return;\n }\n\n const w = this.rect.w;\n const h = this.rect.h;\n const sel = layer.selection[0];\n\n if (sel instanceof BaseRect) {\n sel.w *= (this.xCount * gameStore.gridSize) / w;\n sel.h *= (this.yCount * gameStore.gridSize) / h;\n }\n\n layer.removeShape(this.rect, false, false);\n }\n}\n","import { render, staticRenderFns } from \"./load.vue?vue&type=template&id=ff095222&\"\nimport script from \"./load.vue?vue&type=script&lang=ts&\"\nexport * from \"./load.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { LocalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class PanTool extends Tool {\n name = \"Pan\";\n panStart = new LocalPoint(0, 0);\n active = false;\n\n onMouseDown(event: MouseEvent) {\n this.panStart = getMouse(event);\n this.active = true;\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active) return;\n const mouse = getMouse(event);\n const distance = mouse.subtract(this.panStart).multiply(1 / gameStore.zoomFactor);\n gameStore.increasePanX(Math.round(distance.x));\n gameStore.increasePanY(Math.round(distance.y));\n this.panStart = mouse;\n layerManager.invalidate();\n }\n onMouseUp(event: MouseEvent) {\n this.active = false;\n sendClientOptions();\n }\n}\n","import { render, staticRenderFns } from \"./selectcontext.vue?vue&type=template&id=2e7d4582&scoped=true&\"\nimport script from \"./selectcontext.vue?vue&type=script&lang=ts&\"\nexport * from \"./selectcontext.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e7d4582\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nimport { app } from \"@/main\";\n\n// Reference: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nexport function uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nexport function capitalize(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\nexport function alphSort(a: string, b: string) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n else return 1;\n}\n\nexport function getHTMLFont(element: HTMLElement) {\n let font = element.style.font;\n while (font === null && element.parentElement !== null) {\n element = element.parentElement;\n font = element.style.font;\n }\n if (font === null) font = window.getComputedStyle(document.body).getPropertyValue(\"font\");\n return font;\n}\n\nexport function getHTMLTextWidth(text: string, font: string): number {\n let fakeElement = document.getElementById(\"emptycanvas\");\n if (fakeElement === null) {\n fakeElement = document.createElement(\"canvas\");\n fakeElement.id = \"emptycanvas\";\n fakeElement.style.display = \"\";\n document.body.appendChild(fakeElement);\n }\n const ctx = fakeElement.getContext(\"2d\")!;\n ctx.font = font;\n return Math.ceil(ctx.measureText(text).width);\n}\n\nexport function partition(arr: T[], predicate: (n: T) => boolean) {\n const ret: T[][] = [[], []];\n arr.forEach(n => (predicate(n) ? ret[1].push(n) : ret[0].push(n)));\n return ret;\n}\n\nexport function calcFontScale(ctx: CanvasRenderingContext2D, text: string, width: number, height: number) {\n const points = Number(ctx.font.split(\"px\")[0]) * 0.2;\n const fontWidth = ctx.measureText(text).width;\n return Math.min(width / fontWidth, height / points);\n}\n\nexport function fixedEncodeURIComponent(str: string) {\n return encodeURIComponent(str).replace(/[!'()*]/g, c => {\n return \"%\" + c.charCodeAt(0).toString(16);\n });\n}\n\nexport class OrderedMap {\n keys: K[] = [];\n values: V[] = [];\n\n get length() {\n return this.keys.length;\n }\n\n get(key: K) {\n return this.values[this.keys.indexOf(key)];\n }\n getIndexValue(idx: number) {\n return this.values[idx];\n }\n getIndexKey(idx: number) {\n return this.keys[idx];\n }\n set(key: K, value: V) {\n this.keys.push(key);\n this.values.push(value);\n }\n has(key: K) {\n return this.indexOf(key) >= 0;\n }\n indexOf(element: K) {\n return this.keys.indexOf(element);\n }\n remove(element: K) {\n const idx = this.indexOf(element);\n this.keys.splice(idx, 1);\n this.values.splice(idx, 1);\n }\n}\n\nexport function getComponent(): T {\n return app.$children[0].$refs.activeComponent;\n}\n\nexport function getRef(ref: string): T {\n const active = app.$children[0].$refs.activeComponent;\n return active.$refs[ref];\n}\n","import { render, staticRenderFns } from \"./contextMenu.vue?vue&type=template&id=dbbd4d08&\"\nimport script from \"./contextMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./contextMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { EdgeCirculator, Point, Sign, Triangle, Vertex } from \"./tds\";\n\ntype Line = number[];\n\nexport function cw(index: number) {\n return (index + 2) % 3;\n}\n\nexport function ccw(index: number) {\n return (index + 1) % 3;\n}\n\nexport function edgeInfo(va: Vertex, vb: Vertex) {\n const ec = new EdgeCirculator(va, null);\n if (ec.valid) {\n do {\n const indv = 3 - ec.t!.indexV(va) - ec.ri;\n const v = ec.t!.vertices[indv]!;\n if (!v.infinite) {\n if (v === vb) {\n return { includes: true, vi: vb, fr: ec.t!, i: ec.ri };\n } else {\n const orient = orientation(va.point!, vb.point!, v.point!);\n if (orient === Sign.COLLINEAR && collinearBetween(va.point!, v.point!, vb.point!)) {\n return { includes: true, vi: v, fr: ec.t!, i: ec.ri };\n }\n }\n }\n } while (ec.next());\n }\n return { includes: false };\n}\n\nexport function collinearBetween(p: Point, q: Point, r: Point): boolean {\n let cPQ: Sign;\n let cQR: Sign;\n if (compare(0, p, r) === Sign.EQUAL) {\n cPQ = compare(1, p, q);\n cQR = compare(1, q, r);\n } else {\n cPQ = compare(0, p, q);\n cQR = compare(0, q, r);\n }\n return (cPQ === Sign.SMALLER && cQR === Sign.SMALLER) || (cPQ === Sign.LARGER && cQR === Sign.LARGER);\n}\n\nfunction compare(index: number, a: Point, b: Point): Sign {\n if (a[index] < b[index]) return Sign.SMALLER;\n if (a[index] > b[index]) return Sign.LARGER;\n return Sign.EQUAL;\n}\n\nexport function orientation(p: Point, q: Point, r: Point) {\n const px = p[0];\n const py = p[1];\n const qx = q[0];\n const qy = q[1];\n const rx = r[0];\n const ry = r[1];\n const pqx = qx - px;\n const pqy = qy - py;\n const prx = rx - px;\n const pry = ry - py;\n const det = determinant(pqx, pqy, prx, pry);\n let maxX = Math.abs(pqx);\n let maxY = Math.abs(pqy);\n const aprX = Math.abs(prx);\n const aprY = Math.abs(pry);\n if (maxX < aprX) maxX = aprX;\n if (maxY < aprY) maxY = aprY;\n if (maxX > maxY) [maxX, maxY] = [maxY, maxX];\n // underflow proection in eps computation?? Math.sqrt(Number.MIN_VALUE, Number.EPSILON)\n if (maxX < 2e-162 && maxX === 0) {\n return Sign.ZERO;\n }\n // overflow protection in det computation\n if (maxY < 1e153) {\n const eps = Number.EPSILON * maxX * maxY;\n if (det > eps) return Sign.POSITIVE;\n if (det < -eps) return Sign.NEGATIVE;\n }\n return Sign.ZERO;\n}\n\nexport function determinant(a00: number, a01: number, a10: number, a11: number) {\n return a00 * a11 - a01 * a10;\n}\n\nexport function hasInexactNegativeOrientation(p: Point, q: Point, r: Point) {\n return determinant(q[0] - p[0], q[1] - p[1], r[0] - p[0], r[1] - p[1]) < 0;\n}\n\nexport function sideOfOrientedCircle(t: Triangle, p: Point, perturb: boolean): Sign {\n if (!t.isInfinite())\n return sideOfOrientedCircleP(t.vertices[0]!.point!, t.vertices[1]!.point!, t.vertices[2]!.point!, p, perturb);\n throw new Error(\"SSS\");\n}\n\nfunction sideOfOrientedCircleP(p0: Point, p1: Point, p2: Point, p: Point, perturb: boolean): Sign {\n const os = getOrientedSide(p0, p1, p2, p);\n if (os !== Sign.ON_ORIENTED_BOUNDARY || !perturb) return os;\n const points = [p0, p1, p2, p];\n points.sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n for (const point of points.reverse()) {\n if (point === p) return Sign.ON_NEGATIVE_SIDE;\n let o = orientation(p0, p1, p);\n if (point === p2 && o !== Sign.COLLINEAR) return o;\n o = orientation(p0, p, p2);\n if (point === p1 && o !== Sign.COLLINEAR) return o;\n o = orientation(p, p1, p2);\n if (point === p0 && o !== Sign.COLLINEAR) return o;\n }\n return Sign.ON_NEGATIVE_SIDE;\n}\n\nexport function xyEqual(p: Point, q: Point) {\n return p[0] === q[0] && p[1] === q[1];\n}\n\nexport function xySmaller(p: Point, q: Point) {\n return p[0] < q[0] || (p[0] === q[0] && p[1] < q[1]);\n}\n\nexport function xyCompare(p: Point, q: Point) {\n if (xySmaller(p, q)) return Sign.SMALLER;\n if (xyEqual(p, q)) return Sign.EQUAL;\n return Sign.LARGER;\n}\n\nfunction getOrientedSide(p: Point, q: Point, r: Point, t: Point): Sign {\n const qpx = q[0] - p[0];\n const qpy = q[1] - p[1];\n const rpx = r[0] - p[0];\n const rpy = r[1] - p[1];\n const tpx = t[0] - p[0];\n const tpy = t[1] - p[1];\n const tqx = t[0] - q[0];\n const tqy = t[1] - q[1];\n const rqx = r[0] - q[0];\n const rqy = r[1] - q[1];\n\n const det = determinant(qpx * tpy - qpy * tpx, tpx * tqx + tpy * tqy, qpx * rpy - qpy * rpx, rpx * rqx + rpy * rqy);\n let maxx = Math.abs(qpx);\n let maxy = Math.abs(qpy);\n const arpx = Math.abs(rpx);\n const arpy = Math.abs(rpy);\n const atqx = Math.abs(tqx);\n const atqy = Math.abs(tqy);\n const atpx = Math.abs(tpx);\n const atpy = Math.abs(tpy);\n const arqx = Math.abs(rqx);\n const arqy = Math.abs(rqy);\n\n if (maxx < arpx) maxx = arpx;\n if (maxx < atpx) maxx = atpx;\n if (maxx < atqx) maxx = atqx;\n if (maxx < arqx) maxx = arqx;\n\n if (maxy < arpy) maxy = arpy;\n if (maxy < atpy) maxy = atpy;\n if (maxy < atqy) maxy = atqy;\n if (maxy < arqy) maxy = arqy;\n\n if (maxx > maxy) [maxx, maxy] = [maxy, maxx];\n\n if (maxx < 1e-73 && maxx === 0) return Sign.ON_ORIENTED_BOUNDARY;\n // sqrt(sqrt(max_double/16\n else if (maxy < 1e76) {\n const eps = Number.EPSILON * maxx * maxy * (maxy * maxy);\n if (det > eps) return Sign.ON_POSITIVE_SIDE;\n if (det < -eps) return Sign.ON_NEGATIVE_SIDE;\n }\n\n return Sign.ZERO;\n}\n\nfunction segSegDoIntersectCrossing(p1: Point, p2: Point, p3: Point, p4: Point): boolean {\n switch (orientation(p1, p2, p3)) {\n case Sign.LEFT_TURN:\n return orientation(p3, p4, p2) !== Sign.RIGHT_TURN;\n case Sign.RIGHT_TURN:\n return orientation(p3, p4, p2) !== Sign.LEFT_TURN;\n case Sign.COLLINEAR:\n return true;\n }\n}\n\nfunction segSegDoIntersectContained(p1: Point, p2: Point, p3: Point, p4: Point): boolean {\n switch (orientation(p1, p2, p3)) {\n case Sign.LEFT_TURN:\n return orientation(p1, p2, p4) !== Sign.LEFT_TURN;\n case Sign.RIGHT_TURN:\n return orientation(p1, p2, p4) !== Sign.RIGHT_TURN;\n case Sign.COLLINEAR:\n return true;\n }\n}\n\nexport function intersection(pa: Point, pb: Point, pc: Point, pd: Point) {\n const i = getIntersectionType(pa, pb, pc, pd);\n switch (i.intersectionType) {\n case IntersectionType.POINT:\n return i.point!;\n case IntersectionType.NO_INTERSECTION:\n return null;\n }\n throw new Error(\"sdfgighowen\");\n}\n\nenum IntersectionType {\n NO_INTERSECTION,\n POINT,\n SEGMENT,\n}\n\nfunction getLine(p0: Point, p1: Point): Line {\n if (p0[0] === p1[0]) return [1, 0, -p0[0]];\n if (p0[1] === p1[1]) return [0, 1, -p0[1]];\n const x = p1[0] - p0[0];\n const y = p1[1] - p0[1];\n return [-y, x, -x * p0[1] + y * p0[0]];\n}\n\nfunction getIntersectionType(pa: Point, pb: Point, pc: Point, pd: Point) {\n if (!doIntersect(pa, pb, pc, pd)) return { intersectionType: IntersectionType.NO_INTERSECTION, point: null };\n const l1 = getLine(pa, pb);\n const l2 = getLine(pc, pd);\n const info = getIntersectionTypeLine(l1, l2);\n switch (info.intersectionType) {\n case IntersectionType.POINT: {\n return info;\n }\n }\n throw new Error(\"gzseuihgpib\");\n}\n\nfunction getIntersectionTypeLine(la: Line, lb: Line) {\n const denom = la[0] * lb[1] - lb[0] * la[1];\n const nom1 = la[1] * lb[2] - lb[1] * la[2];\n const nom2 = lb[0] * la[2] - la[0] * lb[2];\n return {\n intersectionType: IntersectionType.POINT,\n point: [nom1 / denom, nom2 / denom],\n };\n}\n\nfunction doIntersect(A1: Point, A2: Point, B1: Point, B2: Point): boolean {\n if (xySmaller(A1, A2)) {\n if (xySmaller(B1, B2)) {\n if (xySmaller(A2, B1) || xySmaller(B2, A1)) return false;\n } else {\n if (xySmaller(A2, B2) || xySmaller(B1, A1)) return false;\n }\n } else {\n if (xySmaller(B1, B2)) {\n if (xySmaller(A1, B1) || xySmaller(B2, A2)) return false;\n } else {\n if (xySmaller(A1, B2) || xySmaller(B1, A2)) return false;\n }\n }\n if (xySmaller(A1, A2)) {\n if (xySmaller(B1, B2)) {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER: {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A1, A2, B1, B2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A1, A2, B1, B2);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B2, A1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B2, A2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B1, B2, A1, A2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B1, B2, A1, A2);\n }\n }\n }\n }\n } else {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER: {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A1, A2, B2, B1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A1, A2, B2, B1);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B1, A1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B1, A2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B2, B1, A1, A2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B2, B1, A1, A2);\n }\n }\n }\n }\n }\n } else {\n if (xySmaller(B1, B2)) {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER: {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A2, A1, B1, B2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A2, A1, B1, B2);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B2, A2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B2, A1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B1, B2, A2, A1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B1, B2, A2, A1);\n }\n }\n }\n }\n } else {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER: {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A2, A1, B2, B1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A2, A1, B2, B1);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B1, A2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B1, A1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B2, B1, A2, A1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B2, B1, A2, A1);\n }\n }\n }\n }\n }\n }\n}\n\nfunction nextUp(x: number) {\n if (x !== x) {\n return x;\n }\n if (x === -1 / 0) {\n return -Number.MAX_VALUE;\n }\n if (x === +1 / 0) {\n return +1 / 0;\n }\n if (x === +Number.MAX_VALUE) {\n return +1 / 0;\n }\n let y = x * (x < 0 ? 1 - Number.EPSILON / 2 : 1 + Number.EPSILON);\n if (y === x) {\n y = Number.MIN_VALUE * Number.EPSILON > 0 ? x + Number.MIN_VALUE * Number.EPSILON : x + Number.MIN_VALUE;\n }\n if (y === +1 / 0) {\n y = +Number.MAX_VALUE;\n }\n const b = x + (y - x) / 2;\n if (x < b && b < y) {\n y = b;\n }\n const c = (y + x) / 2;\n if (x < c && c < y) {\n y = c;\n }\n return y === 0 ? -0 : y;\n}\n\nexport function ulp(x: number) {\n return x < 0 ? nextUp(x) - x : x + nextUp(-x);\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.x + 'px',\"top\":_vm.y + 'px'},on:{\"close\":_vm.close}},[(_vm.IS_DM)?_c('li',{on:{\"click\":_vm.bringPlayers}},[_vm._v(\"Bring players\")]):_vm._e(),_c('li',{on:{\"click\":_vm.createToken}},[_vm._v(\"Create basic token\")]),_c('li',{on:{\"click\":_vm.showInitiative}},[_vm._v(\"Show initiative\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=template&id=2e7d4582&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class Modal extends Vue {\n @Prop(Boolean) visible!: boolean;\n @Prop({ type: Boolean, default: true }) mask!: boolean;\n @Prop({ type: String, default: \"white\" }) colour!: string;\n\n $refs!: {\n container: HTMLElement;\n };\n\n positioned = false;\n offsetX = 0;\n offsetY = 0;\n screenX = 0;\n screenY = 0;\n dragging = false;\n\n // Example of mounted required: opening note\n mounted() {\n this.updatePosition();\n }\n // Example of updated required: opening initiative\n updated() {\n this.updatePosition();\n }\n\n close(event: MouseEvent) {\n this.$emit(\"close\");\n }\n updatePosition() {\n if (!this.positioned) {\n const container = this.$refs.container;\n if (container.offsetWidth === 0 && container.offsetHeight === 0) return;\n this.$refs.container.style.left = (window.innerWidth - container.offsetWidth) / 2 + \"px\";\n this.$refs.container.style.top = (window.innerHeight - container.offsetHeight) / 2 + \"px\";\n this.positioned = true;\n }\n }\n dragStart(event: DragEvent) {\n if (event === null || event.dataTransfer === null) return;\n event.dataTransfer.setData(\"Hack\", \"\");\n // Because the drag event is happening on the header, we have to change the drag image\n // in order to give the impression that the entire modal is dragged.\n event.dataTransfer.setDragImage(this.$refs.container, event.offsetX, event.offsetY);\n this.offsetX = event.offsetX;\n this.offsetY = event.offsetY;\n this.screenX = event.screenX;\n this.screenY = event.screenY;\n this.dragging = true;\n }\n dragEnd(event: DragEvent) {\n this.dragging = false;\n let left = event.clientX - this.offsetX;\n let top = event.clientY - this.offsetY;\n if (event.clientX === 0 && event.clientY === 0 && event.pageX === 0 && event.pageY === 0) {\n left = parseInt(this.$refs.container.style.left!, 10) - (this.screenX - event.screenX);\n top = parseInt(this.$refs.container.style.top!, 10) - (this.screenY - event.screenY);\n }\n if (left < 0) left = 0;\n if (left > window.innerWidth - 100) left = window.innerWidth - 100;\n if (top < 0) top = 0;\n if (top > window.innerHeight - 100) top = window.innerHeight - 100;\n this.$refs.container.style.left = left + \"px\";\n this.$refs.container.style.top = top + \"px\";\n this.$refs.container.style.display = \"block\";\n }\n dragOver(event: DragEvent) {\n if (this.dragging) this.$refs.container.style.display = \"none\";\n }\n}\n","import io from \"socket.io-client\";\n\nimport { Asset } from \"@/core/comm/types\";\nimport { assetStore } from \"./store\";\n\nexport const socket = io(location.protocol + \"//\" + location.host + \"/pa_assetmgmt\", { autoConnect: false });\n\n// export const socket = io.connect(location.protocol + \"//\" + location.host + \"/pa_assetmgmt\");\nsocket.on(\"connect\", () => {\n console.log(\"Connected\");\n});\nsocket.on(\"disconnect\", () => {\n console.log(\"Disconnected\");\n});\nsocket.on(\"redirect\", (destination: string) => {\n console.log(\"redirecting\");\n window.location.href = destination;\n});\nsocket.on(\"Folder.Root.Set\", (root: number) => {\n assetStore.setRoot(root);\n});\nsocket.on(\"Folder.Set\", (folder: Asset) => {\n assetStore.clear();\n if (folder.children) {\n for (const child of folder.children) {\n assetStore.idMap.set(child.id, child);\n if (child.file_hash) {\n assetStore.files.push(child.id);\n } else {\n assetStore.folders.push(child.id);\n }\n }\n }\n});\nsocket.on(\"Folder.Create\", (folder: Asset) => {\n assetStore.folders.push(folder.id);\n assetStore.idMap.set(folder.id, folder);\n});\nsocket.on(\"Asset.Upload.Finish\", (asset: Asset) => {\n assetStore.idMap.set(asset.id, asset);\n assetStore.files.push(asset.id);\n});\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport Accordion from \"@/core/components/accordion.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n accordion: Accordion,\n },\n})\nexport default class FilterTool extends Tool {\n name = \"Filter\";\n active = false;\n\n get labels() {\n const cat: { [category: string]: [string, string][] } = {'': []};\n for (const uuid of Object.keys(gameStore.labels)) {\n const label = gameStore.labels[uuid];\n if (!label.category) cat[\"\"].push([label.uuid, label.name]);\n else {\n if (!(label.category in cat)) cat[label.category] = [];\n cat[label.category].push([label.uuid, label.name]);\n cat[label.category].sort((a, b) => a[1].localeCompare(b[1]));\n }\n }\n return cat;\n }\n\n get initalValues() {\n const values: { [category: string]: string[] } = {};\n for (const cat of Object.keys(this.labels)) {\n values[cat] = gameStore.labelFilters.filter(f => this.labels[cat].map(l => l[0]).includes(f));\n }\n return values;\n }\n\n get categories() {\n return Object.keys(this.labels).sort();\n }\n\n isFilter(uuid: string): boolean {\n return gameStore.labelFilters.includes(uuid);\n }\n\n toggleFilter(uuid: string) {\n const i = gameStore.labelFilters.indexOf(uuid);\n if (i >= 0) gameStore.labelFilters.splice(i, 1);\n else gameStore.labelFilters.push(uuid);\n layerManager.invalidate();\n }\n\n toggleUnlabeled() {\n gameStore.toggleUnlabeledFilter();\n layerManager.invalidate();\n }\n\n updateSelection(data: { title: string; selection: string[] }) {\n if (!(data.title in this.labels)) return;\n for (const [uuid, _] of this.labels[data.title]) {\n const idx = gameStore.labelFilters.indexOf(uuid);\n const selected = data.selection.includes(uuid);\n if (idx >= 0 && !selected) {\n gameStore.labelFilters.splice(idx, 1);\n socket.emit(\"Labels.Filter.Remove\", uuid);\n } else if (idx < 0 && selected) {\n gameStore.labelFilters.push(uuid);\n socket.emit(\"Labels.Filter.Add\", uuid);\n }\n }\n layerManager.invalidate();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\nimport { gameStore } from '../../game/store';\n\n@Component\nexport default class Accordion extends Vue {\n @Prop(String) title!: string;\n @Prop({ default: true, type: Boolean }) showArrow!: boolean;\n @Prop({ default: () => []}) items!: [string, string][];\n @Prop({ default: () => []}) initialValues!: string[];\n\n selected: string[] = [];\n\n active = false;\n\n mounted() {\n this.selected = this.initialValues;\n this.updateCategory();\n }\n\n toggleDisplay(event: MouseEvent) {\n this.active = !this.active;\n }\n\n toggleCategory() {\n const overall = this.$refs.overall as HTMLInputElement;\n if (overall.checked) this.selected = this.items.map((i) => i[0]);\n else this.selected = [];\n this.$emit(\"selectionupdate\", {title: this.title, selection: this.selected});\n }\n\n updateCategory() {\n const overall = this.$refs.overall as HTMLInputElement;\n if (this.selected.length === 0) {\n overall.checked = false;\n overall.indeterminate = false;\n } else if(this.selected.length === this.items.length) {\n overall.checked = true;\n overall.indeterminate = false;\n } else {\n overall.checked = false;\n overall.indeterminate = true;\n }\n }\n\n toggleSelection(item: string) {\n const found = this.selected.indexOf(item);\n if (found === -1) this.selected.push(item);\n else this.selected.splice(found, 1);\n this.updateCategory();\n this.$emit(\"selectionupdate\", {title: this.title, selection: this.selected});\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},_vm._l((_vm.tokens),function(token){return _c('div',{key:token.uuid,staticClass:\"token\",class:{'selected': _vm.selection.includes(token.uuid)},on:{\"click\":function($event){return _vm.toggle(token.uuid)}}},[(token.src)?_c('img',{attrs:{\"src\":token.src,\"width\":\"30px\",\"height\":\"30px\"}}):_vm._e(),_c('div',[_vm._v(_vm._s(token.name))])])}),0):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=template&id=46baf892&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=0&lang=css&\"","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2lx, g2ly, g2lz, l2g } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\nimport { ServerMultiLine } from \"../comm/types/shapes\";\n\nexport class MultiLine extends Shape {\n type = \"multiline\";\n _points: GlobalPoint[] = [];\n lineWidth: number;\n constructor(\n startPoint: GlobalPoint,\n points?: GlobalPoint[],\n lineWidth?: number,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, \"rgba(0, 0, 0, 0)\", strokeColour || \"#000\", uuid);\n this._points = points || [];\n this.lineWidth = lineWidth || 3;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n const delta = point.subtract(this._refPoint);\n this._refPoint = point;\n for (let i = 0; i < this._points.length; i++) this._points[i] = this._points[i].add(delta);\n }\n\n asDict() {\n return Object.assign(this.getBaseDict(), {\n line_width: this.lineWidth,\n points: this._points.map(p => ({ x: p.x, y: p.y })),\n });\n }\n fromDict(data: ServerMultiLine) {\n super.fromDict(data);\n this._points = data.points.map(p => new GlobalPoint(p.x, p.y));\n }\n get points() {\n return this._points.map(point => [point.x, point.y]);\n }\n getBoundingBox(): BoundingRect {\n let minx: number = this.refPoint.x;\n let maxx: number = this.refPoint.x;\n let miny: number = this.refPoint.y;\n let maxy: number = this.refPoint.y;\n for (const p of this._points) {\n if (p.x < minx) minx = p.x;\n if (p.x > maxx) maxx = p.x;\n if (p.y < miny) miny = p.y;\n if (p.y > maxy) maxy = p.y;\n }\n return new BoundingRect(new GlobalPoint(minx, miny), maxx - minx, maxy - miny);\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.beginPath();\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.moveTo(g2lx(this.refPoint.x), g2ly(this.refPoint.y));\n for (const p of this._points) ctx.lineTo(g2lx(p.x), g2ly(p.y));\n if (this.strokeColour === \"fog\") ctx.strokeStyle = getFogColour();\n else ctx.strokeStyle = this.strokeColour;\n ctx.lineWidth = g2lz(this.lineWidth);\n ctx.stroke();\n }\n contains(point: GlobalPoint): boolean {\n return this.getBoundingBox().contains(point);\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n return this.getBoundingBox().center();\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this._refPoint = l2g(point);\n else this._points[resizePoint - 1] = l2g(point);\n }\n}\n","import { render, staticRenderFns } from \"./draw.vue?vue&type=template&id=639cd890&scoped=true&\"\nimport script from \"./draw.vue?vue&type=script&lang=ts&\"\nexport * from \"./draw.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"639cd890\",\n null\n \n)\n\nexport default component.exports","import tinycolor from \"tinycolor2\";\n\nimport { LocalPoint } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nexport function getMouse(e: MouseEvent): LocalPoint {\n return new LocalPoint(e.pageX, e.pageY);\n}\n\nexport function getFogColour(opposite: boolean = false): string {\n const tc = tinycolor(gameStore.fowColour);\n if (gameStore.IS_DM) tc.setAlpha(opposite ? 1 : gameStore.fowOpacity);\n else tc.setAlpha(1);\n return tc.toRgbString();\n}\n\nexport function zoomValue(display: number) {\n // Powercurve 0.2/3/10\n // Based on https://stackoverflow.com/a/17102320\n return 1 / (-5 / 3 + (28 / 15) * Math.exp(1.83 * display));\n}\n\nexport function zoomDisplay(value: number) {\n return Math.log((1 / value + 5 / 3) * (15 / 28)) / 1.83;\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport * as tinycolor from \"tinycolor2\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { calcFontScale } from \"@/core/utils\";\nimport { LocalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { CircularToken } from \"@/game/shapes/circulartoken\";\nimport { gameStore } from \"@/game/store\";\nimport { getUnitDistance, l2g } from \"@/game/units\";\nimport { Watch } from \"vue-property-decorator\";\n\n@Component({\n components: {\n Modal,\n \"color-picker\": ColorPicker,\n },\n computed: {\n ...mapState(\"game\", [\"unitSize\"]),\n },\n})\nexport default class CreateTokenModal extends Vue {\n x = 0;\n y = 0;\n visible = false;\n text = \"X\";\n fillColour = \"rgba(255, 255, 255, 1)\";\n borderColour = \"rgba(0, 0, 0, 1)\";\n\n mounted() {\n this.updatePreview();\n }\n\n @Watch(\"text\")\n onTextChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n @Watch(\"fillColour\")\n onFillChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n @Watch(\"borderColour\")\n onBorderChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n\n open(x: number, y: number) {\n this.visible = true;\n this.x = x;\n this.y = y;\n }\n submit() {\n const layer = layerManager.getLayer();\n if (layer === undefined) return;\n const token = new CircularToken(\n l2g(new LocalPoint(this.x, this.y)),\n getUnitDistance(gameStore.unitSize / 2),\n this.text,\n \"10px serif\",\n this.fillColour,\n this.borderColour,\n );\n token.addOwner(gameStore.username);\n layer.addShape(token, true);\n layer.invalidate(false);\n this.visible = false;\n }\n updatePreview() {\n const ctx = (this.$refs.canvas).getContext(\"2d\")!;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n ctx.beginPath();\n const dest = { x: ctx.canvas.width / 2, y: ctx.canvas.height / 2 };\n const r = Math.min(dest.x, dest.y) * 0.9;\n\n ctx.fillStyle = this.fillColour;\n\n ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI);\n ctx.fill();\n if (this.borderColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.beginPath();\n ctx.lineWidth = 5;\n ctx.strokeStyle = this.borderColour;\n ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI);\n ctx.stroke();\n }\n ctx.save();\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n const xs = calcFontScale(ctx, this.text, r, r);\n const ys = 0;\n ctx.transform(xs, ys, -ys, xs, dest.x, dest.y);\n ctx.fillStyle = tinycolor.mostReadable(this.fillColour, [\"#000\", \"#fff\"]).toHexString();\n ctx.fillText(this.text, 0, 0);\n ctx.restore();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class NoteDialog extends Vue {\n visible = false;\n note: Note | null = null;\n\n open(note: Note) {\n this.visible = true;\n this.note = note;\n }\n calcHeight() {\n if (this.$refs.textarea) {\n const el = this.$refs.textarea;\n el.style.height = \"auto\";\n el.style.height = el.scrollHeight + \"px\";\n // Using the return value without the above did not achieve what I want, so hey /shrug\n return el.scrollHeight + \"px\";\n }\n return \"100px\";\n }\n updateNote() {\n if (this.note) gameStore.updateNote({ note: this.note, sync: true });\n }\n removeNote() {\n getRef(\"confirm\")\n .open(\"Are you sure you wish to remove this?\")\n .then(\n (result: boolean) => {\n if (result && this.note) {\n gameStore.removeNote({ note: this.note, sync: true });\n this.visible = false;\n }\n },\n () => {},\n );\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport { Watch } from \"vue-property-decorator\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { Line } from \"@/game/shapes/line\";\nimport { MultiLine } from \"@/game/shapes/multiline\";\nimport { Polygon } from \"@/game/shapes/polygon\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { getUnitDistance, l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\n@Component({\n components: {\n \"color-picker\": ColorPicker,\n },\n})\nexport default class DrawTool extends Tool {\n name = \"Draw\";\n active = false;\n\n startPoint: GlobalPoint | null = null;\n shape: Shape | null = null;\n brushHelper: Circle | null = null;\n ruler: Line | null = null;\n\n fillColour = \"rgba(0, 0, 0, 1)\";\n borderColour = \"rgba(255, 255, 255, 0)\";\n\n shapeSelect = \"square\";\n shapes = [\"square\", \"circle\", \"draw-polygon\", \"paint-brush\"];\n modeSelect = \"normal\";\n modes = [\"normal\", \"reveal\", \"hide\"];\n\n brushSize = getUnitDistance(gameStore.unitSize);\n\n get helperSize(): number {\n if (this.shapeSelect === \"paint-brush\") return this.brushSize / 2;\n return getUnitDistance(this.unitSize) / 8;\n }\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n get unitSize(): number {\n return gameStore.unitSize;\n }\n get useGrid(): boolean {\n return gameStore.useGrid;\n }\n\n @Watch(\"fillColour\")\n onFillChange() {\n if (this.brushHelper) this.brushHelper.fillColour = this.fillColour;\n }\n\n @Watch(\"modeSelect\")\n onModeUpdate(newValue: string, oldValue: string) {\n this.onModeChange(newValue, oldValue);\n }\n\n setupBrush() {\n if (this.brushHelper === null) return;\n if (this.modeSelect === \"reveal\" || this.modeSelect === \"hide\") {\n this.brushHelper.options.set(\"preFogShape\", true);\n this.brushHelper.options.set(\"skipDraw\", true);\n this.brushHelper.fillColour = \"rgba(0, 0, 0, 1)\";\n\n if (this.modeSelect === \"reveal\") this.brushHelper.globalCompositeOperation = \"source-over\";\n else if (this.modeSelect === \"hide\") this.brushHelper.globalCompositeOperation = \"destination-out\";\n } else {\n this.brushHelper.options.delete(\"preFogShape\");\n this.brushHelper.options.delete(\"skipDraw\");\n this.brushHelper.globalCompositeOperation = \"source-over\";\n this.brushHelper.fillColour = this.fillColour;\n }\n }\n onModeChange(newValue: string, oldValue: string) {\n if (this.brushHelper === null) return;\n\n const fowLayer = layerManager.getLayer(\"fow\");\n const normalLayer = layerManager.getLayer();\n if (fowLayer === undefined || normalLayer === undefined) return;\n\n this.setupBrush();\n\n if (newValue !== \"normal\" && oldValue === \"normal\") {\n normalLayer.removeShape(this.brushHelper, false);\n fowLayer.addShape(this.brushHelper, false);\n } else if (newValue === \"normal\" && oldValue !== \"normal\") {\n normalLayer.addShape(this.brushHelper, false);\n fowLayer.removeShape(this.brushHelper, false);\n }\n }\n getLayer() {\n if (this.modeSelect === \"normal\") return layerManager.getLayer();\n return layerManager.getLayer(\"fow\");\n }\n onMouseDown(event: MouseEvent) {\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n if (!this.active) {\n this.startPoint = l2g(getMouse(event));\n this.active = true;\n switch (this.shapeSelect) {\n case \"square\": {\n this.shape = new Rect(this.startPoint.clone(), 0, 0, this.fillColour, this.borderColour);\n break;\n }\n case \"circle\": {\n this.shape = new Circle(\n this.startPoint.clone(),\n this.helperSize,\n this.fillColour,\n this.borderColour,\n );\n break;\n }\n case \"paint-brush\": {\n this.shape = new MultiLine(this.startPoint.clone(), [], this.brushSize);\n this.shape.fillColour = this.fillColour;\n break;\n }\n case \"draw-polygon\": {\n this.shape = new Polygon(this.startPoint.clone(), [], this.fillColour, this.borderColour);\n break;\n }\n default:\n return;\n }\n\n if (this.modeSelect !== \"normal\") {\n this.shape.options.set(\"preFogShape\", true);\n this.shape.options.set(\"skipDraw\", true);\n this.shape.fillColour = \"rgba(0, 0, 0, 1)\";\n }\n if (this.modeSelect === \"reveal\") this.shape.globalCompositeOperation = \"source-over\";\n else if (this.modeSelect === \"hide\") this.shape.globalCompositeOperation = \"destination-out\";\n\n this.shape.addOwner(gameStore.username);\n if (layer.name === \"fow\" && this.modeSelect === \"normal\") {\n this.shape.visionObstruction = true;\n this.shape.movementObstruction = true;\n }\n layer.addShape(this.shape, true, false, false);\n\n // Push brushhelper to back\n this.pushBrushBack();\n } else if (this.shape !== null && this.shape instanceof Polygon) {\n // For polygon draw\n this.shape._vertices.push(l2g(getMouse(event)));\n }\n if (this.shape !== null && this.shape instanceof Polygon) {\n const lastPoint = l2g(getMouse(event));\n if (this.ruler === null) {\n this.ruler = new Line(lastPoint, lastPoint, 3, \"black\");\n layer.addShape(this.ruler, false);\n } else {\n this.ruler.refPoint = lastPoint;\n this.ruler.endPoint = lastPoint;\n }\n if (this.shape.visionObstruction) gameStore.recalculateVision(true);\n layer.invalidate(false);\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: true });\n }\n }\n onMouseMove(event: MouseEvent) {\n const endPoint = l2g(getMouse(event));\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n if (this.brushHelper !== null) {\n this.brushHelper.r = this.helperSize;\n this.brushHelper.refPoint = endPoint;\n if (!this.active) layer.invalidate(false);\n }\n\n if (!this.active || this.startPoint === null || this.shape === null) return;\n\n switch (this.shapeSelect) {\n case \"square\": {\n (this.shape).w = Math.abs(endPoint.x - this.startPoint.x);\n (this.shape).h = Math.abs(endPoint.y - this.startPoint.y);\n this.shape.refPoint = new GlobalPoint(\n Math.min(this.startPoint.x, endPoint.x),\n Math.min(this.startPoint.y, endPoint.y),\n );\n break;\n }\n case \"circle\": {\n (this.shape).r = endPoint.subtract(this.startPoint).length();\n break;\n }\n case \"paint-brush\": {\n (this.shape)._points.push(endPoint);\n break;\n }\n case \"draw-polygon\": {\n this.ruler!.endPoint = endPoint;\n break;\n }\n }\n\n if (!(this.shape instanceof Polygon)) {\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: true });\n if (this.shape.visionObstruction) gameStore.recalculateVision(true);\n }\n layer.invalidate(false);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.shape === null || this.shape instanceof Polygon) return;\n if (!event.altKey && this.useGrid) {\n this.shape.resizeToGrid();\n }\n this.finaliseShape();\n }\n onContextMenu(event: MouseEvent) {\n if (!this.active || this.shape === null || !(this.shape instanceof Polygon)) return;\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n layer.removeShape(this.ruler!, false);\n this.ruler = null;\n this.finaliseShape();\n }\n\n private finaliseShape() {\n if (this.shape === null) return;\n if (this.shape.visionObstruction) gameStore.recalculateVision();\n if (this.shape.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: false });\n this.active = false;\n }\n\n onSelect() {\n const layer = this.getLayer();\n if (layer === undefined) return;\n this.brushHelper = new Circle(new GlobalPoint(-1000, -1000), this.brushSize / 2, this.fillColour);\n this.setupBrush();\n layer.addShape(this.brushHelper, false); // during mode change the shape is already added\n }\n onDeselect() {\n const layer = this.getLayer();\n if (this.brushHelper !== null && layer !== undefined) layer.removeShape(this.brushHelper, false);\n if (this.active && layer !== undefined && this.shape !== null) {\n layer.removeShape(this.shape, true, false);\n this.shape = null;\n this.active = false;\n layer.invalidate(false);\n }\n }\n\n private pushBrushBack() {\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n if (this.brushHelper !== null) layer.removeShape(this.brushHelper, false);\n this.brushHelper = new Circle(new GlobalPoint(-1000, -1000), this.brushSize / 2, this.fillColour);\n this.setupBrush();\n layer.addShape(this.brushHelper, false); // during mode change the shape is already added\n }\n}\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2lx, g2ly, l2g } from \"@/game/units\";\n\nexport class Line extends Shape {\n type = \"line\";\n endPoint: GlobalPoint;\n lineWidth: number;\n constructor(\n startPoint: GlobalPoint,\n endPoint: GlobalPoint,\n lineWidth?: number,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, \"rgba(0, 0, 0, 0)\", strokeColour || \"#000\", uuid);\n this.endPoint = endPoint;\n this.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n x2: this.endPoint.x,\n y2: this.endPoint.y,\n line_width: this.lineWidth,\n });\n }\n get points() {\n return [[this.refPoint.x, this.refPoint.y], [this.endPoint.x, this.endPoint.y]];\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(\n new GlobalPoint(Math.min(this.refPoint.x, this.endPoint.x), Math.min(this.refPoint.y, this.endPoint.y)),\n Math.abs(this.refPoint.x - this.endPoint.x),\n Math.abs(this.refPoint.y - this.endPoint.y),\n );\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.strokeStyle = this.strokeColour;\n ctx.beginPath();\n ctx.moveTo(g2lx(this.refPoint.x), g2ly(this.refPoint.y));\n ctx.lineTo(g2lx(this.endPoint.x), g2ly(this.endPoint.y));\n ctx.lineWidth = this.lineWidth;\n ctx.stroke();\n }\n contains(point: GlobalPoint): boolean {\n return false; // TODO\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {} // TODO\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this.refPoint = l2g(point);\n else this.endPoint = l2g(point);\n }\n}\n","// import \"./class-component-hooks\";\n\nimport axios, { AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Router from \"vue-router\";\n\nVue.use(Router);\n\nimport AssetManager from \"@/assetManager/manager.vue\";\nimport Login from \"@/auth/login.vue\";\nimport Logout from \"@/auth/logout\";\nimport LoadComponent from \"@/core/components/load.vue\";\nimport Dashboard from \"@/dashboard/main.vue\";\nimport Game from \"@/game/game.vue\";\nimport Invitation from \"@/invitation/invitation\";\n\nimport { coreStore } from \"@/core/store\";\n// import { AssetManager } from \"./assetManager/assets\";\n// const AssetManager = () => import(\"./assetManager/assets\").then(m => m.AssetManager);\n\nexport const router = new Router({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes: [\n {\n path: \"/\",\n redirect: \"/dashboard\",\n },\n {\n path: \"/_load\",\n name: \"load\",\n component: LoadComponent,\n },\n {\n path: \"/assets\",\n component: AssetManager,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/auth\",\n component: { template: \"\" },\n children: [{ path: \"login\", component: Login }, { path: \"logout\", component: Logout }],\n },\n {\n path: \"/invite/:code\",\n component: Invitation,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/dashboard\",\n component: Dashboard,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/game/:creator/:room\",\n component: Game,\n meta: {\n auth: true,\n },\n },\n ],\n});\n\nrouter.beforeEach((to, from, next) => {\n if (!coreStore.initialized && to.path !== \"/_load\") {\n next({ path: \"/_load\" });\n axios\n .get(\"/api/auth\")\n .then((response: AxiosResponse) => {\n if (response.data.auth) {\n coreStore.setAuthenticated(true);\n coreStore.setUsername(response.data.username);\n }\n coreStore.setInitialized(true);\n router.push(to.path);\n })\n .catch(() => {\n console.error(\"Authentication check could not be fulfilled.\");\n });\n } else if (to.matched.some(record => record.meta.auth) && !coreStore.authenticated) {\n next({ path: \"/auth/login\", query: { redirect: to.path } });\n } else {\n next();\n }\n});\n","\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class Tool extends Vue {\n name = \"\";\n selected = false;\n active = false;\n get detailRight(): string {\n const rect = (this.$parent.$refs[this.name + \"-selector\"])[0].getBoundingClientRect();\n const mid = rect.left + rect.width / 2;\n\n return `${window.innerWidth - Math.min(window.innerWidth - 25, mid + 75)}px`;\n }\n get detailArrow(): string {\n const rect = (this.$parent.$refs[this.name + \"-selector\"])[0].getBoundingClientRect();\n const mid = rect.left + rect.width / 2;\n const right = Math.min(window.innerWidth - 25, mid + 75);\n return `${right - mid - 14}px`; // border width\n }\n created() {\n this.$parent.$on(\"mousedown\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseDown(event);\n });\n this.$parent.$on(\"mouseup\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseUp(event);\n });\n this.$parent.$on(\"mousemove\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseMove(event);\n });\n this.$parent.$on(\"contextmenu\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onContextMenu(event);\n });\n this.$parent.$on(\"tools-select-change\", (newValue: string, oldValue: string) => {\n if (oldValue === this.name) {\n this.selected = false;\n this.onDeselect();\n } else if (newValue === this.name) {\n this.selected = true;\n this.onSelect();\n }\n });\n }\n onSelect() {}\n onDeselect() {}\n onMouseDown(event: MouseEvent) {}\n onMouseUp(event: MouseEvent) {}\n onMouseMove(event: MouseEvent) {}\n onContextMenu(event: MouseEvent) {}\n}\n","import { render, staticRenderFns } from \"./tools.vue?vue&type=template&id=b6e1f51c&scoped=true&\"\nimport script from \"./tools.vue?vue&type=script&lang=ts&\"\nexport * from \"./tools.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6e1f51c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"main\"},on:{\"mouseleave\":_vm.mouseleave,\"wheel\":_vm.zoom}},[(_vm.showUI)?_c('menu-bar'):_vm._e(),_c('div',{attrs:{\"id\":\"board\"}},[(_vm.ready.manager)?[_c('tool-bar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],ref:\"tools\"})]:_vm._e(),_c('div',{attrs:{\"id\":\"layers\"},on:{\"mousedown\":_vm.mousedown,\"mouseup\":_vm.mouseup,\"mousemove\":_vm.mousemove,\"contextmenu\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.contextmenu($event)},\"dragover\":function($event){$event.preventDefault();},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.drop($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI && _vm.layers.length>1),expression:\"showUI && layers.length>1\"}],attrs:{\"id\":\"layerselect\"}},[_c('ul',_vm._l((_vm.layers),function(layer){return _c('li',{key:layer.name,class:{ 'layer-selected': layer === _vm.selectedLayer },on:{\"mousedown\":function($event){return _vm.selectLayer(layer)}}},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(layer))])])}),0)])],2),_c('selection-info',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],ref:\"selectionInfo\"}),_c('initiative-dialog',{ref:\"initiative\",attrs:{\"id\":\"initiativedialog\"}}),_c('note-dialog',{ref:\"note\"}),_c('label-dialog',{ref:\"labels\"}),(_vm.IS_DM || _vm.FAKE_PLAYER)?_c('dm-settings',{ref:\"dmsettings\"}):_vm._e(),_c('zoom-slider',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],attrs:{\"id\":\"zoomer\",\"height\":6,\"width\":200,\"min\":0,\"max\":1,\"interval\":0.1,\"dot-width\":8,\"dot-height\":20,\"tooltip-dir\":'bottom',\"tooltip\":'hover',\"formatter\":_vm.zoomDisplay.toFixed(1),\"slider-style\":{'border-radius': '15%'},\"bg-style\":{'background-color': '#fff', 'box-shadow': '0.5px 0.5px 3px 1px rgba(0, 0, 0, .36)'},\"process-style\":{'background-color': '#fff'}},model:{value:(_vm.zoomDisplay),callback:function ($$v) {_vm.zoomDisplay=$$v},expression:\"zoomDisplay\"}}),_c('prompt-dialog',{ref:\"prompt\"}),_c('confirm-dialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=template&id=3d0578ba&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"input-copy\"},on:{\"mouseleave\":function($event){_vm.showPopup=false}}},[_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"disabled\",\"id\":\"input-element\"},domProps:{\"value\":_vm.value}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPopup),expression:\"showPopup\"}],attrs:{\"id\":\"show-popup\"}},[_vm._v(_vm._s(_vm.popupString))]),_c('div',{attrs:{\"id\":\"copy-button\"},on:{\"click\":_vm.copy}},[_c('i',{staticClass:\"far fa-copy\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=template&id=20bfdb3e&scoped=true&\"","import { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerAsset } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly, g2lz } from \"@/game/units\";\n\nexport class Asset extends BaseRect {\n type = \"assetrect\";\n img: HTMLImageElement;\n src: string = \"\";\n constructor(img: HTMLImageElement, topleft: GlobalPoint, w: number, h: number, uuid?: string) {\n super(topleft, w, h, undefined, undefined, uuid);\n this.img = img;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n src: this.src,\n });\n }\n fromDict(data: ServerAsset) {\n super.fromDict(data);\n this.src = data.src;\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n try {\n ctx.drawImage(this.img, g2lx(this.refPoint.x), g2ly(this.refPoint.y), g2lz(this.w), g2lz(this.h));\n } catch (error) {\n console.warn(`Shape ${this.uuid} could not load the image ${this.src}`);\n }\n }\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.src,\n has_img: true,\n effects: [],\n index: Infinity,\n };\n }\n}\n","import { render, staticRenderFns } from \"./inputCopy.vue?vue&type=template&id=20bfdb3e&scoped=true&\"\nimport script from \"./inputCopy.vue?vue&type=script&lang=ts&\"\nexport * from \"./inputCopy.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20bfdb3e\",\n null\n \n)\n\nexport default component.exports","import {\n BoundingBox,\n EdgeCirculator,\n FaceCirculator,\n LineFaceCirculator,\n LocateType,\n Point,\n Sign,\n TDS,\n Triangle,\n Vertex,\n} from \"./tds\";\nimport {\n ccw,\n collinearBetween,\n cw,\n edgeInfo,\n hasInexactNegativeOrientation,\n intersection,\n orientation,\n sideOfOrientedCircle,\n xyEqual,\n} from \"./triag\";\n\nexport type Edge = [Triangle, number];\n\nexport class CDT {\n tds: TDS;\n constructor() {\n this.tds = new TDS();\n }\n insertConstraint(a: Point, b: Point) {\n const va = this.insert(a);\n const vb = this.insert(b);\n if (va !== vb) this.insertConstraintV(va, vb);\n }\n\n insertConstraintV(va: Vertex, vb: Vertex) {\n const stack = [[va, vb]];\n while (stack.length > 0) {\n const v = stack.pop()!;\n const info = edgeInfo(v[0], v[1]);\n if (info.includes) {\n this.markConstraint(info.fr!, info.i!);\n if (info.vi! !== v[1]) {\n stack.push([info.vi!, v[1]]);\n }\n continue;\n }\n const intersectionInfo = this.findIntersectedFaces(v[0], v[1]);\n if (intersectionInfo.found) {\n if (intersectionInfo.vi !== v[0] && intersectionInfo.vi !== v[1]) {\n stack.push([v[0], intersectionInfo.vi]);\n stack.push([intersectionInfo.vi, v[1]]);\n } else {\n stack.push(v);\n }\n continue;\n }\n this.triangulateHole(intersectionInfo.intersectedFaces, intersectionInfo.listAB, intersectionInfo.listBA);\n if (intersectionInfo.vi !== v[1]) {\n stack.push([intersectionInfo.vi, v[1]]);\n }\n }\n }\n\n triangulateHole(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[]) {\n const edges: Edge[] = [];\n this.triangulateHole2(intersectedFaces, listAB, listBA, edges);\n this.propagatingFlipE(edges);\n }\n\n triangulateHole2(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[], edges: Edge[]) {\n if (listAB.length > 0) {\n this.triangulateHalfHole(listAB, edges);\n this.triangulateHalfHole(listBA, edges);\n const fl = listAB[0][0];\n const fr = listBA[0][0];\n fl.neighbours[2] = fr;\n fr.neighbours[2] = fl;\n fl.constraints[2] = true;\n fr.constraints[2] = true;\n\n while (intersectedFaces.length > 0) {\n this.tds.deleteTriangle(intersectedFaces.shift()!);\n }\n }\n }\n\n triangulateHalfHole(conflictBoundaries: Edge[], edges: Edge[]) {\n let iC = 0;\n let iN: number;\n let iT: number;\n const current = () => conflictBoundaries[iC];\n const next = () => conflictBoundaries[iN];\n const tempo = () => conflictBoundaries[iT];\n\n const va = current()[0].vertices[ccw(current()[1])]!;\n iN = iC;\n ++iN;\n\n let n: Triangle;\n let n1: Triangle;\n let n2: Triangle;\n let ind: number;\n let ind1: number;\n let ind2: number;\n do {\n n1 = current()[0];\n ind1 = current()[1];\n if (n1.neighbours[ind1] !== null) {\n n = n1.neighbours[ind1]!;\n ind = cw(n.indexV(n1.vertices[cw(ind1)]!));\n n1 = n.neighbours[ind]!;\n ind1 = this.tds.mirrorIndex(n, ind);\n }\n n2 = next()[0];\n ind2 = next()[1];\n if (n2.neighbours[ind2] !== null) {\n n = n2.neighbours[ind2]!;\n ind = cw(n.indexV(n2.vertices[cw(ind2)]!));\n n2 = n.neighbours[ind]!;\n ind2 = this.tds.mirrorIndex(n, ind);\n }\n const v0 = n1.vertices[ccw(ind1)]!;\n const v1 = n1.vertices[cw(ind1)]!;\n const v2 = n2.vertices[cw(ind2)]!;\n const orient = orientation(v0.point!, v1.point!, v2.point!);\n switch (orient) {\n case Sign.RIGHT_TURN: {\n const newlf = this.tds.createTriangle(v0, v2, v1, null, null, null);\n edges.push([newlf, 2]);\n newlf.neighbours[1] = n1;\n newlf.neighbours[0] = n2;\n n1.neighbours[ind1] = newlf;\n n2.neighbours[ind2] = newlf;\n if (n1.isConstrained(ind1)) newlf.constraints[1] = true;\n if (n2.isConstrained(ind2)) newlf.constraints[0] = true;\n v0.triangle = newlf;\n v1.triangle = newlf;\n v2.triangle = newlf;\n iT = iC + 1;\n conflictBoundaries.splice(iC, 0, [newlf, 2]);\n conflictBoundaries.splice(Math.max(iT, iN), 1);\n conflictBoundaries.splice(Math.min(iT, iN), 1);\n iN = iC;\n if (v0 !== va) --iC;\n else ++iN;\n break;\n }\n case Sign.LEFT_TURN:\n case Sign.COLLINEAR: {\n ++iC;\n ++iN;\n break;\n }\n }\n } while (iN < conflictBoundaries.length);\n }\n\n findIntersectedFaces(vaa: Vertex, vbb: Vertex) {\n const aa = vaa.point!;\n const bb = vbb.point!;\n const listAB: Edge[] = [];\n const listBA: Edge[] = [];\n const intersectedFaces: Triangle[] = [];\n const lfc = new LineFaceCirculator(vaa, this, bb);\n let ind = lfc.pos!.indexV(vaa);\n let vi: Vertex;\n if (lfc.pos!.isConstrained(ind)) {\n vi = this.intersect(lfc.pos!, ind, vaa, vbb);\n return { found: true, vi, listAB, listBA, intersectedFaces };\n }\n let lf = lfc.pos!.neighbours[ccw(ind)]!;\n let rf = lfc.pos!.neighbours[cw(ind)]!;\n listAB.push([lf, lf.indexT(lfc.pos!)]);\n listBA.unshift([rf, rf.indexT(lfc.pos!)]);\n intersectedFaces.unshift(lfc.pos!);\n let previousFace = lfc.pos!;\n lfc.next();\n ind = lfc.pos!.indexT(previousFace);\n let currentVertex = lfc.pos!.vertices[ind]!;\n let done = false;\n while (currentVertex !== vbb && !done) {\n let i1: number;\n let i2: number;\n const orient = orientation(aa, bb, currentVertex.point!);\n switch (orient) {\n case Sign.COLLINEAR: {\n done = true;\n break;\n }\n case Sign.LEFT_TURN:\n case Sign.RIGHT_TURN: {\n if (orient === Sign.LEFT_TURN) {\n i1 = ccw(ind);\n i2 = cw(ind);\n } else {\n i1 = cw(ind);\n i2 = ccw(ind);\n }\n if (lfc.pos!.isConstrained(i1)) {\n vi = this.intersect(lfc.pos!, i1, vaa, vbb);\n return { found: true, vi, listAB, listBA, intersectedFaces };\n } else {\n lf = lfc.pos!.neighbours[i2]!;\n intersectedFaces.unshift(lfc.pos!);\n if (orient === Sign.LEFT_TURN) listAB.push([lf, lf.indexT(lfc.pos!)]);\n else listBA.unshift([lf, lf.indexT(lfc.pos!)]);\n previousFace = lfc.pos!;\n lfc.next();\n ind = lfc.pos!.indexT(previousFace);\n currentVertex = lfc.pos!.vertices[ind]!;\n }\n break;\n }\n }\n }\n vi = currentVertex;\n intersectedFaces.unshift(lfc.pos!);\n lf = lfc.pos!.neighbours[cw(ind)]!;\n listAB.push([lf, lf.indexT(lfc.pos!)]);\n rf = lfc.pos!.neighbours[ccw(ind)]!;\n listBA.unshift([rf, rf.indexT(lfc.pos!)]);\n return { found: false, vi, listAB, listBA, intersectedFaces };\n }\n\n intersect(t: Triangle, i: number, vaa: Vertex, vbb: Vertex): Vertex {\n const vcc = t.vertices[cw(i)]!;\n const vdd = t.vertices[ccw(i)]!;\n const pa = vaa.point!;\n const pb = vbb.point!;\n const pc = vcc.point!;\n const pd = vdd.point!;\n let pi = intersection(pa, pb, pc, pd);\n if (pi !== pa && pi !== pb && pi !== pc && pi !== pd) {\n const bbox = new BoundingBox(pi!);\n bbox.dilate(4);\n if (bbox.overlaps(new BoundingBox(pa))) pi = pa;\n if (bbox.overlaps(new BoundingBox(pb))) pi = pb;\n if (bbox.overlaps(new BoundingBox(pc))) pi = pc;\n if (bbox.overlaps(new BoundingBox(pd))) pi = pd;\n }\n let vi: Vertex;\n if (pi === null) throw new Error(\"what\");\n else {\n this.removeConstrainedEdge(t, i);\n vi = this.insert(pi, t);\n }\n\n if (vi !== vcc && vi !== vdd) {\n this.insertConstraintV(vcc, vi);\n this.insertConstraintV(vi, vdd);\n } else {\n this.insertConstraintV(vcc, vdd);\n }\n return vi;\n }\n\n removeConstrainedEdge(t: Triangle, i: number) {\n t.constraints[i] = false;\n if (this.tds.dimension === 2) t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = false;\n }\n\n updateConstraintsOpposite(v: Vertex) {\n let t = v.triangle!;\n const start = t;\n let indf: number;\n do {\n indf = t.indexV(v);\n if (t.neighbours[indf]!.constraints[this.tds.mirrorIndex(t, indf)]) t.constraints[indf] = true;\n else t.constraints[indf] = false;\n t = t.neighbours[ccw(indf)]!;\n } while (t !== start);\n }\n\n markConstraint(t: Triangle, i: number) {\n if (this.tds.dimension === 1) t.constraints[2] = true;\n else {\n t.constraints[i] = true;\n t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = true;\n }\n }\n\n insert(p: Point, start: Triangle | null = null) {\n const locateInfo = this.locate(p, this.iLocate(p, start));\n const va = this.insertb(p, locateInfo.loc, locateInfo.lt, locateInfo.li);\n this.flipAround(va);\n return va;\n }\n\n flipAround(v: Vertex) {\n if (this.tds.dimension <= 1) return;\n let t = v.triangle!;\n let i: number;\n let next: Triangle;\n const start = t;\n do {\n i = t.indexV(v);\n next = t.neighbours[ccw(i)]!;\n this.propagatingFlip(t, i);\n t = next;\n } while (next !== start);\n }\n\n propagatingFlip(t: Triangle, i: number, depth = 0) {\n if (!this.isFlipable(t, i)) return;\n const maxDepth = 100;\n if (depth === maxDepth) {\n throw new Error(\"maxde\");\n return;\n }\n const ni = t.neighbours[i]!;\n this.flip(t, i);\n this.propagatingFlip(t, i, depth + 1);\n i = ni.indexV(t.vertices[i]!);\n this.propagatingFlip(ni, i, depth + 1);\n }\n\n lessEdge(e1: Edge, e2: Edge) {\n const ind1 = e1[1];\n const ind2 = e2[1];\n return e1[0].uid < e2[0].uid || (e1[0].uid === e2[0].uid && ind1 < ind2);\n }\n\n propagatingFlipE(edges: Edge[]) {\n let eI = 0;\n let t: Triangle;\n let i: number;\n let eni: Edge;\n const edgeSet: Edge[] = [];\n while (eI < edges.length) {\n t = edges[eI][0];\n i = edges[eI][1];\n if (this.isFlipable(t, i)) {\n eni = [t.neighbours[i]!, this.tds.mirrorIndex(t, i)];\n if (this.lessEdge(edges[eI], eni)) edgeSet.push(edges[eI]);\n else edgeSet.push(eni);\n }\n ++eI;\n }\n let indf: number;\n let ni: Triangle;\n let indn: number;\n let ei: Edge;\n const e: (Edge | null)[] = [null, null, null, null];\n while (edgeSet.length > 0) {\n t = edgeSet[0][0];\n indf = edgeSet[0][1];\n ni = t.neighbours[indf]!;\n indn = this.tds.mirrorIndex(t, indf);\n ei = [t, indf];\n edgeSet.splice(edgeSet.findIndex(ed => ed[0] === ei[0] && ed[1] === ei[1]), 1);\n e[0] = [t, cw(indf)];\n e[1] = [t, ccw(indf)];\n e[2] = [ni, cw(indn)];\n e[3] = [ni, ccw(indn)];\n\n for (const edge of e) {\n const tt = edge![0];\n const ii = edge![1];\n eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)];\n if (this.lessEdge(edge!, eni))\n edgeSet.splice(edgeSet.findIndex(ed => ed[0] === edge![0] && ed[1] === edge![1]), 1);\n else edgeSet.splice(edgeSet.findIndex(ed => ed[0] === eni[0] && ed[1] === eni[1]), 1);\n }\n\n this.flip(t, indf);\n\n for (const edge of e) {\n const tt = edge![0];\n const ii = edge![1];\n if (this.isFlipable(tt, ii)) {\n eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)];\n if (this.lessEdge(edge!, eni)) edgeSet.push(edge!);\n else edgeSet.push(eni);\n }\n }\n }\n }\n\n flip(t: Triangle, i: number) {\n const u = t.neighbours[i]!;\n const j = this.tds.mirrorIndex(t, i);\n const t1 = t.neighbours[cw(i)]!;\n const i1 = this.tds.mirrorIndex(t, cw(i));\n const t2 = t.neighbours[ccw(i)]!;\n const i2 = this.tds.mirrorIndex(t, ccw(i));\n const t3 = u.neighbours[cw(j)]!;\n const i3 = this.tds.mirrorIndex(u, cw(j));\n const t4 = u.neighbours[ccw(j)]!;\n const i4 = this.tds.mirrorIndex(u, ccw(j));\n this.tds.flip(t, i);\n t.constraints[t.indexT(u)] = false;\n u.constraints[u.indexT(t)] = false;\n t1.neighbours[i1]!.constraints[this.tds.mirrorIndex(t1, i1)] = t1.constraints[i1];\n t2.neighbours[i2]!.constraints[this.tds.mirrorIndex(t2, i2)] = t2.constraints[i2];\n t3.neighbours[i3]!.constraints[this.tds.mirrorIndex(t3, i3)] = t3.constraints[i3];\n t4.neighbours[i4]!.constraints[this.tds.mirrorIndex(t4, i4)] = t4.constraints[i4];\n }\n\n isFlipable(t: Triangle, i: number, perturb = true) {\n const ni = t.neighbours[i]!;\n if (t.isInfinite() || ni.isInfinite()) return false;\n if (t.constraints[i]) return false;\n return sideOfOrientedCircle(ni, t.vertices[i]!.point!, perturb) === Sign.ON_POSITIVE_SIDE;\n }\n\n insertb(a: Point, loc: Triangle | null, lt: LocateType, li: number): Vertex {\n let insertInConstrainedEdge = false;\n let v1: Vertex;\n let v2: Vertex;\n if (lt === LocateType.EDGE && loc!.isConstrained(li)) {\n insertInConstrainedEdge = true;\n v1 = loc!.vertices[ccw(li)]!;\n v2 = loc!.vertices[cw(li)]!;\n }\n const va = this.insertc(a, loc, lt, li);\n if (insertInConstrainedEdge) this.updateConstraintsIncident(va, v1!, v2!);\n else if (lt !== LocateType.VERTEX) this.clearConstraintsIncident(va);\n if (this.tds.dimension === 2) this.updateConstraintsOpposite(va);\n return va;\n }\n\n updateConstraintsIncident(va: Vertex, c1: Vertex, c2: Vertex) {\n if (this.tds.dimension === 0) return;\n if (this.tds.dimension === 1) {\n const ec = new EdgeCirculator(va, null);\n do {\n ec.t!.constraints[2] = true;\n } while (ec.next());\n } else {\n const fc = new FaceCirculator(va, null);\n do {\n const indf = fc.t!.indexV(va);\n const cwi = cw(indf);\n const ccwi = ccw(indf);\n if (fc.t!.vertices[cwi] === c1 || fc.t!.vertices[cwi] === c2) {\n fc.t!.constraints[ccwi] = true;\n fc.t!.constraints[cwi] = false;\n } else {\n fc.t!.constraints[ccwi] = false;\n fc.t!.constraints[cwi] = true;\n }\n } while (fc.next());\n }\n }\n\n clearConstraintsIncident(v: Vertex) {\n const ec = new EdgeCirculator(v, null);\n if (ec.valid) {\n do {\n const t = ec.t!;\n const indf = ec.ri;\n t.constraints[indf] = false;\n if (this.tds.dimension === 2) t.neighbours[indf]!.constraints[this.tds.mirrorIndex(t, indf)] = false;\n } while (ec.next());\n }\n }\n\n insertc(p: Point, loc: Triangle | null, lt: LocateType, li: number): Vertex {\n if (this.tds.vertices.length === 1) {\n return this.insertFirst(p);\n } else if (this.tds.vertices.length === 2) {\n if (lt === LocateType.VERTEX) return this.tds.finiteVertex;\n else return this.insertSecond(p);\n }\n switch (lt) {\n case LocateType.VERTEX: {\n return loc!.vertices[li]!;\n }\n case LocateType.OUTSIDE_AFFINE_HULL: {\n return this.insertOutsideAffineHull(p);\n }\n case LocateType.OUTSIDE_CONVEX_HULL: {\n return this.insertOutsideConvexHull(p, loc!);\n }\n case LocateType.EDGE: {\n return this.insertInEdge(p, loc!, li);\n }\n case LocateType.FACE: {\n return this.insertInFace(p, loc!);\n }\n }\n throw new Error(\"qwe\");\n return new Vertex();\n }\n\n insertInEdge(p: Point, loc: Triangle, li: number): Vertex {\n const v = this.tds.insertInEdge(loc, li);\n v.point = p;\n return v;\n }\n\n insertInFace(p: Point, loc: Triangle): Vertex {\n const v = this.tds.insertInFace(loc);\n v.point = p;\n return v;\n }\n\n insertFirst(p: Point): Vertex {\n const v = this.tds.insertDimUp();\n v.point = p;\n return v;\n }\n\n insertSecond(p: Point): Vertex {\n const v = this.tds.insertDimUp(this.tds._infinite, true);\n v.point = p;\n return v;\n }\n\n insertOutsideAffineHull(p: Point): Vertex {\n let conform = false;\n if (this.tds.dimension === 1) {\n const t = this.tds.finiteEdge.first!;\n const orient = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p);\n conform = orient === Sign.COUNTERCLOCKWISE;\n }\n const v = this.tds.insertDimUp(this.tds._infinite, conform);\n v.point = p;\n return v;\n }\n\n insertOutsideConvexHull(p: Point, t: Triangle): Vertex {\n let v: Vertex;\n if (this.tds.dimension === 1) {\n throw new Error(\"sdfasdasd\");\n } else {\n v = this.insertOutsideConvexHull2(p, t);\n }\n v.point = p;\n return v;\n }\n\n insertOutsideConvexHull2(p: Point, t: Triangle): Vertex {\n let li = t.indexV(this.tds._infinite);\n const ccwlist: Triangle[] = [];\n const cwlist: Triangle[] = [];\n let fc = new FaceCirculator(this.tds._infinite, t);\n let done = false;\n while (!done) {\n fc.prev();\n li = fc.t!.indexV(this.tds._infinite);\n const q = fc.t!.vertices[ccw(li)]!.point!;\n const r = fc.t!.vertices[cw(li)]!.point!;\n if (orientation(p, q, r) === Sign.LEFT_TURN) ccwlist.push(fc.t!);\n else done = true;\n }\n fc = new FaceCirculator(this.tds._infinite, t);\n done = false;\n while (!done) {\n fc.next();\n li = fc.t!.indexV(this.tds._infinite);\n const q = fc.t!.vertices[ccw(li)]!.point!;\n const r = fc.t!.vertices[cw(li)]!.point!;\n if (orientation(p, q, r) === Sign.LEFT_TURN) cwlist.push(fc.t!);\n else done = true;\n }\n const v = this.tds.insertInFace(t);\n v.point = p;\n let th;\n while (ccwlist.length > 0) {\n th = ccwlist[0];\n li = ccw(th.indexV(this.tds._infinite));\n this.tds.flip(th, li);\n ccwlist.shift();\n }\n while (cwlist.length > 0) {\n th = cwlist[0];\n li = cw(th.indexV(this.tds._infinite));\n this.tds.flip(th, li);\n cwlist.shift();\n }\n fc = new FaceCirculator(v, null);\n while (!fc.t!.isInfinite()) fc.next();\n this.tds._infinite.triangle = fc.t!;\n return v;\n }\n\n locate(p: Point, start: Triangle | null) {\n let lt = 0;\n let li = 0;\n if (this.tds.dimension < 0) {\n lt = LocateType.OUTSIDE_AFFINE_HULL;\n li = 4;\n return { loc: null, lt, li };\n } else if (this.tds.dimension === 0) {\n if (xyEqual(p, this.tds.finiteVertex.triangle!.vertices[0]!.point!)) {\n lt = LocateType.VERTEX;\n } else {\n lt = LocateType.OUTSIDE_AFFINE_HULL;\n }\n li = 4;\n return { loc: null, lt, li };\n } else if (this.tds.dimension === 1) {\n return this.marchLocate1D(p);\n }\n if (start === null) {\n const t = this.tds._infinite.triangle!;\n start = t.neighbours[t.indexV(this.tds._infinite)]!;\n } else if (start.isInfinite()) {\n start = start.neighbours[start.indexV(this.tds._infinite)]!;\n }\n return this.marchLocate2D(start, p);\n }\n\n marchLocate1D(p: Point) {\n const ff = this.tds._infinite.triangle!;\n const iv = ff.indexV(this.tds._infinite);\n const t = ff.neighbours[iv]!;\n const pqt = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p);\n if (pqt === Sign.RIGHT_TURN || pqt === Sign.LEFT_TURN) {\n return { loc: new Triangle(), lt: LocateType.OUTSIDE_AFFINE_HULL, li: 4 };\n }\n const i = t.indexT(ff);\n if (collinearBetween(p, t.vertices[1 - i]!.point!, t.vertices[i]!.point!))\n return { loc: ff, lt: LocateType.OUTSIDE_CONVEX_HULL, li: iv };\n\n if (xyEqual(p, t.vertices[1 - i]!.point!)) return { loc: t, lt: LocateType.VERTEX, li: 1 - i };\n throw new Error(\"sdfsdf\");\n }\n\n marchLocate2D(c: Triangle, p: Point) {\n let prev = null;\n let first = true;\n let lt: LocateType | undefined;\n let li: number | undefined;\n while (true) {\n if (c.isInfinite()) {\n return { loc: c, lt: LocateType.OUTSIDE_CONVEX_HULL, li: c.indexV(this.tds._infinite) };\n }\n const leftFirst = 0; // Math.round(Math.random());\n const p0 = c.vertices[0]!.point!;\n const p1 = c.vertices[1]!.point!;\n const p2 = c.vertices[2]!.point!;\n let o0: Sign;\n let o1: Sign;\n let o2: Sign;\n if (first) {\n prev = c;\n first = false;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n } else if (leftFirst) {\n if (c.neighbours[0]! === prev) {\n prev = c;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o1 = Sign.POSITIVE;\n } else if (c.neighbours[1]! === prev) {\n prev = c;\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o2 = Sign.POSITIVE;\n } else {\n prev = c;\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o0 = Sign.POSITIVE;\n }\n } else {\n if (c.neighbours[0] === prev) {\n prev = c;\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = Sign.POSITIVE;\n } else if (c.neighbours[1] === prev) {\n prev = c;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = Sign.POSITIVE;\n } else {\n prev = c;\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o0 = Sign.POSITIVE;\n }\n }\n const sum =\n (o0 === Sign.COLLINEAR ? 1 : 0) + (o1 === Sign.COLLINEAR ? 1 : 0) + (o2 === Sign.COLLINEAR ? 1 : 0);\n switch (sum) {\n case 0: {\n lt = LocateType.FACE;\n li = 4;\n break;\n }\n case 1: {\n lt = LocateType.EDGE;\n li = o0 === Sign.COLLINEAR ? 2 : o1 === Sign.COLLINEAR ? 0 : 1;\n break;\n }\n case 2: {\n lt = LocateType.VERTEX;\n li = o0 !== Sign.COLLINEAR ? 2 : o1 !== Sign.COLLINEAR ? 0 : 1;\n break;\n }\n }\n if (lt === undefined || li === undefined) throw new Error(\"ert\");\n return { loc: c, lt, li };\n }\n }\n\n iLocate(p: Point, start: Triangle | null) {\n if (this.tds.dimension < 2) return start;\n if (start === null) {\n const t = this.tds._infinite.triangle!;\n start = t.neighbours[t.indexV(this.tds._infinite)];\n } else if (start.isInfinite()) {\n start = start.neighbours[start.indexV(this.tds._infinite)];\n }\n let prev = null;\n let c = start!;\n let first = true;\n let nTurns = 2500;\n while (true) {\n if (!nTurns--) return c;\n if (c.isInfinite()) return c;\n const p0 = c.vertices[0]!.point!;\n const p1 = c.vertices[1]!.point!;\n const p2 = c.vertices[2]!.point!;\n if (first) {\n prev = c;\n first = false;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n } else {\n if (c.neighbours[0] === prev) {\n prev = c;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n } else if (c.neighbours[1] === prev) {\n prev = c;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n } else {\n prev = c;\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n }\n }\n break;\n }\n return c;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=script&lang=ts&\"","import { GlobalPoint } from \"@/game/geom\";\nimport { GridLayer } from \"@/game/layers/grid\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { Asset } from \"@/game/shapes/asset\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { l2gx, l2gy, l2gz } from \"@/game/units\";\n\nclass LayerManager {\n layers: Layer[] = [];\n width = window.innerWidth;\n height = window.innerHeight;\n\n UUIDMap: Map = new Map();\n\n // Refresh interval and redraw setter.\n interval = 30;\n\n constructor() {\n requestAnimationFrame(this.drawLoop);\n }\n\n reset() {\n this.layers = [];\n this.UUIDMap = new Map();\n }\n\n drawLoop = () => {\n for (let i = this.layers.length - 1; i >= 0; i--) {\n this.layers[i].draw();\n }\n requestAnimationFrame(this.drawLoop);\n };\n\n setWidth(width: number): void {\n this.width = width;\n for (const layer of this.layers) {\n layer.canvas.width = width;\n layer.width = width;\n }\n }\n\n setHeight(height: number): void {\n this.height = height;\n for (const layer of this.layers) {\n layer.canvas.height = height;\n layer.height = height;\n }\n }\n\n addLayer(layer: Layer): void {\n this.layers.push(layer);\n if (!gameStore.IS_DM && !layer.playerEditable) return;\n if (layer.selectable) gameStore.addLayer(layer.name);\n }\n\n hasLayer(name: string): boolean {\n return this.layers.some(l => l.name === name);\n }\n\n getLayer(name?: string) {\n name = name === undefined ? gameStore.selectedLayer : name;\n for (const layer of this.layers) {\n if (layer.name === name) return layer;\n }\n }\n\n selectLayer(name: string, sync: boolean = true): void {\n let found = false;\n for (const layer of this.layers) {\n if (!layer.selectable) continue;\n if (found && layer.name !== \"fow\") layer.ctx.globalAlpha = 0.3;\n else layer.ctx.globalAlpha = 1.0;\n\n if (name === layer.name) {\n gameStore.selectLayer({ name, sync });\n found = true;\n }\n\n layer.clearSelection();\n layer.invalidate(true);\n }\n }\n\n getGridLayer(): GridLayer | undefined {\n return this.getLayer(\"grid\");\n }\n\n hasSelection() {\n const selection = this.getSelection();\n return selection !== undefined && selection.length > 0;\n }\n\n // THIS INCLUDES POTENTIALLY THE SelectTool.SelectionHelper !!!\n getSelection() {\n const layer = this.getLayer();\n if (layer === undefined) return undefined;\n return layer.selection;\n }\n\n invalidate(): void {\n for (let i = this.layers.length - 1; i >= 0; i--) {\n this.layers[i].invalidate(true);\n }\n }\n\n invalidateLight() {\n for (let i = this.layers.length - 1; i >= 0; i--)\n if (this.layers[i].isVisionLayer) this.layers[i].invalidate(true);\n }\n\n dropAsset(event: DragEvent) {\n const layer = this.getLayer();\n if (layer === undefined || event === null || event.dataTransfer === null) return;\n const image = document.createElement(\"img\");\n image.src = event.dataTransfer.getData(\"text/plain\");\n const asset = new Asset(\n image,\n new GlobalPoint(l2gx(event.clientX), l2gy(event.clientY)),\n l2gz(image.width),\n l2gz(image.height),\n );\n asset.src = new URL(image.src).pathname;\n\n if (gameStore.useGrid) {\n const gs = gameStore.gridSize;\n asset.refPoint = new GlobalPoint(\n Math.round(asset.refPoint.x / gs) * gs,\n Math.round(asset.refPoint.y / gs) * gs,\n );\n asset.w = Math.max(Math.round(asset.w / gs) * gs, gs);\n asset.h = Math.max(Math.round(asset.h / gs) * gs, gs);\n }\n\n layer.addShape(asset, true);\n }\n}\n\nexport const layerManager = new LayerManager();\n(window).lm = layerManager;\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./createtoken_modal.vue?vue&type=template&id=73816298&scoped=true&\"\nimport script from \"./createtoken_modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./createtoken_modal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73816298\",\n null\n \n)\n\nexport default component.exports","import { BoundingRect } from \"@/game/shapes/boundingrect\";\n\nexport class BoundingNode {\n bbox: BoundingRect;\n nPrimitives: number;\n children: BoundingNode[] = [];\n constructor(nPrimitives: number, bbox: BoundingRect) {\n this.nPrimitives = nPrimitives;\n this.bbox = bbox;\n }\n}\n\nexport class LeafNode extends BoundingNode {\n firstPrimOffset: number;\n constructor(first: number, n: number, bbox: BoundingRect) {\n super(n, bbox);\n this.firstPrimOffset = first;\n }\n}\n\nexport class InteriorNode extends BoundingNode {\n dimension: number;\n constructor(dimension: number, c1: BoundingNode, c2: BoundingNode) {\n super(0, c1.bbox.union(c2.bbox));\n this.dimension = dimension;\n this.children.push(c1);\n this.children.push(c2);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=script&lang=ts&\"","import Tools from \"@/game/ui/tools/tools.vue\";\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { ServerAura } from '@/game/comm/types/shapes';\nimport { EventBus } from \"@/game/event-bus\";\nimport { Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\n\nexport function onKeyUp(event: KeyboardEvent) {\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {\n } else {\n if (event.key === \"Delete\" || event.key === \"Del\" || event.key === \"Backspace\") {\n if (layerManager.getLayer === undefined) {\n console.log(\"No active layer selected for delete operation\");\n return;\n }\n const l = layerManager.getLayer()!;\n for (let i = l.selection.length - 1; i >= 0; i--) {\n const sel = l.selection[i];\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) {\n l.selection.splice(i, 1);\n continue;\n }\n l.removeShape(sel, true, false);\n EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n EventBus.$emit(\"Initiative.Remove\", sel.uuid);\n }\n }\n }\n}\n\nexport function onKeyDown(event: KeyboardEvent) {\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {\n if (event.keyCode === 65 && event.ctrlKey) event.target!.select();\n } else {\n if (event.keyCode >= 37 && event.keyCode <= 40) {\n // todo: this should already be rounded\n const gridSize = Math.round(gameStore.gridSize);\n let offsetX = gridSize * (event.keyCode % 2);\n let offsetY = gridSize * (event.keyCode % 2 ? 0 : 1);\n if (layerManager.hasSelection()) {\n const selection = layerManager.getSelection()!;\n offsetX *= event.keyCode <= 38 ? -1 : 1;\n offsetY *= event.keyCode <= 38 ? -1 : 1;\n let delta = new Vector(offsetX, offsetY);\n if (!event.shiftKey || !gameStore.IS_DM) {\n // First check for collisions. Using the smooth wall slide collision check used on mouse move is overkill here.\n for (const sel of selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) continue;\n delta = calculateDelta(delta, sel);\n }\n }\n for (const sel of selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) continue;\n sel.refPoint = sel.refPoint.add(delta);\n // todo: Fix again\n // if (sel.refPoint.x % gridSize !== 0 || sel.refPoint.y % gridSize !== 0) sel.snapToGrid();\n socket.emit(\"Shape.Position.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n gameStore.recalculateVision();\n layerManager.getLayer()!.invalidate(false);\n } else {\n // The pan offsets should be in the opposite direction to give the correct feel.\n gameStore.increasePanX(offsetX * (event.keyCode <= 38 ? 1 : -1));\n gameStore.increasePanY(offsetY * (event.keyCode <= 38 ? 1 : -1));\n layerManager.invalidate();\n sendClientOptions();\n }\n } else if (event.keyCode === 68) {\n const layer = layerManager.getLayer();\n if (layer) {\n layer.clearSelection();\n layer.invalidate(true);\n }\n } else if (event.key === \"u\" && event.ctrlKey) {\n event.preventDefault();\n event.stopPropagation();\n gameStore.toggleUI();\n } else if (event.key === \"c\" && event.ctrlKey) {\n const layer = layerManager.getLayer();\n if (!layer) return;\n if (!layer.selection) return;\n const clipboard = [];\n for (const shape of layer.selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === shape.uuid) continue;\n clipboard.push(shape.asDict());\n }\n gameStore.setClipboard(clipboard);\n } else if (event.key === \"v\" && event.ctrlKey) {\n const layer = layerManager.getLayer();\n if (!layer) return;\n if (!gameStore.clipboard) return;\n layer.selection = [];\n for (const clip of gameStore.clipboard) {\n clip.x += 10;\n clip.y += 10;\n clip.uuid = uuidv4();\n const oldTrackers = clip.trackers;\n clip.trackers = [];\n for (const tracker of oldTrackers) {\n const newTracker: Tracker = {\n ...tracker,\n uuid: uuidv4()\n }\n clip.trackers.push(newTracker);\n }\n const oldAuras = clip.auras;\n clip.auras = [];\n for (const aura of oldAuras) {\n const newAura: ServerAura = {\n ...aura,\n uuid: uuidv4()\n }\n clip.auras.push(newAura);\n }\n const shape = createShapeFromDict(clip);\n if (shape === undefined) continue;\n layer.addShape(shape, true);\n layer.selection.push(shape);\n }\n if (layer.selection.length === 1) EventBus.$emit(\"SelectionInfo.Shape.Set\", layer.selection[0]);\n else EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n layer.invalidate(false);\n }\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n\nimport ShapeContext from \"@/game/ui/selection/shapecontext.vue\";\nimport CreateTokenModal from \"@/game/ui/tools/createtoken_modal.vue\";\nimport DrawTool from \"@/game/ui/tools/draw.vue\";\nimport FilterTool from \"@/game/ui/tools/filter.vue\";\nimport MapTool from \"@/game/ui/tools/map.vue\";\nimport PanTool from \"@/game/ui/tools/pan\";\nimport SelectTool from \"@/game/ui/tools/select.vue\";\nimport VisionTool from \"@/game/ui/tools/vision.vue\";\n\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameManager } from \"@/game/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { RulerTool } from \"@/game/ui/tools/ruler\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component({\n components: {\n \"select-tool\": SelectTool,\n \"pan-tool\": PanTool,\n \"draw-tool\": DrawTool,\n \"ruler-tool\": RulerTool,\n \"map-tool\": MapTool,\n \"filter-tool\": FilterTool,\n \"vision-tool\": VisionTool,\n \"shape-menu\": ShapeContext,\n \"createtoken-dialog\": CreateTokenModal,\n },\n watch: {\n currentTool(newValue, oldValue) {\n this.$emit(\"tools-select-change\", newValue, oldValue);\n },\n },\n})\nexport default class Tools extends Vue {\n $refs!: {\n selectTool: InstanceType;\n };\n\n currentTool = \"Select\";\n tools = [\"Select\", \"Pan\", \"Draw\", \"Ruler\", \"Map\", \"Filter\", \"Vision\"];\n dmTools = [\"Map\"];\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n get currentToolComponent(): string {\n return `${this.currentTool.toLowerCase()}-tool`;\n }\n\n get visibleTools(): string[] {\n return this.tools.filter(t => (!this.dmTools.includes(t) || this.IS_DM));\n }\n\n toolVisible(tool: string): boolean {\n if (tool === 'Filter') {\n return Object.keys(gameStore.labels).length > 0;\n } else if (tool === 'Vision') {\n return gameStore.ownedtokens.length > 1;\n }\n return true;\n }\n\n mousedown(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if (event.button === 1) {\n targetTool = \"Pan\";\n } else if (event.button !== 0) {\n return;\n }\n\n this.$emit(\"mousedown\", event, targetTool);\n }\n mouseup(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if (event.button === 1) {\n targetTool = \"Pan\";\n } else if (event.button !== 0) {\n return;\n }\n\n this.$emit(\"mouseup\", event, targetTool);\n }\n mousemove(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if ((event.buttons & 4) !== 0) {\n targetTool = \"Pan\";\n } else if ((event.button & 1) > 1) {\n return;\n }\n\n this.$emit(\"mousemove\", event, targetTool);\n\n // Annotation hover\n let found = false;\n for (const uuid of gameStore.annotations) {\n if (layerManager.UUIDMap.has(uuid) && layerManager.hasLayer(\"draw\")) {\n const shape = layerManager.UUIDMap.get(uuid)!;\n if (shape.contains(l2g(getMouse(event)))) {\n found = true;\n gameManager.annotationManager.setActiveText(shape.annotation);\n }\n }\n }\n if (!found && gameManager.annotationManager.shown) {\n gameManager.annotationManager.setActiveText(\"\");\n }\n }\n mouseleave(event: MouseEvent) {\n // When leaving the window while a mouse is pressed down, act as if it was released\n if ((event.buttons & 1) !== 0) {\n this.$emit(\"mouseup\", event, this.currentTool);\n }\n }\n contextmenu(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n if (event.button !== 2 || (event.target).tagName !== \"CANVAS\") return;\n this.$emit(\"contextmenu\", event, this.currentTool);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class Prompt extends Vue {\n $refs!: {\n answer: HTMLElement;\n };\n\n visible = false;\n question = \"\";\n answer = \"\";\n title = \"\";\n\n resolve = (value: string) => {};\n reject = () => {};\n\n submit() {\n this.resolve(this.answer);\n this.close();\n }\n close() {\n this.reject();\n this.visible = false;\n this.question = \"\";\n this.answer = \"\";\n this.title = \"\";\n }\n prompt(question: string, title: string): Promise {\n this.question = question;\n this.title = title;\n this.visible = true;\n this.$nextTick(() => {\n this.$refs.answer.focus();\n });\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(_vm._s(_vm.message))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=template&id=ff095222&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=script&lang=ts&\"","import { GlobalPoint, Point, Ray, Vector } from \"@/game/geom\";\nimport { g2lx, g2ly } from \"../units\";\n\nexport class BoundingRect {\n readonly w: number;\n readonly h: number;\n readonly topLeft: GlobalPoint;\n readonly topRight: GlobalPoint;\n readonly botRight: GlobalPoint;\n readonly botLeft: GlobalPoint;\n\n constructor(topleft: GlobalPoint, w: number, h: number) {\n this.w = w;\n this.h = h;\n this.topLeft = topleft;\n this.topRight = new GlobalPoint(topleft.x + w, topleft.y);\n this.botRight = new GlobalPoint(topleft.x + w, topleft.y + h);\n this.botLeft = new GlobalPoint(topleft.x, topleft.y + h);\n }\n\n contains(point: GlobalPoint): boolean {\n return (\n this.topLeft.x <= point.x &&\n this.topRight.x >= point.x &&\n this.topLeft.y <= point.y &&\n this.botLeft.y >= point.y\n );\n }\n\n get points() {\n if (this.w === 0 || this.h === 0) return [[this.topLeft.x, this.topLeft.y]];\n return [\n [this.topLeft.x, this.topLeft.y],\n [this.botLeft.x, this.botLeft.y],\n [this.botRight.x, this.botRight.y],\n [this.topRight.x, this.topRight.y],\n ];\n }\n\n offset(vector: Vector): BoundingRect {\n return new BoundingRect(this.topLeft.add(vector), this.w, this.h);\n }\n\n union(other: BoundingRect): BoundingRect {\n const xmin = Math.min(this.topLeft.x, other.topLeft.x);\n const xmax = Math.max(this.topRight.x, other.topRight.x);\n const ymin = Math.min(this.topLeft.y, other.topLeft.y);\n const ymax = Math.max(this.botLeft.y, other.botLeft.y);\n return new BoundingRect(new GlobalPoint(xmin, ymin), xmax - xmin, ymax - ymin);\n }\n\n getDiagCorner(botright: boolean) {\n return botright ? this.botRight : this.topLeft;\n }\n\n intersectsWith(other: BoundingRect): boolean {\n return !(\n other.topLeft.x > this.topRight.x ||\n other.topRight.x < this.topLeft.x ||\n other.topLeft.y > this.botLeft.y ||\n other.botLeft.y < this.topLeft.y\n );\n }\n\n intersectsWithInner(other: BoundingRect): boolean {\n return !(\n other.topLeft.x >= this.topRight.x ||\n other.topRight.x <= this.topLeft.x ||\n other.topLeft.y >= this.botLeft.y ||\n other.botLeft.y <= this.topLeft.y\n );\n }\n\n intersectP(ray: Ray, invDir: Vector, dirIsNeg: boolean[]) {\n let txmin = invDir.x * (this.getDiagCorner(dirIsNeg[0]).x - ray.origin!.x);\n let txmax = invDir.x * (this.getDiagCorner(!dirIsNeg[0]).x - ray.origin!.x);\n const tymin = invDir.y * (this.getDiagCorner(dirIsNeg[1]).y - ray.origin!.y);\n const tymax = invDir.y * (this.getDiagCorner(!dirIsNeg[1]).y - ray.origin!.y);\n if (txmin > tymax || tymin > txmax) return { hit: false, min: txmin, max: txmax };\n if (tymin > txmin) txmin = tymin;\n if (tymax < txmax) txmax = tymax;\n return { hit: txmin < ray.tMax! && txmax > 0, min: txmin, max: txmax };\n }\n\n center(): GlobalPoint {\n return this.topLeft.add(new Vector(this.w / 2, this.h / 2));\n }\n\n getMaxExtent() {\n return this.w > this.h ? 0 : 1;\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n const coreVisible = !(\n g2lx(this.topLeft.x) > canvas.width ||\n g2ly(this.topLeft.y) > canvas.height ||\n g2lx(this.topRight.x) < 0 ||\n g2ly(this.botRight.y) < 0\n );\n if (coreVisible) return true;\n return false;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"formcontainer\"}},[(_vm.owned || _vm.joined)?_c('form',[_c('fieldset',[_c('legend',{staticClass:\"legend\"},[_vm._v(\"Your sessions\")]),_c('div',{staticClass:\"input\"},[_vm._l((_vm.owned),function(room,i){return _c('router-link',{key:'o-'+i,attrs:{\"to\":'/game/' + room[1] + '/' + room[0]}},[_vm._v(_vm._s(room[0]))])}),_vm._l((_vm.joined),function(room,i){return _c('router-link',{key:'j-'+i,attrs:{\"to\":'/game/' + room[1] + '/' + room[0]}},[_vm._v(_vm._s(room[1])+\"/\"+_vm._s(room[0]))])})],2),(_vm.owned.length === 0)?_c('div',{staticClass:\"input\"},[_vm._v(\"No active sessions\")]):_vm._e()])]):_vm._e(),_vm._m(0),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.createRoom($event)}}},[_c('fieldset',[(!_vm.owned && !_vm.joined)?_c('legend',{staticClass:\"legend\"},[_vm._v(\"Create a session\")]):_c('div',{staticClass:\"input\"},[_vm._v(\"Create a new session\")]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newSessionName),expression:\"newSessionName\"}],attrs:{\"type\":\"text\",\"name\":\"room_name\",\"placeholder\":\"Session Name\"},domProps:{\"value\":(_vm.newSessionName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newSessionName=$event.target.value}}}),_vm._m(1)]),_vm._m(2)])]),_c('div',{attrs:{\"id\":\"account-options\"}},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('router-link',{staticClass:\"submit\",attrs:{\"tag\":\"button\",\"title\":\"Account Settings\",\"to\":\"/account\"}},[_c('i',{staticClass:\"fas fa-cog\"})])],1),_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('router-link',{staticClass:\"submit\",attrs:{\"tag\":\"button\",\"title\":\"Logout\",\"to\":\"/auth/logout\"}},[_c('i',{staticClass:\"fas fa-sign-out-alt\"})])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_c('span',[_vm._v(\"OR\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fab fa-d-and-d\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"submit\",attrs:{\"type\":\"submit\",\"title\":\"Create\"}},[_c('i',{staticClass:\"fas fa-arrow-right\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=template&id=61eb1455&scoped=true&\"","/*\nThis module defines some Point classes.\nA strong focus is made to ensure that at no time a global and a local point are mixed up with each other.\nAt first glance this adds weird looking hacks as ts does not support nominal typing.\n*/\n\nexport function getPointDistance(p1: Point, p2: Point) {\n const a = p1.x - p2.x;\n const b = p1.y - p2.y;\n return Math.sqrt(a * a + b * b);\n}\n\nexport class Point {\n readonly x: number;\n readonly y: number;\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n static fromArray(point: number[]) {\n return new Point(point[0], point[1]);\n }\n add(vec: Vector) {\n return new Point(this.x + vec.x, this.y + vec.y);\n }\n subtract(other: Point) {\n return new Vector(this.x - other.x, this.y - other.y);\n }\n clone(): Point {\n return new Point(this.x, this.y);\n }\n get(dimension: 0 | 1) {\n if (dimension === 0) return this.x;\n return this.y;\n }\n asArray(): number[] {\n return [this.x, this.y];\n }\n}\nexport class GlobalPoint extends Point {\n // This is to differentiate with LocalPoint, is actually never used\n // We do ! to prevent errors that it never gets initialized\n // tslint:disable-next-line:variable-name\n _GlobalPoint!: string;\n add(vec: Vector): GlobalPoint {\n return super.add(vec);\n }\n subtract(other: GlobalPoint): Vector {\n return super.subtract(other);\n }\n clone(): GlobalPoint {\n return super.clone();\n }\n static fromArray(point: number[]) {\n return new GlobalPoint(point[0], point[1]);\n }\n}\n\nexport class LocalPoint extends Point {\n // This is to differentiate with GlobalPoint, is actually never used\n // We do ! to prevent errors that it never gets initialized\n // tslint:disable-next-line:variable-name\n _LocalPoint!: string;\n add(vec: Vector): LocalPoint {\n return super.add(vec);\n }\n subtract(other: LocalPoint): Vector {\n return super.subtract(other);\n }\n clone(): LocalPoint {\n return super.clone();\n }\n}\n\nexport class Vector {\n readonly x: number;\n readonly y: number;\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n dot(other: Vector): number {\n return this.x * other.x + this.y * other.y;\n }\n inverse(): Vector {\n return new Vector(this.x === 0 ? 0 : 1 / this.x, this.y === 0 ? 0 : 1 / this.y);\n }\n length(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));\n }\n normalize(): Vector {\n const l = this.length();\n return new Vector(this.x / l, this.y / l);\n }\n reverse(): Vector {\n return new Vector(-this.x, -this.y);\n }\n multiply(scale: number): Vector {\n return new Vector(this.x * scale, this.y * scale);\n }\n angle(): number {\n return (Math.atan2(this.y, this.x) * 180) / Math.PI;\n }\n}\n\nexport class Ray {\n readonly direction: Vector;\n readonly origin: T;\n tMax: number;\n constructor(origin: T, direction: Vector, tMax?: number) {\n this.direction = direction;\n this.origin = origin;\n if (tMax === undefined) tMax = Infinity;\n this.tMax = tMax;\n }\n static fromPoints(p1: T, p2: T): Ray {\n const vec = new Vector(p2.x - p1.x, p2.y - p1.y);\n let maxT;\n if (Math.abs(vec.x) > 0.01) maxT = (p2.x - p1.x) / vec.x;\n else maxT = (p2.y - p1.y) / vec.y;\n return new Ray(p1, vec, maxT);\n }\n get(t: number): T {\n return new Point(this.origin.x + t * this.direction.x, this.origin.y + t * this.direction.y);\n }\n getDistance(t1: number, t2: number) {\n return Math.sqrt(Math.pow(t2 - t1, 2) * (Math.pow(this.direction.x, 2) + Math.pow(this.direction.y, 2)));\n }\n getT(t1: number, distance: number) {\n return t1 + Math.sqrt(Math.pow(distance, 2) / (Math.pow(this.direction.x, 2) + Math.pow(this.direction.y, 2)));\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_vm._l((_vm.folders),function(folder){return _c('li',{key:folder,staticClass:\"folder\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle($event)}}},[_vm._v(\"\\n \"+_vm._s(folder)+\"\\n \"),_c('asset-node',{attrs:{\"asset\":_vm.asset[folder]}})],1)}),_vm._l((_vm.files),function(file){return _c('li',{key:file.name,staticClass:\"file draggable token\",attrs:{\"draggable\":\"true\"},on:{\"mouseover\":function($event){_vm.showImage = file.hash},\"mouseout\":function($event){_vm.showImage = null},\"dragstart\":function($event){return _vm.dragStart($event, '/static/assets/' + file.hash)}}},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \"),(_vm.showImage == file.hash)?_c('div',{staticClass:\"preview\"},[_c('img',{staticClass:\"asset-preview-image\",attrs:{\"src\":'/static/assets/' + file.hash}})]):_vm._e()])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=template&id=6d718094&scoped=true&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport vueSlider from \"vue-slider-component\";\n\nimport \"@/game/api/events\";\n\nimport { throttle } from \"lodash\";\nimport { mapGetters, mapState } from \"vuex\";\n\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport Initiative from \"@/game/ui/initiative.vue\";\nimport LabelManager from \"@/game/ui/labels.vue\";\nimport MenuBar from \"@/game/ui/menu/menu.vue\";\nimport NoteDialog from \"@/game/ui/note.vue\";\nimport SelectionInfo from \"@/game/ui/selection/selection_info.vue\";\nimport Tools from \"@/game/ui/tools/tools.vue\";\n\nimport { createConnection, socket } from \"@/game/api/socket\";\nimport { onKeyDown, onKeyUp } from \"@/game/events/keyboard\";\nimport { scrollZoom } from \"@/game/events/mouse\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { LocalPoint } from \"./geom\";\nimport DmSettings from \"./ui/dmsettings.vue\";\n\n@Component({\n components: {\n \"tool-bar\": Tools,\n \"selection-info\": SelectionInfo,\n \"prompt-dialog\": Prompt,\n \"confirm-dialog\": ConfirmDialog,\n \"menu-bar\": MenuBar,\n \"initiative-dialog\": Initiative,\n \"zoom-slider\": vueSlider,\n \"note-dialog\": NoteDialog,\n \"label-dialog\": LabelManager,\n \"dm-settings\": DmSettings,\n },\n beforeRouteEnter(to, from, next) {\n createConnection(to);\n next();\n },\n beforeRouteLeave(to, from, next) {\n socket.disconnect();\n next();\n },\n})\nexport default class Game extends Vue {\n $refs!: {\n confirm: InstanceType;\n tools: InstanceType;\n };\n\n ready = {\n manager: false,\n tools: false,\n };\n\n get showUI(): boolean {\n return gameStore.showUI;\n }\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n get FAKE_PLAYER(): boolean {\n return gameStore.FAKE_PLAYER;\n }\n\n get layers(): string[] {\n return gameStore.layers;\n }\n\n get selectedLayer(): string {\n return gameStore.selectedLayer;\n }\n\n get zoomDisplay(): number {\n return gameStore.zoomDisplay;\n }\n\n set zoomDisplay(value: number) {\n gameStore.updateZoom({\n newZoomDisplay: value,\n zoomLocation: l2g(new LocalPoint(window.innerWidth / 2, window.innerHeight / 2)),\n });\n }\n\n mounted() {\n window.addEventListener(\"resize\", this.resizeWindow);\n window.addEventListener(\"keyup\", onKeyUp);\n window.addEventListener(\"keydown\", onKeyDown);\n this.ready.manager = true;\n }\n\n destroyed() {\n window.removeEventListener(\"resize\", this.resizeWindow);\n window.removeEventListener(\"keyup\", onKeyUp);\n window.removeEventListener(\"keydown\", onKeyDown);\n this.ready.manager = false;\n }\n\n // Window events\n\n zoom(event: WheelEvent) {\n throttle(scrollZoom)(event);\n }\n\n resizeWindow() {\n layerManager.setWidth(window.innerWidth);\n layerManager.setHeight(window.innerHeight);\n layerManager.invalidate();\n }\n\n // Mouse events\n\n mousedown(event: MouseEvent) {\n this.$refs.tools.mousedown(event);\n }\n mouseup(event: MouseEvent) {\n this.$refs.tools.mouseup(event);\n }\n mousemove(event: MouseEvent) {\n this.$refs.tools.mousemove(event);\n }\n mouseleave(event: MouseEvent) {\n this.$refs.tools.mouseleave(event);\n }\n contextmenu(event: MouseEvent) {\n this.$refs.tools.contextmenu(event);\n }\n selectLayer(layer: string) {\n layerManager.selectLayer(layer);\n }\n drop(event: DragEvent) {\n if (event === null || event.dataTransfer === null) return;\n if (event.dataTransfer.files.length > 0) {\n this.$refs.confirm\n .open(\"Uploading files should be done through the asset manager.\", \"Ok\", \"\")\n .then(() => {}, () => {});\n } else if (event.dataTransfer.getData(\"text/plain\") === \"\") {\n return;\n } else {\n layerManager.dropAsset(event);\n }\n }\n}\n","import { GlobalPoint, LocalPoint, Ray } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nexport function g2l(obj: GlobalPoint): LocalPoint {\n const z = gameStore.zoomFactor;\n const panX = gameStore.panX;\n const panY = gameStore.panY;\n return new LocalPoint((obj.x + panX) * z, (obj.y + panY) * z);\n}\n\nexport function g2lx(x: number) {\n return g2l(new GlobalPoint(x, 0)).x;\n}\n\nexport function g2ly(y: number) {\n return g2l(new GlobalPoint(0, y)).y;\n}\n\nexport function g2lz(z: number) {\n return z * gameStore.zoomFactor;\n}\n\nexport function getUnitDistance(r: number) {\n return (r / gameStore.unitSize) * gameStore.gridSize;\n}\n\nexport function g2lr(r: number) {\n return g2lz(getUnitDistance(r));\n}\n\nexport function l2g(obj: LocalPoint): GlobalPoint;\nexport function l2g(obj: Ray): Ray;\nexport function l2g(obj: LocalPoint | Ray): GlobalPoint | Ray {\n const z = gameStore.zoomFactor;\n const panX = gameStore.panX;\n const panY = gameStore.panY;\n if (obj instanceof LocalPoint) {\n return new GlobalPoint(obj.x / z - panX, obj.y / z - panY);\n } else {\n return new Ray(l2g(obj.origin), obj.direction.multiply(1 / z), obj.tMax);\n }\n}\n\nexport function l2gx(x: number) {\n return l2g(new LocalPoint(x, 0)).x;\n}\n\nexport function l2gy(y: number) {\n return l2g(new LocalPoint(0, y)).y;\n}\n\nexport function l2gz(z: number) {\n return z / gameStore.zoomFactor;\n}\n\nexport function l2gr(r: number) {\n return l2gz(getUnitDistance(r));\n}\n\n(window).g2lx = g2lx;\n(window).g2ly = g2ly;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport AssetNode from \"@/game/ui/menu/asset_node.vue\";\nimport NoteDialog from \"@/game/ui/note.vue\";\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { gameStore } from \"@/game/store\";\nimport { EventBus } from \"../../event-bus\";\n\n@Component({\n components: {\n \"color-picker\": ColorPicker,\n \"asset-node\": AssetNode,\n },\n computed: {\n ...mapState(\"game\", [\"locations\", \"assets\", \"notes\"]),\n },\n})\nexport default class MenuBar extends Vue {\n visible = {\n settings: false,\n locations: false,\n };\n\n get IS_DM(): boolean {\n return gameStore.IS_DM || gameStore.FAKE_PLAYER;\n }\n get gridColour(): string {\n return gameStore.gridColour;\n }\n set gridColour(value: string) {\n gameStore.setGridColour({ colour: value, sync: true });\n }\n get fowColour(): string {\n return gameStore.fowColour;\n }\n set fowColour(value: string) {\n gameStore.setFOWColour({ colour: value, sync: true });\n }\n get rulerColour(): string {\n return gameStore.rulerColour;\n }\n set rulerColour(value: string) {\n gameStore.setRulerColour({ colour: value, sync: true });\n }\n settingsClick(event: { target: HTMLElement }) {\n if (event.target.classList.contains(\"menu-accordion\")) {\n event.target.classList.toggle(\"menu-accordion-active\");\n const next = event.target.nextElementSibling;\n if (next !== null) next.style.display = next.style.display === \"\" ? \"block\" : \"\";\n }\n }\n changeLocation(name: string) {\n socket.emit(\"Location.Change\", name);\n }\n createLocation() {\n getRef(\"prompt\")\n .prompt(`New location name:`, `Create new location`)\n .then(\n (value: string) => {\n socket.emit(\"Location.New\", value);\n },\n () => {},\n );\n }\n createNote() {\n const note = { title: \"New note\", text: \"\", uuid: uuidv4() };\n gameStore.newNote({ note, sync: true });\n this.openNote(note);\n }\n openNote(note: Note) {\n getRef(\"note\").open(note);\n }\n\n openDmSettings() {\n EventBus.$emit(\"DmSettings.Open\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=script&lang=ts&\"","import { CDT } from \"./cdt\";\nimport { ccw, cw, orientation, ulp } from \"./triag\";\n\nexport type Point = number[];\n\nexport const INFINITE = -7e310;\n\nlet _INFINITE_VERTEX: Vertex;\n\nexport enum Sign {\n NEGATIVE = -1,\n ZERO = 0,\n POSITIVE = 1,\n\n RIGHT_TURN = -1,\n LEFT_TURN = 1,\n\n SMALLER = -1,\n EQUAL = 0,\n LARGER = 1,\n\n CLOCKWISE = -1,\n COUNTERCLOCKWISE = 1,\n\n COLLINEAR = 0,\n COPLANAR = 0,\n DEGENERATE = 0,\n\n ON_NEGATIVE_SIDE = -1,\n ON_ORIENTED_BOUNDARY = 0,\n ON_POSITIVE_SIDE = 1,\n}\n\nenum LineFaceState {\n UNDEFINED = -1,\n VERTEX_VERTEX = 0,\n VERTEX_EDGE = 1,\n EDGE_VERTEX = 2,\n EDGE_EDGE = 3,\n}\n\nfunction newPoint(): Point {\n return [INFINITE, INFINITE];\n}\n\nexport class Triangle {\n vertices: (Vertex | null)[] = [];\n neighbours: (Triangle | null)[] = [null, null, null];\n constraints = [false, false, false];\n static _counter = 0;\n uid = Triangle._counter++;\n\n constructor(...vertices: (Vertex | null)[]) {\n this.vertices = vertices;\n }\n\n from(t: Triangle): this {\n this.vertices = t.vertices.slice(0, t.vertices.length);\n this.neighbours = t.neighbours.slice(0, t.neighbours.length);\n this.constraints = t.constraints.slice(0, t.constraints.length);\n return this;\n }\n\n get dimension() {\n return this.vertices.length - 1;\n }\n\n addVertex(vertex: Vertex) {\n if (vertex === undefined) {\n console.log(\"UNDEFINED HIERE\");\n }\n this.vertices.push(vertex);\n vertex.triangle = this;\n }\n\n isConstrained(index: number): boolean {\n return this.constraints[index];\n }\n\n reorient() {\n // If certain indices do not exist yet thay will append faulty undefined's, thus we slice them\n this.vertices = [this.vertices[1], this.vertices[0], this.vertices[2]].slice(0, this.vertices.length);\n this.neighbours = [this.neighbours[1], this.neighbours[0], this.neighbours[2]];\n this.constraints = [this.constraints[1], this.constraints[0], this.constraints[2]];\n }\n\n indexV(v: Vertex): number {\n return this.vertices.indexOf(v);\n }\n\n indexT(t: Triangle): number {\n return this.neighbours.indexOf(t);\n }\n\n isInfinite(index?: number): boolean {\n if (index === undefined) {\n return this.vertices.includes(_INFINITE_VERTEX);\n } else {\n return this.vertices[ccw(index)]!.infinite || this.vertices[cw(index)]!.infinite;\n }\n }\n\n contains(point: Point) {\n const A =\n -this.vertices[1]!.point![1] * this.vertices[2]!.point![0] +\n this.vertices[0]!.point![1] * (-this.vertices[1]!.point![0] + this.vertices[2]!.point![0]) +\n this.vertices[0]!.point![0] * (this.vertices[1]!.point![1] - this.vertices[2]!.point![1]) +\n this.vertices[1]!.point![0] * this.vertices[2]!.point![1];\n const sign = A < 0 ? -1 : 1;\n const s =\n (this.vertices[0]!.point![1] * this.vertices[2]!.point![0] -\n this.vertices[0]!.point![0] * this.vertices[2]!.point![1] +\n (this.vertices[2]!.point![1] - this.vertices[0]!.point![1]) * point[0] +\n (this.vertices[0]!.point![0] - this.vertices[2]!.point![0]) * point[1]) *\n sign;\n if (s < 0) return false;\n const t =\n (this.vertices[0]!.point![0] * this.vertices[1]!.point![1] -\n this.vertices[0]!.point![1] * this.vertices[1]!.point![0] +\n (this.vertices[0]!.point![1] - this.vertices[1]!.point![1]) * point[0] +\n (this.vertices[1]!.point![0] - this.vertices[0]!.point![0]) * point[1]) *\n sign;\n\n return t > 0 && s + t < A * sign;\n }\n}\n\nexport class Vertex {\n infinite = false;\n private _point: Point | undefined;\n triangle: Triangle | undefined;\n\n constructor(point?: Point) {\n this._point = point;\n }\n\n get point(): Point | undefined {\n return this._point;\n }\n\n set point(point: Point | undefined) {\n this._point = point;\n this.infinite = false;\n }\n}\n\nexport class EdgeCirculator {\n ri: number;\n v: Vertex | null;\n t: Triangle | null;\n _ri: number;\n _v: Vertex | null;\n _t: Triangle | null;\n\n constructor(v: Vertex | null, t: Triangle | null) {\n this.v = v;\n this.t = t;\n if (v === null) {\n this.t = null;\n } else if (t === null) {\n this.t = v.triangle!;\n }\n if (this.t == null || this.t.dimension < 1) {\n this.ri = 0;\n this.v = null;\n this.t = null;\n } else {\n const i = this.t.indexV(v!);\n if (this.t.dimension === 2) this.ri = ccw(i);\n else this.ri = 2;\n }\n this._ri = this.ri;\n this._v = this.v;\n this._t = this.t;\n }\n\n get valid() {\n return this.t !== null && this.v !== null;\n }\n\n next(): boolean {\n let i = this.t!.indexV(this.v!);\n if (this.t!.dimension === 1) {\n this.t = this.t!.neighbours[i === 0 ? 1 : 0];\n } else {\n this.t = this.t!.neighbours[ccw(i)];\n i = this.t!.indexV(this.v!);\n this.ri = ccw(i);\n }\n return this.ri !== this._ri || this.v !== this._v || this.t !== this._t;\n }\n}\n\nexport class EdgeIterator {\n private i = 0;\n pos: Triangle | null;\n edge: Edge = new Edge();\n tds: TDS;\n _es = 0;\n constructor(tds: TDS) {\n this.tds = tds;\n this.edge.second = 0;\n if (tds.dimension <= 0) {\n this.pos = null;\n return;\n }\n this.pos = tds.triangles[0];\n if (tds.dimension === 1) this.edge.second = 2;\n while (this.pos !== null && !this.associatedEdge()) {\n throw new Error(\"[poi\");\n }\n\n if (tds.dimension === 1) this._es = 2;\n }\n\n get valid(): boolean {\n return (this.pos !== null || this._es !== this.edge.second) && this.pos!.isInfinite(this.edge.second);\n }\n\n next() {\n do {\n this.increment();\n } while (this.pos !== null && !this.associatedEdge());\n }\n\n collect(): Edge {\n this.edge.first = this.pos;\n return this.edge;\n }\n\n associatedEdge(): boolean {\n if (this.tds.dimension === 1) return true;\n return (\n this.tds.triangles.indexOf(this.pos!) < this.tds.triangles.indexOf(this.pos!.neighbours[this.edge.second]!)\n );\n }\n\n increment() {\n if (this.tds.dimension === 1) {\n this.i++;\n if (this.tds.triangles.length <= this.i) this.pos = null;\n else this.pos = this.tds.triangles[this.i];\n } else if (this.edge.second === 2) {\n this.edge.second = 0;\n this.i++;\n if (this.tds.triangles.length <= this.i) this.pos = null;\n else this.pos = this.tds.triangles[this.i];\n } else {\n this.edge.second++;\n }\n }\n}\n\nexport class FaceCirculator {\n v: Vertex | null;\n t: Triangle | null;\n _v: Vertex | null;\n _t: Triangle | null;\n\n constructor(v: Vertex | null, t: Triangle | null) {\n this.v = v;\n this.t = t;\n if (v === null) {\n this.t = null;\n } else if (t === null) {\n this.t = v.triangle!;\n }\n if (this.t == null || this.t.dimension < 2) {\n this.v = null;\n this.t = null;\n }\n this._v = this.v;\n this._t = this.t;\n }\n\n get valid() {\n return this.t !== null && this.v !== null;\n }\n\n prev() {\n const i = this.t!.indexV(this.v!);\n this.t = this.t!.neighbours[cw(i)];\n }\n\n next(): boolean {\n const i = this.t!.indexV(this.v!);\n this.t = this.t!.neighbours[ccw(i)];\n return this.v !== this._v || this.t !== this._t;\n }\n}\n\nexport class LineFaceCirculator {\n private i = 0;\n pos: Triangle | null = null;\n _tr: CDT;\n s: LineFaceState = LineFaceState.UNDEFINED;\n p: Point;\n q: Point;\n\n constructor(v: Vertex, tr: CDT, dir: Point) {\n this._tr = tr;\n this.p = v.point!;\n this.q = dir;\n\n const fc = new FaceCirculator(v, null);\n let ic = fc.t!.indexV(v);\n let vt = fc.t!.vertices[cw(ic)]!;\n while (v === _INFINITE_VERTEX || orientation(this.p, this.q, vt.point!) !== Sign.LEFT_TURN) {\n fc.next();\n ic = fc.t!.indexV(v);\n vt = fc.t!.vertices[cw(ic)]!;\n if (!fc.valid) {\n return;\n }\n }\n\n let vr = fc.t!.vertices[ccw(ic)]!;\n let pqr: Sign = Sign.RIGHT_TURN;\n // tslint:disable:no-conditional-assignment\n while (vr !== _INFINITE_VERTEX && (pqr = orientation(this.p, this.q, vr.point!)) === Sign.LEFT_TURN) {\n fc.prev();\n ic = fc.t!.indexV(v);\n vr = fc.t!.vertices[ccw(ic)]!;\n }\n\n ic = fc.t!.indexV(v);\n vt = fc.t!.vertices[cw(ic)]!;\n\n if (vr === _INFINITE_VERTEX) {\n fc.prev();\n ic = fc.t!.indexV(v);\n vr = fc.t!.vertices[ccw(ic)]!;\n pqr = orientation(this.p, this.q, vr.point!);\n switch (pqr) {\n case Sign.RIGHT_TURN:\n case Sign.COLLINEAR: {\n fc.next();\n ic = fc.t!.indexV(_INFINITE_VERTEX);\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ic;\n break;\n }\n case Sign.LEFT_TURN: {\n break;\n }\n }\n } else if (pqr === Sign.COLLINEAR) {\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ccw(ic);\n } else {\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_EDGE;\n this.i = ic;\n }\n }\n\n next() {\n this.increment();\n }\n\n increment() {\n let o: Sign;\n if (this.s === LineFaceState.VERTEX_VERTEX || this.s === LineFaceState.EDGE_VERTEX) {\n do {\n const n = this.pos!.neighbours[cw(this.i)]!;\n this.i = n.indexT(this.pos!);\n this.pos = n;\n if (this.pos!.vertices[this.i] === _INFINITE_VERTEX) {\n o = Sign.COLLINEAR;\n this.i = cw(this.i);\n break;\n }\n o = orientation(this.p, this.q, this.pos!.vertices[this.i]!.point!);\n this.i = cw(this.i);\n } while (o === Sign.LEFT_TURN);\n if (o === Sign.COLLINEAR) {\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ccw(this.i);\n } else {\n this.s = LineFaceState.VERTEX_EDGE;\n }\n } else {\n const n = this.pos!.neighbours[this.i]!;\n const ni = n.indexT(this.pos!);\n this.pos = n;\n o =\n this.pos!.vertices[ni]! === _INFINITE_VERTEX\n ? Sign.COLLINEAR\n : orientation(this.p, this.q, this.pos!.vertices[ni]!.point!);\n switch (o) {\n case Sign.LEFT_TURN: {\n this.s = LineFaceState.EDGE_EDGE;\n this.i = ccw(ni);\n break;\n }\n case Sign.RIGHT_TURN: {\n this.s = LineFaceState.EDGE_EDGE;\n this.i = cw(ni);\n break;\n }\n default: {\n this.s = LineFaceState.EDGE_VERTEX;\n this.i = ni;\n }\n }\n }\n }\n}\n\nclass Edge {\n first: Triangle | null = null;\n second: number = 0;\n}\n\nexport enum LocateType {\n VERTEX,\n EDGE,\n FACE,\n OUTSIDE_CONVEX_HULL,\n OUTSIDE_AFFINE_HULL,\n}\n\nexport class TDS {\n dimension = -1;\n vertices: Vertex[] = [];\n triangles: Triangle[] = [];\n _infinite: Vertex;\n\n constructor() {\n this._infinite = this.createVertex();\n _INFINITE_VERTEX = this._infinite;\n const t = new Triangle();\n t.addVertex(this._infinite);\n this.triangles.push(t);\n }\n\n createVertex(): Vertex {\n const v = this.infiniteVertex;\n if (v === undefined) {\n console.log(\"UNDEFINED HIERE\");\n }\n this.vertices.push(v);\n return v;\n }\n\n createTriangle(\n v0: Vertex | null,\n v1: Vertex | null,\n v2: Vertex | null,\n n0: Triangle | null,\n n1: Triangle | null,\n n2: Triangle | null,\n ) {\n const t = new Triangle(v0, v1, v2);\n t.neighbours[0] = n0;\n t.neighbours[1] = n1;\n t.neighbours[2] = n2;\n this.triangles.push(t);\n return t;\n }\n\n deleteTriangle(trig: Triangle) {\n this.triangles = this.triangles.filter(t => t !== trig);\n }\n\n setAdjacency(t0: Triangle, i0: number, t1: Triangle, i1: number) {\n t0.neighbours[i0] = t1;\n t1.neighbours[i1] = t0;\n }\n\n get finiteVertex(): Vertex {\n return this.vertices[1];\n }\n\n get infiniteVertex(): Vertex {\n const v = new Vertex(newPoint());\n v.infinite = true;\n return v;\n }\n\n get finiteEdge(): Edge {\n if (this.dimension < 1) throw new Error(\"aspo\");\n const ei = new EdgeIterator(this);\n while (ei.valid) ei.next();\n return ei.collect();\n }\n\n insertDimUp(w: Vertex = new Vertex(), orient: boolean = true): Vertex {\n const v = this.createVertex();\n this.dimension++;\n let t1: Triangle;\n let t2: Triangle;\n switch (this.dimension) {\n case 0: {\n t1 = this.triangles[0];\n t2 = new Triangle(v);\n this.triangles.push(t2);\n this.setAdjacency(t1, 0, t2, 0);\n v.triangle = t2;\n break;\n }\n case 1:\n case 2: {\n const deleteList: Triangle[] = [];\n const triangles = this.triangles.slice(0, this.triangles.length);\n for (const trig of triangles) {\n const copy = new Triangle().from(trig);\n this.triangles.push(copy);\n trig.vertices[this.dimension] = v;\n copy.vertices[this.dimension] = w;\n this.setAdjacency(trig, this.dimension, copy, this.dimension);\n if (trig.vertices.includes(w)) deleteList.push(copy);\n }\n for (const trig of triangles) {\n const neighbour = trig.neighbours[this.dimension];\n for (let j = 0; j < this.dimension; ++j) {\n neighbour!.neighbours[j] = trig.neighbours[j]!.neighbours[this.dimension];\n }\n }\n\n let lfit = 0;\n if (this.dimension === 1) {\n if (orient) {\n triangles[lfit].reorient();\n lfit++;\n triangles[lfit].neighbours[1]!.reorient();\n } else {\n triangles[lfit].neighbours[1]!.reorient();\n lfit++;\n triangles[lfit].reorient();\n }\n } else {\n for (const trig of triangles) {\n if (orient) trig.neighbours[2]!.reorient();\n else trig.reorient();\n }\n }\n\n for (const trig of deleteList) {\n let j = 1;\n if (trig.vertices[0] === w) j = 0;\n t1 = trig.neighbours[this.dimension]!;\n const i1 = this.mirrorIndex(trig, this.dimension);\n t2 = trig.neighbours[j]!;\n const i2 = this.mirrorIndex(trig, j);\n this.setAdjacency(t1, i1, t2, i2);\n this.deleteTriangle(trig);\n }\n v.triangle = triangles[0];\n break;\n }\n default: {\n throw new Error(\"Dimension unknown\");\n }\n }\n return v;\n }\n\n mirrorIndex(t: Triangle, i: number): number {\n if (t.dimension === 1) {\n const j = t.neighbours[i]!.indexV(t.vertices[i === 0 ? 1 : 0]!);\n return j === 0 ? 1 : 0;\n }\n return ccw(t.neighbours[i]!.indexV(t.vertices[ccw(i)]!));\n }\n\n insertInFace(t: Triangle) {\n const v = this.createVertex();\n const v0 = t.vertices[0]!;\n const v1 = t.vertices[1]!;\n const v2 = t.vertices[2]!;\n const n1 = t.neighbours[1]!;\n const n2 = t.neighbours[2]!;\n const t1 = this.createTriangle(v0, v, v2, t, n1, null);\n const t2 = this.createTriangle(v0, v1, v, t, null, n2);\n this.setAdjacency(t1, 2, t2, 1);\n if (n1 !== null) {\n const i1 = this.mirrorIndex(t, 1);\n n1.neighbours[i1] = t1;\n }\n if (n2 !== null) {\n const i2 = this.mirrorIndex(t, 2);\n n2.neighbours[i2] = t2;\n }\n t.vertices[0] = v;\n t.neighbours[1] = t1;\n t.neighbours[2] = t2;\n if (v0.triangle === t) v0.triangle = t2;\n v.triangle = t;\n return v;\n }\n\n flip(t: Triangle, i: number) {\n const n = t.neighbours[i]!;\n const ni = this.mirrorIndex(t, i);\n const vCW = t.vertices[cw(i)]!;\n const vCCW = t.vertices[ccw(i)]!;\n const tr = t.neighbours[ccw(i)]!;\n const tri = this.mirrorIndex(t, ccw(i));\n const bl = n.neighbours[ccw(ni)]!;\n const bli = this.mirrorIndex(n, ccw(ni));\n\n t.vertices[cw(i)] = n.vertices[ni]!;\n n.vertices[cw(ni)] = t.vertices[i]!;\n\n this.setAdjacency(t, i, bl, bli);\n this.setAdjacency(t, ccw(i), n, ccw(ni));\n this.setAdjacency(n, ni, tr, tri);\n\n if (vCW.triangle! === t) vCW.triangle = n;\n if (vCCW.triangle! === n) vCCW.triangle = t;\n }\n\n insertInEdge(t: Triangle, i: number) {\n let v: Vertex;\n if (this.dimension === 1) {\n v = this.createVertex();\n const ff = t.neighbours[0]!;\n const vv = t.vertices[1]!;\n const g = this.createTriangle(v, vv, null, ff, t, null);\n t.vertices[1] = v;\n t.neighbours[0] = g;\n ff.neighbours[1] = g;\n v.triangle = g;\n vv.triangle = ff;\n } else {\n const n = t.neighbours[i]!;\n const ni = this.mirrorIndex(t, i);\n v = this.insertInFace(t);\n this.flip(n, ni);\n }\n return v;\n }\n}\n\nexport class BoundingBox {\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n constructor(p: Point) {\n this.x1 = p[0];\n this.y1 = p[1];\n this.x2 = p[0];\n this.y2 = p[1];\n }\n\n dilate(dist: number) {\n this.x1 -= dist * ulp(this.x1);\n this.y1 -= dist * ulp(this.y1);\n this.x2 += dist * ulp(this.x2);\n this.y2 += dist * ulp(this.y2);\n }\n\n overlaps(other: BoundingBox): boolean {\n if (this.x2 < other.x1 || other.x2 < this.x1) return false;\n if (this.y2 < other.y1 || other.y2 < this.y1) return false;\n return true;\n }\n}\n","import { partition } from \"@/core/utils\";\nimport { GlobalPoint, Ray } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly, g2lz } from \"@/game/units\";\nimport { BoundingNode, InteriorNode, LeafNode } from \"@/game/visibility/bvh/node\";\n\ninterface BuildInfo {\n index: number;\n bbox: BoundingRect;\n center: BoundingRect;\n}\ninterface LinearBHVNode {\n bbox: BoundingRect;\n nPrimitives: number;\n}\ninterface LinearLeafNode extends LinearBHVNode {\n primitivesOffset: number;\n}\ninterface LinearInternalNode extends LinearBHVNode {\n secondChildOffset: number;\n dimension: number;\n}\n\nexport class BoundingVolume {\n totalNodes = 0;\n buildData: BuildInfo[] = [];\n shapes: string[];\n orderedPrims: string[] = [];\n root: BoundingNode | null;\n nodes: LinearBHVNode[] = [];\n\n offset = 0;\n\n constructor(shapes: string[]) {\n this.shapes = shapes;\n if (this.shapes.length === 0) {\n this.root = null;\n this.nodes = [];\n return;\n }\n for (let i = 0; i < shapes.length; i++) {\n const shape = layerManager.UUIDMap.get(shapes[i])!;\n this.buildData.push({\n index: i,\n bbox: shape.getBoundingBox(),\n center: new BoundingRect(shape.center(), 0, 0),\n });\n }\n this.root = this.recursiveBuild(0, shapes.length);\n this.compact();\n }\n\n draw() {\n const ctx = layerManager.getLayer(\"draw\")!.ctx;\n for (const node of this.nodes) {\n const b = node.bbox;\n ctx.strokeRect(g2lx(b.topLeft.x), g2ly(b.topLeft.y), g2lz(b.w), g2lz(b.h));\n }\n }\n\n recursiveBuild(start: number, end: number): BoundingNode {\n this.totalNodes++;\n let bbox = this.buildData[start].bbox;\n for (let i = start + 1; i < end; i++) bbox = bbox.union(this.buildData[i].bbox);\n const nPrimitives = end - start;\n if (nPrimitives === 1) {\n return this.createLeaf(start, end, nPrimitives, bbox);\n } else {\n let centroidBbox = this.buildData[start].center;\n for (let i = start; i < end; i++) centroidBbox = centroidBbox.union(this.buildData[i].center);\n const dimension = centroidBbox.getMaxExtent();\n if (centroidBbox.botRight.get(dimension) === centroidBbox.topLeft.get(dimension)) {\n return this.createLeaf(start, end, nPrimitives, bbox);\n }\n // Use shitty Middle thingy until an introselect js algo is added\n const pMid = 0.5 * (centroidBbox.topLeft.get(dimension) + centroidBbox.botRight.get(dimension));\n const partitionedData = partition(\n this.buildData.slice(start, end),\n (n: BuildInfo) => n.center.center().get(dimension) < pMid,\n );\n const flattened = ([]).concat.apply([], partitionedData);\n if (partitionedData[0].length === 0 || partitionedData[1].length === 0) console.log(\"EMPTY\");\n this.buildData.splice(start, flattened.length, ...flattened);\n const mid = partitionedData[0].length + start;\n return new InteriorNode(dimension, this.recursiveBuild(start, mid), this.recursiveBuild(mid, end));\n }\n }\n\n intersect(ray: Ray, stopOnFirstHit?: boolean) {\n if (this.nodes.length === 0) return { hit: false, intersect: ray.get(0), tMin: 0, tMax: ray.tMax };\n if (stopOnFirstHit === undefined) stopOnFirstHit = false;\n // Initialize return values\n let hit = false;\n let tMin = 0;\n let tMax = ray.tMax;\n\n // Initialize work variables\n let todoOffset = 0;\n let nodeNum = 0;\n const todo: number[] = [];\n\n // Precalculate intersection vectors\n const invDir = ray.direction.inverse();\n const dirIsNegative = [invDir.x < 0, invDir.y < 0];\n\n while (true) {\n const node = this.nodes[nodeNum];\n\n const i = node.bbox.intersectP(ray, invDir, dirIsNegative);\n if (i.hit) {\n if (node.nPrimitives > 0) {\n // TODO: nPrimitives is currently always 1 , this could be generalised\n // for (let i=0; i < node.nPrimitives; i++) {\n // if (this.shapes[(node).primitivesOffset + i])\n // }\n hit = true;\n tMin = ray.tMax = i.min;\n tMax = i.max;\n if (todoOffset === 0 || stopOnFirstHit) break;\n nodeNum = todo[--todoOffset];\n } else {\n if (dirIsNegative[(node).dimension]) {\n todo[todoOffset++] = nodeNum + 1;\n nodeNum = (node).secondChildOffset;\n } else {\n todo[todoOffset++] = (node).secondChildOffset;\n nodeNum++;\n }\n }\n } else {\n if (todoOffset === 0) break;\n nodeNum = todo[--todoOffset];\n }\n }\n return { hit, intersect: ray.get(tMin), tMin, tMax };\n }\n\n private compact() {\n this.offset = 0;\n if (this.root !== null) this.flatten(this.root);\n }\n\n private flatten(node: BoundingNode) {\n const index = this.offset;\n const myOffset = this.offset++;\n if (node.nPrimitives === 0) {\n this.flatten(node.children[0]);\n const secondOffset = this.flatten(node.children[1]);\n this.nodes[index] = {\n bbox: node.bbox,\n dimension: (node).dimension,\n nPrimitives: 0,\n secondChildOffset: secondOffset,\n };\n } else {\n this.nodes[index] = {\n bbox: node.bbox,\n primitivesOffset: (node).firstPrimOffset,\n nPrimitives: node.nPrimitives,\n };\n }\n return myOffset;\n }\n\n private createLeaf(start: number, end: number, nPrimitives: number, bbox: BoundingRect) {\n const size = this.orderedPrims.length;\n for (let i = start; i < end; i++) this.orderedPrims.push(this.shapes[this.buildData[i].index]);\n return new LeafNode(size, nPrimitives, bbox);\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"","import Initiative from \"./ui/initiative.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { AnnotationManager } from \"@/game/ui/annotation\";\nimport { g2l } from \"@/game/units\";\n\nexport class GameManager {\n selectedTool: number = 0;\n\n annotationManager = new AnnotationManager();\n\n addShape(shape: ServerShape): void {\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Shape with unknown layer ${shape.layer} could not be added`);\n return;\n }\n const layer = layerManager.getLayer(shape.layer)!;\n const sh = createShapeFromDict(shape);\n if (sh === undefined) {\n console.log(`Shape with unknown type ${shape.type_} could not be added`);\n return;\n }\n layer.addShape(sh, false);\n layer.invalidate(false);\n }\n\n updateShape(data: { shape: ServerShape; redraw: boolean; move: boolean; temporary: boolean }): void {\n if (!layerManager.hasLayer(data.shape.layer)) {\n console.log(`Shape with unknown layer ${data.shape.layer} could not be added`);\n return;\n }\n const sh = createShapeFromDict(data.shape);\n if (sh === undefined) {\n console.log(`Shape with unknown type ${data.shape.type_} could not be added`);\n return;\n }\n const oldShape = layerManager.UUIDMap.get(data.shape.uuid);\n if (oldShape === undefined) {\n console.log(`Shape with unknown id could not be updated`);\n return;\n }\n const redrawInitiative = sh.owners !== oldShape.owners;\n const shape = Object.assign(oldShape, sh);\n shape.checkVisionSources();\n shape.setMovementBlock(shape.movementObstruction);\n shape.setIsToken(shape.isToken);\n if (data.redraw) {\n if (shape.visionObstruction) gameStore.recalculateVision(data.temporary);\n layerManager.getLayer(data.shape.layer)!.invalidate(false);\n if (shape.movementObstruction) gameStore.recalculateMovement(data.temporary);\n }\n if (redrawInitiative) getRef(\"initiative\").$forceUpdate();\n }\n\n setCenterPosition(position: GlobalPoint) {\n const localPos = g2l(position);\n gameStore.increasePanX((window.innerWidth / 2 - localPos.x) / gameStore.zoomFactor);\n gameStore.increasePanY((window.innerHeight / 2 - localPos.y) / gameStore.zoomFactor);\n layerManager.invalidate();\n sendClientOptions();\n }\n}\n\nexport const gameManager = new GameManager();\n(window).gameManager = gameManager;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./vision.vue?vue&type=template&id=46baf892&scoped=true&\"\nimport script from \"./vision.vue?vue&type=script&lang=ts&\"\nexport * from \"./vision.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46baf892\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Initiative\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('draggable',{attrs:{\"id\":\"initiative-list\",\"options\":{setData: _vm.fakeSetData, disabled: !_vm.$store.state.game.IS_DM}},on:{\"change\":_vm.updateOrder},model:{value:(_vm.data),callback:function ($$v) {_vm.data=$$v},expression:\"data\"}},[_vm._l((_vm.data),function(actor){return [_c('div',{key:actor.uuid,staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"flex-end\"}},[_c('div',{staticClass:\"initiative-actor\",class:{'initiative-selected': _vm.currentActor === actor.uuid},style:({'cursor': _vm.$store.state.game.IS_DM && 'move'}),on:{\"mouseenter\":function($event){return _vm.toggleHighlight(actor, true)},\"mouseleave\":function($event){return _vm.toggleHighlight(actor, false)}}},[(actor.has_img)?[_c('img',{attrs:{\"src\":actor.source,\"width\":\"30px\",\"height\":\"30px\"}})]:[_c('span',{staticStyle:{\"width\":\"auto\"}},[_vm._v(_vm._s(actor.source))])],_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(actor.initiative),expression:\"actor.initiative\",modifiers:{\"lazy\":true,\"number\":true}}],class:{'notAllowed': !_vm.owns(actor)},attrs:{\"type\":\"text\",\"placeholder\":\"value\",\"disabled\":!_vm.owns(actor)},domProps:{\"value\":(actor.initiative)},on:{\"change\":[function($event){_vm.$set(actor, \"initiative\", _vm._n($event.target.value))},function($event){return _vm.syncInitiative(actor)}],\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('div',{staticClass:\"initiative-effects-icon\",class:{'notAllowed': !_vm.owns(actor)},staticStyle:{\"opacity\":\"0.6\"},on:{\"click\":function($event){_vm.createEffect(actor, _vm.getDefaultEffect(), true)}}},[_c('i',{staticClass:\"fas fa-stopwatch\"}),(actor.effects)?[_vm._v(_vm._s(actor.effects.length))]:[_vm._v(\"0\")]],2),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': actor.visible ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.toggleOption(actor, 'visible')}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': actor.group ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.toggleOption(actor, 'group')}}},[_c('i',{staticClass:\"fas fa-users\"})]),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': _vm.owns(actor) ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.removeInitiative(actor.uuid, true, true)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])],2),(actor.effects)?_c('div',{staticClass:\"initiative-effect\"},_vm._l((actor.effects),function(effect){return _c('div',{key:effect.uuid},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(effect.name),expression:\"effect.name\"}],attrs:{\"type\":\"text\",\"size\":effect.name.length || 1},domProps:{\"value\":(effect.name)},on:{\"change\":function($event){return _vm.updateEffect(actor.uuid, effect, true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(effect, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(effect.turns),expression:\"effect.turns\"}],attrs:{\"type\":\"text\",\"size\":effect.turns.toString().length || 1},domProps:{\"value\":(effect.turns)},on:{\"change\":function($event){return _vm.updateEffect(actor.uuid, effect, true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(effect, \"turns\", $event.target.value)}}})])}),0):_vm._e()])]})],2),_c('div',{attrs:{\"id\":\"initiative-bar\"}},[_c('div',{attrs:{\"id\":\"initiative-round\"}},[_vm._v(\"Round \"+_vm._s(_vm.roundCounter))]),_c('div',{staticStyle:{\"display\":\"flex\"}}),_c('div',{staticClass:\"initiative-bar-button\",style:(_vm.visionLock ? 'background-color: #82c8a0' : ''),on:{\"click\":_vm.toggleVisionLock}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{staticClass:\"initiative-bar-button\",style:(_vm.cameraLock ? 'background-color: #82c8a0' : ''),on:{\"click\":function($event){_vm.cameraLock = !_vm.cameraLock}}},[_c('i',{staticClass:\"fas fa-video\"})]),_c('div',{staticClass:\"initiative-bar-button\",class:{'notAllowed': !_vm.$store.state.game.IS_DM},on:{\"click\":function($event){_vm.setRound(0, true); _vm.updateTurn(_vm.data[0].uuid, true)}}},[_c('i',{staticClass:\"fas fa-sync-alt\"})]),_c('div',{staticClass:\"initiative-bar-button\",class:{'notAllowed': !_vm.$store.state.game.IS_DM},on:{\"click\":_vm.nextTurn}},[_c('i',{staticClass:\"fas fa-chevron-right\"})])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=template&id=07fc8ff2&scoped=true&\"","\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class LoadComponent extends Vue {\n message = \"Loading...\";\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.shape !== null)?_c('div',[_c('div',{attrs:{\"id\":\"selection-menu\"}},[_c('div',{attrs:{\"id\":\"selection-edit-button\"},on:{\"click\":_vm.openEditDialog}},[_c('i',{staticClass:\"fas fa-edit\"})]),_c('div',{attrs:{\"id\":\"selection-name\"}},[_vm._v(_vm._s(_vm.shape.name))]),_c('div',{attrs:{\"id\":\"selection-trackers\"}},[_vm._l((_vm.shape.trackers),function(tracker){return (tracker.name !== '' || tracker.value !== 0)?[_c('div',{key:'name-' + tracker.uuid},[_vm._v(_vm._s(tracker.name))]),_c('div',{key:'value-' + tracker.uuid,staticClass:\"selection-tracker-value\",on:{\"click\":function($event){return _vm.changeValue(tracker, false)}}},[(tracker.maxvalue === 0)?[_vm._v(_vm._s(tracker.value))]:[_vm._v(_vm._s(tracker.value)+\" / \"+_vm._s(tracker.maxvalue))]],2)]:_vm._e()})],2),_c('div',{attrs:{\"id\":\"selection-auras\"}},[_vm._l((_vm.shape.auras),function(aura){return (aura.name !== '' || aura.value !== 0)?[_c('div',{key:'name-' + aura.uuid},[_vm._v(_vm._s(aura.name))]),_c('div',{key:'value-' + aura.uuid,staticClass:\"selection-tracker-value\",on:{\"click\":function($event){return _vm.changeValue(aura, true)}}},[(aura.dim === 0)?[_vm._v(_vm._s(aura.value))]:[_vm._v(_vm._s(aura.value)+\" / \"+_vm._s(aura.dim))]],2)]:_vm._e()})],2)]),_c('edit-dialog',{ref:\"editDialog\",attrs:{\"shape\":_vm.shape}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=template&id=674cf937&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\nimport { coreStore } from \"@/core/store\";\n\nComponent.registerHooks([\"beforeRouteEnter\"]);\n\n@Component\nexport default class Dashboard extends Vue {\n owned = [];\n joined = [];\n error = \"\";\n\n newSessionName = \"\";\n\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n axios\n .get(\"/api/rooms\")\n .then((response: AxiosResponse) => {\n next((vm: this) => {\n vm.owned = response.data.owned;\n vm.joined = response.data.joined;\n });\n })\n .catch((err: AxiosError) => {\n next((vm: this) => {\n vm.error = err.message;\n });\n });\n }\n\n createRoom(event: Event) {\n axios\n .post(\"/api/rooms\", {\n name: this.newSessionName,\n })\n .then((response: AxiosResponse) => {\n this.$router.push(`/game/${coreStore.username}/${this.newSessionName}`);\n })\n .catch((err: AxiosError) => {\n this.error = err.message;\n });\n }\n}\n","import { render, staticRenderFns } from \"./confirm.vue?vue&type=template&id=1883e207&scoped=true&\"\nimport script from \"./confirm.vue?vue&type=script&lang=ts&\"\nexport * from \"./confirm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1883e207\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=script&lang=ts&\"","import Vue from \"vue\";\nexport const EventBus = new Vue();\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=ts&\"","import { GlobalPoint } from \"@/game/geom\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\n\nexport class Rect extends BaseRect {\n type = \"rect\";\n constructor(topleft: GlobalPoint, w: number, h: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(topleft, w, h, fillColour, strokeColour, uuid);\n }\n asDict() {\n return super.getBaseDict();\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n const z = gameStore.zoomFactor;\n const loc = g2l(this.refPoint);\n ctx.fillRect(loc.x, loc.y, this.w * z, this.h * z);\n if (this.strokeColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.strokeStyle = this.strokeColour;\n ctx.lineWidth = 5;\n ctx.strokeRect(loc.x, loc.y, this.w * z, this.h * z);\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=script&lang=ts&\"","import { Ray, Vector } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Settings } from \"@/game/settings\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly } from \"@/game/units\";\nimport { computeVisibility } from \"../visibility/te/te\";\n\nexport class FOWPlayersLayer extends Layer {\n isVisionLayer: boolean = true;\n\n draw(): void {\n if (!this.valid) {\n // console.time(\"VI\");\n const ctx = this.ctx;\n\n if (!gameStore.fowLOS || Settings.skipPlayerFOW) {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.valid = true;\n return;\n }\n\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n const originalOperation = ctx.globalCompositeOperation;\n\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n\n // For the DM this is done at the end of this function. TODO: why the split up ???\n // This was done in commit be1e65cff1e7369375fe11cfa1643fab1d11beab.\n if (!gameStore.IS_DM) super.draw(!gameStore.fullFOW);\n\n // Then cut out all the player vision auras\n const maxLength = ctx.canvas.width + ctx.canvas.height;\n\n for (const tokenId of gameStore.activeTokens) {\n const token = layerManager.UUIDMap.get(tokenId);\n if (token === undefined) continue;\n const center = token.center();\n const lcenter = g2l(center);\n if (gameStore.visionMode === \"bvh\") {\n ctx.beginPath();\n let lastArcAngle = -1;\n\n for (let angle = 0; angle < 2 * Math.PI; angle += (Settings.angleSteps / 2 / 180) * Math.PI) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n // Check if there is a hit with one of the nearby light blockers.\n const lightRay = new Ray(center, new Vector(cos, sin));\n const hitResult = gameStore.BV.intersect(lightRay);\n\n // We can move on to the next angle if nothing was hit.\n if (!hitResult.hit) {\n // If an earlier hit caused the aura to leave the arc, we need to go back to the arc\n if (lastArcAngle === -1) {\n // Draw a line from the last non arc location back to the arc\n ctx.lineTo(lcenter.x + maxLength * cos, lcenter.y + maxLength * sin);\n // Set the start of a new arc beginning at the current angle\n lastArcAngle = angle;\n }\n continue;\n }\n // If hit , first finish any ongoing arc, then move to the intersection point\n if (lastArcAngle !== -1) {\n ctx.arc(lcenter.x, lcenter.y, maxLength, lastArcAngle, angle);\n lastArcAngle = -1;\n }\n ctx.lineTo(g2lx(hitResult.intersect.x), g2ly(hitResult.intersect.y));\n }\n\n // Finish the final arc.\n if (lastArcAngle !== -1) ctx.arc(lcenter.x, lcenter.y, maxLength, lastArcAngle, 2 * Math.PI);\n else ctx.closePath();\n ctx.fill();\n } else {\n if (true) {\n // Add a gradient vision dropoff\n const gradient = ctx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(gameStore.visionRangeMin),\n lcenter.x,\n lcenter.y,\n g2lr(gameStore.visionRangeMax),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n } else {\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n try {\n const polygon = computeVisibility(token.center(), \"vision\");\n ctx.beginPath();\n ctx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) ctx.lineTo(g2lx(point[0]), g2ly(point[1]));\n ctx.closePath();\n ctx.fill();\n } catch {}\n }\n }\n\n // For the players this is done at the beginning of this function. TODO: why the split up ???\n // This was done in commit be1e65cff1e7369375fe11cfa1643fab1d11beab.\n if (gameStore.IS_DM) super.draw(!gameStore.fullFOW);\n\n ctx.globalCompositeOperation = originalOperation;\n // console.timeEnd(\"VI\");\n }\n }\n}\n","import { socket } from \"@/game/api/socket\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly } from \"@/game/units\";\n\nexport class Layer {\n name: string;\n width: number;\n height: number;\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n\n selectable: boolean = false;\n playerEditable: boolean = false;\n isVisionLayer: boolean = false;\n\n // When set to false, the layer will be redrawn on the next tick\n valid: boolean = false;\n // The collection of shapes that this layer contains.\n // These are ordered on a depth basis.\n shapes: Shape[] = [];\n\n // Collection of shapes that are currently selected\n selection: Shape[] = [];\n\n // Extra selection highlighting settings\n selectionColor = \"#CC0000\";\n selectionWidth = 2;\n\n constructor(canvas: HTMLCanvasElement, name: string) {\n this.canvas = canvas;\n this.name = name;\n this.width = canvas.width;\n this.height = canvas.height;\n this.ctx = canvas.getContext(\"2d\")!;\n }\n\n invalidate(skipLightUpdate: boolean): void {\n this.valid = false;\n if (!skipLightUpdate) {\n layerManager.invalidateLight();\n }\n }\n\n addShape(shape: Shape, sync: boolean, temporary?: boolean, invalidate = true): void {\n if (temporary === undefined) temporary = false;\n shape.layer = this.name;\n this.shapes.push(shape);\n layerManager.UUIDMap.set(shape.uuid, shape);\n shape.checkVisionSources(invalidate);\n shape.setMovementBlock(shape.movementObstruction, invalidate);\n if (shape.ownedBy(gameStore.username) && shape.isToken) gameStore.ownedtokens.push(shape.uuid);\n if (shape.annotation.length) gameStore.annotations.push(shape.uuid);\n if (sync) socket.emit(\"Shape.Add\", { shape: shape.asDict(), temporary });\n if (invalidate) this.invalidate(!sync);\n }\n\n setShapes(shapes: ServerShape[]): void {\n for (const serverShape of shapes) {\n const shape = createShapeFromDict(serverShape);\n if (shape === undefined) {\n console.log(`Shape with unknown type ${serverShape.type_} could not be added`);\n return;\n }\n this.addShape(shape, false, false, false);\n }\n this.clearSelection(); // TODO: Fix keeping selection on those items that are not moved.\n this.invalidate(false);\n }\n\n removeShape(shape: Shape, sync: boolean, temporary?: boolean) {\n if (temporary === undefined) temporary = false;\n this.shapes.splice(this.shapes.indexOf(shape), 1);\n\n if (sync) socket.emit(\"Shape.Remove\", { shape: shape.asDict(), temporary });\n const lsI = gameStore.visionSources.findIndex(ls => ls.shape === shape.uuid);\n const lbI = gameStore.visionBlockers.findIndex(ls => ls === shape.uuid);\n\n const mbI = gameStore.movementblockers.findIndex(ls => ls === shape.uuid);\n const anI = gameStore.annotations.findIndex(ls => ls === shape.uuid);\n if (lsI >= 0) gameStore.visionSources.splice(lsI, 1);\n if (lbI >= 0) gameStore.visionBlockers.splice(lbI, 1);\n if (mbI >= 0) gameStore.movementblockers.splice(mbI, 1);\n if (anI >= 0) gameStore.annotations.splice(anI, 1);\n\n const annotationIndex = gameStore.annotations.indexOf(shape.uuid);\n if (annotationIndex >= 0) gameStore.annotations.splice(annotationIndex, 1);\n\n const ownedIndex = gameStore.ownedtokens.indexOf(shape.uuid);\n if (ownedIndex >= 0) gameStore.ownedtokens.splice(ownedIndex, 1);\n\n layerManager.UUIDMap.delete(shape.uuid);\n\n const index = this.selection.indexOf(shape);\n if (index >= 0) this.selection.splice(index, 1);\n if (lbI >= 0) gameStore.recalculateVision();\n if (mbI >= 0) gameStore.recalculateMovement();\n this.invalidate(!sync);\n }\n\n clear(): void {\n this.ctx.clearRect(0, 0, this.width, this.height);\n }\n\n clearSelection(): void {\n this.selection = [];\n EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n }\n\n draw(doClear?: boolean): void {\n if (!this.valid) {\n const ctx = this.ctx;\n const ogOP = ctx.globalCompositeOperation;\n doClear = doClear === undefined ? true : doClear;\n\n if (doClear) this.clear();\n\n const state = this;\n\n // We iteratre twice over all shapes\n // First to draw the auras and a second time to draw the shapes themselves\n // Otherwise auras from one shape could be overlapping another shape itself.\n\n this.shapes.forEach(shape => {\n if (shape.options.has(\"skipDraw\") && shape.options.get(\"skipDraw\")) return;\n if (layerManager.getLayer() === undefined) return;\n if (!shape.visibleInCanvas(state.canvas)) return;\n if (state.name === \"fow\" && shape.visionObstruction && layerManager.getLayer()!.name !== state.name)\n return;\n shape.drawAuras(ctx);\n });\n this.shapes.forEach(shape => {\n if (shape.options.has(\"skipDraw\") && shape.options.get(\"skipDraw\")) return;\n if (shape.labels.length === 0 && gameStore.filterNoLabel) return;\n if (\n shape.labels.length &&\n gameStore.labelFilters.length &&\n !shape.labels.some(l => gameStore.labelFilters.includes(l.uuid))\n )\n return;\n if (layerManager.getLayer() === undefined) return;\n if (!shape.visibleInCanvas(state.canvas)) return;\n if (state.name === \"fow\" && shape.visionObstruction && layerManager.getLayer()!.name !== state.name)\n return;\n shape.draw(ctx);\n });\n\n if (this.selection != null) {\n ctx.fillStyle = this.selectionColor;\n ctx.strokeStyle = this.selectionColor;\n ctx.lineWidth = this.selectionWidth;\n const z = gameStore.zoomFactor;\n this.selection.forEach(sel => {\n ctx.globalCompositeOperation = sel.globalCompositeOperation;\n const bb = sel.getBoundingBox();\n // TODO: REFACTOR THIS TO Shape.drawSelection(ctx);\n ctx.strokeRect(g2lx(bb.topLeft.x), g2ly(bb.topLeft.y), bb.w * z, bb.h * z);\n\n for (const p of sel.points) {\n ctx.beginPath();\n ctx.arc(g2lx(p[0]), g2ly(p[1]), 3, 0, 2 * Math.PI);\n ctx.fill();\n }\n ctx.beginPath();\n ctx.moveTo(g2lx(sel.points[0][0]), g2ly(sel.points[0][1]));\n for (let i = 1; i <= sel.points.length; i++) {\n const vertex = sel.points[i % sel.points.length];\n ctx.lineTo(g2lx(vertex[0]), g2ly(vertex[1]));\n }\n ctx.stroke();\n });\n }\n ctx.globalCompositeOperation = ogOP;\n this.valid = true;\n }\n }\n\n moveShapeOrder(shape: Shape, destinationIndex: number, sync: boolean): void {\n const oldIdx = this.shapes.indexOf(shape);\n if (oldIdx === destinationIndex) return;\n this.shapes.splice(oldIdx, 1);\n this.shapes.splice(destinationIndex, 0, shape);\n if (sync) socket.emit(\"Shape.Order.Set\", { shape: shape.asDict(), index: destinationIndex });\n this.invalidate(true);\n }\n}\n","import { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\nexport function scrollZoom(e: WheelEvent) {\n if (!e.target || !(e.target).tagName || (e.target).tagName !== \"CANVAS\") return;\n let delta: number;\n delta = Math.sign(e.deltaY) * -1;\n gameStore.updateZoom({ newZoomDisplay: gameStore.zoomDisplay - 0.1 * delta, zoomLocation: l2g(getMouse(e)) });\n}\n","import { render, staticRenderFns } from \"./filter.vue?vue&type=template&id=dca395d6&scoped=true&\"\nimport script from \"./filter.vue?vue&type=script&lang=ts&\"\nexport * from \"./filter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./filter.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dca395d6\",\n null\n \n)\n\nexport default component.exports","import { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2lx, g2ly, l2g, l2gx, l2gy } from \"@/game/units\";\n\nexport abstract class BaseRect extends Shape {\n w: number;\n h: number;\n constructor(topleft: GlobalPoint, w: number, h: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(topleft, fillColour, strokeColour, uuid);\n this.w = w;\n this.h = h;\n }\n getBaseDict() {\n return Object.assign(super.getBaseDict(), {\n width: this.w,\n height: this.h,\n });\n }\n getBoundingBox() {\n return new BoundingRect(this.refPoint, this.w, this.h);\n }\n\n get points() {\n if (this.w === 0 || this.h === 0) return [[this.refPoint.x, this.refPoint.y]];\n // note to self: topright and botleft are swapped because I'm retarded.\n const topright = this.refPoint.add(new Vector(0, this.h));\n const botright = this.refPoint.add(new Vector(this.w, this.h));\n const botleft = this.refPoint.add(new Vector(this.w, 0));\n return [\n [this.refPoint.x, this.refPoint.y],\n [topright.x, topright.y],\n [botright.x, botright.y],\n [botleft.x, botleft.y],\n ];\n }\n\n contains(point: GlobalPoint): boolean {\n return (\n this.refPoint.x <= point.x &&\n this.refPoint.x + this.w >= point.x &&\n this.refPoint.y <= point.y &&\n this.refPoint.y + this.h >= point.y\n );\n }\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n if (centerPoint === undefined) return this.refPoint.add(new Vector(this.w / 2, this.h / 2));\n this.refPoint = new GlobalPoint(centerPoint.x - this.w / 2, centerPoint.y - this.h / 2);\n }\n\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n if (super.visibleInCanvas(canvas)) return true;\n const coreVisible = !(\n g2lx(this.refPoint.x) > canvas.width ||\n g2ly(this.refPoint.y) > canvas.height ||\n g2lx(this.refPoint.x + this.w) < 0 ||\n g2ly(this.refPoint.y + this.h) < 0\n );\n if (coreVisible) return true;\n return false;\n }\n snapToGrid() {\n const gs = gameStore.gridSize;\n const center = this.center();\n const mx = center.x;\n const my = center.y;\n\n let targetX;\n let targetY;\n\n if ((this.w / gs) % 2 === 0) {\n targetX = Math.round(mx / gs) * gs - this.w / 2;\n } else {\n targetX = (Math.round((mx + gs / 2) / gs) - 1 / 2) * gs - this.w / 2;\n }\n if ((this.h / gs) % 2 === 0) {\n targetY = Math.round(my / gs) * gs - this.h / 2;\n } else {\n targetY = (Math.round((my + gs / 2) / gs) - 1 / 2) * gs - this.h / 2;\n }\n\n const delta = calculateDelta(new Vector(targetX - this.refPoint.x, targetY - this.refPoint.y), this);\n this.refPoint = this.refPoint.add(delta);\n\n this.invalidate(false);\n }\n resizeToGrid() {\n const gs = gameStore.gridSize;\n this.refPoint = new GlobalPoint(Math.round(this.refPoint.x / gs) * gs, Math.round(this.refPoint.y / gs) * gs);\n this.w = Math.max(Math.round(this.w / gs) * gs, gs);\n this.h = Math.max(Math.round(this.h / gs) * gs, gs);\n this.invalidate(false);\n }\n resize(resizePoint: number, point: LocalPoint) {\n const z = gameStore.zoomFactor;\n switch (resizePoint) {\n case 0: {\n this.w = g2lx(this.refPoint.x) + this.w * z - point.x;\n this.h = g2ly(this.refPoint.y) + this.h * z - point.y;\n this.refPoint = l2g(point);\n break;\n }\n case 1: {\n this.w = g2lx(this.refPoint.x) + this.w * z - point.x;\n this.h = point.y - g2ly(this.refPoint.y);\n this.refPoint = new GlobalPoint(l2gx(point.x), this.refPoint.y);\n break;\n }\n case 2: {\n this.w = point.x - g2lx(this.refPoint.x);\n this.h = point.y - g2ly(this.refPoint.y);\n break;\n }\n case 3: {\n this.w = point.x - g2lx(this.refPoint.x);\n this.h = g2ly(this.refPoint.y) + this.h * z - point.y;\n this.refPoint = new GlobalPoint(this.refPoint.x, l2gy(point.y));\n break;\n }\n }\n\n this.w /= z;\n this.h /= z;\n\n if (this.w < 0) {\n this.refPoint = this.refPoint.add(new Vector(this.w, 0));\n this.w = Math.abs(this.w);\n }\n if (this.h < 0) {\n this.refPoint = this.refPoint.add(new Vector(0, this.h));\n this.h = Math.abs(this.h);\n }\n }\n}\n","import { render, staticRenderFns } from \"./select.vue?vue&type=template&id=048b3482&\"\nimport script from \"./select.vue?vue&type=script&lang=ts&\"\nexport * from \"./select.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=61eb1455&scoped=true&\"\nimport script from \"./main.vue?vue&type=script&lang=ts&\"\nexport * from \"./main.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./main.vue?vue&type=style&index=0&id=61eb1455&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61eb1455\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"AssetManager\"}},[_c('div',{attrs:{\"id\":\"titlebar\"}},[_vm._v(\"Asset Manager\")]),_c('div',{attrs:{\"id\":\"main\"}},[_c('div',{attrs:{\"id\":\"assets\"},on:{\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, _vm.currentFolder)}}},[_c('div',{attrs:{\"id\":\"breadcrumbs\"}},[_c('div',[_vm._v(\"/\")]),_vm._l((_vm.path),function(dir){return _c('div',{key:dir},[_vm._v(_vm._s(_vm.idMap.get(dir).name))])})],2),_c('div',{attrs:{\"id\":\"actionbar\"}},[_c('input',{attrs:{\"id\":\"files\",\"type\":\"file\",\"multiple\":\"\",\"hidden\":\"\"},on:{\"change\":function($event){return _vm.upload()}}}),_c('div',{attrs:{\"title\":\"Create folder\"},on:{\"click\":_vm.createDirectory}},[_c('i',{staticClass:\"fas fa-plus-square\"})]),_c('div',{attrs:{\"title\":\"Upload files\"},on:{\"click\":_vm.prepareUpload}},[_c('i',{staticClass:\"fas fa-upload\"})])]),_c('div',{attrs:{\"id\":\"explorer\"}},[(_vm.path.length)?_c('div',{staticClass:\"inode folder\",on:{\"dblclick\":function($event){return _vm.changeDirectory(-1)},\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"dragleave\":function($event){$event.preventDefault();return _vm.leaveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, _vm.parentFolder)}}},[_c('i',{staticClass:\"fas fa-folder\",staticStyle:{\"font-size\":\"50px\"}}),_c('div',{staticClass:\"title\"},[_vm._v(\"..\")])]):_vm._e(),_vm._l((_vm.folders),function(key){return _c('div',{key:key,staticClass:\"inode folder\",class:{'inode-selected': _vm.selected.includes(key)},attrs:{\"draggable\":\"true\"},on:{\"click\":function($event){return _vm.select($event, key)},\"dblclick\":function($event){return _vm.changeDirectory(key)},\"contextmenu\":function($event){$event.preventDefault();return _vm.$refs.cm.open($event, key)},\"dragstart\":function($event){return _vm.startDrag($event, key)},\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"dragleave\":function($event){$event.preventDefault();return _vm.leaveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, key)}}},[_c('i',{staticClass:\"fas fa-folder\",staticStyle:{\"font-size\":\"50px\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.idMap.get(key).name))])])}),_vm._l((_vm.files),function(file){return _c('div',{key:file,staticClass:\"inode file\",class:{'inode-selected': _vm.selected.includes(file)},attrs:{\"draggable\":\"true\"},on:{\"click\":function($event){return _vm.select($event, file)},\"contextmenu\":function($event){$event.preventDefault();return _vm.$refs.cm.open($event, file)},\"dragstart\":function($event){return _vm.startDrag($event, file)}}},[_c('img',{attrs:{\"src\":'/static/assets/' + _vm.idMap.get(file).file_hash,\"width\":\"50\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.idMap.get(file).name))])])})],2)]),(_vm.firstSelectedFile)?_c('div',{attrs:{\"id\":\"asset-details\"}},[_c('div',{attrs:{\"id\":\"asset-detail-title\"}},[_vm._v(_vm._s(_vm.firstSelectedFile.name))]),_c('img',{attrs:{\"src\":'/static/assets/' + _vm.firstSelectedFile.file_hash}})]):_vm._e()]),_c('AssetContextMenu',{ref:\"cm\"}),_c('Prompt',{ref:\"prompt\"}),_c('ConfirmDialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=template&id=5b0def98&\"","\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\nimport { l2gx, l2gy } from \"@/game/units\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class SelectContext extends Vue {\n visible = false;\n x = 0;\n y = 0;\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n open(event: MouseEvent) {\n this.visible = true;\n this.x = event.pageX;\n this.y = event.pageY;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n close() {\n this.visible = false;\n }\n bringPlayers() {\n if (!gameStore.IS_DM) return;\n socket.emit(\"Players.Bring\", { x: l2gx(this.x), y: l2gy(this.y) });\n this.close();\n }\n createToken() {\n (this.$parent.$parent.$refs.createtokendialog).open(this.x, this.y);\n this.close();\n }\n showInitiative() {\n EventBus.$emit(\"Initiative.Show\");\n this.close();\n }\n}\n","import Axios from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\nimport { coreStore } from \"@/core/store\";\n\nComponent.registerHooks([\"beforeRouteEnter\"]);\n\n@Component({})\nexport default class Logout extends Vue {\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n Axios.post(\"/api/logout\").then(() => {\n coreStore.setAuthenticated(false);\n coreStore.setUsername(\"\");\n next({ path: \"/auth/login\" });\n });\n }\n}\n","import { getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { rootStore } from \"@/store\";\n\nexport interface CoreState {\n authenticated: boolean;\n initialized: boolean;\n username: string;\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"core\" })\nclass CoreStore extends VuexModule implements CoreState {\n authenticated = false;\n initialized = false;\n username = \"\";\n\n @Mutation\n setAuthenticated(auth: boolean) {\n this.authenticated = auth;\n }\n\n @Mutation\n setInitialized(init: boolean) {\n this.initialized = init;\n }\n\n @Mutation\n setUsername(username: string) {\n this.username = username;\n }\n}\n\nexport const coreStore = getModule(CoreStore);\n","import Vue from \"vue\";\n\nimport App from \"@/App.vue\";\nimport { router } from \"@/router\";\nimport { rootStore } from \"@/store\";\n\nVue.config.productionTip = false;\nVue.config.devtools = true;\nVue.config.performance = true;\n\nexport const app = new Vue({\n router,\n store: rootStore,\n render: h => h(App),\n}).$mount(\"#app\");\n\n(window).app = app;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component({\n props: [\"visible\", \"left\", \"top\"],\n})\nexport default class ContextMenu extends Vue {}\n","import Axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\n@Component({ template: \"\" })\nexport default class Initiative extends Vue {\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n Axios.post(\"/api/invite\", {\n code: to.params.code,\n })\n .then((response: AxiosResponse) => {\n next({ path: response.data.sessionUrl });\n })\n .catch((error: AxiosError) => {\n console.error(\"Invitation code could not be redeemed\");\n next({ path: \"/dashboard\" });\n });\n }\n}\n","import { render, staticRenderFns } from \"./prompt.vue?vue&type=template&id=0602c2e6&scoped=true&\"\nimport script from \"./prompt.vue?vue&type=script&lang=ts&\"\nexport * from \"./prompt.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0602c2e6\",\n null\n \n)\n\nexport default component.exports","import { GlobalPoint } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nimport { Edge } from \"./cdt\";\nimport { drawPolygon } from \"./draw\";\nimport { PA_CDT } from \"./pa\";\nimport { Point, Sign, Triangle } from \"./tds\";\nimport { ccw, cw, orientation } from \"./triag\";\n\nexport function computeVisibility(q: GlobalPoint, target: \"vision\" | \"movement\", drawt?: boolean): number[][] {\n if (drawt === undefined) drawt = gameStore.drawTEContour;\n // console.time(\"CV\");\n const Q: Point = [q.x, q.y];\n const rawOutput: number[][] = [];\n const triangle = PA_CDT[target].locate(Q, null).loc;\n if (triangle === null) {\n console.error(\"Triangle not found\");\n return [];\n }\n // triangle.fill();\n rawOutput.push(triangle.vertices[1]!.point!);\n if (!triangle.isConstrained(0))\n expandEdge(Q, triangle.vertices[2]!.point!, triangle.vertices[1]!.point!, triangle, 0, rawOutput);\n rawOutput.push(triangle.vertices[2]!.point!);\n if (!triangle.isConstrained(1))\n expandEdge(Q, triangle.vertices[0]!.point!, triangle.vertices[2]!.point!, triangle, 1, rawOutput);\n rawOutput.push(triangle.vertices[0]!.point!);\n if (!triangle.isConstrained(2))\n expandEdge(Q, triangle.vertices[1]!.point!, triangle.vertices[0]!.point!, triangle, 2, rawOutput);\n // console.timeEnd(\"CV\");\n\n if (drawt) drawPolygon(rawOutput, \"red\");\n\n return rawOutput;\n}\n\nfunction expandEdge(\n q: Point,\n left: number[],\n right: number[],\n fh: Triangle,\n index: number,\n rawOutput: number[][],\n): void {\n // fh.edge(index).draw();\n const nfh = fh.neighbours[index]!;\n // nfh.fill(\"rgba(255, 0, 0, 0.25)\");\n const nIndex = nfh.indexT(fh);\n const rIndex = ccw(nIndex);\n const lIndex = cw(nIndex);\n const nvh = nfh.vertices[nIndex]!;\n const rvh = nfh.vertices[lIndex]!;\n const lvh = nfh.vertices[rIndex]!;\n\n const re: Edge = [nfh, rIndex];\n const le: Edge = [nfh, lIndex];\n\n const ro = orientation(q, right, nvh.point!);\n const lo = orientation(q, left, nvh.point!);\n\n // const ctx = layerManager.getLayer(\"draw\")!.ctx;\n // ctx.beginPath();\n // ctx.strokeStyle = \"red\";\n // ctx.lineJoin = \"round\";\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(left[0]), g2ly(left[1]));\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(nvh[0]), g2ly(nvh[1]));\n // ctx.strokeStyle = \"blue\";\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(right[0]), g2ly(right[1]));\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(nvh[0]), g2ly(nvh[1]));\n // ctx.closePath();\n // ctx.stroke();\n\n // Right edge is seen if the new vertex is ccw of the right ray\n if (ro === Sign.COUNTERCLOCKWISE) {\n if (re[0].isConstrained(re[1])) {\n // See if current right ray is rvh\n if (right !== rvh.point!) rawOutput.push(raySegIntersection(q, right, nvh.point!, rvh.point!));\n if (lo === Sign.COUNTERCLOCKWISE) rawOutput.push(raySegIntersection(q, left, nvh.point!, rvh.point!));\n } else {\n if (lo === Sign.COUNTERCLOCKWISE) return expandEdge(q, left, right, nfh, rIndex, rawOutput);\n else expandEdge(q, nvh.point!, right, nfh, rIndex, rawOutput);\n }\n }\n\n if (ro !== Sign.CLOCKWISE && lo !== Sign.COUNTERCLOCKWISE) {\n rawOutput.push(nvh.point!);\n }\n\n if (lo === Sign.CLOCKWISE) {\n if (le[0].isConstrained(le[1])) {\n if (ro === Sign.CLOCKWISE) {\n rawOutput.push(raySegIntersection(q, right, nvh.point!, lvh.point!));\n }\n if (left !== lvh.point!) {\n rawOutput.push(raySegIntersection(q, left, nvh.point!, lvh.point!));\n }\n return;\n } else {\n if (ro === Sign.CLOCKWISE) {\n return expandEdge(q, left, right, nfh, lIndex, rawOutput);\n } else {\n return expandEdge(q, left, nvh.point!, nfh, lIndex, rawOutput);\n }\n }\n }\n}\n\nfunction raySegIntersection(q: Point, b: Point, s: Point, t: Point) {\n const denominator = (t[1] - s[1]) * (b[0] - q[0]) - (t[0] - s[0]) * (b[1] - q[1]);\n const ua = ((t[0] - s[0]) * (q[1] - s[1]) - (t[1] - s[1]) * (q[0] - s[0])) / denominator;\n // const ub = ((b[0] - q.x) * (q.y - s[1]) - (b[1] - q.y) * (q.x - s[0])) / denominator;\n const x = q[0] + ua * (b[0] - q[0]);\n const y = q[1] + ua * (b[1] - q[1]);\n\n return [x, y];\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',[_vm._v(\"#X\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.xCount),expression:\"xCount\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.xCount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.xCount=$event.target.value}}}),_c('div',[_vm._v(\"#Y\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.yCount),expression:\"yCount\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.yCount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.yCount=$event.target.value}}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=template&id=2104f147&\"","import { render, staticRenderFns } from \"./edit_dialog.vue?vue&type=template&id=23de098e&scoped=true&\"\nimport script from \"./edit_dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./edit_dialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23de098e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"modal\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"mask\",class:{'modal-mask': _vm.mask, 'dialog-mask': !_vm.mask},on:{\"click\":_vm.close,\"dragover\":function($event){$event.preventDefault();return _vm.dragOver($event)}}},[_c('div',{ref:\"container\",staticClass:\"modal-container\",style:({'background-color': _vm.colour}),on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._t(\"header\",null,{\"dragStart\":_vm.dragStart,\"dragEnd\":_vm.dragEnd}),_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=template&id=c2851f0e&scoped=true&\"","export class Settings {\n static angleSteps = 4;\n static drawAngleLines = false;\n static drawFirstLightHit = false;\n static skipPlayerFOW = false;\n static skipLightFOW = false;\n\n static tempFill: string = \"fog\";\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { coreStore } from \"@/core/store\";\n\n@Component\nexport default class Login extends Vue {\n username = \"\";\n password = \"\";\n error = \"\";\n\n login() {\n axios\n .post(\"/api/login\", {\n username: this.username,\n password: this.password,\n })\n .then((response: AxiosResponse) => {\n coreStore.setUsername(this.username);\n coreStore.setAuthenticated(true);\n this.$router.push(this.$route.query.redirect || \"/\");\n })\n .catch((error: AxiosError) => {\n if (error.response) this.error = error.response.statusText;\n else this.error = \"Unknown error occured\";\n });\n }\n\n register() {\n axios\n .post(\"/api/register\", {\n username: this.username,\n password: this.password,\n })\n .then((response: AxiosResponse) => {\n coreStore.setUsername(this.username);\n coreStore.setAuthenticated(true);\n this.$router.push(this.$route.query.redirect || \"/\");\n })\n .catch((error: AxiosError) => {\n if (error.response) this.error = error.response.statusText;\n else this.error = \"Unknown error occured\";\n });\n }\n\n focusin(event: { target?: { nextElementSibling?: HTMLElement } }) {\n if (event.target && event.target.nextElementSibling) {\n const span = event.target.nextElementSibling;\n span.style.opacity = \"0\";\n }\n }\n\n focusout(event: { target?: { nextElementSibling?: HTMLElement } }) {\n if (event.target && event.target.nextElementSibling) {\n const span = event.target.nextElementSibling;\n span.style.opacity = \"1\";\n }\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(\"Create basic token\")])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('label',{attrs:{\"for\":\"createtokendialog-text\"}},[_vm._v(\"Text\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],attrs:{\"type\":\"text\",\"id\":\"createtokendialog-name\"},domProps:{\"value\":(_vm.text)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.text=$event.target.value}}}),_c('label',[_vm._v(\"Colours\")]),_c('div',{staticClass:\"colours\"},[_c('span',[_vm._v(\"Fill:\")]),_c('color-picker',{attrs:{\"color\":_vm.fillColour},on:{\"update:color\":function($event){_vm.fillColour=$event}}}),_c('span',[_vm._v(\"Border:\")]),_c('color-picker',{attrs:{\"color\":_vm.borderColour},on:{\"update:color\":function($event){_vm.borderColour=$event}}})],1),_c('canvas',{ref:\"canvas\",attrs:{\"width\":\"100px\",\"height\":\"100px\"}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=template&id=73816298&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(\"div\")}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=template&id=1e034b42&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=script&lang=ts&\"","import Component from \"vue-class-component\";\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Line } from \"@/game/shapes/line\";\nimport { Text } from \"@/game/shapes/text\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\n@Component\nexport class RulerTool extends Tool {\n name = \"Ruler\";\n active = false;\n startPoint: GlobalPoint | null = null;\n ruler: Line | null = null;\n text: Text | null = null;\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No draw layer!\");\n return;\n }\n this.active = true;\n this.startPoint = l2g(getMouse(event));\n this.ruler = new Line(this.startPoint, this.startPoint, 3, gameStore.rulerColour);\n this.text = new Text(this.startPoint.clone(), \"\", \"bold 20px serif\");\n this.ruler.addOwner(gameStore.username);\n this.text.addOwner(gameStore.username);\n layer.addShape(this.ruler, true, true);\n layer.addShape(this.text, true, true);\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active || this.ruler === null || this.startPoint === null || this.text === null) return;\n\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No draw layer!\");\n return;\n }\n const endPoint = l2g(getMouse(event));\n\n this.ruler.endPoint = endPoint;\n socket.emit(\"Shape.Update\", { shape: this.ruler!.asDict(), redraw: true, temporary: true });\n\n const diffsign = Math.sign(endPoint.x - this.startPoint.x) * Math.sign(endPoint.y - this.startPoint.y);\n const xdiff = Math.abs(endPoint.x - this.startPoint.x);\n const ydiff = Math.abs(endPoint.y - this.startPoint.y);\n const label =\n Math.round((Math.sqrt(xdiff ** 2 + ydiff ** 2) * gameStore.unitSize) / gameStore.gridSize) + \" ft\";\n const angle = Math.atan2(diffsign * ydiff, xdiff);\n const xmid = Math.min(this.startPoint.x, endPoint.x) + xdiff / 2;\n const ymid = Math.min(this.startPoint.y, endPoint.y) + ydiff / 2;\n this.text.refPoint = new GlobalPoint(xmid, ymid);\n this.text.text = label;\n this.text.angle = angle;\n socket.emit(\"Shape.Update\", { shape: this.text.asDict(), redraw: true, temporary: true });\n layer.invalidate(true);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.ruler === null || this.startPoint === null || this.text === null) return;\n\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = false;\n\n layer.removeShape(this.ruler, true, true);\n layer.removeShape(this.text, true, true);\n layer.invalidate(true);\n this.ruler = this.startPoint = this.text = null;\n }\n}\n","import { render, staticRenderFns } from \"./modal.vue?vue&type=template&id=c2851f0e&scoped=true&\"\nimport script from \"./modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./modal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c2851f0e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=script&lang=ts&\"","import { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\nimport { CDT } from \"./cdt\";\n\nexport let PA_CDT = {\n vision: new CDT(),\n movement: new CDT(),\n};\n\nexport function triangulate(target: \"vision\" | \"movement\", partial: boolean = false) {\n const cdt = new CDT();\n\n let shapes;\n if (target === \"vision\") shapes = gameStore.visionBlockers;\n else shapes = gameStore.movementblockers;\n\n for (const sh of shapes) {\n const shape = layerManager.UUIDMap.get(sh)!;\n if (partial && !shape.visibleInCanvas(layerManager.getLayer()!.canvas)) continue;\n for (let i = 0; i < shape.points.length; i++) {\n cdt.insertConstraint(shape.points[i], shape.points[(i + 1) % shape.points.length]);\n }\n }\n // LEFT WALL\n cdt.insertConstraint([-1e8, -1e8], [-1e8, 1e8]);\n cdt.insertConstraint([-1e8, 1e8], [-1e11, 1e8]);\n cdt.insertConstraint([-1e11, 1e8], [-1e11, -1e8]);\n cdt.insertConstraint([-1e11, -1e8], [-1e8, -1e8]);\n // TOP WALL\n cdt.insertConstraint([-1e8, -1e8], [1e8, -1e8]);\n cdt.insertConstraint([1e8, -1e8], [1e8, -1e11]);\n cdt.insertConstraint([1e8, -1e11], [-1e8, -1e11]);\n cdt.insertConstraint([-1e8, -1e11], [-1e8, -1e8]);\n // RIGHT WALL\n cdt.insertConstraint([1e8, -1e8], [1e8, 1e8]);\n cdt.insertConstraint([1e8, 1e8], [1e11, 1e8]);\n cdt.insertConstraint([1e11, 1e8], [1e11, -1e8]);\n cdt.insertConstraint([1e11, -1e8], [1e8, -1e8]);\n // BOT WALL\n cdt.insertConstraint([-1e8, 1e8], [1e8, 1e8]);\n cdt.insertConstraint([1e8, 1e8], [1e8, 1e11]);\n cdt.insertConstraint([1e8, 1e11], [-1e8, 1e11]);\n cdt.insertConstraint([-1e8, 1e11], [-1e8, 1e8]);\n PA_CDT[target] = cdt;\n (window).CDT = PA_CDT;\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&id=61eb1455&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&id=61eb1455&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n \"color-picker\": ColorPicker,\n },\n})\nexport default class EditDialog extends Vue {\n @Prop() shape!: Shape;\n\n visible = false;\n\n get owned(): boolean {\n return this.shape.ownedBy();\n }\n\n mounted() {\n EventBus.$on(\"EditDialog.Open\", (shape: Shape) => {\n this.shape = shape;\n this.visible = true;\n });\n EventBus.$on(\"EditDialog.AddLabel\", (label: string) => {\n if (this.visible) {\n this.shape.labels.push(gameStore.labels[label]);\n this.updateShape(true);\n }\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"EditDialog.Open\");\n EventBus.$off(\"EditDialog.AddLabel\");\n }\n\n updated() {\n this.addEmpty();\n }\n\n addEmpty() {\n if (this.shape.owners[this.shape.owners.length - 1] !== \"\") this.shape.addOwner(\"\");\n if (\n !this.shape.trackers.length ||\n this.shape.trackers[this.shape.trackers.length - 1].name !== \"\" ||\n this.shape.trackers[this.shape.trackers.length - 1].value !== 0\n )\n this.shape.trackers.push({ uuid: uuidv4(), name: \"\", value: 0, maxvalue: 0, visible: false });\n if (\n !this.shape.auras.length ||\n this.shape.auras[this.shape.auras.length - 1].name !== \"\" ||\n this.shape.auras[this.shape.auras.length - 1].value !== 0\n )\n this.shape.auras.push({\n uuid: uuidv4(),\n name: \"\",\n value: 0,\n dim: 0,\n visionSource: false,\n colour: \"rgba(0,0,0,0)\",\n visible: false,\n });\n }\n updateShape(redraw: boolean, temporary = false) {\n if (!this.owned) return;\n socket.emit(\"Shape.Update\", { shape: this.shape.asDict(), redraw, temporary });\n if (redraw) layerManager.invalidate();\n this.addEmpty();\n }\n setToken(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.setIsToken(event.target.checked);\n this.updateShape(true);\n }\n setVisionBlocker(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.checkVisionSources();\n this.updateShape(true);\n }\n setMovementBlocker(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.setMovementBlock(event.target.checked);\n this.updateShape(false);\n }\n updateAnnotation(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n const hadAnnotation = this.shape.annotation !== \"\";\n this.shape.annotation = event.target.value;\n if (this.shape.annotation !== \"\" && !hadAnnotation) {\n gameStore.annotations.push(this.shape.uuid);\n if (layerManager.hasLayer(\"draw\")) layerManager.getLayer(\"draw\")!.invalidate(true);\n } else if (this.shape.annotation === \"\" && hadAnnotation) {\n gameStore.annotations.splice(gameStore.annotations.findIndex(an => an === this.shape.uuid));\n if (layerManager.hasLayer(\"draw\")) layerManager.getLayer(\"draw\")!.invalidate(true);\n }\n this.updateShape(false);\n }\n updateOwner(event: { target: HTMLInputElement }, oldValue: string) {\n if (!this.owned) return;\n this.shape.updateOwner(oldValue, event.target.value);\n this.updateShape(gameStore.fowLOS);\n }\n removeOwner(value: string) {\n if (!this.owned) return;\n this.shape.removeOwner(value);\n this.updateShape(gameStore.fowLOS);\n }\n removeTracker(uuid: string) {\n if (!this.owned) return;\n this.shape.trackers = this.shape.trackers.filter(tr => tr.uuid !== uuid);\n this.updateShape(false);\n }\n removeAura(uuid: string) {\n if (!this.owned) return;\n this.shape.auras = this.shape.auras.filter(au => au.uuid !== uuid);\n this.shape.checkVisionSources();\n this.updateShape(true);\n }\n updateAuraVisionSource(aura: Aura) {\n if (!this.owned) return;\n aura.visionSource = !aura.visionSource;\n const i = gameStore.visionSources.findIndex(ls => ls.aura === aura.uuid);\n if (aura.visionSource && i === -1) gameStore.visionSources.push({ shape: this.shape.uuid, aura: aura.uuid });\n else if (!aura.visionSource && i >= 0) gameStore.visionSources.splice(i, 1);\n this.updateShape(true);\n }\n updateAuraColour(aura: Aura, colour: string) {\n if (!this.owned) return;\n const layer = layerManager.getLayer(this.shape.layer);\n if (layer === undefined) return;\n layer.invalidate(!aura.visionSource);\n }\n openLabelManager() {\n EventBus.$emit(\"LabelManager.Open\");\n }\n removeLabel(uuid: string) {\n if(!this.owned) return;\n this.shape.labels = this.shape.labels.filter(l => l.uuid !== uuid);\n this.updateShape(true);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.getActiveLayer() !== undefined)?_c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.x + 'px',\"top\":_vm.y + 'px'},on:{\"close\":_vm.close}},[(_vm.getLayers().length > 1)?_c('li',[_vm._v(\"Layer\\n \"),_c('ul',_vm._l((_vm.getLayers()),function(layer){return _c('li',{key:layer.name,style:([_vm.getActiveLayer().name === layer.name ? {'background-color':'#82c8a0'}: {}]),on:{\"click\":function($event){return _vm.setLayer(layer.name)}}},[_vm._v(_vm._s(layer.name))])}),0)]):_vm._e(),_c('li',{on:{\"click\":_vm.moveToBack}},[_vm._v(\"Move to back\")]),_c('li',{on:{\"click\":_vm.moveToFront}},[_vm._v(\"Move to front\")]),_c('li',{on:{\"click\":_vm.addInitiative}},[_vm._v(_vm._s(_vm.getInitiativeWord())+\" initiative\")]),_c('li',{on:{\"click\":_vm.openEditDialog}},[_vm._v(\"Show properties\")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=template&id=6c66d243&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class ConfirmDialog extends Vue {\n $refs!: {\n confirm: HTMLButtonElement;\n };\n\n visible = false;\n yes = \"Yes\";\n no = \"No\";\n title = \"\";\n\n resolve = (ok: boolean) => {};\n reject = () => {};\n\n confirm() {\n this.resolve(true);\n this.close();\n }\n deny() {\n this.resolve(false);\n this.close();\n }\n close() {\n this.reject();\n this.visible = false;\n this.title = \"\";\n }\n open(title: string, yes = \"yes\", no = \"no\"): Promise {\n this.yes = yes;\n this.no = no;\n this.title = title;\n\n this.visible = true;\n this.$nextTick(() => {\n this.$refs.confirm.focus();\n });\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./map.vue?vue&type=template&id=2104f147&\"\nimport script from \"./map.vue?vue&type=script&lang=ts&\"\nexport * from \"./map.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"accordion\"},[_c('div',{attrs:{\"id\":\"header\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleDisplay($event)}}},[_c('input',{ref:\"overall\",attrs:{\"type\":\"checkbox\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleCategory($event)}}}),_c('strong',[_vm._v(_vm._s(_vm.title))]),(_vm.showArrow)?[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showArrow && !_vm.active),expression:\"showArrow && !active\"}],staticClass:\"down-Arrow\"},[_vm._v(\"▼\")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showArrow && _vm.active),expression:\"showArrow && active\"}],staticClass:\"up-Arrow\"},[_vm._v(\"▲\")])]:_vm._e()],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],attrs:{\"id\":\"body\"}},_vm._l((_vm.items),function(item){return _c('div',{key:item[0],staticClass:\"item\",on:{\"click\":function($event){return _vm.toggleSelection(item[0])}}},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.selected.includes(item[0])},on:{\"click\":function($event){$event.preventDefault();}}}),_vm._v(\" \"+_vm._s(item[1])+\"\\n \")])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=template&id=0bf2b7ba&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":_vm.close},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(_vm._s(_vm.title))])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('button',{ref:\"confirm\",on:{\"click\":_vm.confirm}},[_vm._v(_vm._s(_vm.yes))]),(!!_vm.no)?_c('button',{on:{\"click\":_vm.deny}},[_vm._v(_vm._s(_vm.no))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=template&id=1883e207&scoped=true&\"","import { render, staticRenderFns } from \"./dmsettings.vue?vue&type=template&id=b908e87c&scoped=true&\"\nimport script from \"./dmsettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./dmsettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b908e87c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\n\nimport { socket } from \"@/assetManager/socket\";\nimport { assetStore } from \"@/assetManager/store\";\nimport { getComponent, getRef } from \"@/core/utils\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class AssetContextMenu extends Vue {\n visible = false;\n left = 0;\n top = 0;\n open(event: MouseEvent, inode: number) {\n if (!assetStore.selected.includes(inode)) getComponent().select(event, inode);\n\n this.visible = true;\n this.left = event.pageX;\n this.top = event.pageY;\n this.$nextTick(() => {\n (this.$children[0].$el).focus();\n });\n }\n close() {\n this.visible = false;\n }\n rename() {\n if (assetStore.selected.length !== 1) return;\n const asset = assetStore.idMap.get(assetStore.selected[0])!;\n\n getRef(\"prompt\")\n .prompt(\"New name:\", `Renaming ${asset.name}`)\n .then(\n (name: string) => {\n socket.emit(\"Asset.Rename\", {\n asset: asset.id,\n name,\n });\n asset.name = name;\n getComponent().$forceUpdate();\n },\n () => {},\n );\n this.close();\n }\n remove() {\n if (assetStore.selected.length === 0) return;\n getRef(\"confirm\")\n .open(\"Are you sure you wish to remove this?\")\n .then(\n (result: boolean) => {\n if (result) {\n for (const sel of assetStore.selected) {\n socket.emit(\"Asset.Remove\", sel);\n if (assetStore.files.includes(sel))\n assetStore.files.splice(assetStore.files.indexOf(sel), 1);\n else assetStore.folders.splice(assetStore.folders.indexOf(sel), 1);\n }\n assetStore.clearSelected();\n }\n },\n () => {},\n );\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class LabelManager extends Vue {\n visible = false;\n newCategory = \"\";\n newName = \"\";\n search = \"\";\n\n mounted() {\n EventBus.$on(\"LabelManager.Open\", () => {\n this.visible = true;\n this.newCategory = \"\";\n this.newName = \"\";\n this.$nextTick(() => (this.$refs.search).focus());\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"LabelManager.Open\");\n }\n\n get labels() {\n const cat: {[category: string]: Label[]} = {'': []};\n for (const uuid of Object.keys(gameStore.labels)) {\n const label = gameStore.labels[uuid];\n if (this.search.length && `${label.category.toLowerCase()}${label.name.toLowerCase()}`.search(this.search.toLowerCase()) < 0) continue;\n if (label.user !== gameStore.username) continue;\n if (!label.category) cat[''].push(label);\n else {\n if (!(label.category in cat)) cat[label.category] = [];\n cat[label.category].push(label);\n cat[label.category].sort((a, b) => a.name.localeCompare(b.name));\n }\n }\n return cat;\n }\n\n get categories() {\n return Object.keys(this.labels).sort();\n }\n\n selectLabel(label: string) {\n EventBus.$emit(\"EditDialog.AddLabel\", label);\n this.visible = false;\n }\n\n toggleVisibility(label: Label) {\n label.visible = !label.visible;\n socket.emit(\"Label.Visibility.Set\", { uuid: label.uuid, visible: label.visible });\n }\n\n addLabel() {\n if (this.newName === \"\") return;\n const label = {\n uuid: uuidv4(),\n category: this.newCategory,\n name: this.newName,\n visible: false,\n user: gameStore.username,\n };\n gameStore.addLabel(label);\n socket.emit(\"Label.Add\", label);\n this.newCategory = \"\";\n this.newName = \"\";\n }\n\n deleteLabel(uuid: string) {\n gameStore.deleteLabel({ uuid, user: gameStore.username });\n socket.emit(\"Label.Delete\", uuid);\n }\n}\n","import { ServerPolygon } from \"../comm/types/shapes\";\nimport { GlobalPoint, LocalPoint } from \"../geom\";\nimport { g2lx, g2ly, g2lz, l2g } from \"../units\";\nimport { getFogColour } from \"../utils\";\nimport { BoundingRect } from \"./boundingrect\";\nimport { Shape } from \"./shape\";\n\nexport class Polygon extends Shape {\n type = \"polygon\";\n _vertices: GlobalPoint[] = [];\n\n constructor(\n startPoint: GlobalPoint,\n vertices: GlobalPoint[] = [],\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, fillColour, strokeColour, uuid);\n this._vertices = vertices;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n const delta = point.subtract(this._refPoint);\n this._refPoint = point;\n for (let i = 0; i < this._vertices.length; i++) this._vertices[i] = this._vertices[i].add(delta);\n }\n\n get vertices() {\n return [this._refPoint, ...this._vertices];\n }\n\n asDict() {\n return Object.assign(this.getBaseDict(), {\n vertices: this._vertices.map(p => ({ x: p.x, y: p.y })),\n });\n }\n\n fromDict(data: ServerPolygon) {\n super.fromDict(data);\n this._vertices = data.vertices.map(v => new GlobalPoint(v.x, v.y));\n }\n\n get points() {\n return this.vertices.map(point => [point.x, point.y]);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n\n if (this.strokeColour === \"fog\") ctx.strokeStyle = getFogColour();\n else if (this.vertices.length === 2) ctx.strokeStyle = this.fillColour;\n else ctx.strokeStyle = this.strokeColour;\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n ctx.lineWidth = g2lz(2);\n\n ctx.beginPath();\n ctx.moveTo(g2lx(this.vertices[0].x), g2ly(this.vertices[0].y));\n for (let i = 1; i <= this.vertices.length; i++) {\n const vertex = this.vertices[i % this.vertices.length];\n ctx.lineTo(g2lx(vertex.x), g2ly(vertex.y));\n }\n ctx.fill();\n ctx.stroke();\n }\n\n contains(point: GlobalPoint): boolean {\n return this.getBoundingBox().contains(point);\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n return this.getBoundingBox().center();\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this._refPoint = l2g(point);\n else this._vertices[resizePoint - 1] = l2g(point);\n }\n getBoundingBox(): BoundingRect {\n let minx: number = this.refPoint.x;\n let maxx: number = this.refPoint.x;\n let miny: number = this.refPoint.y;\n let maxy: number = this.refPoint.y;\n for (const p of this._vertices) {\n if (p.x < minx) minx = p.x;\n if (p.x > maxx) maxx = p.x;\n if (p.y < miny) miny = p.y;\n if (p.y > maxy) maxy = p.y;\n }\n return new BoundingRect(new GlobalPoint(minx, miny), maxx - minx, maxy - miny);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IS_DM),expression:\"IS_DM\"}]},[_vm._v(\"Mode\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IS_DM),expression:\"IS_DM\"}],staticClass:\"selectgroup\"},_vm._l((_vm.modes),function(mode){return _c('div',{key:mode,staticClass:\"option\",class:{'option-selected': _vm.modeSelect === mode},on:{\"click\":function($event){_vm.modeSelect = mode}}},[_vm._v(_vm._s(mode))])}),0),_c('div',[_vm._v(\"Shape\")]),_c('div',{staticClass:\"selectgroup\"},_vm._l((_vm.shapes),function(shape){return _c('div',{key:shape,staticClass:\"option\",class:{'option-selected': _vm.shapeSelect === shape},on:{\"click\":function($event){_vm.shapeSelect = shape}}},[_c('i',{staticClass:\"fas\",class:'fa-' + shape})])}),0),_c('div',[_vm._v(\"Colours\")]),_c('div',{staticClass:\"selectgroup\"},[_c('color-picker',{staticClass:\"option\",attrs:{\"color\":_vm.fillColour},on:{\"update:color\":function($event){_vm.fillColour=$event}}}),_c('color-picker',{staticClass:\"option\",attrs:{\"color\":_vm.borderColour},on:{\"update:color\":function($event){_vm.borderColour=$event}}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shapeSelect === 'paint-brush'),expression:\"shapeSelect === 'paint-brush'\"}]},[_vm._v(\"Brush size\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.brushSize),expression:\"brushSize\"},{name:\"show\",rawName:\"v-show\",value:(_vm.shapeSelect === 'paint-brush'),expression:\"shapeSelect === 'paint-brush'\"}],staticStyle:{\"max-width\":\"100px\"},attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.brushSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.brushSize=$event.target.value}}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=template&id=639cd890&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',{attrs:{\"id\":\"accordion-container\"}},_vm._l((_vm.categories),function(category){return _c('accordion',{key:category,attrs:{\"title\":category === '' ? 'no category' : category,\"showArrow\":false,\"items\":_vm.labels[category],\"initialValues\":_vm.initalValues[category]},on:{\"selectionupdate\":_vm.updateSelection}})}),1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=template&id=dca395d6&scoped=true&\"","import { render, staticRenderFns } from \"./manager.vue?vue&type=template&id=5b0def98&\"\nimport script from \"./manager.vue?vue&type=script&lang=ts&\"\nexport * from \"./manager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./manager.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./tool.vue?vue&type=template&id=1e034b42&\"\nimport script from \"./tool.vue?vue&type=script&lang=ts&\"\nexport * from \"./tool.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./tool.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=style&index=0&id=07fc8ff2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=style&index=0&id=07fc8ff2&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":_vm.close},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(_vm._s(_vm.title))])}}])},[_c('div',{staticClass:\"modal-body\"},[_vm._v(\"\\n \"+_vm._s(_vm.question)+\"\\n \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.answer),expression:\"answer\"}],ref:\"answer\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.answer)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.answer=$event.target.value}}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=template&id=0602c2e6&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport draggable from \"vuedraggable\";\nVue.component(\"draggable\", draggable);\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { InitiativeData, InitiativeEffect } from \"@/game/comm/types/general\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { gameManager } from '../manager';\n\n@Component({\n components: {\n Modal,\n draggable,\n },\n})\nexport default class Initiative extends Vue {\n visible = false;\n data: InitiativeData[] = [];\n currentActor: string | null = null;\n roundCounter = 0;\n visionLock = false;\n cameraLock = false;\n _activeTokens: string[] = [];\n\n mounted() {\n EventBus.$on(\"Initiative.Clear\", this.clear);\n EventBus.$on(\"Initiative.Remove\", (data: string) => this.removeInitiative(data));\n EventBus.$on(\"Initiative.Show\", () => (this.visible = true));\n\n socket.on(\"Initiative.Set\", (data: InitiativeData[]) => {\n this.data = data;\n });\n socket.on(\"Initiative.Turn.Set\", (data: string) => this.setTurn(data));\n socket.on(\"Initiative.Turn.Update\", (data: string) => this.updateTurn(data, false));\n socket.on(\"Initiative.Round.Update\", (data: number) => this.setRound(data, false));\n socket.on(\"Initiative.Effect.New\", (data: { actor: string; effect: InitiativeEffect }) => {\n const actor = this.getActor(data.actor);\n if (actor === undefined) return;\n this.createEffect(actor, data.effect, false);\n });\n socket.on(\"Initiative.Effect.Update\", (data: { actor: string; effect: InitiativeEffect }) =>\n this.updateEffect(data.actor, data.effect, false),\n );\n }\n\n beforeDestroy() {\n EventBus.$off(\"Initiative.Clear\");\n EventBus.$off(\"Initiative.Remove\");\n EventBus.$off(\"Initiative.Show\");\n }\n\n // Utilities\n clear() {\n this.data = [];\n this.currentActor = null;\n }\n getActor(actorId: string) {\n return this.data.find(a => a.uuid === actorId);\n }\n contains(uuid: string) {\n return this.data.some(d => d.uuid === uuid);\n }\n owns(actor: InitiativeData): boolean {\n if (gameStore.IS_DM) return true;\n const shape = layerManager.UUIDMap.get(actor.uuid);\n // Shapes that are unknown to this client are hidden from this client but owned by other clients\n if (shape === undefined) return false;\n return shape.owners.includes(gameStore.username);\n }\n getDefaultEffect() {\n return { uuid: uuidv4(), name: \"New Effect\", turns: 10 };\n }\n fakeSetData(dataTransfer: DataTransfer) {\n dataTransfer.setData(\"Hack\", \"\");\n }\n syncInitiative(data: InitiativeData | { uuid: string }) {\n socket.emit(\"Initiative.Update\", data);\n }\n // Events\n addInitiative(data: InitiativeData) {\n const d = this.data.findIndex(a => a.uuid === data.uuid);\n if (d >= 0) return;\n if (data.initiative === undefined) data.initiative = 0;\n this.syncInitiative(data);\n }\n removeInitiative(uuid: string) {\n const d = this.data.findIndex(a => a.uuid === uuid);\n if (d < 0 || this.data[d].group) return;\n this.syncInitiative({ uuid });\n // Remove highlight\n const shape = layerManager.UUIDMap.get(uuid);\n if (shape === undefined) return;\n if (shape.showHighlight) {\n shape.showHighlight = false;\n layerManager.getLayer(shape.layer)!.invalidate(true);\n }\n }\n updateOrder() {\n if (!gameStore.IS_DM) return;\n socket.emit(\"Initiative.Set\", this.data.map(d => d.uuid));\n }\n updateTurn(actorId: string | null, sync: boolean) {\n if (!gameStore.IS_DM && sync) return;\n this.currentActor = actorId;\n const actor = this.data.find(a => a.uuid === actorId);\n if (actor === undefined) return;\n if (actor.effects) {\n for (let e = actor.effects.length - 1; e >= 0; e--) {\n if (actor.effects[e].turns <= 0) actor.effects.splice(e, 1);\n else actor.effects[e].turns--;\n }\n }\n if (this.visionLock) {\n if (actorId !== null && gameStore.ownedtokens.includes(actorId)) gameStore.setActiveTokens([actorId]);\n else gameStore.setActiveTokens([]);\n }\n if (this.cameraLock) {\n if (actorId !== null) {\n const shape = layerManager.UUIDMap.get(actorId);\n if (shape !== undefined && shape.ownedBy()) {\n gameManager.setCenterPosition(shape.center());\n }\n }\n }\n if (sync) socket.emit(\"Initiative.Turn.Update\", actorId);\n }\n setRound(round: number, sync: boolean) {\n if (!gameStore.IS_DM && sync) return;\n this.roundCounter = round;\n if (sync) socket.emit(\"Initiative.Round.Update\", round);\n }\n setTurn(actorId: string | null) {\n this.currentActor = actorId;\n }\n nextTurn() {\n if (!gameStore.IS_DM) return;\n const order = this.data;\n const next = order[(order.findIndex(a => a.uuid === this.currentActor) + 1) % order.length];\n if (this.data[0].uuid === next.uuid) this.setRound(this.roundCounter + 1, true);\n this.updateTurn(next.uuid, true);\n }\n toggleHighlight(actor: InitiativeData, show: boolean) {\n const shape = layerManager.UUIDMap.get(actor.uuid);\n if (shape === undefined) return;\n shape.showHighlight = show;\n layerManager.getLayer(shape.layer)!.invalidate(true);\n }\n toggleOption(actor: InitiativeData, option: \"visible\" | \"group\") {\n if (!this.owns(actor)) return;\n actor[option] = !actor[option];\n this.syncInitiative(actor);\n }\n createEffect(actor: InitiativeData, effect: InitiativeEffect, sync: boolean) {\n if (!this.owns(actor)) return;\n actor.effects.push(effect);\n if (sync) socket.emit(\"Initiative.Effect.New\", { actor: actor.uuid, effect });\n }\n syncEffect(actor: InitiativeData, effect: InitiativeEffect) {\n if (!this.owns(actor)) return;\n socket.emit(\"Initiative.Effect.Update\", { actor: actor.uuid, effect });\n }\n updateEffect(actorId: string, effect: InitiativeEffect, sync: boolean) {\n const actor = this.data.find(a => a.uuid === actorId);\n if (actor === undefined) return;\n const effectIndex = actor.effects.findIndex(e => e.uuid === effect.uuid);\n if (effectIndex === undefined) return;\n actor.effects[effectIndex] = effect;\n if (sync) this.syncEffect(actor, effect);\n else this.$forceUpdate();\n }\n toggleVisionLock() {\n this.visionLock = !this.visionLock;\n if (this.visionLock) {\n this._activeTokens = [...gameStore._activeTokens];\n if (this.currentActor !== null && gameStore.ownedtokens.includes(this.currentActor)) gameStore.setActiveTokens([this.currentActor]);\n } else {\n gameStore.setActiveTokens(this._activeTokens);\n }\n }\n}\n","import { render, staticRenderFns } from \"./selection_info.vue?vue&type=template&id=674cf937&scoped=true&\"\nimport script from \"./selection_info.vue?vue&type=script&lang=ts&\"\nexport * from \"./selection_info.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./selection_info.vue?vue&type=style&index=0&id=674cf937&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"674cf937\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nimport { Action, getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { AssetList } from \"@/core/comm/types\";\nimport { socket } from \"@/game/api/socket\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { g2l, l2g } from \"@/game/units\";\nimport { zoomValue } from \"@/game/utils\";\nimport { BoundingVolume } from \"@/game/visibility/bvh/bvh\";\nimport { triangulate } from \"@/game/visibility/te/pa\";\nimport { rootStore } from \"@/store\";\n\nexport interface GameState {\n boardInitialized: boolean;\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"game\", namespaced: true })\nclass GameStore extends VuexModule implements GameState {\n // This is a limited view of selectable layers that is used to generate the layer selection UI and ability to switch layers\n // See the layerManager for proper layer management tools\n layers: string[] = [];\n selectedLayerIndex = -1;\n boardInitialized = false;\n\n locations: string[] = [];\n\n assets: AssetList = {};\n\n notes: Note[] = [];\n\n IS_DM = false;\n FAKE_PLAYER = false;\n isLocked = false;\n gridSize = 50;\n username = \"\";\n roomName = \"\";\n roomCreator = \"\";\n invitationCode = \"\";\n players: { id: number; name: string; }[] = [];\n\n gridColour = \"rgba(0, 0, 0, 1)\";\n fowColour = \"rgba(0, 0, 0, 1)\";\n rulerColour = \"rgba(255, 0, 0, 1)\";\n panX = 0;\n panY = 0;\n\n zoomDisplay = 0.5;\n // zoomFactor = 1;\n\n unitSize = 5;\n useGrid = true;\n fullFOW = false;\n fowOpacity = 0.3;\n fowLOS = false;\n locationName = \"\";\n\n visionSources: { shape: string; aura: string }[] = [];\n visionBlockers: string[] = [];\n annotations: string[] = [];\n movementblockers: string[] = [];\n ownedtokens: string[] = [];\n _activeTokens: string[] = [];\n\n BV = Object.freeze(new BoundingVolume([]));\n\n visionMode: \"bvh\" | \"triangle\" = \"bvh\";\n drawTEContour = false;\n visionRangeMin = 1640;\n visionRangeMax = 3281;\n\n clipboard: ServerShape[] = [];\n\n // Maps are not yet supported in Vue untill 3.X, so for now we're using a plain old object\n labels: { [uuid: string]: Label } = {};\n\n filterNoLabel = false;\n labelFilters: string[] = [];\n\n showUI = true;\n\n get selectedLayer() {\n return this.layers[this.selectedLayerIndex];\n }\n\n get zoomFactor() {\n return zoomValue(this.zoomDisplay);\n }\n\n get activeTokens() {\n if (this._activeTokens.length === 0) return this.ownedtokens;\n return this._activeTokens;\n }\n\n @Mutation\n setFakePlayer(value: boolean) {\n this.FAKE_PLAYER = value;\n this.IS_DM = !value;\n layerManager.invalidate();\n }\n\n @Mutation\n setZoomDisplay(zoom: number) {\n if (zoom === this.zoomDisplay) return;\n if (zoom < 0) zoom = 0;\n if (zoom > 1) zoom = 1;\n this.zoomDisplay = zoom;\n layerManager.invalidate();\n }\n\n @Mutation\n setVisionMode(data: { mode: \"bvh\" | \"triangle\"; sync: boolean }) {\n this.visionMode = data.mode;\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_mode: data.mode });\n }\n\n @Mutation\n setBoardInitialized(boardInitialized: boolean) {\n this.boardInitialized = boardInitialized;\n }\n\n @Mutation\n toggleUnlabeledFilter() {\n this.filterNoLabel = !this.filterNoLabel;\n }\n\n @Mutation\n addLabel(label: Label) {\n Vue.set(this.labels, label.uuid, label);\n }\n\n @Mutation\n setLabelFilters(filters: string[]) {\n this.labelFilters = filters;\n }\n\n @Mutation\n setLabelVisibility(data: { user: string; uuid: string; visible: boolean }) {\n if (!(data.uuid in this.labels)) return;\n this.labels[data.uuid].visible = data.visible;\n }\n\n @Mutation\n deleteLabel(data: { uuid: string; user: string }) {\n if (!(data.uuid in this.labels)) return;\n const label = this.labels[data.uuid];\n const updatedLayers: Set = new Set();\n for (const shape of layerManager.UUIDMap.values()) {\n const i = shape.labels.indexOf(label);\n if (i >= 0) {\n shape.labels.splice(i, 1);\n updatedLayers.add(shape.layer);\n }\n }\n for (const layer of updatedLayers) layerManager.getLayer(layer)!.invalidate(false);\n Vue.delete(this.labels, data.uuid);\n }\n\n @Mutation\n setDM(isDM: boolean) {\n this.IS_DM = isDM;\n }\n\n @Mutation\n setUsername(username: string) {\n this.username = username;\n }\n\n @Mutation\n setRoomName(name: string) {\n this.roomName = name;\n }\n\n @Mutation\n setRoomCreator(name: string) {\n this.roomCreator = name;\n }\n\n @Mutation\n setInvitationCode(code: string) {\n this.invitationCode = code;\n }\n\n @Mutation\n addLayer(name: string) {\n this.layers.push(name);\n if (this.selectedLayerIndex === -1) this.selectedLayerIndex = this.layers.indexOf(name);\n }\n\n @Mutation\n selectLayer(data: { name: string; sync: boolean }) {\n const index = this.layers.indexOf(data.name);\n if (index >= 0) this.selectedLayerIndex = index;\n if (data.sync) socket.emit(\"Client.ActiveLayer.Set\", data.name);\n }\n\n @Mutation\n newNote(data: { note: Note; sync: boolean }) {\n this.notes.push(data.note);\n if (data.sync) socket.emit(\"Note.New\", data.note);\n }\n\n @Mutation\n setAssets(assets: AssetList) {\n this.assets = assets;\n }\n\n @Mutation\n setLocations(locations: string[]) {\n this.locations = locations;\n }\n\n @Mutation\n resetLayerInfo() {\n this.layers = [];\n this.selectedLayerIndex = -1;\n }\n\n @Mutation\n recalculateVision(partial = false) {\n if (this.boardInitialized) {\n if (this.visionMode === \"triangle\") triangulate(\"vision\", partial);\n else this.BV = Object.freeze(new BoundingVolume(this.visionBlockers));\n }\n }\n\n @Mutation\n recalculateMovement(partial = false) {\n if (this.boardInitialized && this.visionMode === \"triangle\") triangulate(\"movement\", partial);\n }\n\n @Mutation\n updateZoom(data: { newZoomDisplay: number; zoomLocation: GlobalPoint }) {\n if (data.newZoomDisplay === this.zoomDisplay) return;\n if (data.newZoomDisplay < 0) data.newZoomDisplay = 0;\n if (data.newZoomDisplay > 1) data.newZoomDisplay = 1;\n const oldLoc = g2l(data.zoomLocation);\n this.zoomDisplay = data.newZoomDisplay;\n const newLoc = l2g(oldLoc);\n // Change the pan settings to keep the zoomLocation in the same exact location before and after the zoom.\n const diff = newLoc.subtract(data.zoomLocation);\n this.panX += diff.x;\n this.panY += diff.y;\n layerManager.invalidate();\n sendClientOptions();\n }\n\n @Mutation\n setGridColour(data: { colour: string; sync: boolean }) {\n this.gridColour = data.colour;\n layerManager.getGridLayer()!.drawGrid();\n if (data.sync) socket.emit(\"Client.Options.Set\", { gridColour: data.colour });\n }\n\n @Mutation\n setFOWColour(data: { colour: string; sync: boolean }) {\n this.fowColour = data.colour;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Client.Options.Set\", { fowColour: data.colour });\n }\n\n @Mutation\n setRulerColour(data: { colour: string; sync: boolean }) {\n this.rulerColour = data.colour;\n if (data.sync) socket.emit(\"Client.Options.Set\", { rulerColour: data.colour });\n }\n\n @Mutation\n setPanX(x: number) {\n this.panX = x;\n }\n\n @Mutation\n setPanY(y: number) {\n this.panY = y;\n }\n\n @Mutation\n increasePanX(increase: number) {\n this.panX += increase;\n }\n\n @Mutation\n increasePanY(increase: number) {\n this.panY += increase;\n }\n\n @Mutation\n setUnitSize(data: { unitSize: number; sync: boolean }) {\n if (this.unitSize !== data.unitSize && data.unitSize > 0 && data.unitSize < Infinity) {\n this.unitSize = data.unitSize;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Location.Options.Set\", { unit_size: data.unitSize });\n }\n }\n\n @Mutation\n setUseGrid(data: { useGrid: boolean; sync: boolean }) {\n if (this.useGrid !== data.useGrid) {\n this.useGrid = data.useGrid;\n const gridLayer = layerManager.getGridLayer()!;\n if (data.useGrid) gridLayer.canvas.style.display = \"block\";\n else gridLayer.canvas.style.display = \"none\";\n if (data.sync) socket.emit(\"Location.Options.Set\", { use_grid: data.useGrid });\n }\n }\n\n @Mutation\n setGridSize(data: { gridSize: number; sync: boolean }): void {\n if (this.gridSize !== data.gridSize && data.gridSize > 0) {\n this.gridSize = data.gridSize;\n const gridLayer = layerManager.getGridLayer();\n if (gridLayer !== undefined) gridLayer.drawGrid();\n if (data.sync) socket.emit(\"Gridsize.Set\", data.gridSize);\n }\n }\n\n @Mutation\n setVisionRangeMin(data: { value: number; sync: boolean }): void {\n this.visionRangeMin = data.value;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_min_range: data.value });\n }\n\n @Mutation\n setVisionRangeMax(data: { value: number; sync: boolean }): void {\n this.visionRangeMax = Math.max(data.value, this.visionRangeMin);\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_max_range: this.visionRangeMax });\n }\n\n @Mutation\n setFullFOW(data: { fullFOW: boolean; sync: boolean }) {\n if (this.fullFOW !== data.fullFOW) {\n this.fullFOW = data.fullFOW;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { full_fow: data.fullFOW });\n }\n }\n\n @Mutation\n setFOWOpacity(data: { fowOpacity: number; sync: boolean }) {\n this.fowOpacity = data.fowOpacity;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { fow_opacity: data.fowOpacity });\n }\n\n @Mutation\n setLineOfSight(data: { fowLOS: boolean; sync: boolean }) {\n if (this.fowLOS !== data.fowLOS) {\n this.fowLOS = data.fowLOS;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Location.Options.Set\", { fow_los: data.fowLOS });\n }\n }\n\n @Mutation\n setLocationName(name: string) {\n this.locationName = name;\n }\n\n @Mutation\n updateNote(data: { note: Note; sync: boolean }) {\n const actualNote = this.notes.find(n => n.uuid === data.note.uuid);\n if (actualNote === undefined) return;\n actualNote.title = data.note.title;\n actualNote.text = data.note.text;\n if (data.sync) socket.emit(\"Note.Update\", actualNote);\n }\n\n @Mutation\n removeNote(data: { note: Note; sync: boolean }) {\n this.notes = this.notes.filter(n => n.uuid !== data.note.uuid);\n if (data.sync) socket.emit(\"Note.Remove\", data.note.uuid);\n }\n\n @Mutation\n toggleUI() {\n this.showUI = !this.showUI;\n }\n\n @Mutation\n setClipboard(clipboard: ServerShape[]) {\n this.clipboard = clipboard;\n }\n\n @Mutation\n setActiveTokens(tokens: string[]) {\n this._activeTokens = tokens;\n layerManager.invalidateLight();\n }\n\n @Mutation\n addActiveToken(token: string) {\n this._activeTokens.push(token);\n layerManager.invalidateLight();\n }\n\n @Mutation\n removeActiveToken(token: string) {\n if (this._activeTokens.length === 0) {\n this._activeTokens = [...this.ownedtokens];\n }\n this._activeTokens.splice(this._activeTokens.indexOf(token), 1);\n layerManager.invalidateLight();\n }\n\n @Mutation\n setPlayers(players: { id: number; name: string; }[]) {\n this.players = players;\n }\n\n @Mutation\n addPlayer(player: { id: number; name: string }) {\n this.players.push(player);\n }\n\n @Mutation\n kickPlayer(playerId: number) {\n this.players = this.players.filter(p => p.id !== playerId);\n }\n\n @Mutation\n setIsLocked(data: {isLocked: boolean, sync: boolean}) {\n this.isLocked = data.isLocked;\n if (data.sync) {\n socket.emit(\"Room.Info.Set.Locked\", this.isLocked);\n }\n }\n\n @Action\n clear() {\n (this.context.state).visionSources = [];\n (this.context.state).visionBlockers = [];\n (this.context.state).ownedtokens = [];\n (this.context.state).annotations = [];\n (this.context.state).movementblockers = [];\n (this.context.state).notes = [];\n this.context.commit(\"recalculateVision\");\n this.context.commit(\"recalculateMovement\");\n }\n}\n\nexport const gameStore = getModule(GameStore);\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=script&lang=ts&\"","import { ServerAura } from \"@/game/comm/types/shapes\";\n\nexport const aurasFromServer = (auras: ServerAura[]): Aura[] => {\n const result = [];\n for (const aura of auras) {\n result.push({\n uuid: aura.uuid,\n visionSource: aura.vision_source,\n visible: aura.visible,\n name: aura.name,\n value: aura.value,\n dim: aura.dim,\n colour: aura.colour,\n });\n }\n return result;\n};\n\nexport const aurasToServer = (auras: Aura[]): ServerAura[] => {\n const result = [];\n for (const aura of auras) {\n result.push({\n uuid: aura.uuid,\n vision_source: aura.visionSource,\n visible: aura.visible,\n name: aura.name,\n value: aura.value,\n dim: aura.dim,\n colour: aura.colour,\n });\n }\n return result;\n};\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./note.vue?vue&type=template&id=7a3669fd&scoped=true&\"\nimport script from \"./note.vue?vue&type=script&lang=ts&\"\nexport * from \"./note.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a3669fd\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./initiative.vue?vue&type=template&id=07fc8ff2&scoped=true&\"\nimport script from \"./initiative.vue?vue&type=script&lang=ts&\"\nexport * from \"./initiative.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./initiative.vue?vue&type=style&index=0&id=07fc8ff2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07fc8ff2\",\n null\n \n)\n\nexport default component.exports","import { ServerLayer } from \"@/game/comm/types/general\";\nimport { FOWLayer } from \"@/game/layers/fow\";\nimport { FOWPlayersLayer } from \"@/game/layers/fowplayers\";\nimport { GridLayer } from \"@/game/layers/grid\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\nexport function createLayer(layerInfo: ServerLayer) {\n // Create canvas element\n const canvas = document.createElement(\"canvas\");\n canvas.style.zIndex = layerManager.layers.length.toString();\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n\n // Create the Layer instance\n let layer: Layer;\n if (layerInfo.type_ === \"grid\") layer = new GridLayer(canvas, layerInfo.name);\n else if (layerInfo.type_ === \"fow\") layer = new FOWLayer(canvas, layerInfo.name);\n else if (layerInfo.type_ === \"fow-players\") layer = new FOWPlayersLayer(canvas, layerInfo.name);\n else layer = new Layer(canvas, layerInfo.name);\n layer.selectable = layerInfo.selectable;\n layer.playerEditable = layerInfo.player_editable;\n layerManager.addLayer(layer);\n\n // Add the element to the DOM\n const layers = document.getElementById(\"layers\");\n if (layers === null) {\n console.warn(\"Layers div is missing, this will prevent the main game board from loading!\");\n return;\n }\n if (layerInfo.name !== \"fow-players\") layers.appendChild(canvas);\n\n if (layerInfo.type_ === \"grid\" && layerInfo.size) gameStore.setGridSize({ gridSize: layerInfo.size, sync: false });\n // Load layer shapes\n layer.setShapes(layerInfo.shapes);\n}\n","import { render, staticRenderFns } from \"./labels.vue?vue&type=template&id=e477c214&scoped=true&\"\nimport script from \"./labels.vue?vue&type=script&lang=ts&\"\nexport * from \"./labels.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e477c214\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{attrs:{\"id\":\"toolselect\"}},[_c('ul',_vm._l((_vm.visibleTools),function(tool){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.toolVisible(tool)),expression:\"toolVisible(tool)\"}],key:tool,ref:tool + '-selector',refInFor:true,class:{'tool-selected': _vm.currentTool === tool},on:{\"mousedown\":function($event){_vm.currentTool = tool}}},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(tool))])])}),0)]),_c('div',[[_c('select-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Select'),expression:\"currentTool === 'Select'\"}],ref:\"selectTool\"}),_c('pan-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Pan'),expression:\"currentTool === 'Pan'\"}]}),_c('keep-alive',[_c('draw-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Draw'),expression:\"currentTool === 'Draw'\"}]})],1),_c('ruler-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Ruler'),expression:\"currentTool === 'Ruler'\"}]}),_c('map-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Map'),expression:\"currentTool === 'Map'\"}]}),_c('filter-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Filter'),expression:\"currentTool === 'Filter'\"}]}),_c('vision-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Vision'),expression:\"currentTool === 'Vision'\"}]}),_c('shape-menu',{ref:\"shapecontext\"}),_c('createtoken-dialog',{ref:\"createtokendialog\"})]],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=template&id=b6e1f51c&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"focusin\":_vm.focusin,\"focusout\":_vm.focusout,\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('fieldset',[_c('legend',{staticClass:\"legend\"},[_vm._v(\"PlanarAlly\")]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],attrs:{\"type\":\"text\",\"name\":\"username\",\"placeholder\":\"Username\",\"autocomplete\":\"username\",\"required\":\"\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._m(0)]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"type\":\"password\",\"name\":\"password\",\"placeholder\":\"Password\",\"autocomplete\":\"current-password\",\"required\":\"\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._m(1)]),_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('button',{staticStyle:{\"visibility\":\"hidden\",\"display\":\"none\"},attrs:{\"type\":\"submit\",\"name\":\"login\"}}),_c('button',{staticClass:\"submit\",attrs:{\"type\":\"button\",\"name\":\"register\",\"title\":\"Register\"},on:{\"click\":_vm.register}},[_c('i',{staticClass:\"fas fa-plus\"})]),_vm._m(2)])]),(_vm.error)?_c('div',{staticClass:\"feedback\"},[_c('p',{staticClass:\"error\"},[_c('strong',[_vm._v(\"Error:\")]),_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-user-circle\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-lock\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"submit\",attrs:{\"type\":\"submit\",\"name\":\"login\",\"title\":\"Login\"}},[_c('i',{staticClass:\"fas fa-arrow-right\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=template&id=bc30fc14&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport EditDialog from \"@/game/ui/selection/edit_dialog.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\n\n@Component({\n components: {\n \"edit-dialog\": EditDialog,\n },\n})\nexport default class SelectionInfo extends Vue {\n shape: Shape | null = null;\n\n mounted() {\n EventBus.$on(\"SelectionInfo.Shape.Set\", (shape: Shape | null) => {\n this.shape = shape;\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"SelectionInfo.Shape.Set\");\n }\n\n openEditDialog() {\n (this.$refs.editDialog).visible = true;\n }\n changeValue(object: Tracker | Aura, redraw: boolean) {\n if (this.shape === null) return;\n getRef(\"prompt\")\n .prompt(`New ${object.name} value:`, `Updating ${object.name}`)\n .then(\n (value: string) => {\n if (this.shape === null) return;\n const ogValue = object.value;\n if (value[0] === \"+\" || value[0] === \"-\") object.value += parseInt(value, 10);\n else object.value = parseInt(value, 10);\n if (isNaN(object.value)) object.value = ogValue;\n socket.emit(\"Shape.Update\", { shape: this.shape.asDict(), redraw, temporary: false });\n if (redraw) layerManager.invalidate();\n },\n () => {},\n );\n }\n}\n","import { AssetList } from \"@/core/comm/types\";\nimport { socket } from \"@/game/api/socket\";\nimport { BoardInfo, Note, ServerClient, ServerLocation } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createLayer } from \"@/game/layers/utils\";\nimport { gameManager } from \"@/game/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { router } from \"@/router\";\nimport { zoomDisplay } from \"../utils\";\n\nsocket.on(\"connect\", () => {\n console.log(\"Connected\");\n});\nsocket.on(\"disconnect\", () => {\n console.log(\"Disconnected\");\n});\nsocket.on(\"connect_error\", (error: any) => {\n console.error(\"Could not connect to game session.\");\n router.push(\"/dashboard\");\n});\nsocket.on(\"error\", (error: any) => {\n console.error(\"Game session does not exist.\");\n router.push(\"/dashboard\");\n});\nsocket.on(\"redirect\", (destination: string) => {\n console.log(\"redirecting\");\n router.push(destination);\n});\nsocket.on(\"Room.Info.Set\", (data: { name: string; creator: string; invitationCode: string, isLocked: boolean, players: { id: number; name: string }[] }) => {\n gameStore.setRoomName(data.name);\n gameStore.setRoomCreator(data.creator);\n gameStore.setInvitationCode(data.invitationCode);\n gameStore.setIsLocked({isLocked: data.isLocked, sync: false});\n gameStore.setPlayers(data.players);\n});\nsocket.on(\"Room.Info.InvitationCode.Set\", (invitationCode: string) => {\n gameStore.setInvitationCode(invitationCode);\n EventBus.$emit(\"DmSettings.RefreshedInviteCode\");\n});\nsocket.on(\"Room.Info.Players.Add\", (data: {id: number, name: string}) => {\n gameStore.addPlayer(data);\n});\nsocket.on(\"Username.Set\", (username: string) => {\n gameStore.setUsername(username);\n gameStore.setDM(username === window.location.pathname.split(\"/\")[2]);\n});\nsocket.on(\"Client.Options.Set\", (options: ServerClient) => {\n gameStore.setGridColour({ colour: options.grid_colour, sync: false });\n gameStore.setFOWColour({ colour: options.fow_colour, sync: false });\n gameStore.setRulerColour({ colour: options.ruler_colour, sync: false });\n gameStore.setPanX(options.pan_x);\n gameStore.setPanY(options.pan_y);\n gameStore.setZoomDisplay(zoomDisplay(options.zoom_factor));\n // gameStore.setZoomDisplay(0.5);\n if (options.active_layer) layerManager.selectLayer(options.active_layer, false);\n if (layerManager.getGridLayer() !== undefined) layerManager.getGridLayer()!.invalidate();\n});\nsocket.on(\"Location.Set\", (data: Partial) => {\n if (data.name !== undefined) gameStore.setLocationName(data.name);\n if (data.unit_size !== undefined) gameStore.setUnitSize({ unitSize: data.unit_size, sync: false });\n if (data.use_grid !== undefined) gameStore.setUseGrid({ useGrid: data.use_grid, sync: false });\n if (data.full_fow !== undefined) gameStore.setFullFOW({ fullFOW: data.full_fow, sync: false });\n if (data.fow_opacity !== undefined) gameStore.setFOWOpacity({ fowOpacity: data.fow_opacity, sync: false });\n if (data.fow_los !== undefined) gameStore.setLineOfSight({ fowLOS: data.fow_los, sync: false });\n if (data.vision_min_range !== undefined) gameStore.setVisionRangeMin({ value: data.vision_min_range, sync: false });\n if (data.vision_max_range !== undefined) gameStore.setVisionRangeMax({ value: data.vision_max_range, sync: false });\n if (data.vision_mode !== undefined) {\n gameStore.setVisionMode({ mode: data.vision_mode, sync: false });\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n }\n});\nsocket.on(\"Position.Set\", (data: { x: number; y: number }) => {\n gameManager.setCenterPosition(new GlobalPoint(data.x, data.y));\n});\nsocket.on(\"Notes.Set\", (notes: Note[]) => {\n for (const note of notes) gameStore.newNote({ note, sync: false });\n});\nsocket.on(\"Asset.List.Set\", (assets: AssetList) => {\n gameStore.setAssets(assets);\n});\nsocket.on(\"Board.Set\", (locationInfo: BoardInfo) => {\n gameStore.clear();\n gameStore.setLocations(locationInfo.locations);\n document.getElementById(\"layers\")!.innerHTML = \"\";\n gameStore.resetLayerInfo();\n layerManager.reset();\n for (const layer of locationInfo.layers) createLayer(layer);\n // Force the correct opacity render on other layers.\n layerManager.selectLayer(layerManager.getLayer()!.name, false);\n EventBus.$emit(\"Initiative.Clear\");\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n gameStore.setBoardInitialized(true);\n});\nsocket.on(\"Gridsize.Set\", (gridSize: number) => {\n gameStore.setGridSize({ gridSize, sync: false });\n});\nsocket.on(\"Shape.Add\", (shape: ServerShape) => {\n gameManager.addShape(shape);\n});\nsocket.on(\"Shape.Remove\", (shape: ServerShape) => {\n if (!layerManager.UUIDMap.has(shape.uuid)) {\n console.log(`Attempted to remove an unknown shape`);\n return;\n }\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${shape.layer}`);\n return;\n }\n const layer = layerManager.getLayer(shape.layer)!;\n layer.removeShape(layerManager.UUIDMap.get(shape.uuid)!, false);\n layer.invalidate(false);\n});\nsocket.on(\"Shape.Order.Set\", (data: { shape: ServerShape; index: number }) => {\n if (!layerManager.UUIDMap.has(data.shape.uuid)) {\n console.log(`Attempted to move the shape order of an unknown shape`);\n return;\n }\n if (!layerManager.hasLayer(data.shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${data.shape.layer}`);\n return;\n }\n const shape = layerManager.UUIDMap.get(data.shape.uuid)!;\n const layer = layerManager.getLayer(shape.layer)!;\n layer.moveShapeOrder(shape, data.index, false);\n});\nsocket.on(\"Shape.Layer.Change\", (data: { uuid: string; layer: string }) => {\n const shape = layerManager.UUIDMap.get(data.uuid);\n if (shape === undefined) return;\n shape.moveLayer(data.layer, false);\n});\nsocket.on(\"Shape.Update\", (data: { shape: ServerShape; redraw: boolean; move: boolean, temporary: boolean }) => {\n gameManager.updateShape(data);\n});\nsocket.on(\"Temp.Clear\", (shapes: ServerShape[]) => {\n shapes.forEach(shape => {\n if (!layerManager.UUIDMap.has(shape.uuid)) {\n console.log(\"Attempted to remove an unknown temporary shape\");\n return;\n }\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${shape.layer}`);\n return;\n }\n const realShape = layerManager.UUIDMap.get(shape.uuid)!;\n layerManager.getLayer(shape.layer)!.removeShape(realShape, false);\n });\n});\nsocket.on(\"Labels.Set\", (labels: Label[]) => {\n for (const label of labels) gameStore.addLabel(label);\n});\nsocket.on(\"Label.Visibility.Set\", (data: { user: string; uuid: string; visible: boolean }) => {\n gameStore.setLabelVisibility(data);\n});\nsocket.on(\"Label.Add\", (data: Label) => {\n gameStore.addLabel(data);\n});\nsocket.on(\"Label.Delete\", (data: { user: string; uuid: string }) => {\n gameStore.deleteLabel(data);\n});\nsocket.on(\"Labels.Filter.Add\", (uuid: string) => {\n gameStore.labelFilters.push(uuid);\n layerManager.invalidate();\n})\nsocket.on(\"Labels.Filter.Remove\", (uuid: string) => {\n const idx = gameStore.labelFilters.indexOf(uuid);\n if (idx >= 0) {\n gameStore.labelFilters.splice(idx, 1);\n layerManager.invalidate();\n }\n})\nsocket.on(\"Labels.Filters.Set\", (filters: string[]) => {\n gameStore.setLabelFilters(filters);\n})\n"],"sourceRoot":""} \ No newline at end of file diff --git a/server/static/js/app.2dfde930.js b/server/static/js/app.2dfde930.js new file mode 100644 index 000000000..30179d6bd --- /dev/null +++ b/server/static/js/app.2dfde930.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var s,r,a=t[0],l=t[1],c=t[2],d=0,h=[];de.fillText(t.text,t.x,t.y)),e.restore()}contains(e){return!1}center(e){}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){}getMaxHeight(e){const t=this.getLines(e),i=30;return i*t.length}getMaxWidth(e){const t=this.getLines(e),i=t.map(t=>e.measureText(t.text).width);return Math.max(...i)}getLines(e){const t=this.text.split("\n"),i=[],s=e.canvas.width,n=30,o=0;let r=0;for(const a of t){let t="";const l=a.split(" ");for(const a of l){const l=t+a+" ",c=e.measureText(l),u=c.width;u>s?(e.fillText(t,o,r),i.push({text:t,x:o,y:r}),t=a+" ",r+=n):t=l}i.push({text:t,x:o,y:r}),r+=n}return i}}t.Text=r},"033f":function(e,t,i){"use strict";i.r(t);var s=i("da7f"),n=i("a68b");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("a83f");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"6c66d243",null);t["default"]=a.exports},"034f":function(e,t,i){"use strict";var s=i("64a9"),n=i.n(s);n.a},"0525":function(e,t,i){},"0584":function(e,t,i){"use strict";var s=i("de21"),n=i.n(s);n.a},"0634":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("c345a"),l=i("60a3");let c=class extends o.default{constructor(){super(...arguments),this.display=!1,this.left=0,this.top=0,this.transparent=!1}mounted(){this.transparent=0===this.$refs.chromePicker.val.rgba.a,this.setPosition()}open(){this.display||this.disabled||(this.setPosition(),this.display=!0,this.$nextTick(()=>this.$children[0].$el.focus()))}updateColor(e){this.transparent=0===e.rgba.a;const t=n.default(e.rgba).toRgbString();this.$emit("update:color",t),this.$emit("input",t)}closePicker(){this.display=!1,this.$emit("change",this.color)}setPosition(){const e=this.$el.getBoundingClientRect();e.right+224>window.innerWidth?this.left=e.left-224:this.left=e.right,e.bottom+242>window.innerHeight?this.top=e.top-242:this.top=e.bottom}};s.__decorate([l.Prop(String)],c.prototype,"color",void 0),s.__decorate([l.Prop(Boolean)],c.prototype,"disabled",void 0),c=s.__decorate([r.default({components:{"chrome-picker":a.Chrome}})],c),t.default=c},"07f5":function(e,t,i){"use strict";i.r(t);var s=i("69fb"),n=i("d588");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("561b"),i("e6c4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"3d0578ba",null);t["default"]=a.exports},"0bc6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("8055"));function o(e){t.socket.io.opts.query=`user=${decodeURIComponent(e.params.creator)}&room=${decodeURIComponent(e.params.room)}`,t.socket.connect()}t.socket=n.default(location.protocol+"//"+location.host+"/planarally",{autoConnect:!1}),t.createConnection=o},"0cf7":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("4aec")),a=s.__importDefault(i("a535")),l=s.__importDefault(i("cec2")),c=i("5338"),u=i("2d5b"),d=i("4a5b");let h=class extends n.default{constructor(){super(...arguments),this.path=[],this.draggingSelection=!1}get folders(){return u.assetStore.folders}get files(){return u.assetStore.files}get selected(){return u.assetStore.selected}get idMap(){return u.assetStore.idMap}get currentFolder(){return this.path.length?this.path[this.path.length-1]:u.assetStore.root}get parentFolder(){let e=this.path[this.path.length-2];return void 0===e&&(e=u.assetStore.root),e}get firstSelectedFile(){for(const e of u.assetStore.selected)if(u.assetStore.idMap.get(e).file_hash)return u.assetStore.idMap.get(e);return null}changeDirectory(e){e<0?this.path.pop():this.path.push(e),u.assetStore.clearSelected(),c.socket.emit("Folder.Get",this.currentFolder)}createDirectory(){const e=window.prompt("New folder name");null!==e&&c.socket.emit("Folder.Create",{name:e,parent:this.currentFolder})}moveInode(e,t){u.assetStore.files.includes(e)?u.assetStore.files.splice(u.assetStore.files.indexOf(e),1):u.assetStore.folders.splice(u.assetStore.folders.indexOf(e),1),u.assetStore.idMap.delete(e),c.socket.emit("Inode.Move",{inode:e,target:t})}select(e,t){if(e.shiftKey&&u.assetStore.selected.length>0){const e=[...u.assetStore.files,...u.assetStore.folders],i=e.indexOf(u.assetStore.selected[u.assetStore.selected.length-1]),s=e.indexOf(t);for(let t=i;t!==s;i0&&this.upload(e.dataTransfer.files,t);this.draggingSelection=!1}prepareUpload(){document.getElementById("files").click()}upload(e,t){const i=document.getElementById("files").files;if(void 0===e){if(!i)return;e=i}void 0===t&&(t=this.currentFolder);const s=1e5;for(const n of e){const e=d.uuidv4(),i=Math.ceil(n.size/s);for(let o=0;o{c.socket.emit("Asset.Upload",{name:n.name,directory:t,data:r.result,slice:o,totalSlices:i,uuid:e})}}}}};h=s.__decorate([o.default({components:{Prompt:l.default,ConfirmDialog:a.default,AssetContextMenu:r.default},beforeRouteEnter(e,t,i){c.socket.connect(),i()},beforeRouteLeave(e,t,i){c.socket.disconnect(),i()}})],h),t.default=h},"0ddd":function(e,t,i){"use strict";i.r(t);var s=i("8f54"),n=i("4bc3");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("9dd4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"6d718094",null);t["default"]=a.exports},1:function(e,t){},1077:function(e,t,i){"use strict";i.r(t);var s=i("f994"),n=i("1eee");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("3cd3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"bc30fc14",null);t["default"]=a.exports},1131:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Initiative")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("draggable",{attrs:{id:"initiative-list",setData:e.fakeSetData,disabled:!e.$store.state.game.IS_DM},on:{change:e.updateOrder},model:{value:e.data,callback:function(t){e.data=t},expression:"data"}},[e._l(e.data,function(t){return[i("div",{key:t.uuid,staticStyle:{display:"flex","flex-direction":"column","align-items":"flex-end"}},[i("div",{staticClass:"initiative-actor",class:{"initiative-selected":e.currentActor===t.uuid},style:{cursor:e.$store.state.game.IS_DM&&"move"},on:{mouseenter:function(i){return e.toggleHighlight(t,!0)},mouseleave:function(i){return e.toggleHighlight(t,!1)}}},[t.has_img?[i("img",{attrs:{src:t.source,width:"30px",height:"30px"}})]:[i("span",{staticStyle:{width:"auto"}},[e._v(e._s(t.source))])],i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:t.initiative,expression:"actor.initiative",modifiers:{lazy:!0,number:!0}}],class:{notAllowed:!e.owns(t)},attrs:{type:"text",placeholder:"value",disabled:!e.owns(t)},domProps:{value:t.initiative},on:{change:[function(i){e.$set(t,"initiative",e._n(i.target.value))},function(i){return e.syncInitiative(t)}],blur:function(t){return e.$forceUpdate()}}}),i("div",{staticClass:"initiative-effects-icon",class:{notAllowed:!e.owns(t)},staticStyle:{opacity:"0.6"},on:{click:function(i){e.createEffect(t,e.getDefaultEffect(),!0)}}},[i("i",{staticClass:"fas fa-stopwatch"}),t.effects?[e._v(e._s(t.effects.length))]:[e._v("0")]],2),i("div",{class:{notAllowed:!e.owns(t)},style:{opacity:t.visible?"1.0":"0.3"},on:{click:function(i){return e.toggleOption(t,"visible")}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{class:{notAllowed:!e.owns(t)},style:{opacity:t.group?"1.0":"0.3"},on:{click:function(i){return e.toggleOption(t,"group")}}},[i("i",{staticClass:"fas fa-users"})]),i("div",{class:{notAllowed:!e.owns(t)},style:{opacity:e.owns(t)?"1.0":"0.3"},on:{click:function(i){return e.removeInitiative(t.uuid,!0,!0)}}},[i("i",{staticClass:"fas fa-trash-alt"})])],2),t.effects?i("div",{staticClass:"initiative-effect"},e._l(t.effects,function(s){return i("div",{key:s.uuid},[i("input",{directives:[{name:"model",rawName:"v-model",value:s.name,expression:"effect.name"}],attrs:{type:"text",size:s.name.length||1},domProps:{value:s.name},on:{change:function(i){return e.updateEffect(t.uuid,s,!0)},input:function(t){t.target.composing||e.$set(s,"name",t.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model",value:s.turns,expression:"effect.turns"}],attrs:{type:"text",size:s.turns.toString().length||1},domProps:{value:s.turns},on:{change:function(i){return e.updateEffect(t.uuid,s,!0)},input:function(t){t.target.composing||e.$set(s,"turns",t.target.value)}}})])}),0):e._e()])]})],2),i("div",{attrs:{id:"initiative-bar"}},[i("div",{attrs:{id:"initiative-round"}},[e._v("Round "+e._s(e.roundCounter))]),i("div",{staticStyle:{display:"flex"}}),i("div",{staticClass:"initiative-bar-button",style:e.visionLock?"background-color: #82c8a0":"",on:{click:e.toggleVisionLock}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{staticClass:"initiative-bar-button",style:e.cameraLock?"background-color: #82c8a0":"",on:{click:function(t){e.cameraLock=!e.cameraLock}}},[i("i",{staticClass:"fas fa-video"})]),i("div",{staticClass:"initiative-bar-button",class:{notAllowed:!e.$store.state.game.IS_DM},on:{click:function(t){e.setRound(0,!0),e.updateTurn(e.data[0].uuid,!0)}}},[i("i",{staticClass:"fas fa-sync-alt"})]),i("div",{staticClass:"initiative-bar-button",class:{notAllowed:!e.$store.state.game.IS_DM},on:{click:e.nextTurn}},[i("i",{staticClass:"fas fa-chevron-right"})])])],1)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},1216:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("6f92"),n=i("92b1"),o=i("98ef"),r=i("4aee");function a(e,t){const i=s.layerManager.getLayer("draw");if(void 0===i)return;const o=i.ctx;o.lineJoin="round",o.lineJoin="round",o.beginPath(),o.strokeStyle=void 0===t?`rgb(${255*Math.random()}, ${255*Math.random()}, ${255*Math.random()})`:t,o.moveTo(n.g2lx(e[0][0]),n.g2ly(e[0][1]));for(const s of e)o.lineTo(n.g2lx(s[0]),n.g2ly(s[1]));o.closePath(),o.stroke()}function l(e,t){const i=s.layerManager.getLayer("draw");if(void 0===i)return;const n=i.ctx;n.lineJoin="round",n.lineJoin="round",n.beginPath(),n.strokeStyle=void 0===t?`rgb(${255*Math.random()}, ${255*Math.random()}, ${255*Math.random()})`:t,n.moveTo(e[0][0],e[0][1]);for(const s of e)n.lineTo(s[0],s[1]);n.closePath(),n.stroke()}function c(e,t){return t?e:n.g2lx(e)}function u(e,t){return t?e:n.g2ly(e)}t.drawPolygon=a,t.drawPolygonL=l;let d=0,h=0;function f(e,t,i,s,n){e.beginPath(),e.strokeStyle=s?"rgba(255, 0, 0, 0.30)":"rgba(0, 0, 0, 0.30)",e.moveTo(c(t[0],n),u(t[1],n)),e.lineTo(c(i[0],n),u(i[1],n)),e.closePath(),e.stroke()}function p(e,t=!0,i=!0,n=0){d=0,h=0;let a=0;const l=s.layerManager.getLayer("draw");if(void 0===l)return;const p=l.ctx;i&&p.clearRect(0,0,2e3,1e3),p.lineJoin="round",p.lineJoin="round";const g=new o.EdgeIterator(e);while(g.valid)g.next(),g.collect();g.collect();do{const e=g.edge.first.vertices[r.ccw(g.edge.second)].point,t=g.edge.first.vertices[r.cw(g.edge.second)].point;if(n>0){if(e[0]===-1/0||t[0]===-1/0){g.next();continue}h++,g.edge.first.constraints[g.edge.second]?(d++,2===n&&console.log(`Edge: (*) ${e} > ${t}`)):2===n&&console.log(`Edge: ${e} > ${t}`)}do{g.next(),g.collect()}while(g.valid)}while(null!==g.pos);for(const s of e.triangles){if(s.isInfinite())continue;a++;const e=[];p.fillStyle="red",void 0!==s.vertices[0]&&(e.push(s.vertices[0].point),p.beginPath(),p.arc(c(s.vertices[0].point[0],t),u(s.vertices[0].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),void 0!==s.vertices[1]&&(e.push(s.vertices[1].point),p.arc(c(s.vertices[1].point[0],t),u(s.vertices[1].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),void 0!==s.vertices[2]&&(e.push(s.vertices[2].point),p.arc(c(s.vertices[2].point[0],t),u(s.vertices[2].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),2===n&&console.log("[T] ",...e,s.constraints),p.moveTo(c(s.vertices[0].point[0],t),u(s.vertices[0].point[1],t)),void 0!==s.vertices[0]&&void 0!==s.vertices[1]&&f(p,s.vertices[0].point,s.vertices[1].point,s.constraints[2],t),void 0!==s.vertices[1]&&void 0!==s.vertices[2]&&f(p,s.vertices[1].point,s.vertices[2].point,s.constraints[0],t),void 0!==s.vertices[2]&&void 0!==s.vertices[0]&&f(p,s.vertices[2].point,s.vertices[0].point,s.constraints[1],t)}n>0&&(console.log(`Edges: ${d}/${h}`),console.log(`Faces: ${a}`))}window.DP=a,window.DPL=l,window.DPT=p},1289:function(e,t,i){"use strict";i.r(t);var s=i("df64"),n=i("d677");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("8790");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"0bf2b7ba",null);t["default"]=a.exports},"12d3":function(e,t,i){"use strict";var s=i("a260"),n=i.n(s);n.a},1327:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importStar(i("66cb")),o=i("4a5b"),r=i("4709"),a=i("f10f"),l=i("92b1");class c extends r.Circle{constructor(e,t,i,s,n,o,r){super(e,t,n,o,r),this.type="circulartoken",this.text=i,this.font=s}asDict(){return Object.assign(this.getBaseDict(),{radius:this.r,text:this.text,font:this.font})}fromDict(e){super.fromDict(e),this.r=e.radius,this.text=e.text,this.font=e.font}draw(e){super.draw(e),e.font=this.font,e.save();const t=l.g2l(this.center());e.textAlign="center",e.textBaseline="middle";const i=o.calcFontScale(e,this.text,l.g2lz(this.r),l.g2lz(this.r)),s=0;e.transform(i,s,-s,i,t.x,t.y),e.fillStyle=n.mostReadable(this.fillColour,["#000","#fff"]).toHexString(),e.fillText(this.text,0,0),e.restore()}getInitiativeRepr(){return{uuid:this.uuid,visible:!a.gameStore.IS_DM,group:!1,source:""===this.name||"Unknown shape"===this.name?this.text:this.name,has_img:!1,effects:[],index:1/0}}}t.CircularToken=c},1625:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("b2ed"),r=i("0180"),a=i("f10f"),l=i("92b1");class c{constructor(){this.shown=!1;const e=new s.GlobalPoint(0,0);this.annotationText=new r.Text(e,"","bold 20px serif",0,"rgba(230, 230, 230, 1)"),this.annotationRect=new o.Rect(e,0,0,"rgba(0, 0, 0, 0.6)")}setActiveText(e){if(void 0===this.layer){if(!n.layerManager.hasLayer("draw"))return void console.warn("There is no draw layer to draw annotations on!");this.layer=n.layerManager.getLayer("draw"),this.layer.addShape(this.annotationRect,!1),this.layer.addShape(this.annotationText,!1)}this.shown=""!==e,this.annotationText.refPoint=l.l2g(new s.LocalPoint(this.layer.canvas.width/2,50)),this.annotationText.text=e;const t=this.shown?this.annotationText.getMaxWidth(this.layer.ctx)+10:0,i=this.shown?this.annotationText.getMaxHeight(this.layer.ctx)+10:0;this.annotationRect.refPoint=l.l2g(new s.LocalPoint(this.layer.canvas.width/2-t/2,30)),this.annotationRect.w=t/a.gameStore.zoomFactor,this.annotationRect.h=i/a.gameStore.zoomFactor,this.layer.invalidate(!0)}}t.AnnotationManager=c},"19f9":function(e,t,i){"use strict";i.r(t);var s=i("264b"),n=i("8cd4");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("314d");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"c7fe324c",null);t["default"]=a.exports},"1c76":function(e,t,i){"use strict";i.r(t);var s=i("2c88"),n=i("300e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("7f1e");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},"1dd6":function(e,t,i){"use strict";i.r(t);var s=i("5ae5"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"1eee":function(e,t,i){"use strict";i.r(t);var s=i("d30b"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"1fd5":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Label manager")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("div",{staticClass:"grid"},[i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Category"}},[e._v("Cat.")])]),i("div",{staticClass:"header name"},[e._v("Name")]),i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Visible"}},[e._v("Vis.")])]),i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Delete"}},[e._v("Del.")])]),i("div",{staticClass:"separator spanrow",staticStyle:{margin:"0 0 7px"}}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.search,expression:"search"}],ref:"search",staticClass:"spanrow",attrs:{type:"text",placeholder:"search"},domProps:{value:e.search},on:{input:function(t){t.target.composing||(e.search=t.target.value)}}})]),i("div",{staticClass:"grid scroll"},[e._l(e.categories,function(t){return[e._l(e.labels[t],function(t){return[i("div",{key:"row-"+t.uuid,staticClass:"row",on:{click:function(i){return e.selectLabel(t.uuid)}}},[t.category?[i("div",{key:"cat-"+t.uuid},[e._v(e._s(t.category))]),i("div",{key:"name-"+t.uuid,staticClass:"name"},[e._v(e._s(t.name))])]:e._e(),t.category?e._e():[i("div",{key:"cat-"+t.uuid}),i("div",{key:"name-"+t.uuid,staticClass:"name"},[e._v(e._s(t.name))])],i("div",{key:"visible-"+t.uuid,class:{"lower-opacity":!t.visible},style:{textAlign:"center"},on:{click:function(i){return i.stopPropagation(),e.toggleVisibility(t)}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{key:"delete-"+t.uuid,on:{click:function(i){return i.stopPropagation(),e.deleteLabel(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})])],2)]})]}),0===e.labels.length?[i("div",{attrs:{id:"no-labels"}},[e._v("No labels exist yet")])]:e._e()],2),i("div",{staticClass:"grid"},[i("div",{staticClass:"separator spanrow"}),i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.newCategory,expression:"newCategory",modifiers:{trim:!0}}],attrs:{type:"text"},domProps:{value:e.newCategory},on:{input:function(t){t.target.composing||(e.newCategory=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}}),i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.newName,expression:"newName",modifiers:{trim:!0}}],attrs:{type:"text"},domProps:{value:e.newName},on:{input:function(t){t.target.composing||(e.newName=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}}),i("button",{attrs:{id:"addLabelButton"},on:{click:function(t){return t.stopPropagation(),e.addLabel(t)}}},[e._v("Add")])])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"206a":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("6c30"),r=i("4709"),a=i("1327"),l=i("5e7c"),c=i("574e"),u=i("b2ed"),d=i("0180"),h=i("e4ea");function f(e){let t;const i=new s.GlobalPoint(e.x,e.y);if("rect"===e.type_){const s=e;t=new u.Rect(i,s.width,s.height,s.fill_colour,s.stroke_colour,s.uuid)}else if("circle"===e.type_){const s=e;t=new r.Circle(i,s.radius,s.fill_colour,s.stroke_colour,s.uuid)}else if("circulartoken"===e.type_){const s=e;t=new a.CircularToken(i,s.radius,s.text,s.font,s.fill_colour,s.stroke_colour,s.uuid)}else if("line"===e.type_){const n=e;t=new l.Line(i,new s.GlobalPoint(n.x2,n.y2),n.line_width,n.stroke_colour,n.uuid)}else if("multiline"===e.type_){const n=e;t=new c.MultiLine(i,n.points.map(e=>new s.GlobalPoint(e.x,e.y)),n.line_width,n.stroke_colour,n.uuid)}else if("polygon"===e.type_){const n=e;t=new h.Polygon(i,n.vertices.map(e=>new s.GlobalPoint(e.x,e.y)),n.fill_colour,n.stroke_colour,n.uuid)}else if("text"===e.type_){const s=e;t=new d.Text(i,s.text,s.font,s.angle,s.fill_colour,s.stroke_colour,s.uuid)}else{if("assetrect"!==e.type_)return;{const s=e,r=new Image(s.width,s.height);s.src.startsWith("http")?r.src=new URL(s.src).pathname:r.src=s.src,t=new o.Asset(r,i,s.width,s.height,s.uuid),r.onload=()=>{n.layerManager.getLayer(e.layer).invalidate(!1)}}}return t.fromDict(e),t}t.createShapeFromDict=f},"208e":function(e,t,i){"use strict";i.r(t);var s=i("27ae"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"223d":function(e,t,i){"use strict";var s=i("e756"),n=i.n(s);n.a},"22bd":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("SelectContext",{ref:"selectcontext"})},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2380:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,colour:"rgba(255, 255, 255, 0.8)",mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("DM Settings")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body",on:{click:e.handleClick}},[i("div",{attrs:{id:"categories"}},e._l(e.categories,function(t,s){return i("div",{key:t,staticClass:"category",class:{selected:e.selection===s},on:{click:function(t){e.selection=s}}},[e._v(e._s(t))])}),0),i("div",{directives:[{name:"show",rawName:"v-show",value:0===e.selection,expression:"selection === 0"}],staticClass:"panel"},[i("div",{staticClass:"spanrow header"},[e._v("Players")]),e._l(e.$store.state.game.players,function(t){return i("div",{key:t.id,staticClass:"row smallrow"},[i("div",[e._v(e._s(t.name))]),i("div",[i("div",{on:{click:function(i){return e.kickPlayer(t.id)}}},[e._v("Kick")])])])}),0===Object.values(e.$store.state.game.players).length?i("div",{staticClass:"row smallrow"},[i("div",{staticClass:"spanrow"},[e._v("There are no players yet, invite some using the link below!")])]):e._e(),i("div",{staticClass:"spanrow header"},[e._v("Invite code")]),i("div",{staticClass:"row"},[i("div",[e._v("Invitation URL:")]),e.showRefreshState?[i("InputCopyElement",{attrs:{value:e.refreshState}})]:[i("InputCopyElement",{attrs:{value:e.invitationUrl}})]],2),i("div",{staticClass:"row",on:{click:e.refreshInviteCode}},[i("div"),i("div",[i("button",[e._v("Refresh invitation code")])])]),i("div",{staticClass:"spanrow header"},[e._v("Danger Zone")]),i("div",{staticClass:"row"},[i("div",[e.locked?[e._v("Unlock")]:[e._v("Lock")],e._v(" Session "),i("i",[e._v("(DM access only)")])],2),i("div",[i("button",{staticClass:"danger",on:{click:e.toggleSessionLock}},[e.locked?[e._v("Unlock")]:[e._v("Lock")],e._v(" this Session")],2)])]),i("div",{staticClass:"row"},[i("div",[e._v("Remove Session")]),i("div",[i("button",{staticClass:"danger",on:{click:e.deleteSession}},[e._v("Delete this Session")])])])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:1===e.selection,expression:"selection === 1"}],staticClass:"panel"},[i("div",{staticClass:"row"},[i("label",{attrs:{for:"useGridInput"}},[e._v("Use grid")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.useGrid,expression:"useGrid"}],attrs:{id:"useGridInput",type:"checkbox"},domProps:{checked:Array.isArray(e.useGrid)?e._i(e.useGrid,null)>-1:e.useGrid},on:{change:function(t){var i=e.useGrid,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.useGrid=i.concat([o])):r>-1&&(e.useGrid=i.slice(0,r).concat(i.slice(r+1)))}else e.useGrid=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"gridSizeInput"}},[e._v("Grid Size (in pixels):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.gridSize,expression:"gridSize",modifiers:{number:!0}}],attrs:{id:"gridSizeInput",type:"number",min:"0"},domProps:{value:e.gridSize},on:{input:function(t){t.target.composing||(e.gridSize=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"unitSizeInput"}},[e._v("Unit Size (in ft.):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.unitSize,expression:"unitSize",modifiers:{number:!0}}],attrs:{id:"unitSizeInput",type:"number"},domProps:{value:e.unitSize},on:{input:function(t){t.target.composing||(e.unitSize=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])])]),i("div",{directives:[{name:"show",rawName:"v-show",value:2===e.selection,expression:"selection === 2"}],staticClass:"panel"},[i("div",{staticClass:"spanrow header"},[e._v("Core")]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fakePlayerInput"}},[e._v("Fake player:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fakePlayer,expression:"fakePlayer"}],attrs:{id:"fakePlayerInput",type:"checkbox"},domProps:{checked:Array.isArray(e.fakePlayer)?e._i(e.fakePlayer,null)>-1:e.fakePlayer},on:{change:function(t){var i=e.fakePlayer,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fakePlayer=i.concat([o])):r>-1&&(e.fakePlayer=i.slice(0,r).concat(i.slice(r+1)))}else e.fakePlayer=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"useFOWInput"}},[e._v("Fill entire canvas with FOW:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fullFOW,expression:"fullFOW"}],attrs:{id:"useFOWInput",type:"checkbox"},domProps:{checked:Array.isArray(e.fullFOW)?e._i(e.fullFOW,null)>-1:e.fullFOW},on:{change:function(t){var i=e.fullFOW,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fullFOW=i.concat([o])):r>-1&&(e.fullFOW=i.slice(0,r).concat(i.slice(r+1)))}else e.fullFOW=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fowLOS"}},[e._v("Only show lights in LoS:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fowLOS,expression:"fowLOS"}],attrs:{id:"fowLOS",type:"checkbox"},domProps:{checked:Array.isArray(e.fowLOS)?e._i(e.fowLOS,null)>-1:e.fowLOS},on:{change:function(t){var i=e.fowLOS,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fowLOS=i.concat([o])):r>-1&&(e.fowLOS=i.slice(0,r).concat(i.slice(r+1)))}else e.fowLOS=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fowOpacity"}},[e._v("FOW opacity:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.fowOpacity,expression:"fowOpacity",modifiers:{number:!0}}],attrs:{id:"fowOpacity",type:"number",min:"0",max:"1",step:"0.1"},domProps:{value:e.fowOpacity},on:{input:function(t){t.target.composing||(e.fowOpacity=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"spanrow header"},[e._v("Advanced")]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"visionMode"}},[e._v("Vision Mode:")]),i("div",[i("select",{attrs:{id:"visionMode"},on:{change:e.changeVisionMode}},[i("option",{domProps:{selected:"bvh"===e.$store.state.game.visionMode}},[e._v("BVH")]),i("option",{domProps:{selected:"triangle"===e.$store.state.game.visionMode}},[e._v("Triangle")])])])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"vmininp"}},[e._v("Minimal full vision (ft):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:e.visionRangeMin,expression:"visionRangeMin",modifiers:{lazy:!0,number:!0}}],attrs:{id:"vmininp",type:"number",min:"0"},domProps:{value:e.visionRangeMin},on:{change:function(t){e.visionRangeMin=e._n(t.target.value)},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"vmaxinp"}},[e._v("Maximal vision (ft):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:e.visionRangeMax,expression:"visionRangeMax",modifiers:{lazy:!0,number:!0}}],attrs:{id:"vmaxinp",type:"number",min:"0"},domProps:{value:e.visionRangeMax},on:{change:function(t){e.visionRangeMax=e._n(t.target.value)},blur:function(t){return e.$forceUpdate()}}})])])])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2469:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=i("4a5b"),r=i("0bc6"),a=i("f312"),l=i("8f0a"),c=i("6f92"),u=i("f10f"),d=i("92b1");class h{constructor(e,t,i,s){this.fillColour="#000",this.strokeColour="rgba(0,0,0,0)",this.name="Unknown shape",this.nameVisible=!0,this.trackers=[],this.auras=[],this.labels=[],this._owners=[],this.visionObstruction=!1,this.movementObstruction=!1,this.isToken=!1,this.showHighlight=!1,this.annotation="",this.globalCompositeOperation="source-over",this.options=new Map,this._refPoint=e,this.uuid=s||o.uuidv4(),void 0!==t&&(this.fillColour=t),void 0!==i&&(this.strokeColour=i)}get refPoint(){return this._refPoint}set refPoint(e){this._refPoint=e}visibleInCanvas(e){return!1}getPointIndex(e,t=0){for(const[i,s]of this.points.entries())if(Math.abs(e.x-s[0])<=t&&Math.abs(e.y-s[1])<=t)return i;return-1}getPointOrientation(e){const t=l.GlobalPoint.fromArray(this.points[(this.points.length+e-1)%this.points.length]),i=l.GlobalPoint.fromArray(this.points[e]),s=l.GlobalPoint.fromArray(this.points[(e+1)%this.points.length]),n=s.subtract(t),o=t.add(n.multiply(.5));return i.subtract(o).normalize()}invalidate(e){const t=c.layerManager.getLayer(this.layer);t&&t.invalidate(e)}checkVisionSources(e=!0){const t=this,i=u.gameStore.visionBlockers.indexOf(this.uuid);let s=!1;this.visionObstruction&&-1===i?(u.gameStore.visionBlockers.push(this.uuid),s=!0):!this.visionObstruction&&i>=0&&(u.gameStore.visionBlockers.splice(i,1),s=!0),s&&e&&u.gameStore.recalculateVision(),this.auras.forEach(e=>{const i=u.gameStore.visionSources,s=i.findIndex(t=>t.aura===e.uuid);e.visionSource&&-1===s?i.push({shape:t.uuid,aura:e.uuid}):!e.visionSource&&s>=0&&i.splice(s,1)});for(let n=u.gameStore.visionSources.length-1;n>=0;n--){const e=u.gameStore.visionSources[n];e.shape===t.uuid&&(t.auras.some(t=>t.uuid===e.aura&&t.visionSource)||u.gameStore.visionSources.splice(n,1))}}setMovementBlock(e,t=!0){this.movementObstruction=e||!1;const i=u.gameStore.movementblockers.indexOf(this.uuid);let s=!1;this.movementObstruction&&-1===i?(u.gameStore.movementblockers.push(this.uuid),s=!0):!this.movementObstruction&&i>=0&&(u.gameStore.movementblockers.splice(i,1),s=!0),s&&t&&u.gameStore.recalculateMovement()}setIsToken(e){if(this.isToken=e,this.ownedBy()){const e=u.gameStore.ownedtokens.indexOf(this.uuid);this.isToken&&-1===e?u.gameStore.ownedtokens.push(this.uuid):!this.isToken&&e>=0&&u.gameStore.ownedtokens.splice(e,1)}}getBaseDict(){return{type_:this.type,uuid:this.uuid,x:this.refPoint.x,y:this.refPoint.y,layer:this.layer,draw_operator:this.globalCompositeOperation,movement_obstruction:this.movementObstruction,vision_obstruction:this.visionObstruction,auras:a.aurasToServer(this.auras),trackers:this.trackers,labels:this.labels,owners:this._owners,fill_colour:this.fillColour,stroke_colour:this.strokeColour,name:this.name,name_visible:this.nameVisible,annotation:this.annotation,is_token:this.isToken,options:JSON.stringify([...this.options])}}fromDict(e){this.layer=e.layer,this.globalCompositeOperation=e.draw_operator,this.movementObstruction=e.movement_obstruction,this.visionObstruction=e.vision_obstruction,this.auras=a.aurasFromServer(e.auras),this.trackers=e.trackers,this.labels=e.labels,this._owners=e.owners,this.isToken=e.is_token,this.nameVisible=e.name_visible,e.annotation&&(this.annotation=e.annotation),e.name&&(this.name=e.name),e.options&&(this.options=new Map(JSON.parse(e.options)))}draw(e){if(void 0!==this.globalCompositeOperation?e.globalCompositeOperation=this.globalCompositeOperation:e.globalCompositeOperation="source-over",this.showHighlight){const t=this.getBoundingBox();e.strokeStyle="red",e.strokeRect(d.g2lx(t.topLeft.x)-5,d.g2ly(t.topLeft.y)-5,d.g2lz(t.w)+10,d.g2lz(t.h)+10)}}drawAuras(e){for(const i of this.auras){if(0===i.value&&0===i.dim)return;e.beginPath();const s=d.g2l(this.center()),o=d.g2lr(i.value+i.dim);if(0===i.dim)e.fillStyle=i.colour;else{const t=e.createRadialGradient(s.x,s.y,d.g2lr(i.value),s.x,s.y,d.g2lr(i.value+i.dim)),o=n.default(i.colour);e.fillStyle=t,t.addColorStop(0,i.colour),t.addColorStop(1,o.setAlpha(0).toRgbString())}if(i.visionSource&&void 0!==i.lastPath)try{e.fill(i.lastPath)}catch(t){e.arc(s.x,s.y,o,0,2*Math.PI),e.fill(),console.warn(t)}else e.arc(s.x,s.y,o,0,2*Math.PI),e.fill()}}getInitiativeRepr(){return{uuid:this.uuid,visible:!u.gameStore.IS_DM,group:!1,source:this.name,has_img:!1,effects:[],index:1/0}}moveLayer(e,t){const i=c.layerManager.getLayer(this.layer),s=c.layerManager.getLayer(e);void 0!==i&&void 0!==s&&(this.layer=e,i.shapes.splice(i.shapes.indexOf(this),1),s.shapes.push(this),i.invalidate(!0),s.invalidate(!1),t&&r.socket.emit("Shape.Layer.Change",{uuid:this.uuid,layer:e}))}get owners(){return Object.freeze(this._owners.slice())}ownedBy(e){return void 0===e&&(e=u.gameStore.username),u.gameStore.IS_DM||this._owners.includes(e)||u.gameStore.FAKE_PLAYER&&u.gameStore.activeTokens.includes(this.uuid)}addOwner(e){this._owners.includes(e)||this._owners.push(e)}updateOwner(e,t){const i=this._owners.findIndex(t=>t===e);i>=0?this._owners.splice(i,1,t):this.addOwner(t)}removeOwner(e){const t=this._owners.findIndex(t=>t===e);this._owners.splice(t,1)}}t.Shape=h},"255e":function(e,t,i){"use strict";i.r(t);var s=i("851c"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"264b":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"menuContainer"}},[i("div",{ref:"rm",style:{left:e.visible.settings?"200px":"0",top:e.visible.locations?"100px":"0"},attrs:{id:"radialmenu"}},[i("div",{staticClass:"rm-wrapper"},[i("div",{staticClass:"rm-toggler"},[i("ul",{staticClass:"rm-list",class:{"rm-list-dm":e.IS_DM}},[e.IS_DM?i("li",{staticClass:"rm-item",attrs:{id:"rm-locations"},on:{click:function(t){e.visible.locations=!e.visible.locations}}},[e._m(0)]):e._e(),i("li",{staticClass:"rm-item",attrs:{id:"rm-settings"},on:{click:function(t){e.visible.settings=!e.visible.settings}}},[e._m(1)])])]),e._m(2)])]),i("transition",{attrs:{name:"settings"},on:{enter:function(t){e.$refs.rm.style.transition="left 500ms"}}},[e.visible.settings?i("div",{ref:"settings",attrs:{id:"menu"},on:{click:e.settingsClick}},[i("div",{staticStyle:{width:"200px",height:"90%","overflow-y":"auto","overflow-x":"hidden"}},[e.IS_DM?[i("button",{staticClass:"menu-accordion"},[e._v("Assets")]),i("div",{staticClass:"menu-accordion-panel"},[i("a",{staticClass:"actionButton",attrs:{href:"/assets",target:"blank",title:"Open asset manager"}},[i("i",{staticClass:"fas fa-external-link-alt"})]),i("div",{staticClass:"directory",attrs:{id:"menu-tokens"}},[i("asset-node",{attrs:{asset:e.assets}}),e.assets?e._e():i("div",[e._v("No assets")])],1)]),i("button",{staticClass:"menu-accordion"},[e._v("Notes")]),i("div",{staticClass:"menu-accordion-panel"},[i("div",{staticClass:"menu-accordion-subpanel",attrs:{id:"menu-notes"}},[i("a",{staticClass:"actionButton",on:{click:e.createNote}},[i("i",{staticClass:"far fa-plus-square"})]),e._l(e.notes,function(t){return i("div",{key:t.uuid,staticStyle:{cursor:"pointer"},on:{click:function(i){return e.openNote(t)}}},[e._v(e._s(t.title||"[?]"))])}),e.notes.length?e._e():i("div",[e._v("No notes")])],2)]),i("button",{staticClass:"menu-accordion",on:{click:e.openDmSettings}},[e._v("DM Options")])]:e._e(),i("button",{staticClass:"menu-accordion"},[e._v("Client Options")]),i("div",{staticClass:"menu-accordion-panel"},[i("div",{staticClass:"menu-accordion-subpanel"},[i("label",{attrs:{for:"gridColour"}},[e._v("Grid Colour:")]),i("color-picker",{attrs:{id:"gridColour",color:e.gridColour},on:{"update:color":function(t){e.gridColour=t}}}),i("label",{attrs:{for:"fowColour"}},[e._v("FOW Colour:")]),i("color-picker",{attrs:{id:"fowColour",color:e.fowColour},on:{"update:color":function(t){e.fowColour=t}}}),i("label",{attrs:{for:"rulerColour"}},[e._v("Ruler Colour:")]),i("color-picker",{attrs:{id:"rulerColour",color:e.rulerColour},on:{"update:color":function(t){e.rulerColour=t}}})],1)])],2),i("router-link",{staticClass:"menu-accordion",staticStyle:{"text-decoration":"none",display:"inline-block",position:"absolute",bottom:"0"},attrs:{to:"/dashboard"}},[e._v("Exit")])],1):e._e()]),i("transition",{attrs:{name:"locations"},on:{enter:function(t){e.$refs.rm.style.transition="top 500ms"}}},[e.IS_DM&&e.visible.locations?i("div",{attrs:{id:"locations-menu"}},[i("div",[e._l(e.locations,function(t){return i("div",{key:t,on:{click:function(i){return e.changeLocation(t)}}},[e._v(e._s(t))])}),i("div",{on:{click:e.createLocation}},[i("i",{staticClass:"fas fa-plus"})])],2)]):e._e()]),i("img",{attrs:{id:"dragImage"}})],1)},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{attrs:{href:"#"}},[i("i",{staticClass:"far fa-compass"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{attrs:{href:"#"}},[i("i",{staticClass:"fas fa-cog"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{staticClass:"rm-topper"},[i("i",{staticClass:"icon-share-alt"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2686:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.note?i("modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("span",{on:{click:function(t){return e.$refs.title.select()}}},[i("i",{staticClass:"fas fa-pencil-alt",staticStyle:{"font-size":"15px"}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.note.title,expression:"note.title"}],ref:"title",domProps:{value:e.note.title},on:{change:e.updateNote,input:function(t){t.target.composing||e.$set(e.note,"title",t.target.value)}}}),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}],null,!1,1320213373)},[i("div",{staticClass:"modal-body"},[i("textarea",{directives:[{name:"model",rawName:"v-model",value:e.note.text,expression:"note.text"}],ref:"textarea",style:{height:e.calcHeight()},domProps:{value:e.note.text},on:{change:e.updateNote,input:function(t){t.target.composing||e.$set(e.note,"text",t.target.value)}}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.removeNote}},[i("i",{staticClass:"far fa-trash-alt"}),e._v(" Remove\n ")])])]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2756:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("496c")),r=s.__importDefault(i("ea6a")),a=i("4a5b"),l=i("0bc6"),c=i("8f0a"),u=i("6f92"),d=i("b2ed"),h=i("f10f"),f=i("2838"),p=i("92b1"),g=i("5a5c");var v;(function(e){e[e["Noop"]=0]="Noop",e[e["Resize"]=1]="Resize",e[e["Drag"]=2]="Drag",e[e["GroupSelect"]=3]="GroupSelect"})(v=t.SelectOperations||(t.SelectOperations={}));const m=new c.GlobalPoint(-1e3,-1e3);let y=class extends r.default{constructor(){super(...arguments),this.name="Select",this.showContextMenu=!1,this.active=!1,this.mode=v.Noop,this.resizePoint=0,this.deltaChanged=!1,this.dragRay=new c.Ray(new c.LocalPoint(0,0),new c.Vector(0,0)),this.selectionStartPoint=m,this.selectionHelper=new d.Rect(m,0,0)}created(){this.selectionHelper.globalCompositeOperation="source-over"}onMouseDown(e){const t=u.layerManager.getLayer();if(void 0===t)return void console.log("No active layer!");this.selectionHelper.owners.includes(h.gameStore.username)||this.selectionHelper.addOwner(h.gameStore.username);const i=g.getMouse(e),s=p.l2g(i);let n,o=!1;n=t.selection.length?t.shapes.concat(t.selection):t.shapes;for(let r=n.length-1;r>=0;r--){const e=n[r];if(this.resizePoint=e.getPointIndex(s,p.l2gz(3)),this.resizePoint>=0){t.selection=[e],a.getRef("selectionInfo").shape=e,this.mode=v.Resize,t.invalidate(!0),o=!0;break}if(e.contains(s)){const s=e;-1===t.selection.indexOf(s)&&(t.selection=[s],a.getRef("selectionInfo").shape=s),this.mode=v.Drag;const n=p.g2l(s.refPoint);this.dragRay=new c.Ray(n,i.subtract(n)),t.invalidate(!0),o=!0;break}}if(!o){this.mode=v.GroupSelect;for(const e of t.selection)a.getRef("selectionInfo").shape=e;this.selectionStartPoint=s,this.selectionHelper.refPoint=this.selectionStartPoint,this.selectionHelper.w=0,this.selectionHelper.h=0,t.selection=[this.selectionHelper],t.invalidate(!0)}this.active=!0}onMouseMove(e){const t=u.layerManager.getLayer();if(void 0===t)return void console.log("No active layer!");const i=g.getMouse(e),s=p.l2g(i);if(this.deltaChanged=!1,this.mode===v.GroupSelect){const e=s;this.selectionHelper.w=Math.abs(e.x-this.selectionStartPoint.x),this.selectionHelper.h=Math.abs(e.y-this.selectionStartPoint.y),this.selectionHelper.refPoint=new c.GlobalPoint(Math.min(this.selectionStartPoint.x,e.x),Math.min(this.selectionStartPoint.y,e.y)),t.invalidate(!0)}else if(t.selection.length){const n=p.g2l(t.selection[t.selection.length-1].refPoint),o=n.add(this.dragRay.direction);let r=i.subtract(o).multiply(1/h.gameStore.zoomFactor);const a=r;if(this.mode===v.Drag){if("tokens"===t.name&&(!e.shiftKey||!h.gameStore.IS_DM))for(const e of t.selection)e.ownedBy()&&e.uuid!==this.selectionHelper.uuid&&(r=f.calculateDelta(r,e),r!==a&&(this.deltaChanged=!0));for(const e of t.selection)e.ownedBy()&&(e.refPoint=e.refPoint.add(r),e!==this.selectionHelper&&(e.visionObstruction&&h.gameStore.recalculateVision(!0),l.socket.emit("Shape.Update",{shape:e.asDict(),redraw:!0,temporary:!0})));t.invalidate(!1)}else if(this.mode===v.Resize)for(const e of t.selection)e.ownedBy()&&(e.resize(this.resizePoint,i),e!==this.selectionHelper&&(e.visionObstruction&&h.gameStore.recalculateVision(!0),l.socket.emit("Shape.Update",{shape:e.asDict(),redraw:!0,temporary:!0})),t.invalidate(!1),this.updateCursor(t,s));else this.updateCursor(t,s)}else document.body.style.cursor="default"}onMouseUp(e){if(!this.active)return;if(void 0===u.layerManager.getLayer())return void console.log("No active layer!");const t=u.layerManager.getLayer();this.mode===v.GroupSelect?(t.clearSelection(),t.shapes.forEach(e=>{if(!e.ownedBy())return;if(e===this.selectionHelper)return;const i=e.getBoundingBox();e.ownedBy()&&this.selectionHelper.refPoint.x<=i.topRight.x&&this.selectionHelper.refPoint.x+this.selectionHelper.w>=i.topLeft.x&&this.selectionHelper.refPoint.y<=i.botLeft.y&&this.selectionHelper.refPoint.y+this.selectionHelper.h>=i.topLeft.y&&t.selection.push(e)}),t.selection.length>0&&t.selection.push(this.selectionHelper),t.invalidate(!0)):t.selection.length&&t.selection.forEach(i=>{if(i.ownedBy()){if(this.mode===v.Drag){if(this.dragRay.origin.x===p.g2lx(i.refPoint.x)&&this.dragRay.origin.y===p.g2ly(i.refPoint.y))return;!h.gameStore.useGrid||e.altKey||this.deltaChanged||i.snapToGrid(),i!==this.selectionHelper&&(i.visionObstruction&&h.gameStore.recalculateVision(),i.movementObstruction&&h.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:i.asDict(),redraw:!0,temporary:!1})),t.invalidate(!1)}this.mode===v.Resize&&(h.gameStore.useGrid&&!e.altKey&&i.resizeToGrid(),i!==this.selectionHelper&&(i.visionObstruction&&h.gameStore.recalculateVision(),i.movementObstruction&&h.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:i.asDict(),redraw:!0,temporary:!1})),t.invalidate(!1))}}),this.mode=v.Noop,this.active=!1}onContextMenu(e){if(void 0===u.layerManager.getLayer())return void console.log("No active layer!");const t=u.layerManager.getLayer(),i=g.getMouse(e),s=p.l2g(i);for(const n of t.selection)if(n.contains(s)&&n!==this.selectionHelper)return t.selection=[n],a.getRef("selectionInfo").shape=n,t.invalidate(!0),void this.$parent.$refs.shapecontext.open(e,n);this.$refs.selectcontext.open(e)}updateCursor(e,t){for(const i of e.selection){const e=i.getPointIndex(t,p.l2gz(3));if(e<0)document.body.style.cursor="default";else{let t=i.getPointOrientation(e).angle();t<0&&(t+=360);const s=22.5;(t>=315+s||t=135+s&&t<225-s)&&(document.body.style.cursor="ew-resize"),(t>=45+s&&t<135-s||t>=225+s&&t<315-s)&&(document.body.style.cursor="ns-resize"),(t>=s&&t<90-s||t>=180+s&&t<270-s)&&(document.body.style.cursor="nwse-resize"),(t>=90+s&&t<180-s||t>=270+s&&t<360-s)&&(document.body.style.cursor="nesw-resize")}}}};y=s.__decorate([n.default({components:{SelectContext:o.default}})],y),t.default=y},"27ae":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("2f62"),a=s.__importDefault(i("6c7c")),l=s.__importDefault(i("d65f")),c=i("4a5b"),u=i("0bc6"),d=i("af17"),h=i("f10f"),f=i("6f92");let p=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.categories=["Admin","Grid","Vision"],this.selection=0,this.showRefreshState=!1,this.refreshState="pending"}mounted(){d.EventBus.$on("DmSettings.Open",()=>{this.visible=!0}),d.EventBus.$on("DmSettings.RefreshedInviteCode",()=>{this.showRefreshState=!1})}beforeDestroy(){d.EventBus.$off("DmSettings.Open"),d.EventBus.$off("DmSettings.RefreshedInviteCode")}get invitationUrl(){return window.location.protocol+"//"+window.location.host+"/invite/"+h.gameStore.invitationCode}get locked(){return h.gameStore.isLocked}get useGrid(){return h.gameStore.useGrid}set useGrid(e){h.gameStore.setUseGrid({useGrid:e,sync:!0})}get unitSize(){return h.gameStore.unitSize}set unitSize(e){"number"===typeof e&&h.gameStore.setUnitSize({unitSize:e,sync:!0})}get gridSize(){return h.gameStore.gridSize}set gridSize(e){"number"===typeof e&&h.gameStore.setGridSize({gridSize:e,sync:!0})}get fakePlayer(){return h.gameStore.FAKE_PLAYER}set fakePlayer(e){h.gameStore.setFakePlayer(e)}get fullFOW(){return h.gameStore.fullFOW}set fullFOW(e){h.gameStore.setFullFOW({fullFOW:e,sync:!0})}get fowOpacity(){return h.gameStore.fowOpacity}set fowOpacity(e){"number"===typeof e&&h.gameStore.setFOWOpacity({fowOpacity:e,sync:!0})}get fowLOS(){return h.gameStore.fowLOS}set fowLOS(e){h.gameStore.setLineOfSight({fowLOS:e,sync:!0})}get visionRangeMin(){return h.gameStore.visionRangeMin}set visionRangeMin(e){"number"===typeof e&&h.gameStore.setVisionRangeMin({value:e,sync:!0})}get visionRangeMax(){return h.gameStore.visionRangeMax}set visionRangeMax(e){"number"===typeof e&&h.gameStore.setVisionRangeMax({value:e,sync:!0})}changeVisionMode(e){const t=e.target.value.toLowerCase();"bvh"!==t&&"triangle"!==t||(h.gameStore.setVisionMode({mode:t,sync:!0}),h.gameStore.recalculateVision(),h.gameStore.recalculateMovement(),f.layerManager.invalidate())}handleClick(e){const t=e.target.firstElementChild;t instanceof HTMLInputElement&&t.click()}refreshInviteCode(){u.socket.emit("Room.Info.InviteCode.Refresh"),this.refreshState="pending",this.showRefreshState=!0}kickPlayer(e){u.socket.emit("Room.Info.Players.Kick",e),h.gameStore.kickPlayer(e)}toggleSessionLock(){h.gameStore.setIsLocked({isLocked:!h.gameStore.isLocked,sync:!0})}deleteSession(){c.getRef("prompt").prompt(`ENTER ${h.gameStore.roomCreator}/${h.gameStore.roomName} TO CONFIRM SESSION REMOVAL.`,"DELETING SESSION").then(e=>{e===`${h.gameStore.roomCreator}/${h.gameStore.roomName}`&&(u.socket.emit("Room.Delete"),this.$router.push("/"))},()=>{})}};p=s.__decorate([o.default({components:{InputCopyElement:a.default,Modal:l.default},computed:Object.assign({},r.mapState("game",["invitationCode"]))})],p),t.default=p},2838:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("f10f"),r=i("d6be"),a=i("98ef"),l=i("4aee");function c(e,t,i){if(0===e.x&&0===e.y)return e;if("bvh"===o.gameStore.visionMode){void 0===i&&(i=[]);const r=t.getBoundingBox(),a=r.offset(e);let l=!1;for(const t of o.gameStore.movementblockers){if(i.includes(t))continue;const o=n.layerManager.UUIDMap.get(t),c=o.getBoundingBox();let u=c.intersectsWithInner(a);if(!u){const t=s.Ray.fromPoints(r.topLeft.add(e.normalize()),a.topLeft),i=t.direction.inverse(),n=[i.x<0,i.y<0];u=c.intersectP(t,i,n).hit}if(u){const n=c.center(),o=r.center(),a=o.subtract(n),u=new s.Vector(1,0),d=new s.Vector(0,1);let h=a.dot(u),f=a.dot(d);h>c.w/2&&(h=c.w/2),h<-c.w/2&&(h=-c.w/2),f>c.h/2&&(f=c.h/2),f<-c.h/2&&(f=-c.h/2);const p=n.add(u.multiply(h)).add(d.multiply(f));p.x===r.topLeft.x||p.x===r.topRight.x?e=new s.Vector(0,e.y):p.y===r.topLeft.y||p.y===r.botLeft.y?e=new s.Vector(e.x,0):p.xr.topRight.x?e=new s.Vector(p.x-r.topRight.x,e.y):p.yr.botLeft.y&&(e=new s.Vector(e.x,p.y-r.botLeft.y)),l=!0,i.push(t);break}}return l&&(e=c(e,t,i)),e}{const i=r.PA_CDT.movement.locate(t.center().asArray(),null).loc;for(const s of t.points){const t=r.PA_CDT.movement.locate(s,i),n=t.loc;null!==n&&(e=u(s,n,e))}return e}}function u(e,t,i,n=[]){const o=new s.GlobalPoint(e[0],e[1]),r=o.add(i).asArray();if(t.contains(r))return i;n.push(t);for(let c=0;c<3;c++){if(n.includes(t.neighbours[c]))continue;const d=t.vertices[l.cw(c)].point,h=t.vertices[l.ccw(c)].point,f=l.intersection(e,r,d,h);if(null===f)continue;if(!t.isConstrained(c))return u(e,t.neighbours[c],i,n);if(f[0]===o.x&&f[1]===o.y){l.orientation;const t=l.orientation(e,r,h);if(t===a.Sign.LEFT_TURN)continue;if(t===a.Sign.ZERO)continue}let p=new s.GlobalPoint(f[0],f[1]).subtract(o).multiply(.8);p.length()<1&&(p=new s.Vector(0,0)),p.length()!["__files"].includes(e)).sort(a.alphSort)}get files(){return this.asset.__files?this.asset.__files.concat().sort((e,t)=>e.name.toLowerCase()>t.name.toLowerCase()?1:-1):[]}toggle(e){for(let t=0;tthis.$children[0].$el.focus())}close(){this.visible=!1,this.shape=null}getLayers(){return c.layerManager.layers.filter(e=>e.selectable&&(u.gameStore.IS_DM||e.playerEditable))}getActiveLayer(){return c.layerManager.getLayer()}getInitiativeWord(){return null===this.shape?"":a.getRef("initiative").contains(this.shape.uuid)?"Show":"Add"}setLayer(e){null!==this.shape&&(this.shape.moveLayer(e,!0),this.close())}moveToBack(){if(null===this.shape)return;const e=this.getActiveLayer();e.moveShapeOrder(this.shape,0,!0),this.close()}moveToFront(){if(null===this.shape)return;const e=this.getActiveLayer();e.moveShapeOrder(this.shape,e.shapes.length-1,!0),this.close()}addInitiative(){if(null===this.shape)return;const e=a.getRef("initiative");e.contains(this.shape.uuid)||e.addInitiative(this.shape.getInitiativeRepr()),e.visible=!0,this.close()}openEditDialog(){l.EventBus.$emit("EditDialog.Open",this.shape),this.close()}};d=s.__decorate([o.default({components:{ContextMenu:r.default}})],d),t.default=d},"314d":function(e,t,i){"use strict";var s=i("4fce"),n=i.n(s);n.a},3411:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("60a3");let a=class extends n.default{constructor(){super(...arguments),this.borderColour="lightgray",this.popupString="",this.showPopup=!1}copy(){navigator.clipboard.writeText(this.value).then(()=>{this.popupString="Copied!",this.showPopup=!0},()=>{console.log("Could not copy to clipboard :("),this.popupString="Error!",this.showPopup=!0})}};s.__decorate([r.Prop()],a.prototype,"value",void 0),a=s.__decorate([o.default],a),t.default=a},3481:function(e,t,i){"use strict";i.r(t);var s=i("47e6"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},3752:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContextMenu",{attrs:{visible:e.visible,left:e.left+"px",top:e.top+"px"},on:{close:e.close}},[i("li",{on:{click:e.rename}},[e._v("Rename")]),i("li",{on:{click:e.remove}},[e._v("Remove")])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"38c9":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("bab4"),n=i("f10f");class o extends s.Layer{invalidate(){this.valid=!1}draw(e){this.valid||this.drawGrid()}drawGrid(){const e=this.ctx;this.clear(),e.beginPath();const t=n.gameStore.gridSize;for(let i=0;ir.layerManager.UUIDMap.get(e))}toggle(e){this.selection.includes(e)?a.gameStore.removeActiveToken(e):a.gameStore.addActiveToken(e)}};l=s.__decorate([n.default],l),t.default=l},"3cd3":function(e,t,i){"use strict";var s=i("b0c0"),n=i.n(s);n.a},"3dfd":function(e,t,i){"use strict";i.r(t);var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"app"}},[i("router-view",{ref:"activeComponent"})],1)},n=[],o=(i("034f"),i("2877")),r={},a=Object(o["a"])(r,s,n,!1,null,null,null);t["default"]=a.exports},4185:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("bab4"),o=i("6f92"),r=i("d1ec"),a=i("4709"),l=i("f10f"),c=i("92b1"),u=i("5a5c"),d=i("cee3");class h extends n.Layer{constructor(e,t){super(e,t),this.isVisionLayer=!0,this.preFogShapes=[],this.virtualCanvas=document.createElement("canvas"),this.virtualCanvas.width=window.innerWidth,this.virtualCanvas.height=window.innerHeight,this.vCtx=this.virtualCanvas.getContext("2d")}addShape(e,t,i,s=!0){super.addShape(e,t,i,s),e.options.has("preFogShape")&&e.options.get("preFogShape")&&this.preFogShapes.push(e)}removeShape(e,t,i){if(e.options.has("preFogShape")&&e.options.get("preFogShape")){const t=this.preFogShapes.findIndex(t=>t.uuid===e.uuid);this.preFogShapes.splice(t,1)}super.removeShape(e,t,i)}draw(){if(!this.valid){const e=this.ctx;if(r.Settings.skipLightFOW)return e.clearRect(0,0,this.canvas.width,this.canvas.height),void(this.valid=!0);const t=e.globalCompositeOperation;e.clearRect(0,0,this.canvas.width,this.canvas.height),e.fillStyle="rgba(0, 0, 0, 1)";const i=o.layerManager.getLayer("draw").ctx;(r.Settings.drawAngleLines||r.Settings.drawFirstLightHit)&&i.clearRect(0,0,i.canvas.width,i.canvas.height),l.gameStore.fullFOW&&o.layerManager.hasLayer("tokens")&&o.layerManager.getLayer("tokens").shapes.forEach(t=>{if(!t.ownedBy()||!t.isToken)return;const i=t.getBoundingBox(),s=c.g2l(t.center()),n=.8*c.g2lz(i.w);e.beginPath(),e.arc(s.x,s.y,n,0,2*Math.PI);const o=e.createRadialGradient(s.x,s.y,n/2,s.x,s.y,n);o.addColorStop(0,"rgba(0, 0, 0, 1)"),o.addColorStop(1,"rgba(0, 0, 0, 0)"),e.fillStyle=o,e.fill()}),this.vCtx.clearRect(0,0,window.innerWidth,window.innerHeight);for(const n of l.gameStore.visionSources){const t=o.layerManager.UUIDMap.get(n.shape);if(void 0===t)continue;const u=t.auras.find(e=>e.uuid===n.aura);if(void 0===u)continue;const h=c.getUnitDistance(u.value+u.dim),f=t.center(),p=c.g2l(f),g=new a.Circle(f,h);if(g.visibleInCanvas(e.canvas))if("bvh"===l.gameStore.visionMode){let t=-1;const n=new Path2D;let o;n.moveTo(p.x,p.y);for(let a=0;a<2*Math.PI;a+=r.Settings.angleSteps/180*Math.PI){const d=new s.GlobalPoint(f.x+h*Math.cos(a),f.y+h*Math.sin(a));r.Settings.drawAngleLines&&(i.beginPath(),i.moveTo(c.g2lx(f.x),c.g2ly(f.y)),i.lineTo(c.g2lx(d.x),c.g2ly(d.y)),i.stroke());const g=s.Ray.fromPoints(f,d),v=l.gameStore.BV.intersect(g);if(0===a&&(o=v.hit?v.intersect:d),v.hit)-1!==t&&(n.arc(p.x,p.y,c.g2lr(u.value+u.dim),t,a),t=-1),n.lineTo(c.g2lx(v.intersect.x),c.g2ly(v.intersect.y));else if(-1===t){t=a;const i=c.g2l(d);e.lineTo(i.x,i.y)}}if(-1===t?n.lineTo(c.g2lx(o.x),c.g2ly(o.y)):n.arc(p.x,p.y,c.g2lr(u.value+u.dim),t,2*Math.PI),l.gameStore.fullFOW){if(u.dim>0){const t=e.createRadialGradient(p.x,p.y,c.g2lr(u.value),p.x,p.y,c.g2lr(u.value+u.dim));t.addColorStop(0,"rgba(0, 0, 0, 1)"),t.addColorStop(1,"rgba(0, 0, 0, 0)"),e.fillStyle=t}else e.fillStyle="rgba(0, 0, 0, 1)";e.fill(n)}u.lastPath=n}else{this.vCtx.globalCompositeOperation="source-over",this.vCtx.fillStyle="rgba(0, 0, 0, 1)";const t=d.computeVisibility(f,"vision");this.vCtx.beginPath(),this.vCtx.moveTo(c.g2lx(t[0][0]),c.g2ly(t[0][1]));for(const e of t)this.vCtx.lineTo(c.g2lx(e[0]),c.g2ly(e[1]));if(this.vCtx.closePath(),this.vCtx.fill(),u.dim>0){const e=this.vCtx.createRadialGradient(p.x,p.y,c.g2lr(u.value),p.x,p.y,c.g2lr(u.value+u.dim));e.addColorStop(0,"rgba(0, 0, 0, 1)"),e.addColorStop(1,"rgba(0, 0, 0, 0)"),this.vCtx.fillStyle=e}else this.vCtx.fillStyle="rgba(0, 0, 0, 1)";this.vCtx.globalCompositeOperation="source-in",this.vCtx.beginPath(),this.vCtx.arc(p.x,p.y,c.g2lr(u.value+u.dim),0,2*Math.PI),this.vCtx.fill(),e.drawImage(this.virtualCanvas,0,0)}}l.gameStore.fowLOS&&(e.globalCompositeOperation="source-in",e.drawImage(o.layerManager.getLayer("fow-players").canvas,0,0));for(const s of this.preFogShapes){if(!s.visibleInCanvas(this.canvas))continue;const t=s.globalCompositeOperation;l.gameStore.fullFOW||("source-over"===s.globalCompositeOperation?s.globalCompositeOperation="destination-out":"destination-out"===s.globalCompositeOperation&&(s.globalCompositeOperation="source-over")),s.draw(e),s.globalCompositeOperation=t}l.gameStore.fullFOW&&(e.globalCompositeOperation="source-out",e.fillStyle=u.getFogColour(),e.fillRect(0,0,e.canvas.width,e.canvas.height)),super.draw(!1),e.globalCompositeOperation=t}}}t.FOWLayer=h},4486:function(e,t,i){"use strict";i.r(t);var s=i("a097"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"45fb":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Edit asset")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("div",{staticClass:"grid"},[i("label",{attrs:{for:"shapeselectiondialog-name"}},[e._v("Name")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.shape.name,expression:"shape.name"}],staticStyle:{"grid-column":"numerator / remove"},attrs:{type:"text",id:"shapeselectiondialog-name",disabled:!e.owned},domProps:{value:e.shape.name},on:{change:function(t){return e.updateShape(!1)},input:function(t){t.target.composing||e.$set(e.shape,"name",t.target.value)}}}),i("div",{style:{opacity:e.shape.nameVisible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(t){e.shape.nameVisible=!e.shape.nameVisible,e.updateShape(!1)}}},[i("i",{staticClass:"fas fa-eye"})]),i("label",{attrs:{for:"shapeselectiondialog-istoken"}},[e._v("Is a token")]),i("input",{staticClass:"styled-checkbox",staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-istoken",disabled:!e.owned},domProps:{checked:e.shape.isToken},on:{click:e.setToken}}),i("label",{attrs:{for:"shapeselectiondialog-visionblocker"}},[e._v("Blocks vision/light")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.shape.visionObstruction,expression:"shape.visionObstruction"}],staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-visionblocker",disabled:!e.owned},domProps:{checked:Array.isArray(e.shape.visionObstruction)?e._i(e.shape.visionObstruction,null)>-1:e.shape.visionObstruction},on:{change:[function(t){var i=e.shape.visionObstruction,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&e.$set(e.shape,"visionObstruction",i.concat([o])):r>-1&&e.$set(e.shape,"visionObstruction",i.slice(0,r).concat(i.slice(r+1)))}else e.$set(e.shape,"visionObstruction",n)},e.setVisionBlocker]}}),i("label",{attrs:{for:"shapeselectiondialog-moveblocker"}},[e._v("Blocks movement")]),i("input",{staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-moveblocker",disabled:!e.owned},domProps:{checked:e.shape.movementObstruction},on:{click:e.setMovementBlocker}}),i("label",{attrs:{for:"shapeselectiondialog-strokecolour"}},[e._v("Border colour")]),i("color-picker",{staticStyle:{"grid-column-start":"remove"},attrs:{color:e.shape.strokeColour,disabled:!e.owned},on:{"update:color":function(t){return e.$set(e.shape,"strokeColour",t)},input:function(t){return e.updateShape(!0,!0)},change:function(t){return e.updateShape(!0)}}}),i("label",{attrs:{for:"shapeselectiondialog-fillcolour"}},[e._v("Fill colour")]),i("color-picker",{staticStyle:{"grid-column-start":"remove"},attrs:{color:e.shape.fillColour,disabled:!e.owned},on:{"update:color":function(t){return e.$set(e.shape,"fillColour",t)},input:function(t){return e.updateShape(!0,!0)},change:function(t){return e.updateShape(!0)}}}),i("div",{staticClass:"spanrow header"},[e._v("Access")]),e._l(e.shape.owners,function(t){return[i("input",{key:t,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t},on:{change:function(i){return e.updateOwner(i,t)}}}),""!==t?i("div",{key:"remove-"+t,style:{opacity:e.owned?1:.3,textAlign:"center",gridColumnStart:"remove"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeOwner(t)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Trackers")]),e._l(e.shape.trackers,function(t){return[i("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"tracker.name"}],key:"name-"+t.uuid,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t.name},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"name",i.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.value,expression:"tracker.value",modifiers:{number:!0}}],key:"value-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.value},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"value",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"fspan-"+t.uuid},[e._v("/")]),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.maxvalue,expression:"tracker.maxvalue",modifiers:{number:!0}}],key:"maxvalue-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.maxvalue},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"maxvalue",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"sspan-"+t.uuid}),i("div",{key:"visibility-"+t.uuid,style:{opacity:t.visible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){t.visible=!t.visible,e.updateShape(!1)}}},[i("i",{staticClass:"fas fa-eye"})]),i("span",{key:"tspan-"+t.uuid}),""!==t.name||0!==t.value?i("div",{key:"remove-"+t.uuid,style:{opacity:e.owned?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeTracker(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Auras")]),e._l(e.shape.auras,function(t){return[i("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"aura.name"}],key:"name-"+t.uuid,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t.name},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"name",i.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.value,expression:"aura.value",modifiers:{number:!0}}],key:"value-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.value},on:{change:function(t){return e.updateShape(!0)},input:function(i){i.target.composing||e.$set(t,"value",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"fspan-"+t.uuid},[e._v("/")]),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.dim,expression:"aura.dim",modifiers:{number:!0}}],key:"dimvalue-"+t.uuid,attrs:{type:"text",title:"Dim value",disabled:!e.owned},domProps:{value:t.dim},on:{change:function(t){return e.updateShape(!0)},input:function(i){i.target.composing||e.$set(t,"dim",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("color-picker",{key:"colour-"+t.uuid,attrs:{color:t.colour,disabled:!e.owned},on:{"update:color":function(i){return e.$set(t,"colour",i)},input:function(i){return e.updateAuraColour(t,i)},change:function(t){return e.updateShape(!0)}}}),i("div",{key:"visibility-"+t.uuid,style:{opacity:t.visible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){t.visible=!t.visible,e.updateShape(!0)}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{key:"visionsource-"+t.uuid,style:{opacity:t.visionSource?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.updateAuraVisionSource(t)}}},[i("i",{staticClass:"fas fa-lightbulb"})]),""!==t.name||0!==t.value?i("div",{key:"remove-"+t.uuid,style:{opacity:e.owned?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeAura(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Labels")]),i("div",{staticClass:"spanrow",attrs:{id:"labels"}},[e._l(e.shape.labels,function(t){return i("div",{key:t.uuid,staticClass:"label"},[t.category?[i("div",{staticClass:"label-user"},[e._v(e._s(t.category))]),i("div",{staticClass:"label-main",on:{click:function(i){return e.removeLabel(t.uuid)}}},[e._v(e._s(t.name))])]:e._e(),t.category?e._e():[i("div",{staticClass:"label-main",on:{click:function(i){return e.removeLabel(t.uuid)}}},[e._v(e._s(t.name))])]],2)}),e.owned?i("div",{staticClass:"label",attrs:{id:"label-add"}},[i("div",{staticClass:"label-main",on:{click:e.openLabelManager}},[e._v("+")])]):e._e()],2),i("div",{staticClass:"spanrow header"},[e._v("Annotation")]),i("textarea",{staticClass:"spanrow",attrs:{disabled:!e.owned},domProps:{value:e.shape.annotation},on:{change:e.updateAnnotation}})],2)])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},4709:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("f10f"),a=i("2838"),l=i("92b1"),c=i("5a5c");class u extends o.Shape{constructor(e,t,i,s,n){super(e,i,s,n),this.type="circle",this.r=t||1}asDict(){return Object.assign(this.getBaseDict(),{radius:this.r})}fromDict(e){super.fromDict(e),this.r=e.radius}getBoundingBox(){return new n.BoundingRect(new s.GlobalPoint(this.refPoint.x-this.r,this.refPoint.y-this.r),2*this.r,2*this.r)}get points(){return this.getBoundingBox().points}draw(e){super.draw(e),e.beginPath(),"fog"===this.fillColour?e.fillStyle=c.getFogColour():e.fillStyle=this.fillColour;const t=l.g2l(this.refPoint);e.arc(t.x,t.y,l.g2lz(this.r),0,2*Math.PI),e.fill(),"rgba(0, 0, 0, 0)"!==this.strokeColour&&(e.beginPath(),e.lineWidth=l.g2lz(5),e.strokeStyle=this.strokeColour,e.arc(t.x,t.y,l.g2lz(this.r),0,2*Math.PI),e.stroke())}contains(e){return Math.pow(e.x-this.refPoint.x,2)+Math.pow(e.y-this.refPoint.y,2){const t=16*Math.random()|0,i="x"===e?t:3&t|8;return i.toString(16)})}function o(e){return e.charAt(0).toUpperCase()+e.slice(1)}function r(e,t){return e.toLowerCase()t(e)?i[1].push(e):i[0].push(e)),i}function u(e,t,i,s){const n=.2*Number(e.font.split("px")[0]),o=e.measureText(t).width;return Math.min(i/o,s/n)}function d(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>{return"%"+e.charCodeAt(0).toString(16)})}t.uuidv4=n,t.capitalize=o,t.alphSort=r,t.getHTMLFont=a,t.getHTMLTextWidth=l,t.partition=c,t.calcFontScale=u,t.fixedEncodeURIComponent=d;class h{constructor(){this.keys=[],this.values=[]}get length(){return this.keys.length}get(e){return this.values[this.keys.indexOf(e)]}getIndexValue(e){return this.values[e]}getIndexKey(e){return this.keys[e]}set(e,t){this.keys.push(e),this.values.push(t)}has(e){return this.indexOf(e)>=0}indexOf(e){return this.keys.indexOf(e)}remove(e){const t=this.indexOf(e);this.keys.splice(t,1),this.values.splice(t,1)}}function f(){return s.app.$children[0].$refs.activeComponent}function p(e){const t=s.app.$children[0].$refs.activeComponent;return t.$refs[e]}t.OrderedMap=h,t.getComponent=f,t.getRef=p},"4aec":function(e,t,i){"use strict";i.r(t);var s=i("3752"),n=i("f51a");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},"4aee":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("98ef");function n(e){return(e+2)%3}function o(e){return(e+1)%3}function r(e,t){const i=new s.EdgeCirculator(e,null);if(i.valid)do{const n=3-i.t.indexV(e)-i.ri,o=i.t.vertices[n];if(!o.infinite){if(o===t)return{includes:!0,vi:t,fr:i.t,i:i.ri};{const n=c(e.point,t.point,o.point);if(n===s.Sign.COLLINEAR&&a(e.point,o.point,t.point))return{includes:!0,vi:o,fr:i.t,i:i.ri}}}}while(i.next());return{includes:!1}}function a(e,t,i){let n,o;return l(0,e,i)===s.Sign.EQUAL?(n=l(1,e,t),o=l(1,t,i)):(n=l(0,e,t),o=l(0,t,i)),n===s.Sign.SMALLER&&o===s.Sign.SMALLER||n===s.Sign.LARGER&&o===s.Sign.LARGER}function l(e,t,i){return t[e]i[e]?s.Sign.LARGER:s.Sign.EQUAL}function c(e,t,i){const n=e[0],o=e[1],r=t[0],a=t[1],l=i[0],c=i[1],d=r-n,h=a-o,f=l-n,p=c-o,g=u(d,h,f,p);let v=Math.abs(d),m=Math.abs(h);const y=Math.abs(f),b=Math.abs(p);if(vm&&([v,m]=[m,v]),v<2e-162&&0===v)return s.Sign.ZERO;if(m<1e153){const e=Number.EPSILON*v*m;if(g>e)return s.Sign.POSITIVE;if(g<-e)return s.Sign.NEGATIVE}return s.Sign.ZERO}function u(e,t,i,s){return e*s-t*i}function d(e,t,i){return u(t[0]-e[0],t[1]-e[1],i[0]-e[0],i[1]-e[1])<0}function h(e,t,i){if(!e.isInfinite())return f(e.vertices[0].point,e.vertices[1].point,e.vertices[2].point,t,i);throw new Error("SSS")}function f(e,t,i,n,o){const r=m(e,t,i,n);if(r!==s.Sign.ON_ORIENTED_BOUNDARY||!o)return r;const a=[e,t,i,n];a.sort((e,t)=>e[0]-t[0]||e[1]-t[1]);for(const l of a.reverse()){if(l===n)return s.Sign.ON_NEGATIVE_SIDE;let o=c(e,t,n);if(l===i&&o!==s.Sign.COLLINEAR)return o;if(o=c(e,n,i),l===t&&o!==s.Sign.COLLINEAR)return o;if(o=c(n,t,i),l===e&&o!==s.Sign.COLLINEAR)return o}return s.Sign.ON_NEGATIVE_SIDE}function p(e,t){return e[0]===t[0]&&e[1]===t[1]}function g(e,t){return e[0]y&&([m,y]=[y,m]),m<1e-73&&0===m)return s.Sign.ON_ORIENTED_BOUNDARY;if(y<1e76){const e=Number.EPSILON*m*y*(y*y);if(v>e)return s.Sign.ON_POSITIVE_SIDE;if(v<-e)return s.Sign.ON_NEGATIVE_SIDE}return s.Sign.ZERO}function y(e,t,i,n){switch(c(e,t,i)){case s.Sign.LEFT_TURN:return c(i,n,t)!==s.Sign.RIGHT_TURN;case s.Sign.RIGHT_TURN:return c(i,n,t)!==s.Sign.LEFT_TURN;case s.Sign.COLLINEAR:return!0}}function b(e,t,i,n){switch(c(e,t,i)){case s.Sign.LEFT_TURN:return c(e,t,n)!==s.Sign.LEFT_TURN;case s.Sign.RIGHT_TURN:return c(e,t,n)!==s.Sign.RIGHT_TURN;case s.Sign.COLLINEAR:return!0}}function _(e,t,i,s){const n=x(e,t,i,s);switch(n.intersectionType){case w.POINT:return n.point;case w.NO_INTERSECTION:return null}throw new Error("sdfgighowen")}var w;function S(e,t){if(e[0]===t[0])return[1,0,-e[0]];if(e[1]===t[1])return[0,1,-e[1]];const i=t[0]-e[0],s=t[1]-e[1];return[-s,i,-i*e[1]+s*e[0]]}function x(e,t,i,s){if(!M(e,t,i,s))return{intersectionType:w.NO_INTERSECTION,point:null};const n=S(e,t),o=S(i,s),r=C(n,o);switch(r.intersectionType){case w.POINT:return r}throw new Error("gzseuihgpib")}function C(e,t){const i=e[0]*t[1]-t[0]*e[1],s=e[1]*t[2]-t[1]*e[2],n=t[0]*e[2]-e[0]*t[2];return{intersectionType:w.POINT,point:[s/i,n/i]}}function M(e,t,i,n){if(g(e,t)){if(g(i,n)){if(g(t,i)||g(n,e))return!1}else if(g(t,n)||g(i,e))return!1}else if(g(i,n)){if(g(e,i)||g(n,t))return!1}else if(g(e,n)||g(i,t))return!1;if(g(e,t))if(g(i,n))switch(v(e,i)){case s.Sign.SMALLER:switch(v(t,i)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(t,n)){case s.Sign.SMALLER:return y(e,t,i,n);case s.Sign.EQUAL:return!0;default:return b(e,t,i,n)}}case s.Sign.EQUAL:return!0;default:switch(v(n,e)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(n,t)){case s.Sign.SMALLER:return y(i,n,e,t);case s.Sign.EQUAL:return!0;default:return b(i,n,e,t)}}}else switch(v(e,n)){case s.Sign.SMALLER:switch(v(t,n)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(t,i)){case s.Sign.SMALLER:return y(e,t,n,i);case s.Sign.EQUAL:return!0;default:return b(e,t,n,i)}}case s.Sign.EQUAL:return!0;default:switch(v(i,e)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(i,t)){case s.Sign.SMALLER:return y(n,i,e,t);case s.Sign.EQUAL:return!0;default:return b(n,i,e,t)}}}else if(g(i,n))switch(v(t,i)){case s.Sign.SMALLER:switch(v(e,i)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(e,n)){case s.Sign.SMALLER:return y(t,e,i,n);case s.Sign.EQUAL:return!0;default:return b(t,e,i,n)}}case s.Sign.EQUAL:return!0;default:switch(v(n,t)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(n,e)){case s.Sign.SMALLER:return y(i,n,t,e);case s.Sign.EQUAL:return!0;default:return b(i,n,t,e)}}}else switch(v(t,n)){case s.Sign.SMALLER:switch(v(e,n)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(e,i)){case s.Sign.SMALLER:return y(t,e,n,i);case s.Sign.EQUAL:return!0;default:return b(t,e,n,i)}}case s.Sign.EQUAL:return!0;default:switch(v(i,t)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(i,e)){case s.Sign.SMALLER:return y(n,i,t,e);case s.Sign.EQUAL:return!0;default:return b(n,i,t,e)}}}}function k(e){if(e!==e)return e;if(e===-1/0)return-Number.MAX_VALUE;if(e===1/0)return 1/0;if(e===+Number.MAX_VALUE)return 1/0;let t=e*(e<0?1-Number.EPSILON/2:1+Number.EPSILON);t===e&&(t=Number.MIN_VALUE*Number.EPSILON>0?e+Number.MIN_VALUE*Number.EPSILON:e+Number.MIN_VALUE),t===1/0&&(t=+Number.MAX_VALUE);const i=e+(t-e)/2;ewindow.innerWidth-100&&(t=window.innerWidth-100),i<0&&(i=0),i>window.innerHeight-100&&(i=window.innerHeight-100),this.$refs.container.style.left=t+"px",this.$refs.container.style.top=i+"px",this.$refs.container.style.display="block"}dragOver(e){this.dragging&&(this.$refs.container.style.display="none")}};s.__decorate([r.Prop(Boolean)],a.prototype,"visible",void 0),s.__decorate([r.Prop({type:Boolean,default:!0})],a.prototype,"mask",void 0),s.__decorate([r.Prop({type:String,default:"white"})],a.prototype,"colour",void 0),a=s.__decorate([o.default],a),t.default=a},5338:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("8055")),o=i("2d5b");t.socket=n.default(location.protocol+"//"+location.host+"/pa_assetmgmt",{autoConnect:!1}),t.socket.on("connect",()=>{console.log("Connected")}),t.socket.on("disconnect",()=>{console.log("Disconnected")}),t.socket.on("redirect",e=>{console.log("redirecting"),window.location.href=e}),t.socket.on("Folder.Root.Set",e=>{o.assetStore.setRoot(e)}),t.socket.on("Folder.Set",e=>{if(o.assetStore.clear(),e.children)for(const t of e.children)o.assetStore.idMap.set(t.id,t),t.file_hash?o.assetStore.files.push(t.id):o.assetStore.folders.push(t.id)}),t.socket.on("Folder.Create",e=>{o.assetStore.folders.push(e.id),o.assetStore.idMap.set(e.id,e)}),t.socket.on("Asset.Upload.Finish",e=>{o.assetStore.idMap.set(e.id,e),o.assetStore.files.push(e.id)})},5394:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("1289")),r=s.__importDefault(i("ea6a")),a=i("0bc6"),l=i("6f92"),c=i("f10f");let u=class extends r.default{constructor(){super(...arguments),this.name="Filter",this.active=!1}get labels(){const e={"":[]};for(const t of Object.keys(c.gameStore.labels)){const i=c.gameStore.labels[t];i.category?(i.category in e||(e[i.category]=[]),e[i.category].push([i.uuid,i.name]),e[i.category].sort((e,t)=>e[1].localeCompare(t[1]))):e[""].push([i.uuid,i.name])}return e}get initalValues(){const e={};for(const t of Object.keys(this.labels))e[t]=c.gameStore.labelFilters.filter(e=>this.labels[t].map(e=>e[0]).includes(e));return e}get categories(){return Object.keys(this.labels).sort()}isFilter(e){return c.gameStore.labelFilters.includes(e)}toggleFilter(e){const t=c.gameStore.labelFilters.indexOf(e);t>=0?c.gameStore.labelFilters.splice(t,1):c.gameStore.labelFilters.push(e),l.layerManager.invalidate()}toggleUnlabeled(){c.gameStore.toggleUnlabeledFilter(),l.layerManager.invalidate()}updateSelection(e){if(e.title in this.labels){for(const[t,i]of this.labels[e.title]){const i=c.gameStore.labelFilters.indexOf(t),s=e.selection.includes(t);i>=0&&!s?(c.gameStore.labelFilters.splice(i,1),a.socket.emit("Labels.Filter.Remove",t)):i<0&&s&&(c.gameStore.labelFilters.push(t),a.socket.emit("Labels.Filter.Add",t))}l.layerManager.invalidate()}}};u=s.__decorate([n.default({components:{accordion:o.default}})],u),t.default=u},"53ec":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("60a3");let a=class extends n.default{constructor(){super(...arguments),this.selected=[],this.active=!1}mounted(){this.selected=this.initialValues,this.updateCategory()}toggleDisplay(e){this.active=!this.active}toggleCategory(){const e=this.$refs.overall;e.checked?this.selected=this.items.map(e=>e[0]):this.selected=[],this.$emit("selectionupdate",{title:this.title,selection:this.selected})}updateCategory(){const e=this.$refs.overall;0===this.selected.length?(e.checked=!1,e.indeterminate=!1):this.selected.length===this.items.length?(e.checked=!0,e.indeterminate=!1):(e.checked=!1,e.indeterminate=!0)}toggleSelection(e){const t=this.selected.indexOf(e);-1===t?this.selected.push(e):this.selected.splice(t,1),this.updateCategory(),this.$emit("selectionupdate",{title:this.title,selection:this.selected})}};s.__decorate([r.Prop(String)],a.prototype,"title",void 0),s.__decorate([r.Prop({default:!0,type:Boolean})],a.prototype,"showArrow",void 0),s.__decorate([r.Prop({default:()=>[]})],a.prototype,"items",void 0),s.__decorate([r.Prop({default:()=>[]})],a.prototype,"initialValues",void 0),a=s.__decorate([o.default],a),t.default=a},5459:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},e._l(e.tokens,function(t){return i("div",{key:t.uuid,staticClass:"token",class:{selected:e.selection.includes(t.uuid)},on:{click:function(i){return e.toggle(t.uuid)}}},[t.src?i("img",{attrs:{src:t.src,width:"30px",height:"30px"}}):e._e(),i("div",[e._v(e._s(t.name))])])}),0):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"54fb":function(e,t,i){"use strict";var s=i("c106"),n=i.n(s);n.a},"561b":function(e,t,i){"use strict";var s=i("a450"),n=i.n(s);n.a},"574e":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("92b1"),a=i("5a5c");class l extends o.Shape{constructor(e,t,i,s,n){super(e,"rgba(0, 0, 0, 0)",s||"#000",n),this.type="multiline",this._points=[],this._points=t||[],this.lineWidth=i||3}get refPoint(){return this._refPoint}set refPoint(e){const t=e.subtract(this._refPoint);this._refPoint=e;for(let i=0;i({x:e.x,y:e.y}))})}fromDict(e){super.fromDict(e),this._points=e.points.map(e=>new s.GlobalPoint(e.x,e.y))}get points(){return this._points.map(e=>[e.x,e.y])}getBoundingBox(){let e=this.refPoint.x,t=this.refPoint.x,i=this.refPoint.y,o=this.refPoint.y;for(const s of this._points)s.xt&&(t=s.x),s.yo&&(o=s.y);return new n.BoundingRect(new s.GlobalPoint(e,i),t-e,o-i)}draw(e){super.draw(e),e.beginPath(),e.lineCap="round",e.lineJoin="round",e.moveTo(r.g2lx(this.refPoint.x),r.g2ly(this.refPoint.y));for(const t of this._points)e.lineTo(r.g2lx(t.x),r.g2ly(t.y));"fog"===this.strokeColour?e.strokeStyle=a.getFogColour():e.strokeStyle=this.strokeColour,e.lineWidth=r.g2lz(this.lineWidth),e.stroke()}contains(e){return this.getBoundingBox().contains(e)}center(e){return this.getBoundingBox().center()}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this._refPoint=r.l2g(t):this._points[e-1]=r.l2g(t)}}t.MultiLine=l},"59d8":function(e,t,i){"use strict";i.r(t);var s=i("e5ca"),n=i("6f8d");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("a7b3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"639cd890",null);t["default"]=a.exports},"5a5c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=i("8f0a"),r=i("f10f");function a(e){return new o.LocalPoint(e.pageX,e.pageY)}function l(e=!1){const t=n.default(r.gameStore.fowColour);return r.gameStore.IS_DM?t.setAlpha(e?1:r.gameStore.fowOpacity):t.setAlpha(1),t.toRgbString()}function c(e){return 1/(-5/3+28/15*Math.exp(1.83*e))}function u(e){return Math.log(15/28*(1/e+5/3))/1.83}t.getMouse=a,t.getFogColour=l,t.zoomValue=c,t.zoomDisplay=u},"5a81":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importStar(i("66cb")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("2f62"),l=s.__importDefault(i("3b36")),c=s.__importDefault(i("d65f")),u=i("4a5b"),d=i("8f0a"),h=i("6f92"),f=i("1327"),p=i("f10f"),g=i("92b1"),v=i("60a3");let m=class extends o.default{constructor(){super(...arguments),this.x=0,this.y=0,this.visible=!1,this.text="X",this.fillColour="rgba(255, 255, 255, 1)",this.borderColour="rgba(0, 0, 0, 1)"}mounted(){this.updatePreview()}onTextChange(e,t){this.updatePreview()}onFillChange(e,t){this.updatePreview()}onBorderChange(e,t){this.updatePreview()}open(e,t){this.visible=!0,this.x=e,this.y=t}submit(){const e=h.layerManager.getLayer();if(void 0===e)return;const t=new f.CircularToken(g.l2g(new d.LocalPoint(this.x,this.y)),g.getUnitDistance(p.gameStore.unitSize/2),this.text,"10px serif",this.fillColour,this.borderColour);t.addOwner(p.gameStore.username),e.addShape(t,!0),e.invalidate(!1),this.visible=!1}updatePreview(){const e=this.$refs.canvas.getContext("2d");e.clearRect(0,0,e.canvas.width,e.canvas.height),e.beginPath();const t={x:e.canvas.width/2,y:e.canvas.height/2},i=.9*Math.min(t.x,t.y);e.fillStyle=this.fillColour,e.arc(t.x,t.y,i,0,2*Math.PI),e.fill(),"rgba(0, 0, 0, 0)"!==this.borderColour&&(e.beginPath(),e.lineWidth=5,e.strokeStyle=this.borderColour,e.arc(t.x,t.y,i,0,2*Math.PI),e.stroke()),e.save(),e.textAlign="center",e.textBaseline="middle";const s=u.calcFontScale(e,this.text,i,i),o=0;e.transform(s,o,-o,s,t.x,t.y),e.fillStyle=n.mostReadable(this.fillColour,["#000","#fff"]).toHexString(),e.fillText(this.text,0,0),e.restore()}};s.__decorate([v.Watch("text")],m.prototype,"onTextChange",null),s.__decorate([v.Watch("fillColour")],m.prototype,"onFillChange",null),s.__decorate([v.Watch("borderColour")],m.prototype,"onBorderChange",null),m=s.__decorate([r.default({components:{Modal:c.default,"color-picker":l.default},computed:Object.assign({},a.mapState("game",["unitSize"]))})],m),t.default=m},"5ae5":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f")),a=i("4a5b"),l=i("f10f");let c=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.note=null}open(e){this.visible=!0,this.note=e}calcHeight(){if(this.$refs.textarea){const e=this.$refs.textarea;return e.style.height="auto",e.style.height=e.scrollHeight+"px",e.scrollHeight+"px"}return"100px"}updateNote(){this.note&&l.gameStore.updateNote({note:this.note,sync:!0})}removeNote(){a.getRef("confirm").open("Are you sure you wish to remove this?").then(e=>{e&&this.note&&(l.gameStore.removeNote({note:this.note,sync:!0}),this.visible=!1)},()=>{})}};c=s.__decorate([o.default({components:{Modal:r.default}})],c),t.default=c},"5b69":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=i("60a3"),r=s.__importDefault(i("3b36")),a=s.__importDefault(i("ea6a")),l=i("0bc6"),c=i("8f0a"),u=i("6f92"),d=i("4709"),h=i("5e7c"),f=i("574e"),p=i("e4ea"),g=i("b2ed"),v=i("f10f"),m=i("92b1"),y=i("5a5c");let b=class extends a.default{constructor(){super(...arguments),this.name="Draw",this.active=!1,this.startPoint=null,this.shape=null,this.brushHelper=null,this.ruler=null,this.fillColour="rgba(0, 0, 0, 1)",this.borderColour="rgba(255, 255, 255, 0)",this.shapeSelect="square",this.shapes=["square","circle","draw-polygon","paint-brush"],this.modeSelect="normal",this.modes=["normal","reveal","hide"],this.brushSize=m.getUnitDistance(v.gameStore.unitSize)}get helperSize(){return"paint-brush"===this.shapeSelect?this.brushSize/2:m.getUnitDistance(this.unitSize)/8}get IS_DM(){return v.gameStore.IS_DM}get unitSize(){return v.gameStore.unitSize}get useGrid(){return v.gameStore.useGrid}onFillChange(){this.brushHelper&&(this.brushHelper.fillColour=this.fillColour)}onModeUpdate(e,t){this.onModeChange(e,t)}setupBrush(){null!==this.brushHelper&&("reveal"===this.modeSelect||"hide"===this.modeSelect?(this.brushHelper.options.set("preFogShape",!0),this.brushHelper.options.set("skipDraw",!0),this.brushHelper.fillColour="rgba(0, 0, 0, 1)","reveal"===this.modeSelect?this.brushHelper.globalCompositeOperation="source-over":"hide"===this.modeSelect&&(this.brushHelper.globalCompositeOperation="destination-out")):(this.brushHelper.options.delete("preFogShape"),this.brushHelper.options.delete("skipDraw"),this.brushHelper.globalCompositeOperation="source-over",this.brushHelper.fillColour=this.fillColour))}onModeChange(e,t){if(null===this.brushHelper)return;const i=u.layerManager.getLayer("fow"),s=u.layerManager.getLayer();void 0!==i&&void 0!==s&&(this.setupBrush(),"normal"!==e&&"normal"===t?(s.removeShape(this.brushHelper,!1),i.addShape(this.brushHelper,!1)):"normal"===e&&"normal"!==t&&(s.addShape(this.brushHelper,!1),i.removeShape(this.brushHelper,!1)))}getLayer(){return"normal"===this.modeSelect?u.layerManager.getLayer():u.layerManager.getLayer("fow")}onMouseDown(e){const t=this.getLayer();if(void 0!==t){if(this.active)null!==this.shape&&this.shape instanceof p.Polygon&&this.shape._vertices.push(m.l2g(y.getMouse(e)));else{switch(this.startPoint=m.l2g(y.getMouse(e)),this.active=!0,this.shapeSelect){case"square":this.shape=new g.Rect(this.startPoint.clone(),0,0,this.fillColour,this.borderColour);break;case"circle":this.shape=new d.Circle(this.startPoint.clone(),this.helperSize,this.fillColour,this.borderColour);break;case"paint-brush":this.shape=new f.MultiLine(this.startPoint.clone(),[],this.brushSize),this.shape.fillColour=this.fillColour;break;case"draw-polygon":this.shape=new p.Polygon(this.startPoint.clone(),[],this.fillColour,this.borderColour);break;default:return}"normal"!==this.modeSelect&&(this.shape.options.set("preFogShape",!0),this.shape.options.set("skipDraw",!0),this.shape.fillColour="rgba(0, 0, 0, 1)"),"reveal"===this.modeSelect?this.shape.globalCompositeOperation="source-over":"hide"===this.modeSelect&&(this.shape.globalCompositeOperation="destination-out"),this.shape.addOwner(v.gameStore.username),"fow"===t.name&&"normal"===this.modeSelect&&(this.shape.visionObstruction=!0,this.shape.movementObstruction=!0),t.addShape(this.shape,!0,!1,!1),this.pushBrushBack()}if(null!==this.shape&&this.shape instanceof p.Polygon){const i=m.l2g(y.getMouse(e));null===this.ruler?(this.ruler=new h.Line(i,i,3,"black"),t.addShape(this.ruler,!1)):(this.ruler.refPoint=i,this.ruler.endPoint=i),this.shape.visionObstruction&&v.gameStore.recalculateVision(!0),t.invalidate(!1),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!0})}}else console.log("No active layer!")}onMouseMove(e){const t=m.l2g(y.getMouse(e)),i=this.getLayer();if(void 0!==i){if(null!==this.brushHelper&&(this.brushHelper.r=this.helperSize,this.brushHelper.refPoint=t,this.active||i.invalidate(!1)),this.active&&null!==this.startPoint&&null!==this.shape){switch(this.shapeSelect){case"square":this.shape.w=Math.abs(t.x-this.startPoint.x),this.shape.h=Math.abs(t.y-this.startPoint.y),this.shape.refPoint=new c.GlobalPoint(Math.min(this.startPoint.x,t.x),Math.min(this.startPoint.y,t.y));break;case"circle":this.shape.r=t.subtract(this.startPoint).length();break;case"paint-brush":this.shape._points.push(t);break;case"draw-polygon":this.ruler.endPoint=t;break}this.shape instanceof p.Polygon||(l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!0}),this.shape.visionObstruction&&v.gameStore.recalculateVision(!0)),i.invalidate(!1)}}else console.log("No active layer!")}onMouseUp(e){!this.active||null===this.shape||this.shape instanceof p.Polygon||(!e.altKey&&this.useGrid&&this.shape.resizeToGrid(),this.finaliseShape())}onContextMenu(e){if(!this.active||null===this.shape||!(this.shape instanceof p.Polygon))return;const t=this.getLayer();void 0!==t?(t.removeShape(this.ruler,!1),this.ruler=null,this.finaliseShape()):console.log("No active layer!")}finaliseShape(){null!==this.shape&&(this.shape.visionObstruction&&v.gameStore.recalculateVision(),this.shape.movementObstruction&&v.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!1}),this.active=!1)}onSelect(){const e=this.getLayer();void 0!==e&&(this.brushHelper=new d.Circle(new c.GlobalPoint(-1e3,-1e3),this.brushSize/2,this.fillColour),this.setupBrush(),e.addShape(this.brushHelper,!1))}onDeselect(){const e=this.getLayer();null!==this.brushHelper&&void 0!==e&&e.removeShape(this.brushHelper,!1),this.active&&void 0!==e&&null!==this.shape&&(e.removeShape(this.shape,!0,!1),this.shape=null,this.active=!1,e.invalidate(!1))}pushBrushBack(){const e=this.getLayer();void 0!==e?(null!==this.brushHelper&&e.removeShape(this.brushHelper,!1),this.brushHelper=new d.Circle(new c.GlobalPoint(-1e3,-1e3),this.brushSize/2,this.fillColour),this.setupBrush(),e.addShape(this.brushHelper,!1)):console.log("No active layer!")}};s.__decorate([o.Watch("fillColour")],b.prototype,"onFillChange",null),s.__decorate([o.Watch("modeSelect")],b.prototype,"onModeUpdate",null),b=s.__decorate([n.default({components:{"color-picker":r.default}})],b),t.default=b},"5e7c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("92b1");class a extends o.Shape{constructor(e,t,i,s,n){super(e,"rgba(0, 0, 0, 0)",s||"#000",n),this.type="line",this.endPoint=t,this.lineWidth=void 0===i?1:i}asDict(){return Object.assign(this.getBaseDict(),{x2:this.endPoint.x,y2:this.endPoint.y,line_width:this.lineWidth})}get points(){return[[this.refPoint.x,this.refPoint.y],[this.endPoint.x,this.endPoint.y]]}getBoundingBox(){return new n.BoundingRect(new s.GlobalPoint(Math.min(this.refPoint.x,this.endPoint.x),Math.min(this.refPoint.y,this.endPoint.y)),Math.abs(this.refPoint.x-this.endPoint.x),Math.abs(this.refPoint.y-this.endPoint.y))}draw(e){super.draw(e),e.strokeStyle=this.strokeColour,e.beginPath(),e.moveTo(r.g2lx(this.refPoint.x),r.g2ly(this.refPoint.y)),e.lineTo(r.g2lx(this.endPoint.x),r.g2ly(this.endPoint.y)),e.lineWidth=this.lineWidth,e.stroke()}contains(e){return!1}center(e){}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this.refPoint=r.l2g(t):this.endPoint=r.l2g(t)}}t.Line=a},"5ed5":function(e,t,i){},"5f86":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("8c4f"));o.default.use(r.default);const a=s.__importDefault(i("e914")),l=s.__importDefault(i("1077")),c=s.__importDefault(i("cad7")),u=s.__importDefault(i("47f7")),d=s.__importDefault(i("c6b4")),h=s.__importDefault(i("07f5")),f=s.__importDefault(i("ce87")),p=i("cc67");t.router=new r.default({mode:"history",base:"/",routes:[{path:"/",redirect:"/dashboard"},{path:"/_load",name:"load",component:u.default},{path:"/assets",component:a.default,meta:{auth:!0}},{path:"/auth",component:{template:""},children:[{path:"login",component:l.default},{path:"logout",component:c.default}]},{path:"/invite/:code",component:f.default,meta:{auth:!0}},{path:"/dashboard",component:d.default,meta:{auth:!0}},{path:"/game/:creator/:room",component:h.default,meta:{auth:!0}}]}),t.router.beforeEach((e,i,s)=>{p.coreStore.initialized||"/_load"===e.path?e.matched.some(e=>e.meta.auth)&&!p.coreStore.authenticated?s({path:"/auth/login",query:{redirect:e.path}}):s():(s({path:"/_load"}),n.default.get("/api/auth").then(i=>{i.data.auth&&(p.coreStore.setAuthenticated(!0),p.coreStore.setUsername(i.data.username)),p.coreStore.setInitialized(!0),t.router.push(e.path)}).catch(()=>{console.error("Authentication check could not be fulfilled.")}))})},"5fa9":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9"));let r=class extends n.default{constructor(){super(...arguments),this.name="",this.selected=!1,this.active=!1}get detailRight(){const e=this.$parent.$refs[this.name+"-selector"][0].getBoundingClientRect(),t=e.left+e.width/2;return`${window.innerWidth-Math.min(window.innerWidth-25,t+75)}px`}get detailArrow(){const e=this.$parent.$refs[this.name+"-selector"][0].getBoundingClientRect(),t=e.left+e.width/2,i=Math.min(window.innerWidth-25,t+75);return`${i-t-14}px`}created(){this.$parent.$on("mousedown",(e,t)=>{t===this.name&&this.onMouseDown(e)}),this.$parent.$on("mouseup",(e,t)=>{t===this.name&&this.onMouseUp(e)}),this.$parent.$on("mousemove",(e,t)=>{t===this.name&&this.onMouseMove(e)}),this.$parent.$on("contextmenu",(e,t)=>{t===this.name&&this.onContextMenu(e)}),this.$parent.$on("tools-select-change",(e,t)=>{t===this.name?(this.selected=!1,this.onDeselect()):e===this.name&&(this.selected=!0,this.onSelect())})}onSelect(){}onDeselect(){}onMouseDown(e){}onMouseUp(e){}onMouseMove(e){}onContextMenu(e){}};r=s.__decorate([o.default],r),t.default=r},6100:function(e,t,i){"use strict";i.r(t);var s=i("f974"),n=i("e94f");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("d75e");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b6e1f51c",null);t["default"]=a.exports},6465:function(e,t,i){"use strict";i.r(t);var s=i("5fa9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"64a9":function(e,t,i){},6542:function(e,t,i){},"676f":function(e,t,i){},"69fb":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"main"},on:{mouseleave:e.mouseleave,wheel:e.zoom}},[e.showUI?i("menu-bar"):e._e(),i("div",{attrs:{id:"board"}},[e.ready.manager?[i("tool-bar",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],ref:"tools"})]:e._e(),i("div",{attrs:{id:"layers"},on:{mousedown:e.mousedown,mouseup:e.mouseup,mousemove:e.mousemove,contextmenu:function(t){return t.preventDefault(),t.stopPropagation(),e.contextmenu(t)},dragover:function(e){e.preventDefault()},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.drop(t)}}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showUI&&e.layers.length>1,expression:"showUI && layers.length>1"}],attrs:{id:"layerselect"}},[i("ul",e._l(e.layers,function(t){return i("li",{key:t.name,class:{"layer-selected":t===e.selectedLayer},on:{mousedown:function(i){return e.selectLayer(t)}}},[i("a",{attrs:{href:"#"}},[e._v(e._s(t))])])}),0)])],2),i("selection-info",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],ref:"selectionInfo"}),i("initiative-dialog",{ref:"initiative",attrs:{id:"initiativedialog"}}),i("note-dialog",{ref:"note"}),i("label-dialog",{ref:"labels"}),e.IS_DM||e.FAKE_PLAYER?i("dm-settings",{ref:"dmsettings"}):e._e(),i("zoom-slider",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],attrs:{id:"zoomer",height:6,width:200,min:0,max:1,interval:.1,"dot-width":8,"dot-height":20,"tooltip-dir":"bottom",tooltip:"hover",formatter:e.zoomDisplay.toFixed(1),"slider-style":{"border-radius":"15%"},"bg-style":{"background-color":"#fff","box-shadow":"0.5px 0.5px 3px 1px rgba(0, 0, 0, .36)"},"process-style":{"background-color":"#fff"}},model:{value:e.zoomDisplay,callback:function(t){e.zoomDisplay=t},expression:"zoomDisplay"}}),i("prompt-dialog",{ref:"prompt"}),i("confirm-dialog",{ref:"confirm"})],1)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"6a95":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"input-copy"},on:{mouseleave:function(t){e.showPopup=!1}}},[i("input",{attrs:{type:"text",disabled:"disabled",id:"input-element"},domProps:{value:e.value}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopup,expression:"showPopup"}],attrs:{id:"show-popup"}},[e._v(e._s(e.popupString))]),i("div",{attrs:{id:"copy-button"},on:{click:e.copy}},[i("i",{staticClass:"far fa-copy"})])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"6c30":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("c266"),n=i("f10f"),o=i("92b1");class r extends s.BaseRect{constructor(e,t,i,s,n){super(t,i,s,void 0,void 0,n),this.type="assetrect",this.src="",this.img=e}asDict(){return Object.assign(this.getBaseDict(),{src:this.src})}fromDict(e){super.fromDict(e),this.src=e.src}draw(e){super.draw(e);try{e.drawImage(this.img,o.g2lx(this.refPoint.x),o.g2ly(this.refPoint.y),o.g2lz(this.w),o.g2lz(this.h))}catch(t){console.warn(`Shape ${this.uuid} could not load the image ${this.src}`)}}getInitiativeRepr(){return{uuid:this.uuid,visible:!n.gameStore.IS_DM,group:!1,source:this.src,has_img:!0,effects:[],index:1/0}}}t.Asset=r},"6c7c":function(e,t,i){"use strict";i.r(t);var s=i("6a95"),n=i("9088");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("2900");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"20bfdb3e",null);t["default"]=a.exports},"6e4a":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("98ef"),n=i("4aee");class o{constructor(){this.tds=new s.TDS}insertConstraint(e,t){const i=this.insert(e),s=this.insert(t);i!==s&&this.insertConstraintV(i,s)}insertConstraintV(e,t){const i=[[e,t]];while(i.length>0){const e=i.pop(),t=n.edgeInfo(e[0],e[1]);if(t.includes){this.markConstraint(t.fr,t.i),t.vi!==e[1]&&i.push([t.vi,e[1]]);continue}const s=this.findIntersectedFaces(e[0],e[1]);s.found?s.vi!==e[0]&&s.vi!==e[1]?(i.push([e[0],s.vi]),i.push([s.vi,e[1]])):i.push(e):(this.triangulateHole(s.intersectedFaces,s.listAB,s.listBA),s.vi!==e[1]&&i.push([s.vi,e[1]]))}}triangulateHole(e,t,i){const s=[];this.triangulateHole2(e,t,i,s),this.propagatingFlipE(s)}triangulateHole2(e,t,i,s){if(t.length>0){this.triangulateHalfHole(t,s),this.triangulateHalfHole(i,s);const n=t[0][0],o=i[0][0];n.neighbours[2]=o,o.neighbours[2]=n,n.constraints[2]=!0,o.constraints[2]=!0;while(e.length>0)this.tds.deleteTriangle(e.shift())}}triangulateHalfHole(e,t){let i,o,r=0;const a=()=>e[r],l=()=>e[i],c=a()[0].vertices[n.ccw(a()[1])];let u,d,h,f,p,g;i=r,++i;do{d=a()[0],p=a()[1],null!==d.neighbours[p]&&(u=d.neighbours[p],f=n.cw(u.indexV(d.vertices[n.cw(p)])),d=u.neighbours[f],p=this.tds.mirrorIndex(u,f)),h=l()[0],g=l()[1],null!==h.neighbours[g]&&(u=h.neighbours[g],f=n.cw(u.indexV(h.vertices[n.cw(g)])),h=u.neighbours[f],g=this.tds.mirrorIndex(u,f));const v=d.vertices[n.ccw(p)],m=d.vertices[n.cw(p)],y=h.vertices[n.cw(g)],b=n.orientation(v.point,m.point,y.point);switch(b){case s.Sign.RIGHT_TURN:{const s=this.tds.createTriangle(v,y,m,null,null,null);t.push([s,2]),s.neighbours[1]=d,s.neighbours[0]=h,d.neighbours[p]=s,h.neighbours[g]=s,d.isConstrained(p)&&(s.constraints[1]=!0),h.isConstrained(g)&&(s.constraints[0]=!0),v.triangle=s,m.triangle=s,y.triangle=s,o=r+1,e.splice(r,0,[s,2]),e.splice(Math.max(o,i),1),e.splice(Math.min(o,i),1),i=r,v!==c?--r:++i;break}case s.Sign.LEFT_TURN:case s.Sign.COLLINEAR:++r,++i;break}}while(i0){t=r[0][0],a=r[0][1],l=t.neighbours[a],c=this.tds.mirrorIndex(t,a),u=[t,a],r.splice(r.findIndex(e=>e[0]===u[0]&&e[1]===u[1]),1),d[0]=[t,n.cw(a)],d[1]=[t,n.ccw(a)],d[2]=[l,n.cw(c)],d[3]=[l,n.ccw(c)];for(const e of d){const t=e[0],i=e[1];s=[t.neighbours[i],this.tds.mirrorIndex(t,i)],this.lessEdge(e,s)?r.splice(r.findIndex(t=>t[0]===e[0]&&t[1]===e[1]),1):r.splice(r.findIndex(e=>e[0]===s[0]&&e[1]===s[1]),1)}this.flip(t,a);for(const e of d){const t=e[0],i=e[1];this.isFlipable(t,i)&&(s=[t.neighbours[i],this.tds.mirrorIndex(t,i)],this.lessEdge(e,s)?r.push(e):r.push(s))}}}flip(e,t){const i=e.neighbours[t],s=this.tds.mirrorIndex(e,t),o=e.neighbours[n.cw(t)],r=this.tds.mirrorIndex(e,n.cw(t)),a=e.neighbours[n.ccw(t)],l=this.tds.mirrorIndex(e,n.ccw(t)),c=i.neighbours[n.cw(s)],u=this.tds.mirrorIndex(i,n.cw(s)),d=i.neighbours[n.ccw(s)],h=this.tds.mirrorIndex(i,n.ccw(s));this.tds.flip(e,t),e.constraints[e.indexT(i)]=!1,i.constraints[i.indexT(e)]=!1,o.neighbours[r].constraints[this.tds.mirrorIndex(o,r)]=o.constraints[r],a.neighbours[l].constraints[this.tds.mirrorIndex(a,l)]=a.constraints[l],c.neighbours[u].constraints[this.tds.mirrorIndex(c,u)]=c.constraints[u],d.neighbours[h].constraints[this.tds.mirrorIndex(d,h)]=d.constraints[h]}isFlipable(e,t,i=!0){const o=e.neighbours[t];return!e.isInfinite()&&!o.isInfinite()&&(!e.constraints[t]&&n.sideOfOrientedCircle(o,e.vertices[t].point,i)===s.Sign.ON_POSITIVE_SIDE)}insertb(e,t,i,o){let r,a,l=!1;i===s.LocateType.EDGE&&t.isConstrained(o)&&(l=!0,r=t.vertices[n.ccw(o)],a=t.vertices[n.cw(o)]);const c=this.insertc(e,t,i,o);return l?this.updateConstraintsIncident(c,r,a):i!==s.LocateType.VERTEX&&this.clearConstraintsIncident(c),2===this.tds.dimension&&this.updateConstraintsOpposite(c),c}updateConstraintsIncident(e,t,i){if(0!==this.tds.dimension)if(1===this.tds.dimension){const t=new s.EdgeCirculator(e,null);do{t.t.constraints[2]=!0}while(t.next())}else{const o=new s.FaceCirculator(e,null);do{const s=o.t.indexV(e),r=n.cw(s),a=n.ccw(s);o.t.vertices[r]===t||o.t.vertices[r]===i?(o.t.constraints[a]=!0,o.t.constraints[r]=!1):(o.t.constraints[a]=!1,o.t.constraints[r]=!0)}while(o.next())}}clearConstraintsIncident(e){const t=new s.EdgeCirculator(e,null);if(t.valid)do{const e=t.t,i=t.ri;e.constraints[i]=!1,2===this.tds.dimension&&(e.neighbours[i].constraints[this.tds.mirrorIndex(e,i)]=!1)}while(t.next())}insertc(e,t,i,n){if(1===this.tds.vertices.length)return this.insertFirst(e);if(2===this.tds.vertices.length)return i===s.LocateType.VERTEX?this.tds.finiteVertex:this.insertSecond(e);switch(i){case s.LocateType.VERTEX:return t.vertices[n];case s.LocateType.OUTSIDE_AFFINE_HULL:return this.insertOutsideAffineHull(e);case s.LocateType.OUTSIDE_CONVEX_HULL:return this.insertOutsideConvexHull(e,t);case s.LocateType.EDGE:return this.insertInEdge(e,t,n);case s.LocateType.FACE:return this.insertInFace(e,t)}throw new Error("qwe")}insertInEdge(e,t,i){const s=this.tds.insertInEdge(t,i);return s.point=e,s}insertInFace(e,t){const i=this.tds.insertInFace(t);return i.point=e,i}insertFirst(e){const t=this.tds.insertDimUp();return t.point=e,t}insertSecond(e){const t=this.tds.insertDimUp(this.tds._infinite,!0);return t.point=e,t}insertOutsideAffineHull(e){let t=!1;if(1===this.tds.dimension){const i=this.tds.finiteEdge.first,o=n.orientation(i.vertices[0].point,i.vertices[1].point,e);t=o===s.Sign.COUNTERCLOCKWISE}const i=this.tds.insertDimUp(this.tds._infinite,t);return i.point=e,i}insertOutsideConvexHull(e,t){let i;if(1===this.tds.dimension)throw new Error("sdfasdasd");return i=this.insertOutsideConvexHull2(e,t),i.point=e,i}insertOutsideConvexHull2(e,t){let i=t.indexV(this.tds._infinite);const o=[],r=[];let a=new s.FaceCirculator(this.tds._infinite,t),l=!1;while(!l){a.prev(),i=a.t.indexV(this.tds._infinite);const t=a.t.vertices[n.ccw(i)].point,r=a.t.vertices[n.cw(i)].point;n.orientation(e,t,r)===s.Sign.LEFT_TURN?o.push(a.t):l=!0}a=new s.FaceCirculator(this.tds._infinite,t),l=!1;while(!l){a.next(),i=a.t.indexV(this.tds._infinite);const t=a.t.vertices[n.ccw(i)].point,o=a.t.vertices[n.cw(i)].point;n.orientation(e,t,o)===s.Sign.LEFT_TURN?r.push(a.t):l=!0}const c=this.tds.insertInFace(t);let u;c.point=e;while(o.length>0)u=o[0],i=n.ccw(u.indexV(this.tds._infinite)),this.tds.flip(u,i),o.shift();while(r.length>0)u=r[0],i=n.cw(u.indexV(this.tds._infinite)),this.tds.flip(u,i),r.shift();a=new s.FaceCirculator(c,null);while(!a.t.isInfinite())a.next();return this.tds._infinite.triangle=a.t,c}locate(e,t){let i=0,o=0;if(this.tds.dimension<0)return i=s.LocateType.OUTSIDE_AFFINE_HULL,o=4,{loc:null,lt:i,li:o};if(0===this.tds.dimension)return i=n.xyEqual(e,this.tds.finiteVertex.triangle.vertices[0].point)?s.LocateType.VERTEX:s.LocateType.OUTSIDE_AFFINE_HULL,o=4,{loc:null,lt:i,li:o};if(1===this.tds.dimension)return this.marchLocate1D(e);if(null===t){const e=this.tds._infinite.triangle;t=e.neighbours[e.indexV(this.tds._infinite)]}else t.isInfinite()&&(t=t.neighbours[t.indexV(this.tds._infinite)]);return this.marchLocate2D(t,e)}marchLocate1D(e){const t=this.tds._infinite.triangle,i=t.indexV(this.tds._infinite),o=t.neighbours[i],r=n.orientation(o.vertices[0].point,o.vertices[1].point,e);if(r===s.Sign.RIGHT_TURN||r===s.Sign.LEFT_TURN)return{loc:new s.Triangle,lt:s.LocateType.OUTSIDE_AFFINE_HULL,li:4};const a=o.indexT(t);if(n.collinearBetween(e,o.vertices[1-a].point,o.vertices[a].point))return{loc:t,lt:s.LocateType.OUTSIDE_CONVEX_HULL,li:i};if(n.xyEqual(e,o.vertices[1-a].point))return{loc:o,lt:s.LocateType.VERTEX,li:1-a};throw new Error("sdfsdf")}marchLocate2D(e,t){let i,o,r=null,a=!0;while(1){if(e.isInfinite())return{loc:e,lt:s.LocateType.OUTSIDE_CONVEX_HULL,li:e.indexV(this.tds._infinite)};const l=0,c=e.vertices[0].point,u=e.vertices[1].point,d=e.vertices[2].point;let h,f,p;if(a){if(r=e,a=!1,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}}else if(l)if(e.neighbours[0]===r){if(r=e,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}f=s.Sign.POSITIVE}else if(e.neighbours[1]===r){if(r=e,f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}p=s.Sign.POSITIVE}else{if(r=e,p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}h=s.Sign.POSITIVE}else if(e.neighbours[0]===r){if(r=e,p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}if(h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}f=s.Sign.POSITIVE}else if(e.neighbours[1]===r){if(r=e,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}p=s.Sign.POSITIVE}else{if(r=e,f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}h=s.Sign.POSITIVE}const g=(h===s.Sign.COLLINEAR?1:0)+(f===s.Sign.COLLINEAR?1:0)+(p===s.Sign.COLLINEAR?1:0);switch(g){case 0:i=s.LocateType.FACE,o=4;break;case 1:i=s.LocateType.EDGE,o=h===s.Sign.COLLINEAR?2:f===s.Sign.COLLINEAR?0:1;break;case 2:i=s.LocateType.VERTEX,o=h!==s.Sign.COLLINEAR?2:f!==s.Sign.COLLINEAR?0:1;break}if(void 0===i||void 0===o)throw new Error("ert");return{loc:e,lt:i,li:o}}}iLocate(e,t){if(this.tds.dimension<2)return t;if(null===t){const e=this.tds._infinite.triangle;t=e.neighbours[e.indexV(this.tds._infinite)]}else t.isInfinite()&&(t=t.neighbours[t.indexV(this.tds._infinite)]);let i=null,s=t,o=!0,r=2500;while(1){if(!r--)return s;if(s.isInfinite())return s;const t=s.vertices[0].point,a=s.vertices[1].point,l=s.vertices[2].point;if(o){if(i=s,o=!1,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}if(n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}}else if(s.neighbours[0]===i){if(i=s,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}}else if(s.neighbours[1]===i){if(i=s,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}}else{if(i=s,n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}}break}return s}}t.CDT=o},"6e80":function(e,t,i){},"6f8d":function(e,t,i){"use strict";i.r(t);var s=i("5b69"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"6f92":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6c30"),o=i("f10f"),r=i("92b1");class a{constructor(){this.layers=[],this.width=window.innerWidth,this.height=window.innerHeight,this.UUIDMap=new Map,this.interval=30,this.drawLoop=()=>{for(let e=this.layers.length-1;e>=0;e--)this.layers[e].draw();requestAnimationFrame(this.drawLoop)},requestAnimationFrame(this.drawLoop)}reset(){this.layers=[],this.UUIDMap=new Map}setWidth(e){this.width=e;for(const t of this.layers)t.canvas.width=e,t.width=e}setHeight(e){this.height=e;for(const t of this.layers)t.canvas.height=e,t.height=e}addLayer(e){this.layers.push(e),(o.gameStore.IS_DM||e.playerEditable)&&e.selectable&&o.gameStore.addLayer(e.name)}hasLayer(e){return this.layers.some(t=>t.name===e)}getLayer(e){e=void 0===e?o.gameStore.selectedLayer:e;for(const t of this.layers)if(t.name===e)return t}selectLayer(e,t=!0){let i=!1;for(const s of this.layers)s.selectable&&(i&&"fow"!==s.name?s.ctx.globalAlpha=.3:s.ctx.globalAlpha=1,e===s.name&&(o.gameStore.selectLayer({name:e,sync:t}),i=!0),s.clearSelection(),s.invalidate(!0))}getGridLayer(){return this.getLayer("grid")}hasSelection(){const e=this.getSelection();return void 0!==e&&e.length>0}getSelection(){const e=this.getLayer();if(void 0!==e)return e.selection}invalidate(){for(let e=this.layers.length-1;e>=0;e--)this.layers[e].invalidate(!0)}invalidateLight(){for(let e=this.layers.length-1;e>=0;e--)this.layers[e].isVisionLayer&&this.layers[e].invalidate(!0)}dropAsset(e){const t=this.getLayer();if(void 0===t||null===e||null===e.dataTransfer)return;const i=document.createElement("img");i.src=e.dataTransfer.getData("text/plain");const a=new n.Asset(i,new s.GlobalPoint(r.l2gx(e.clientX),r.l2gy(e.clientY)),r.l2gz(i.width),r.l2gz(i.height));if(a.src=new URL(i.src).pathname,o.gameStore.useGrid){const e=o.gameStore.gridSize;a.refPoint=new s.GlobalPoint(Math.round(a.refPoint.x/e)*e,Math.round(a.refPoint.y/e)*e),a.w=Math.max(Math.round(a.w/e)*e,e),a.h=Math.max(Math.round(a.h/e)*e,e)}t.addShape(a,!0)}}t.layerManager=new a,window.lm=t.layerManager},7018:function(e,t,i){"use strict";i.r(t);var s=i("ebb9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},7420:function(e,t,i){"use strict";i.r(t);var s=i("d320"),n=i("778b");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("c969");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"73816298",null);t["default"]=a.exports},"76b3":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{constructor(e,t){this.children=[],this.nPrimitives=e,this.bbox=t}}t.BoundingNode=s;class n extends s{constructor(e,t,i){super(t,i),this.firstPrimOffset=e}}t.LeafNode=n;class o extends s{constructor(e,t,i){super(0,t.bbox.union(i.bbox)),this.dimension=e,this.children.push(t),this.children.push(i)}}t.InteriorNode=o},"778b":function(e,t,i){"use strict";i.r(t);var s=i("5a81"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"77a6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4a5b"),n=i("0bc6"),o=i("2b48"),r=i("af17"),a=i("8f0a"),l=i("6f92"),c=i("206a"),u=i("f10f"),d=i("2838");function h(e){if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement);else if("Delete"===e.key||"Del"===e.key||"Backspace"===e.key){if(void 0===l.layerManager.getLayer)return void console.log("No active layer selected for delete operation");const e=l.layerManager.getLayer();for(let t=e.selection.length-1;t>=0;t--){const i=e.selection[t];s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==i.uuid?(e.removeShape(i,!0,!1),r.EventBus.$emit("SelectionInfo.Shape.Set",null),r.EventBus.$emit("Initiative.Remove",i.uuid)):e.selection.splice(t,1)}}}function f(e){if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)65===e.keyCode&&e.ctrlKey&&e.target.select();else if(e.keyCode>=37&&e.keyCode<=40){const t=Math.round(u.gameStore.gridSize);let i=t*(e.keyCode%2),r=t*(e.keyCode%2?0:1);if(l.layerManager.hasSelection()){const t=l.layerManager.getSelection();i*=e.keyCode<=38?-1:1,r*=e.keyCode<=38?-1:1;let o=new a.Vector(i,r);if(!e.shiftKey||!u.gameStore.IS_DM)for(const e of t)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==e.uuid&&(o=d.calculateDelta(o,e));for(const e of t)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==e.uuid&&(e.refPoint=e.refPoint.add(o),n.socket.emit("Shape.Position.Update",{shape:e.asDict(),redraw:!0,temporary:!1}));u.gameStore.recalculateVision(),l.layerManager.getLayer().invalidate(!1)}else u.gameStore.increasePanX(i*(e.keyCode<=38?1:-1)),u.gameStore.increasePanY(r*(e.keyCode<=38?1:-1)),l.layerManager.invalidate(),o.sendClientOptions()}else if(68===e.keyCode){const e=l.layerManager.getLayer();e&&(e.clearSelection(),e.invalidate(!0))}else if("u"===e.key&&e.ctrlKey)e.preventDefault(),e.stopPropagation(),u.gameStore.toggleUI();else if("c"===e.key&&e.ctrlKey){const e=l.layerManager.getLayer();if(!e)return;if(!e.selection)return;const t=[];for(const i of e.selection)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==i.uuid&&t.push(i.asDict());u.gameStore.setClipboard(t)}else if("v"===e.key&&e.ctrlKey){const e=l.layerManager.getLayer();if(!e)return;if(!u.gameStore.clipboard)return;e.selection=[];for(const t of u.gameStore.clipboard){t.x+=10,t.y+=10,t.uuid=s.uuidv4();const i=t.trackers;t.trackers=[];for(const e of i){const i=Object.assign({},e,{uuid:s.uuidv4()});t.trackers.push(i)}const n=t.auras;t.auras=[];for(const e of n){const i=Object.assign({},e,{uuid:s.uuidv4()});t.auras.push(i)}const o=c.createShapeFromDict(t);void 0!==o&&(e.addShape(o,!0),e.selection.push(o))}1===e.selection.length?r.EventBus.$emit("SelectionInfo.Shape.Set",e.selection[0]):r.EventBus.$emit("SelectionInfo.Shape.Set",null),e.invalidate(!1)}}t.onKeyUp=h,t.onKeyDown=f},"78c7":function(e,t,i){"use strict";var s=i("9227"),n=i.n(s);n.a},"7aaa":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("033f")),r=s.__importDefault(i("7420")),a=s.__importDefault(i("59d8")),l=s.__importDefault(i("bea6")),c=s.__importDefault(i("dec1")),u=s.__importDefault(i("4899")),d=s.__importDefault(i("c277")),h=s.__importDefault(i("9f58")),f=i("6f92"),p=i("9cb7"),g=i("f10f"),v=i("d5df"),m=i("92b1"),y=i("5a5c"),b=s.__importDefault(i("65d9"));let _=class extends n.default{constructor(){super(...arguments),this.currentTool="Select",this.tools=["Select","Pan","Draw","Ruler","Map","Filter","Vision"],this.dmTools=["Map"]}get IS_DM(){return g.gameStore.IS_DM}get currentToolComponent(){return`${this.currentTool.toLowerCase()}-tool`}get visibleTools(){return this.tools.filter(e=>!this.dmTools.includes(e)||this.IS_DM)}toolVisible(e){return"Filter"===e?Object.keys(g.gameStore.labels).length>0:"Vision"!==e||g.gameStore.ownedtokens.length>1}mousedown(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(1===e.button)t="Pan";else if(0!==e.button)return;this.$emit("mousedown",e,t)}mouseup(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(1===e.button)t="Pan";else if(0!==e.button)return;this.$emit("mouseup",e,t)}mousemove(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(0!==(4&e.buttons))t="Pan";else if((1&e.button)>1)return;this.$emit("mousemove",e,t);let i=!1;for(const s of g.gameStore.annotations)if(f.layerManager.UUIDMap.has(s)&&f.layerManager.hasLayer("draw")){const t=f.layerManager.UUIDMap.get(s);t.contains(m.l2g(y.getMouse(e)))&&(i=!0,p.gameManager.annotationManager.setActiveText(t.annotation))}!i&&p.gameManager.annotationManager.shown&&p.gameManager.annotationManager.setActiveText("")}mouseleave(e){0!==(1&e.buttons)&&this.$emit("mouseup",e,this.currentTool)}contextmenu(e){"CANVAS"===e.target.tagName&&2===e.button&&"CANVAS"===e.target.tagName&&this.$emit("contextmenu",e,this.currentTool)}};_=s.__decorate([b.default({components:{"select-tool":d.default,"pan-tool":u.default,"draw-tool":a.default,"ruler-tool":v.RulerTool,"map-tool":c.default,"filter-tool":l.default,"vision-tool":h.default,"shape-menu":o.default,"createtoken-dialog":r.default},watch:{currentTool(e,t){this.$emit("tools-select-change",e,t)}}})],_),t.default=_},"7ba5":function(e,t,i){"use strict";i.r(t);var s=i("fbdd"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"7e15":function(e,t,i){"use strict";i.r(t);var s=i("52a8"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"7eb7":function(e,t,i){"use strict";var s=i("cd76"),n=i.n(s);n.a},"7f1e":function(e,t,i){"use strict";var s=i("fe11"),n=i.n(s);n.a},"839d":function(e,t,i){},"851c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f"));let a=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.question="",this.answer="",this.title="",this.resolve=e=>{},this.reject=()=>{}}submit(){this.resolve(this.answer),this.close()}close(){this.reject(),this.visible=!1,this.question="",this.answer="",this.title=""}prompt(e,t){return this.question=e,this.title=t,this.visible=!0,this.$nextTick(()=>{this.$refs.answer.focus()}),new Promise((e,t)=>{this.resolve=e,this.reject=t})}};a=s.__decorate([o.default({components:{Modal:r.default}})],a),t.default=a},8611:function(e,t,i){"use strict";var s=i("d24b"),n=i.n(s);n.a},8790:function(e,t,i){"use strict";var s=i("a912"),n=i.n(s);n.a},"88af":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[e._v(e._s(e.message))])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"8cd4":function(e,t,i){"use strict";i.r(t);var s=i("9587"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"8db6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("92b1");class o{constructor(e,t,i){this.w=t,this.h=i,this.topLeft=e,this.topRight=new s.GlobalPoint(e.x+t,e.y),this.botRight=new s.GlobalPoint(e.x+t,e.y+i),this.botLeft=new s.GlobalPoint(e.x,e.y+i)}contains(e){return this.topLeft.x<=e.x&&this.topRight.x>=e.x&&this.topLeft.y<=e.y&&this.botLeft.y>=e.y}get points(){return 0===this.w||0===this.h?[[this.topLeft.x,this.topLeft.y]]:[[this.topLeft.x,this.topLeft.y],[this.botLeft.x,this.botLeft.y],[this.botRight.x,this.botRight.y],[this.topRight.x,this.topRight.y]]}offset(e){return new o(this.topLeft.add(e),this.w,this.h)}union(e){const t=Math.min(this.topLeft.x,e.topLeft.x),i=Math.max(this.topRight.x,e.topRight.x),n=Math.min(this.topLeft.y,e.topLeft.y),r=Math.max(this.botLeft.y,e.botLeft.y);return new o(new s.GlobalPoint(t,n),i-t,r-n)}getDiagCorner(e){return e?this.botRight:this.topLeft}intersectsWith(e){return!(e.topLeft.x>this.topRight.x||e.topRight.xthis.botLeft.y||e.botLeft.y=this.topRight.x||e.topRight.x<=this.topLeft.x||e.topLeft.y>=this.botLeft.y||e.botLeft.y<=this.topLeft.y)}intersectP(e,t,i){let s=t.x*(this.getDiagCorner(i[0]).x-e.origin.x),n=t.x*(this.getDiagCorner(!i[0]).x-e.origin.x);const o=t.y*(this.getDiagCorner(i[1]).y-e.origin.y),r=t.y*(this.getDiagCorner(!i[1]).y-e.origin.y);return s>r||o>n?{hit:!1,min:s,max:n}:(o>s&&(s=o),r0,min:s,max:n})}center(){return this.topLeft.add(new s.Vector(this.w/2,this.h/2))}getMaxExtent(){return this.w>this.h?0:1}visibleInCanvas(e){const t=!(n.g2lx(this.topLeft.x)>e.width||n.g2ly(this.topLeft.y)>e.height||n.g2lx(this.topRight.x)<0||n.g2ly(this.botRight.y)<0);return!!t}}t.BoundingRect=o},"8f0a":function(e,t,i){"use strict";function s(e,t){const i=e.x-t.x,s=e.y-t.y;return Math.sqrt(i*i+s*s)}Object.defineProperty(t,"__esModule",{value:!0}),t.getPointDistance=s;class n{constructor(e,t){this.x=e,this.y=t}static fromArray(e){return new n(e[0],e[1])}add(e){return new n(this.x+e.x,this.y+e.y)}subtract(e){return new a(this.x-e.x,this.y-e.y)}clone(){return new n(this.x,this.y)}get(e){return 0===e?this.x:this.y}asArray(){return[this.x,this.y]}}t.Point=n;class o extends n{add(e){return super.add(e)}subtract(e){return super.subtract(e)}clone(){return super.clone()}static fromArray(e){return new o(e[0],e[1])}}t.GlobalPoint=o;class r extends n{add(e){return super.add(e)}subtract(e){return super.subtract(e)}clone(){return super.clone()}}t.LocalPoint=r;class a{constructor(e,t){this.x=e,this.y=t}dot(e){return this.x*e.x+this.y*e.y}inverse(){return new a(0===this.x?0:1/this.x,0===this.y?0:1/this.y)}length(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}normalize(){const e=this.length();return new a(this.x/e,this.y/e)}reverse(){return new a(-this.x,-this.y)}multiply(e){return new a(this.x*e,this.y*e)}angle(){return 180*Math.atan2(this.y,this.x)/Math.PI}}t.Vector=a;class l{constructor(e,t,i){this.direction=t,this.origin=e,void 0===i&&(i=1/0),this.tMax=i}static fromPoints(e,t){const i=new a(t.x-e.x,t.y-e.y);let s;return s=Math.abs(i.x)>.01?(t.x-e.x)/i.x:(t.y-e.y)/i.y,new l(e,i,s)}get(e){return new n(this.origin.x+e*this.direction.x,this.origin.y+e*this.direction.y)}getDistance(e,t){return Math.sqrt(Math.pow(t-e,2)*(Math.pow(this.direction.x,2)+Math.pow(this.direction.y,2)))}getT(e,t){return e+Math.sqrt(Math.pow(t,2)/(Math.pow(this.direction.x,2)+Math.pow(this.direction.y,2)))}}t.Ray=l},"8f54":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",[e._l(e.folders,function(t){return i("li",{key:t,staticClass:"folder",on:{click:function(t){return t.stopPropagation(),e.toggle(t)}}},[e._v("\n "+e._s(t)+"\n "),i("asset-node",{attrs:{asset:e.asset[t]}})],1)}),e._l(e.files,function(t){return i("li",{key:t.name,staticClass:"file draggable token",attrs:{draggable:"true"},on:{mouseover:function(i){e.showImage=t.hash},mouseout:function(t){e.showImage=null},dragstart:function(i){return e.dragStart(i,"/static/assets/"+t.hash)}}},[e._v("\n "+e._s(t.name)+"\n "),e.showImage==t.hash?i("div",{staticClass:"preview"},[i("img",{staticClass:"asset-preview-image",attrs:{src:"/static/assets/"+t.hash}})]):e._e()])})],2)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"8fc5":function(e,t,i){"use strict";var s=i("6e80"),n=i.n(s);n.a},9088:function(e,t,i){"use strict";i.r(t);var s=i("3411"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"91df":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("6f79"));i("fe80");const a=i("2ef0"),l=s.__importDefault(i("a535")),c=s.__importDefault(i("cec2")),u=s.__importDefault(i("f5fe")),d=s.__importDefault(i("f74c")),h=s.__importDefault(i("19f9")),f=s.__importDefault(i("f551")),p=s.__importDefault(i("f086")),g=s.__importDefault(i("6100")),v=i("0bc6"),m=i("77a6"),y=i("bb17"),b=i("6f92"),_=i("f10f"),w=i("92b1"),S=i("8f0a"),x=s.__importDefault(i("e0e8"));let C=class extends n.default{constructor(){super(...arguments),this.ready={manager:!1,tools:!1}}get showUI(){return _.gameStore.showUI}get IS_DM(){return _.gameStore.IS_DM}get FAKE_PLAYER(){return _.gameStore.FAKE_PLAYER}get layers(){return _.gameStore.layers}get selectedLayer(){return _.gameStore.selectedLayer}get zoomDisplay(){return _.gameStore.zoomDisplay}set zoomDisplay(e){_.gameStore.updateZoom({newZoomDisplay:e,zoomLocation:w.l2g(new S.LocalPoint(window.innerWidth/2,window.innerHeight/2))})}mounted(){window.addEventListener("resize",this.resizeWindow),window.addEventListener("keyup",m.onKeyUp),window.addEventListener("keydown",m.onKeyDown),this.ready.manager=!0}destroyed(){window.removeEventListener("resize",this.resizeWindow),window.removeEventListener("keyup",m.onKeyUp),window.removeEventListener("keydown",m.onKeyDown),this.ready.manager=!1}zoom(e){a.throttle(y.scrollZoom)(e)}resizeWindow(){b.layerManager.setWidth(window.innerWidth),b.layerManager.setHeight(window.innerHeight),b.layerManager.invalidate()}mousedown(e){this.$refs.tools.mousedown(e)}mouseup(e){this.$refs.tools.mouseup(e)}mousemove(e){this.$refs.tools.mousemove(e)}mouseleave(e){this.$refs.tools.mouseleave(e)}contextmenu(e){this.$refs.tools.contextmenu(e)}selectLayer(e){b.layerManager.selectLayer(e)}drop(e){if(null!==e&&null!==e.dataTransfer)if(e.dataTransfer.files.length>0)this.$refs.confirm.open("Uploading files should be done through the asset manager.","Ok","").then(()=>{},()=>{});else{if(""===e.dataTransfer.getData("text/plain"))return;b.layerManager.dropAsset(e)}}};C=s.__decorate([o.default({components:{"tool-bar":g.default,"selection-info":p.default,"prompt-dialog":c.default,"confirm-dialog":l.default,"menu-bar":h.default,"initiative-dialog":u.default,"zoom-slider":r.default,"note-dialog":f.default,"label-dialog":d.default,"dm-settings":x.default},beforeRouteEnter(e,t,i){v.createConnection(e),i()},beforeRouteLeave(e,t,i){v.socket.disconnect(),i()}})],C),t.default=C},9227:function(e,t,i){},"92b1":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("f10f");function o(e){const t=n.gameStore.zoomFactor,i=n.gameStore.panX,o=n.gameStore.panY;return new s.LocalPoint((e.x+i)*t,(e.y+o)*t)}function r(e){return o(new s.GlobalPoint(e,0)).x}function a(e){return o(new s.GlobalPoint(0,e)).y}function l(e){return e*n.gameStore.zoomFactor}function c(e){return e/n.gameStore.unitSize*n.gameStore.gridSize}function u(e){return l(c(e))}function d(e){const t=n.gameStore.zoomFactor,i=n.gameStore.panX,o=n.gameStore.panY;return e instanceof s.LocalPoint?new s.GlobalPoint(e.x/t-i,e.y/t-o):new s.Ray(d(e.origin),e.direction.multiply(1/t),e.tMax)}function h(e){return d(new s.LocalPoint(e,0)).x}function f(e){return d(new s.LocalPoint(0,e)).y}function p(e){return e/n.gameStore.zoomFactor}function g(e){return p(c(e))}t.g2l=o,t.g2lx=r,t.g2ly=a,t.g2lz=l,t.getUnitDistance=c,t.g2lr=u,t.l2g=d,t.l2gx=h,t.l2gy=f,t.l2gz=p,t.l2gr=g,window.g2lx=r,window.g2ly=a},9587:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("2f62"),a=s.__importDefault(i("3b36")),l=s.__importDefault(i("0ddd")),c=i("4a5b"),u=i("0bc6"),d=i("f10f"),h=i("af17");let f=class extends n.default{constructor(){super(...arguments),this.visible={settings:!1,locations:!1}}get IS_DM(){return d.gameStore.IS_DM||d.gameStore.FAKE_PLAYER}get gridColour(){return d.gameStore.gridColour}set gridColour(e){d.gameStore.setGridColour({colour:e,sync:!0})}get fowColour(){return d.gameStore.fowColour}set fowColour(e){d.gameStore.setFOWColour({colour:e,sync:!0})}get rulerColour(){return d.gameStore.rulerColour}set rulerColour(e){d.gameStore.setRulerColour({colour:e,sync:!0})}settingsClick(e){if(e.target.classList.contains("menu-accordion")){e.target.classList.toggle("menu-accordion-active");const t=e.target.nextElementSibling;null!==t&&(t.style.display=""===t.style.display?"block":"")}}changeLocation(e){u.socket.emit("Location.Change",e)}createLocation(){c.getRef("prompt").prompt("New location name:","Create new location").then(e=>{u.socket.emit("Location.New",e)},()=>{})}createNote(){const e={title:"New note",text:"",uuid:c.uuidv4()};d.gameStore.newNote({note:e,sync:!0}),this.openNote(e)}openNote(e){c.getRef("note").open(e)}openDmSettings(){h.EventBus.$emit("DmSettings.Open")}};f=s.__decorate([o.default({components:{"color-picker":a.default,"asset-node":l.default},computed:Object.assign({},r.mapState("game",["locations","assets","notes"]))})],f),t.default=f},"979e":function(e,t,i){"use strict";i.r(t);var s=i("0634"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"98ef":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4aee");let n;var o,r;function a(){return[t.INFINITE,t.INFINITE]}t.INFINITE=-Infinity,function(e){e[e["NEGATIVE"]=-1]="NEGATIVE",e[e["ZERO"]=0]="ZERO",e[e["POSITIVE"]=1]="POSITIVE",e[e["RIGHT_TURN"]=-1]="RIGHT_TURN",e[e["LEFT_TURN"]=1]="LEFT_TURN",e[e["SMALLER"]=-1]="SMALLER",e[e["EQUAL"]=0]="EQUAL",e[e["LARGER"]=1]="LARGER",e[e["CLOCKWISE"]=-1]="CLOCKWISE",e[e["COUNTERCLOCKWISE"]=1]="COUNTERCLOCKWISE",e[e["COLLINEAR"]=0]="COLLINEAR",e[e["COPLANAR"]=0]="COPLANAR",e[e["DEGENERATE"]=0]="DEGENERATE",e[e["ON_NEGATIVE_SIDE"]=-1]="ON_NEGATIVE_SIDE",e[e["ON_ORIENTED_BOUNDARY"]=0]="ON_ORIENTED_BOUNDARY",e[e["ON_POSITIVE_SIDE"]=1]="ON_POSITIVE_SIDE"}(o=t.Sign||(t.Sign={})),function(e){e[e["UNDEFINED"]=-1]="UNDEFINED",e[e["VERTEX_VERTEX"]=0]="VERTEX_VERTEX",e[e["VERTEX_EDGE"]=1]="VERTEX_EDGE",e[e["EDGE_VERTEX"]=2]="EDGE_VERTEX",e[e["EDGE_EDGE"]=3]="EDGE_EDGE"}(r||(r={}));class l{constructor(...e){this.vertices=[],this.neighbours=[null,null,null],this.constraints=[!1,!1,!1],this.uid=l._counter++,this.vertices=e}from(e){return this.vertices=e.vertices.slice(0,e.vertices.length),this.neighbours=e.neighbours.slice(0,e.neighbours.length),this.constraints=e.constraints.slice(0,e.constraints.length),this}get dimension(){return this.vertices.length-1}addVertex(e){void 0===e&&console.log("UNDEFINED HIERE"),this.vertices.push(e),e.triangle=this}isConstrained(e){return this.constraints[e]}reorient(){this.vertices=[this.vertices[1],this.vertices[0],this.vertices[2]].slice(0,this.vertices.length),this.neighbours=[this.neighbours[1],this.neighbours[0],this.neighbours[2]],this.constraints=[this.constraints[1],this.constraints[0],this.constraints[2]]}indexV(e){return this.vertices.indexOf(e)}indexT(e){return this.neighbours.indexOf(e)}isInfinite(e){return void 0===e?this.vertices.includes(n):this.vertices[s.ccw(e)].infinite||this.vertices[s.cw(e)].infinite}contains(e){const t=-this.vertices[1].point[1]*this.vertices[2].point[0]+this.vertices[0].point[1]*(-this.vertices[1].point[0]+this.vertices[2].point[0])+this.vertices[0].point[0]*(this.vertices[1].point[1]-this.vertices[2].point[1])+this.vertices[1].point[0]*this.vertices[2].point[1],i=t<0?-1:1,s=(this.vertices[0].point[1]*this.vertices[2].point[0]-this.vertices[0].point[0]*this.vertices[2].point[1]+(this.vertices[2].point[1]-this.vertices[0].point[1])*e[0]+(this.vertices[0].point[0]-this.vertices[2].point[0])*e[1])*i;if(s<0)return!1;const n=(this.vertices[0].point[0]*this.vertices[1].point[1]-this.vertices[0].point[1]*this.vertices[1].point[0]+(this.vertices[0].point[1]-this.vertices[1].point[1])*e[0]+(this.vertices[1].point[0]-this.vertices[0].point[0])*e[1])*i;return n>0&&s+nt!==e)}setAdjacency(e,t,i,s){e.neighbours[t]=i,i.neighbours[s]=e}get finiteVertex(){return this.vertices[1]}get infiniteVertex(){const e=new c(a());return e.infinite=!0,e}get finiteEdge(){if(this.dimension<1)throw new Error("aspo");const e=new d(this);while(e.valid)e.next();return e.collect()}insertDimUp(e=new c,t=!0){const i=this.createVertex();let s,n;switch(this.dimension++,this.dimension){case 0:s=this.triangles[0],n=new l(i),this.triangles.push(n),this.setAdjacency(s,0,n,0),i.triangle=n;break;case 1:case 2:{const o=[],r=this.triangles.slice(0,this.triangles.length);for(const t of r){const s=(new l).from(t);this.triangles.push(s),t.vertices[this.dimension]=i,s.vertices[this.dimension]=e,this.setAdjacency(t,this.dimension,s,this.dimension),t.vertices.includes(e)&&o.push(s)}for(const e of r){const t=e.neighbours[this.dimension];for(let i=0;ie.center.center().get(r)0){if(i=!0,s=e.tMax=d.min,n=d.max,0===o||t)break;r=a[--o]}else c[u.dimension]?(a[o++]=r+1,r=u.secondChildOffset):(a[o++]=u.secondChildOffset,r++);else{if(0===o)break;r=a[--o]}}return{hit:i,intersect:e.get(s),tMin:s,tMax:n}}compact(){this.offset=0,null!==this.root&&this.flatten(this.root)}flatten(e){const t=this.offset,i=this.offset++;if(0===e.nPrimitives){this.flatten(e.children[0]);const i=this.flatten(e.children[1]);this.nodes[t]={bbox:e.bbox,dimension:e.dimension,nPrimitives:0,secondChildOffset:i}}else this.nodes[t]={bbox:e.bbox,primitivesOffset:e.firstPrimOffset,nPrimitives:e.nPrimitives};return i}createLeaf(e,t,i,s){const n=this.orderedPrims.length;for(let o=e;o{i(t=>{t.owned=e.data.owned,t.joined=e.data.joined})}).catch(e=>{i(t=>{t.error=e.message})})}createRoom(e){n.default.post("/api/rooms",{name:this.newSessionName}).then(e=>{this.$router.push(`/game/${encodeURIComponent(a.coreStore.username)}/${encodeURIComponent(this.newSessionName)}`)}).catch(e=>{this.error=e.message})}};l=s.__decorate([r.default],l),t.default=l},a535:function(e,t,i){"use strict";i.r(t);var s=i("e06e"),n=i("f30c");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("223d");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"1883e207",null);t["default"]=a.exports},a68b:function(e,t,i){"use strict";i.r(t);var s=i("308b"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},a7b3:function(e,t,i){"use strict";var s=i("6542"),n=i.n(s);n.a},a83f:function(e,t,i){"use strict";var s=i("0525"),n=i.n(s);n.a},a912:function(e,t,i){},aa69:function(e,t,i){"use strict";i.r(t);var s=i("0cf7"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},af17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026"));t.EventBus=new n.default},b0ac:function(e,t,i){"use strict";i.r(t);var s=i("a474"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b0c0:function(e,t,i){},b2ed:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("c266"),n=i("f10f"),o=i("92b1"),r=i("5a5c");class a extends s.BaseRect{constructor(e,t,i,s,n,o){super(e,t,i,s,n,o),this.type="rect"}asDict(){return super.getBaseDict()}draw(e){super.draw(e),"fog"===this.fillColour?e.fillStyle=r.getFogColour():e.fillStyle=this.fillColour;const t=n.gameStore.zoomFactor,i=o.g2l(this.refPoint);e.fillRect(i.x,i.y,this.w*t,this.h*t),"rgba(0, 0, 0, 0)"!==this.strokeColour&&(e.strokeStyle=this.strokeColour,e.lineWidth=5,e.strokeRect(i.x,i.y,this.w*t,this.h*t))}}t.Rect=a},b599:function(e,t,i){},b6bc:function(e,t,i){"use strict";i.r(t);var s=i("5394"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b809:function(e,t,i){"use strict";i.r(t);var s=i("ca56"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b906:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("bab4"),o=i("6f92"),r=i("d1ec"),a=i("f10f"),l=i("92b1"),c=i("cee3");class u extends n.Layer{constructor(){super(...arguments),this.isVisionLayer=!0}draw(){if(!this.valid){const t=this.ctx;if(!a.gameStore.fowLOS||r.Settings.skipPlayerFOW)return t.clearRect(0,0,this.canvas.width,this.canvas.height),void(this.valid=!0);t.clearRect(0,0,this.canvas.width,this.canvas.height);const i=t.globalCompositeOperation;t.fillStyle="rgba(0, 0, 0, 1)",a.gameStore.IS_DM||super.draw(!a.gameStore.fullFOW);const n=t.canvas.width+t.canvas.height;for(const u of a.gameStore.activeTokens){const i=o.layerManager.UUIDMap.get(u);if(void 0===i)continue;const d=i.center(),h=l.g2l(d);if("bvh"===a.gameStore.visionMode){t.beginPath();let e=-1;for(let i=0;i<2*Math.PI;i+=r.Settings.angleSteps/2/180*Math.PI){const o=Math.cos(i),r=Math.sin(i),c=new s.Ray(d,new s.Vector(o,r)),u=a.gameStore.BV.intersect(c);u.hit?(-1!==e&&(t.arc(h.x,h.y,n,e,i),e=-1),t.lineTo(l.g2lx(u.intersect.x),l.g2ly(u.intersect.y))):-1===e&&(t.lineTo(h.x+n*o,h.y+n*r),e=i)}-1!==e?t.arc(h.x,h.y,n,e,2*Math.PI):t.closePath(),t.fill()}else{{const e=t.createRadialGradient(h.x,h.y,l.g2lr(a.gameStore.visionRangeMin),h.x,h.y,l.g2lr(a.gameStore.visionRangeMax));e.addColorStop(0,"rgba(0, 0, 0, 1)"),e.addColorStop(1,"rgba(0, 0, 0, 0)"),t.fillStyle=e}try{const s=c.computeVisibility(i.center(),"vision");t.beginPath(),t.moveTo(l.g2lx(s[0][0]),l.g2ly(s[0][1]));for(const e of s)t.lineTo(l.g2lx(e[0]),l.g2ly(e[1]));t.closePath(),t.fill()}catch(e){}}}a.gameStore.IS_DM&&super.draw(!a.gameStore.fullFOW),t.globalCompositeOperation=i}}}t.FOWPlayersLayer=u},bab4:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("0bc6"),n=i("af17"),o=i("6f92"),r=i("206a"),a=i("f10f"),l=i("92b1");class c{constructor(e,t){this.selectable=!1,this.playerEditable=!1,this.isVisionLayer=!1,this.valid=!1,this.shapes=[],this.selection=[],this.selectionColor="#CC0000",this.selectionWidth=2,this.canvas=e,this.name=t,this.width=e.width,this.height=e.height,this.ctx=e.getContext("2d")}invalidate(e){this.valid=!1,e||o.layerManager.invalidateLight()}addShape(e,t,i,n=!0){void 0===i&&(i=!1),e.layer=this.name,this.shapes.push(e),o.layerManager.UUIDMap.set(e.uuid,e),e.checkVisionSources(n),e.setMovementBlock(e.movementObstruction,n),e.ownedBy(a.gameStore.username)&&e.isToken&&a.gameStore.ownedtokens.push(e.uuid),e.annotation.length&&a.gameStore.annotations.push(e.uuid),t&&s.socket.emit("Shape.Add",{shape:e.asDict(),temporary:i}),n&&this.invalidate(!t)}setShapes(e){for(const t of e){const e=r.createShapeFromDict(t);if(void 0===e)return void console.log(`Shape with unknown type ${t.type_} could not be added`);this.addShape(e,!1,!1,!1)}this.clearSelection(),this.invalidate(!1)}removeShape(e,t,i){void 0===i&&(i=!1),this.shapes.splice(this.shapes.indexOf(e),1),t&&s.socket.emit("Shape.Remove",{shape:e.asDict(),temporary:i});const n=a.gameStore.visionSources.findIndex(t=>t.shape===e.uuid),r=a.gameStore.visionBlockers.findIndex(t=>t===e.uuid),l=a.gameStore.movementblockers.findIndex(t=>t===e.uuid),c=a.gameStore.annotations.findIndex(t=>t===e.uuid);n>=0&&a.gameStore.visionSources.splice(n,1),r>=0&&a.gameStore.visionBlockers.splice(r,1),l>=0&&a.gameStore.movementblockers.splice(l,1),c>=0&&a.gameStore.annotations.splice(c,1);const u=a.gameStore.annotations.indexOf(e.uuid);u>=0&&a.gameStore.annotations.splice(u,1);const d=a.gameStore.ownedtokens.indexOf(e.uuid);d>=0&&a.gameStore.ownedtokens.splice(d,1),o.layerManager.UUIDMap.delete(e.uuid);const h=this.selection.indexOf(e);h>=0&&this.selection.splice(h,1),r>=0&&a.gameStore.recalculateVision(),l>=0&&a.gameStore.recalculateMovement(),this.invalidate(!t)}clear(){this.ctx.clearRect(0,0,this.width,this.height)}clearSelection(){this.selection=[],n.EventBus.$emit("SelectionInfo.Shape.Set",null)}draw(e){if(!this.valid){const t=this.ctx,i=t.globalCompositeOperation;e=void 0===e||e,e&&this.clear();const s=this;if(this.shapes.forEach(e=>{e.options.has("skipDraw")&&e.options.get("skipDraw")||void 0!==o.layerManager.getLayer()&&e.visibleInCanvas(s.canvas)&&("fow"===s.name&&e.visionObstruction&&o.layerManager.getLayer().name!==s.name||e.drawAuras(t))}),this.shapes.forEach(e=>{e.options.has("skipDraw")&&e.options.get("skipDraw")||0===e.labels.length&&a.gameStore.filterNoLabel||e.labels.length&&a.gameStore.labelFilters.length&&!e.labels.some(e=>a.gameStore.labelFilters.includes(e.uuid))||void 0!==o.layerManager.getLayer()&&e.visibleInCanvas(s.canvas)&&("fow"===s.name&&e.visionObstruction&&o.layerManager.getLayer().name!==s.name||e.draw(t))}),null!=this.selection){t.fillStyle=this.selectionColor,t.strokeStyle=this.selectionColor,t.lineWidth=this.selectionWidth;const e=a.gameStore.zoomFactor;this.selection.forEach(i=>{t.globalCompositeOperation=i.globalCompositeOperation;const s=i.getBoundingBox();t.strokeRect(l.g2lx(s.topLeft.x),l.g2ly(s.topLeft.y),s.w*e,s.h*e);for(const e of i.points)t.beginPath(),t.arc(l.g2lx(e[0]),l.g2ly(e[1]),3,0,2*Math.PI),t.fill();t.beginPath(),t.moveTo(l.g2lx(i.points[0][0]),l.g2ly(i.points[0][1]));for(let e=1;e<=i.points.length;e++){const s=i.points[e%i.points.length];t.lineTo(l.g2lx(s[0]),l.g2ly(s[1]))}t.stroke()})}t.globalCompositeOperation=i,this.valid=!0}}moveShapeOrder(e,t,i){const n=this.shapes.indexOf(e);n!==t&&(this.shapes.splice(n,1),this.shapes.splice(t,0,e),i&&s.socket.emit("Shape.Order.Set",{shape:e.asDict(),index:t}),this.invalidate(!0))}}t.Layer=c},bb17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("f10f"),n=i("92b1"),o=i("5a5c");function r(e){if(!e.target||!e.target.tagName||"CANVAS"!==e.target.tagName)return;let t;t=-1*Math.sign(e.deltaY),s.gameStore.updateZoom({newZoomDisplay:s.gameStore.zoomDisplay-.1*t,zoomLocation:n.l2g(o.getMouse(e))})}t.scrollZoom=r},bea6:function(e,t,i){"use strict";i.r(t);var s=i("e8bb"),n=i("b6bc");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("e3f5"),i("99ea");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"dca395d6",null);t["default"]=a.exports},c106:function(e,t,i){},c159:function(e,t,i){},c266:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("f10f"),a=i("2838"),l=i("92b1");class c extends o.Shape{constructor(e,t,i,s,n,o){super(e,s,n,o),this.w=t,this.h=i}getBaseDict(){return Object.assign(super.getBaseDict(),{width:this.w,height:this.h})}getBoundingBox(){return new n.BoundingRect(this.refPoint,this.w,this.h)}get points(){if(0===this.w||0===this.h)return[[this.refPoint.x,this.refPoint.y]];const e=this.refPoint.add(new s.Vector(0,this.h)),t=this.refPoint.add(new s.Vector(this.w,this.h)),i=this.refPoint.add(new s.Vector(this.w,0));return[[this.refPoint.x,this.refPoint.y],[e.x,e.y],[t.x,t.y],[i.x,i.y]]}contains(e){return this.refPoint.x<=e.x&&this.refPoint.x+this.w>=e.x&&this.refPoint.y<=e.y&&this.refPoint.y+this.h>=e.y}center(e){if(void 0===e)return this.refPoint.add(new s.Vector(this.w/2,this.h/2));this.refPoint=new s.GlobalPoint(e.x-this.w/2,e.y-this.h/2)}visibleInCanvas(e){if(super.visibleInCanvas(e))return!0;const t=!(l.g2lx(this.refPoint.x)>e.width||l.g2ly(this.refPoint.y)>e.height||l.g2lx(this.refPoint.x+this.w)<0||l.g2ly(this.refPoint.y+this.h)<0);return!!t}snapToGrid(){const e=r.gameStore.gridSize,t=this.center(),i=t.x,n=t.y;let o,l;o=this.w/e%2===0?Math.round(i/e)*e-this.w/2:(Math.round((i+e/2)/e)-.5)*e-this.w/2,l=this.h/e%2===0?Math.round(n/e)*e-this.h/2:(Math.round((n+e/2)/e)-.5)*e-this.h/2;const c=a.calculateDelta(new s.Vector(o-this.refPoint.x,l-this.refPoint.y),this);this.refPoint=this.refPoint.add(c),this.invalidate(!1)}resizeToGrid(){const e=r.gameStore.gridSize;this.refPoint=new s.GlobalPoint(Math.round(this.refPoint.x/e)*e,Math.round(this.refPoint.y/e)*e),this.w=Math.max(Math.round(this.w/e)*e,e),this.h=Math.max(Math.round(this.h/e)*e,e),this.invalidate(!1)}resize(e,t){const i=r.gameStore.zoomFactor;switch(e){case 0:this.w=l.g2lx(this.refPoint.x)+this.w*i-t.x,this.h=l.g2ly(this.refPoint.y)+this.h*i-t.y,this.refPoint=l.l2g(t);break;case 1:this.w=l.g2lx(this.refPoint.x)+this.w*i-t.x,this.h=t.y-l.g2ly(this.refPoint.y),this.refPoint=new s.GlobalPoint(l.l2gx(t.x),this.refPoint.y);break;case 2:this.w=t.x-l.g2lx(this.refPoint.x),this.h=t.y-l.g2ly(this.refPoint.y);break;case 3:this.w=t.x-l.g2lx(this.refPoint.x),this.h=l.g2ly(this.refPoint.y)+this.h*i-t.y,this.refPoint=new s.GlobalPoint(this.refPoint.x,l.l2gy(t.y));break}this.w/=i,this.h/=i,this.w<0&&(this.refPoint=this.refPoint.add(new s.Vector(this.w,0)),this.w=Math.abs(this.w)),this.h<0&&(this.refPoint=this.refPoint.add(new s.Vector(0,this.h)),this.h=Math.abs(this.h))}}t.BaseRect=c},c277:function(e,t,i){"use strict";i.r(t);var s=i("22bd"),n=i("e27a");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},c31c:function(e,t,i){},c5321:function(e,t,i){"use strict";var s=i("d71c"),n=i.n(s);n.a},c5ff:function(e,t,i){},c6b4:function(e,t,i){"use strict";i.r(t);var s=i("2a37"),n=i("b0ac");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("8611");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b102d41e",null);t["default"]=a.exports},c969:function(e,t,i){"use strict";var s=i("3a20"),n=i.n(s);n.a},c9a2:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"AssetManager"}},[i("div",{attrs:{id:"titlebar"}},[e._v("Asset Manager")]),i("div",{attrs:{id:"main"}},[i("div",{attrs:{id:"assets"},on:{dragover:function(t){return t.preventDefault(),e.moveDrag(t)},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.stopDrag(t,e.currentFolder)}}},[i("div",{attrs:{id:"breadcrumbs"}},[i("div",[e._v("/")]),e._l(e.path,function(t){return i("div",{key:t},[e._v(e._s(e.idMap.get(t).name))])})],2),i("div",{attrs:{id:"actionbar"}},[i("input",{attrs:{id:"files",type:"file",multiple:"",hidden:""},on:{change:function(t){return e.upload()}}}),i("div",{attrs:{title:"Create folder"},on:{click:e.createDirectory}},[i("i",{staticClass:"fas fa-plus-square"})]),i("div",{attrs:{title:"Upload files"},on:{click:e.prepareUpload}},[i("i",{staticClass:"fas fa-upload"})])]),i("div",{attrs:{id:"explorer"}},[e.path.length?i("div",{staticClass:"inode folder",on:{dblclick:function(t){return e.changeDirectory(-1)},dragover:function(t){return t.preventDefault(),e.moveDrag(t)},dragleave:function(t){return t.preventDefault(),e.leaveDrag(t)},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.stopDrag(t,e.parentFolder)}}},[i("i",{staticClass:"fas fa-folder",staticStyle:{"font-size":"50px"}}),i("div",{staticClass:"title"},[e._v("..")])]):e._e(),e._l(e.folders,function(t){return i("div",{key:t,staticClass:"inode folder",class:{"inode-selected":e.selected.includes(t)},attrs:{draggable:"true"},on:{click:function(i){return e.select(i,t)},dblclick:function(i){return e.changeDirectory(t)},contextmenu:function(i){return i.preventDefault(),e.$refs.cm.open(i,t)},dragstart:function(i){return e.startDrag(i,t)},dragover:function(t){return t.preventDefault(),e.moveDrag(t)},dragleave:function(t){return t.preventDefault(),e.leaveDrag(t)},drop:function(i){return i.preventDefault(),i.stopPropagation(),e.stopDrag(i,t)}}},[i("i",{staticClass:"fas fa-folder",staticStyle:{"font-size":"50px"}}),i("div",{staticClass:"title"},[e._v(e._s(e.idMap.get(t).name))])])}),e._l(e.files,function(t){return i("div",{key:t,staticClass:"inode file",class:{"inode-selected":e.selected.includes(t)},attrs:{draggable:"true"},on:{click:function(i){return e.select(i,t)},contextmenu:function(i){return i.preventDefault(),e.$refs.cm.open(i,t)},dragstart:function(i){return e.startDrag(i,t)}}},[i("img",{attrs:{src:"/static/assets/"+e.idMap.get(t).file_hash,width:"50"}}),i("div",{staticClass:"title"},[e._v(e._s(e.idMap.get(t).name))])])})],2)]),e.firstSelectedFile?i("div",{attrs:{id:"asset-details"}},[i("div",{attrs:{id:"asset-detail-title"}},[e._v(e._s(e.firstSelectedFile.name))]),i("img",{attrs:{src:"/static/assets/"+e.firstSelectedFile.file_hash}})]):e._e()]),i("AssetContextMenu",{ref:"cm"}),i("Prompt",{ref:"prompt"}),i("ConfirmDialog",{ref:"confirm"})],1)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},ca56:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("1c76")),a=i("0bc6"),l=i("af17"),c=i("f10f"),u=i("92b1");let d=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.x=0,this.y=0}get IS_DM(){return c.gameStore.IS_DM}open(e){this.visible=!0,this.x=e.pageX,this.y=e.pageY,this.$nextTick(()=>this.$children[0].$el.focus())}close(){this.visible=!1}bringPlayers(){c.gameStore.IS_DM&&(a.socket.emit("Players.Bring",{x:u.l2gx(this.x),y:u.l2gy(this.y)}),this.close())}createToken(){this.$parent.$parent.$refs.createtokendialog.open(this.x,this.y),this.close()}showInitiative(){l.EventBus.$emit("Initiative.Show"),this.close()}};d=s.__decorate([o.default({components:{ContextMenu:r.default}})],d),t.default=d},cad7:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("cc67");r.default.registerHooks(["beforeRouteEnter"]);let l=class extends o.default{beforeRouteEnter(e,t,i){n.default.post("/api/logout").then(()=>{a.coreStore.setAuthenticated(!1),a.coreStore.setUsername(""),i({path:"/auth/login"})})}};l=s.__decorate([r.default({})],l),t.default=l},cc67:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=i("6fc5"),o=i("3a0b");let r=class extends n.VuexModule{constructor(){super(...arguments),this.authenticated=!1,this.initialized=!1,this.username=""}setAuthenticated(e){this.authenticated=e}setInitialized(e){this.initialized=e}setUsername(e){this.username=e}};s.__decorate([n.Mutation],r.prototype,"setAuthenticated",null),s.__decorate([n.Mutation],r.prototype,"setInitialized",null),s.__decorate([n.Mutation],r.prototype,"setUsername",null),r=s.__decorate([n.Module({dynamic:!0,store:o.rootStore,name:"core"})],r),t.coreStore=n.getModule(r)},cd49:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("3dfd")),r=i("5f86"),a=i("3a0b");n.default.config.productionTip=!1,n.default.config.devtools=!0,n.default.config.performance=!0,t.app=new n.default({router:r.router,store:a.rootStore,render:e=>e(o.default)}).$mount("#app"),window.app=t.app},cd76:function(e,t,i){},cde6:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9"));let r=class extends n.default{};r=s.__decorate([o.default({props:["visible","left","top"]})],r),t.default=r},ce4c:function(e,t,i){},ce87:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9"));let a=class extends o.default{beforeRouteEnter(e,t,i){n.default.post("/api/invite",{code:e.params.code}).then(e=>{i({path:e.data.sessionUrl})}).catch(e=>{console.error("Invitation code could not be redeemed"),i({path:"/dashboard"})})}};a=s.__decorate([r.default({template:""})],a),t.default=a},cec2:function(e,t,i){"use strict";i.r(t);var s=i("eb57"),n=i("255e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("0584");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"0602c2e6",null);t["default"]=a.exports},cee3:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("f10f"),n=i("1216"),o=i("d6be"),r=i("98ef"),a=i("4aee");function l(e,t,i){void 0===i&&(i=s.gameStore.drawTEContour);const r=[e.x,e.y],a=[],l=o.PA_CDT[t].locate(r,null).loc;return null===l?(console.error("Triangle not found"),[]):(a.push(l.vertices[1].point),l.isConstrained(0)||c(r,l.vertices[2].point,l.vertices[1].point,l,0,a),a.push(l.vertices[2].point),l.isConstrained(1)||c(r,l.vertices[0].point,l.vertices[2].point,l,1,a),a.push(l.vertices[0].point),l.isConstrained(2)||c(r,l.vertices[1].point,l.vertices[0].point,l,2,a),i&&n.drawPolygon(a,"red"),a)}function c(e,t,i,s,n,o){const l=s.neighbours[n],d=l.indexT(s),h=a.ccw(d),f=a.cw(d),p=l.vertices[d],g=l.vertices[f],v=l.vertices[h],m=[l,h],y=[l,f],b=a.orientation(e,i,p.point),_=a.orientation(e,t,p.point);if(b===r.Sign.COUNTERCLOCKWISE)if(m[0].isConstrained(m[1]))i!==g.point&&o.push(u(e,i,p.point,g.point)),_===r.Sign.COUNTERCLOCKWISE&&o.push(u(e,t,p.point,g.point));else{if(_===r.Sign.COUNTERCLOCKWISE)return c(e,t,i,l,h,o);c(e,p.point,i,l,h,o)}if(b!==r.Sign.CLOCKWISE&&_!==r.Sign.COUNTERCLOCKWISE&&o.push(p.point),_===r.Sign.CLOCKWISE)return y[0].isConstrained(y[1])?(b===r.Sign.CLOCKWISE&&o.push(u(e,i,p.point,v.point)),void(t!==v.point&&o.push(u(e,t,p.point,v.point)))):b===r.Sign.CLOCKWISE?c(e,t,i,l,f,o):c(e,t,p.point,l,f,o)}function u(e,t,i,s){const n=(s[1]-i[1])*(t[0]-e[0])-(s[0]-i[0])*(t[1]-e[1]),o=((s[0]-i[0])*(e[1]-i[1])-(s[1]-i[1])*(e[0]-i[0]))/n,r=e[0]+o*(t[0]-e[0]),a=e[1]+o*(t[1]-e[1]);return[r,a]}t.computeVisibility=l},cf8f:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",[e._v("#X")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.xCount,expression:"xCount"}],attrs:{type:"text"},domProps:{value:e.xCount},on:{input:function(t){t.target.composing||(e.xCount=t.target.value)}}}),i("div",[e._v("#Y")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.yCount,expression:"yCount"}],attrs:{type:"text"},domProps:{value:e.yCount},on:{input:function(t){t.target.composing||(e.yCount=t.target.value)}}})]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d065:function(e,t,i){"use strict";i.r(t);var s=i("45fb"),n=i("f8b3");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("514b");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"23de098e",null);t["default"]=a.exports},d19a:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"modal"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"mask",class:{"modal-mask":e.mask,"dialog-mask":!e.mask},on:{click:e.close,dragover:function(t){return t.preventDefault(),e.dragOver(t)}}},[i("div",{ref:"container",staticClass:"modal-container",style:{"background-color":e.colour},on:{click:function(e){e.stopPropagation()}}},[e._t("header",null,{dragStart:e.dragStart,dragEnd:e.dragEnd}),e._t("default")],2)])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d1ec:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{}s.angleSteps=4,s.drawAngleLines=!1,s.drawFirstLightHit=!1,s.skipPlayerFOW=!1,s.skipLightFOW=!1,s.tempFill="fog",t.Settings=s},d24b:function(e,t,i){},d30b:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("cc67");let l=class extends o.default{constructor(){super(...arguments),this.username="",this.password="",this.error=""}login(){n.default.post("/api/login",{username:this.username,password:this.password}).then(e=>{a.coreStore.setUsername(this.username),a.coreStore.setAuthenticated(!0),this.$router.push(this.$route.query.redirect||"/")}).catch(e=>{e.response?this.error=e.response.statusText:this.error="Unknown error occured"})}register(){n.default.post("/api/register",{username:this.username,password:this.password}).then(e=>{a.coreStore.setUsername(this.username),a.coreStore.setAuthenticated(!0),this.$router.push(this.$route.query.redirect||"/")}).catch(e=>{e.response?this.error=e.response.statusText:this.error="Unknown error occured"})}focusin(e){if(e.target&&e.target.nextElementSibling){const t=e.target.nextElementSibling;t.style.opacity="0"}}focusout(e){if(e.target&&e.target.nextElementSibling){const t=e.target.nextElementSibling;t.style.opacity="1"}}};l=s.__decorate([r.default],l),t.default=l},d320:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v("Create basic token")])}}])},[i("div",{staticClass:"modal-body"},[i("label",{attrs:{for:"createtokendialog-text"}},[e._v("Text")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.text,expression:"text"}],attrs:{type:"text",id:"createtokendialog-name"},domProps:{value:e.text},on:{input:function(t){t.target.composing||(e.text=t.target.value)}}}),i("label",[e._v("Colours")]),i("div",{staticClass:"colours"},[i("span",[e._v("Fill:")]),i("color-picker",{attrs:{color:e.fillColour},on:{"update:color":function(t){e.fillColour=t}}}),i("span",[e._v("Border:")]),i("color-picker",{attrs:{color:e.borderColour},on:{"update:color":function(t){e.borderColour=t}}})],1),i("canvas",{ref:"canvas",attrs:{width:"100px",height:"100px"}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.submit}},[e._v("Submit")])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d323:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div")},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d588:function(e,t,i){"use strict";i.r(t);var s=i("91df"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},d5df:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("ea6a")),r=i("0bc6"),a=i("8f0a"),l=i("6f92"),c=i("5e7c"),u=i("0180"),d=i("f10f"),h=i("92b1"),f=i("5a5c");let p=class extends o.default{constructor(){super(...arguments),this.name="Ruler",this.active=!1,this.startPoint=null,this.ruler=null,this.text=null}onMouseDown(e){const t=l.layerManager.getLayer("draw");void 0!==t?(this.active=!0,this.startPoint=h.l2g(f.getMouse(e)),this.ruler=new c.Line(this.startPoint,this.startPoint,3,d.gameStore.rulerColour),this.text=new u.Text(this.startPoint.clone(),"","bold 20px serif"),this.ruler.addOwner(d.gameStore.username),this.text.addOwner(d.gameStore.username),t.addShape(this.ruler,!0,!0),t.addShape(this.text,!0,!0)):console.log("No draw layer!")}onMouseMove(e){if(!this.active||null===this.ruler||null===this.startPoint||null===this.text)return;const t=l.layerManager.getLayer("draw");if(void 0===t)return void console.log("No draw layer!");const i=h.l2g(f.getMouse(e));this.ruler.endPoint=i,r.socket.emit("Shape.Update",{shape:this.ruler.asDict(),redraw:!0,temporary:!0});const s=Math.sign(i.x-this.startPoint.x)*Math.sign(i.y-this.startPoint.y),n=Math.abs(i.x-this.startPoint.x),o=Math.abs(i.y-this.startPoint.y),c=Math.round(Math.sqrt(Math.pow(n,2)+Math.pow(o,2))*d.gameStore.unitSize/d.gameStore.gridSize)+" ft",u=Math.atan2(s*o,n),p=Math.min(this.startPoint.x,i.x)+n/2,g=Math.min(this.startPoint.y,i.y)+o/2;this.text.refPoint=new a.GlobalPoint(p,g),this.text.text=c,this.text.angle=u,r.socket.emit("Shape.Update",{shape:this.text.asDict(),redraw:!0,temporary:!0}),t.invalidate(!0)}onMouseUp(e){if(!this.active||null===this.ruler||null===this.startPoint||null===this.text)return;const t=l.layerManager.getLayer("draw");void 0!==t?(this.active=!1,t.removeShape(this.ruler,!0,!0),t.removeShape(this.text,!0,!0),t.invalidate(!0),this.ruler=this.startPoint=this.text=null):console.log("No active layer!")}};p=s.__decorate([n.default],p),t.RulerTool=p},d65f:function(e,t,i){"use strict";i.r(t);var s=i("d19a"),n=i("7e15");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("9e35");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"c2851f0e",null);t["default"]=a.exports},d677:function(e,t,i){"use strict";i.r(t);var s=i("53ec"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},d6be:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("6f92"),n=i("f10f"),o=i("6e4a");function r(e,i=!1){const r=new o.CDT;let a;a="vision"===e?n.gameStore.visionBlockers:n.gameStore.movementblockers;for(const t of a){const e=s.layerManager.UUIDMap.get(t);if(!i||e.visibleInCanvas(s.layerManager.getLayer().canvas))for(let t=0;t{this.shape=e,this.visible=!0}),d.EventBus.$on("EditDialog.AddLabel",e=>{this.visible&&(this.shape.labels.push(f.gameStore.labels[e]),this.updateShape(!0))})}beforeDestroy(){d.EventBus.$off("EditDialog.Open"),d.EventBus.$off("EditDialog.AddLabel")}updated(){this.addEmpty()}addEmpty(){""!==this.shape.owners[this.shape.owners.length-1]&&this.shape.addOwner(""),this.shape.trackers.length&&""===this.shape.trackers[this.shape.trackers.length-1].name&&0===this.shape.trackers[this.shape.trackers.length-1].value||this.shape.trackers.push({uuid:c.uuidv4(),name:"",value:0,maxvalue:0,visible:!1}),this.shape.auras.length&&""===this.shape.auras[this.shape.auras.length-1].name&&0===this.shape.auras[this.shape.auras.length-1].value||this.shape.auras.push({uuid:c.uuidv4(),name:"",value:0,dim:0,visionSource:!1,colour:"rgba(0,0,0,0)",visible:!1})}updateShape(e,t=!1){this.owned&&(u.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:e,temporary:t}),e&&h.layerManager.invalidate(),this.addEmpty())}setToken(e){this.owned&&(this.shape.setIsToken(e.target.checked),this.updateShape(!0))}setVisionBlocker(e){this.owned&&(this.shape.checkVisionSources(),this.updateShape(!0))}setMovementBlocker(e){this.owned&&(this.shape.setMovementBlock(e.target.checked),this.updateShape(!1))}updateAnnotation(e){if(!this.owned)return;const t=""!==this.shape.annotation;this.shape.annotation=e.target.value,""===this.shape.annotation||t?""===this.shape.annotation&&t&&(f.gameStore.annotations.splice(f.gameStore.annotations.findIndex(e=>e===this.shape.uuid)),h.layerManager.hasLayer("draw")&&h.layerManager.getLayer("draw").invalidate(!0)):(f.gameStore.annotations.push(this.shape.uuid),h.layerManager.hasLayer("draw")&&h.layerManager.getLayer("draw").invalidate(!0)),this.updateShape(!1)}updateOwner(e,t){this.owned&&(this.shape.updateOwner(t,e.target.value),this.updateShape(f.gameStore.fowLOS))}removeOwner(e){this.owned&&(this.shape.removeOwner(e),this.updateShape(f.gameStore.fowLOS))}removeTracker(e){this.owned&&(this.shape.trackers=this.shape.trackers.filter(t=>t.uuid!==e),this.updateShape(!1))}removeAura(e){this.owned&&(this.shape.auras=this.shape.auras.filter(t=>t.uuid!==e),this.shape.checkVisionSources(),this.updateShape(!0))}updateAuraVisionSource(e){if(!this.owned)return;e.visionSource=!e.visionSource;const t=f.gameStore.visionSources.findIndex(t=>t.aura===e.uuid);e.visionSource&&-1===t?f.gameStore.visionSources.push({shape:this.shape.uuid,aura:e.uuid}):!e.visionSource&&t>=0&&f.gameStore.visionSources.splice(t,1),this.updateShape(!0)}updateAuraColour(e,t){if(!this.owned)return;const i=h.layerManager.getLayer(this.shape.layer);void 0!==i&&i.invalidate(!e.visionSource)}openLabelManager(){d.EventBus.$emit("LabelManager.Open")}removeLabel(e){this.owned&&(this.shape.labels=this.shape.labels.filter(t=>t.uuid!==e),this.updateShape(!0))}};s.__decorate([r.Prop()],p.prototype,"shape",void 0),p=s.__decorate([o.default({components:{Modal:l.default,"color-picker":a.default}})],p),t.default=p},da7f:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return void 0!==e.getActiveLayer()?i("ContextMenu",{attrs:{visible:e.visible,left:e.x+"px",top:e.y+"px"},on:{close:e.close}},[e.getLayers().length>1?i("li",[e._v("Layer\n "),i("ul",e._l(e.getLayers(),function(t){return i("li",{key:t.name,style:[e.getActiveLayer().name===t.name?{"background-color":"#82c8a0"}:{}],on:{click:function(i){return e.setLayer(t.name)}}},[e._v(e._s(t.name))])}),0)]):e._e(),i("li",{on:{click:e.moveToBack}},[e._v("Move to back")]),i("li",{on:{click:e.moveToFront}},[e._v("Move to front")]),i("li",{on:{click:e.addInitiative}},[e._v(e._s(e.getInitiativeWord())+" initiative")]),i("li",{on:{click:e.openEditDialog}},[e._v("Show properties")])]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},dc37:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f"));let a=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.yes="Yes",this.no="No",this.title="",this.resolve=e=>{},this.reject=()=>{}}confirm(){this.resolve(!0),this.close()}deny(){this.resolve(!1),this.close()}close(){this.reject(),this.visible=!1,this.title=""}open(e,t="yes",i="no"){return this.yes=t,this.no=i,this.title=e,this.visible=!0,this.$nextTick(()=>{this.$refs.confirm.focus()}),new Promise((e,t)=>{this.resolve=e,this.reject=t})}};a=s.__decorate([o.default({components:{Modal:r.default}})],a),t.default=a},dcb4:function(e,t,i){"use strict";var s=i("ce4c"),n=i.n(s);n.a},de21:function(e,t,i){},dec1:function(e,t,i){"use strict";i.r(t);var s=i("cf8f"),n=i("3481");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},df64:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"accordion"},[i("div",{attrs:{id:"header"},on:{click:function(t){return t.preventDefault(),e.toggleDisplay(t)}}},[i("input",{ref:"overall",attrs:{type:"checkbox"},on:{click:function(t){return t.stopPropagation(),e.toggleCategory(t)}}}),i("strong",[e._v(e._s(e.title))]),e.showArrow?[i("span",{directives:[{name:"show",rawName:"v-show",value:e.showArrow&&!e.active,expression:"showArrow && !active"}],staticClass:"down-Arrow"},[e._v("▼")]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.showArrow&&e.active,expression:"showArrow && active"}],staticClass:"up-Arrow"},[e._v("▲")])]:e._e()],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],attrs:{id:"body"}},e._l(e.items,function(t){return i("div",{key:t[0],staticClass:"item",on:{click:function(i){return e.toggleSelection(t[0])}}},[i("input",{attrs:{type:"checkbox"},domProps:{checked:e.selected.includes(t[0])},on:{click:function(e){e.preventDefault()}}}),e._v(" "+e._s(t[1])+"\n ")])}),0)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e06e:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible},on:{close:e.close},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v(e._s(e.title))])}}])},[i("div",{staticClass:"modal-body"},[i("button",{ref:"confirm",on:{click:e.confirm}},[e._v(e._s(e.yes))]),e.no?i("button",{on:{click:e.deny}},[e._v(e._s(e.no))]):e._e()])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e0e8:function(e,t,i){"use strict";i.r(t);var s=i("2380"),n=i("208e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("dcb4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b908e87c",null);t["default"]=a.exports},e0e9:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("1c76")),a=i("5338"),l=i("2d5b"),c=i("4a5b");let u=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.left=0,this.top=0}open(e,t){l.assetStore.selected.includes(t)||c.getComponent().select(e,t),this.visible=!0,this.left=e.pageX,this.top=e.pageY,this.$nextTick(()=>{this.$children[0].$el.focus()})}close(){this.visible=!1}rename(){if(1!==l.assetStore.selected.length)return;const e=l.assetStore.idMap.get(l.assetStore.selected[0]);c.getRef("prompt").prompt("New name:",`Renaming ${e.name}`).then(t=>{a.socket.emit("Asset.Rename",{asset:e.id,name:t}),e.name=t,c.getComponent().$forceUpdate()},()=>{}),this.close()}remove(){0!==l.assetStore.selected.length&&(c.getRef("confirm").open("Are you sure you wish to remove this?").then(e=>{if(e){for(const e of l.assetStore.selected)a.socket.emit("Asset.Remove",e),l.assetStore.files.includes(e)?l.assetStore.files.splice(l.assetStore.files.indexOf(e),1):l.assetStore.folders.splice(l.assetStore.folders.indexOf(e),1);l.assetStore.clearSelected()}},()=>{}),this.close())}};u=s.__decorate([o.default({components:{ContextMenu:r.default}})],u),t.default=u},e27a:function(e,t,i){"use strict";i.r(t);var s=i("2756"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},e3f5:function(e,t,i){"use strict";var s=i("a126"),n=i.n(s);n.a},e4b0:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f")),a=i("4a5b"),l=i("0bc6"),c=i("af17"),u=i("f10f");let d=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.newCategory="",this.newName="",this.search=""}mounted(){c.EventBus.$on("LabelManager.Open",()=>{this.visible=!0,this.newCategory="",this.newName="",this.$nextTick(()=>this.$refs.search.focus())})}beforeDestroy(){c.EventBus.$off("LabelManager.Open")}get labels(){const e={"":[]};for(const t of Object.keys(u.gameStore.labels)){const i=u.gameStore.labels[t];this.search.length&&`${i.category.toLowerCase()}${i.name.toLowerCase()}`.search(this.search.toLowerCase())<0||i.user===u.gameStore.username&&(i.category?(i.category in e||(e[i.category]=[]),e[i.category].push(i),e[i.category].sort((e,t)=>e.name.localeCompare(t.name))):e[""].push(i))}return e}get categories(){return Object.keys(this.labels).sort()}selectLabel(e){c.EventBus.$emit("EditDialog.AddLabel",e),this.visible=!1}toggleVisibility(e){e.visible=!e.visible,l.socket.emit("Label.Visibility.Set",{uuid:e.uuid,visible:e.visible})}addLabel(){if(""===this.newName)return;const e={uuid:a.uuidv4(),category:this.newCategory,name:this.newName,visible:!1,user:u.gameStore.username};u.gameStore.addLabel(e),l.socket.emit("Label.Add",e),this.newCategory="",this.newName=""}deleteLabel(e){u.gameStore.deleteLabel({uuid:e,user:u.gameStore.username}),l.socket.emit("Label.Delete",e)}};d=s.__decorate([o.default({components:{Modal:r.default}})],d),t.default=d},e4ea:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("92b1"),o=i("5a5c"),r=i("8db6"),a=i("2469");class l extends a.Shape{constructor(e,t=[],i,s,n){super(e,i,s,n),this.type="polygon",this._vertices=[],this._vertices=t}get refPoint(){return this._refPoint}set refPoint(e){const t=e.subtract(this._refPoint);this._refPoint=e;for(let i=0;i({x:e.x,y:e.y}))})}fromDict(e){super.fromDict(e),this._vertices=e.vertices.map(e=>new s.GlobalPoint(e.x,e.y))}get points(){return this.vertices.map(e=>[e.x,e.y])}draw(e){super.draw(e),e.lineCap="round",e.lineJoin="round","fog"===this.strokeColour?e.strokeStyle=o.getFogColour():2===this.vertices.length?e.strokeStyle=this.fillColour:e.strokeStyle=this.strokeColour,"fog"===this.fillColour?e.fillStyle=o.getFogColour():e.fillStyle=this.fillColour,e.lineWidth=n.g2lz(2),e.beginPath(),e.moveTo(n.g2lx(this.vertices[0].x),n.g2ly(this.vertices[0].y));for(let t=1;t<=this.vertices.length;t++){const i=this.vertices[t%this.vertices.length];e.lineTo(n.g2lx(i.x),n.g2ly(i.y))}e.fill(),e.stroke()}contains(e){return this.getBoundingBox().contains(e)}center(e){return this.getBoundingBox().center()}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this._refPoint=n.l2g(t):this._vertices[e-1]=n.l2g(t)}getBoundingBox(){let e=this.refPoint.x,t=this.refPoint.x,i=this.refPoint.y,n=this.refPoint.y;for(const s of this._vertices)s.xt&&(t=s.x),s.yn&&(n=s.y);return new r.BoundingRect(new s.GlobalPoint(e,i),t-e,n-i)}}t.Polygon=l},e5ca:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.IS_DM,expression:"IS_DM"}]},[e._v("Mode")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.IS_DM,expression:"IS_DM"}],staticClass:"selectgroup"},e._l(e.modes,function(t){return i("div",{key:t,staticClass:"option",class:{"option-selected":e.modeSelect===t},on:{click:function(i){e.modeSelect=t}}},[e._v(e._s(t))])}),0),i("div",[e._v("Shape")]),i("div",{staticClass:"selectgroup"},e._l(e.shapes,function(t){return i("div",{key:t,staticClass:"option",class:{"option-selected":e.shapeSelect===t},on:{click:function(i){e.shapeSelect=t}}},[i("i",{staticClass:"fas",class:"fa-"+t})])}),0),i("div",[e._v("Colours")]),i("div",{staticClass:"selectgroup"},[i("color-picker",{staticClass:"option",attrs:{color:e.fillColour},on:{"update:color":function(t){e.fillColour=t}}}),i("color-picker",{staticClass:"option",attrs:{color:e.borderColour},on:{"update:color":function(t){e.borderColour=t}}})],1),i("div",{directives:[{name:"show",rawName:"v-show",value:"paint-brush"===e.shapeSelect,expression:"shapeSelect === 'paint-brush'"}]},[e._v("Brush size")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.brushSize,expression:"brushSize"},{name:"show",rawName:"v-show",value:"paint-brush"===e.shapeSelect,expression:"shapeSelect === 'paint-brush'"}],staticStyle:{"max-width":"100px"},attrs:{type:"text"},domProps:{value:e.brushSize},on:{input:function(t){t.target.composing||(e.brushSize=t.target.value)}}})]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e6c4:function(e,t,i){"use strict";var s=i("839d"),n=i.n(s);n.a},e756:function(e,t,i){},e794:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{directives:[{name:"show",rawName:"v-show",value:e.shapes.length>0,expression:"shapes.length > 0"}]},e._l(e.shapes,function(t){return i("div",{key:t.uuid},[i("div",{attrs:{id:"selection-menu"}},[i("div",{attrs:{id:"selection-edit-button"},on:{click:e.openEditDialog}},[i("i",{staticClass:"fas fa-edit"})]),i("div",{attrs:{id:"selection-name"}},[e._v(e._s(t.name))]),i("div",{attrs:{id:"selection-trackers"}},[e._l(e.visibleTrackers,function(t){return[i("div",{key:"name-"+t.uuid},[e._v(e._s(t.name))]),i("div",{key:"value-"+t.uuid,staticClass:"selection-tracker-value",on:{click:function(i){return e.changeValue(t,!1)}}},[0===t.maxvalue?[e._v(e._s(t.value))]:[e._v(e._s(t.value)+" / "+e._s(t.maxvalue))]],2)]})],2),i("div",{attrs:{id:"selection-auras"}},[e._l(e.visibleAuras,function(t){return[i("div",{key:"name-"+t.uuid},[e._v(e._s(t.name))]),i("div",{key:"value-"+t.uuid,staticClass:"selection-tracker-value",on:{click:function(i){return e.changeValue(t,!0)}}},[0===t.dim?[e._v(e._s(t.value))]:[e._v(e._s(t.value)+" / "+e._s(t.dim))]],2)]})],2)]),i("edit-dialog",{ref:"editDialog",refInFor:!0,attrs:{shape:t}})],1)}),0)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e8bb:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",{attrs:{id:"accordion-container"}},e._l(e.categories,function(t){return i("accordion",{key:t,attrs:{title:""===t?"no category":t,showArrow:!1,items:e.labels[t],initialValues:e.initalValues[t]},on:{selectionupdate:e.updateSelection}})}),1)]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e914:function(e,t,i){"use strict";i.r(t);var s=i("c9a2"),n=i("aa69");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("78c7");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},e94f:function(e,t,i){"use strict";i.r(t);var s=i("7aaa"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},ea6a:function(e,t,i){"use strict";i.r(t);var s=i("d323"),n=i("6465");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("12d3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},eb57:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible},on:{close:e.close},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v(e._s(e.title))])}}])},[i("div",{staticClass:"modal-body"},[e._v("\n "+e._s(e.question)+"\n "),i("input",{directives:[{name:"model",rawName:"v-model",value:e.answer,expression:"answer"}],ref:"answer",attrs:{type:"text"},domProps:{value:e.answer},on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.submit(t)},input:function(t){t.target.composing||(e.answer=t.target.value)}}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.submit}},[e._v("Submit")])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},ebb9:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("310e"));n.default.component("draggable",r.default);const a=s.__importDefault(i("d65f")),l=i("4a5b"),c=i("0bc6"),u=i("af17"),d=i("6f92"),h=i("f10f"),f=i("9cb7");let p=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.data=[],this.currentActor=null,this.roundCounter=0,this.visionLock=!1,this.cameraLock=!1,this._activeTokens=[]}mounted(){u.EventBus.$on("Initiative.Clear",this.clear),u.EventBus.$on("Initiative.Remove",e=>this.removeInitiative(e)),u.EventBus.$on("Initiative.Show",()=>this.visible=!0),c.socket.on("Initiative.Set",e=>{this.data=e}),c.socket.on("Initiative.Turn.Set",e=>this.setTurn(e)),c.socket.on("Initiative.Turn.Update",e=>this.updateTurn(e,!1)),c.socket.on("Initiative.Round.Update",e=>this.setRound(e,!1)),c.socket.on("Initiative.Effect.New",e=>{const t=this.getActor(e.actor);void 0!==t&&this.createEffect(t,e.effect,!1)}),c.socket.on("Initiative.Effect.Update",e=>this.updateEffect(e.actor,e.effect,!1))}beforeDestroy(){u.EventBus.$off("Initiative.Clear"),u.EventBus.$off("Initiative.Remove"),u.EventBus.$off("Initiative.Show")}clear(){this.data=[],this.currentActor=null}getActor(e){return this.data.find(t=>t.uuid===e)}contains(e){return this.data.some(t=>t.uuid===e)}owns(e){if(h.gameStore.IS_DM)return!0;const t=d.layerManager.UUIDMap.get(e.uuid);return void 0!==t&&t.owners.includes(h.gameStore.username)}getDefaultEffect(){return{uuid:l.uuidv4(),name:"New Effect",turns:10}}fakeSetData(e){e.setData("Hack","")}syncInitiative(e){c.socket.emit("Initiative.Update",e)}addInitiative(e){const t=this.data.findIndex(t=>t.uuid===e.uuid);t>=0||(void 0===e.initiative&&(e.initiative=0),this.syncInitiative(e))}removeInitiative(e){const t=this.data.findIndex(t=>t.uuid===e);if(t<0||this.data[t].group)return;this.syncInitiative({uuid:e});const i=d.layerManager.UUIDMap.get(e);void 0!==i&&i.showHighlight&&(i.showHighlight=!1,d.layerManager.getLayer(i.layer).invalidate(!0))}updateOrder(){h.gameStore.IS_DM&&c.socket.emit("Initiative.Set",this.data.map(e=>e.uuid))}updateTurn(e,t){if(!h.gameStore.IS_DM&&t)return;this.currentActor=e;const i=this.data.find(t=>t.uuid===e);if(void 0!==i){if(i.effects)for(let e=i.effects.length-1;e>=0;e--)i.effects[e].turns<=0?i.effects.splice(e,1):i.effects[e].turns--;if(this.visionLock&&(null!==e&&h.gameStore.ownedtokens.includes(e)?h.gameStore.setActiveTokens([e]):h.gameStore.setActiveTokens([])),this.cameraLock&&null!==e){const t=d.layerManager.UUIDMap.get(e);void 0!==t&&t.ownedBy()&&f.gameManager.setCenterPosition(t.center())}t&&c.socket.emit("Initiative.Turn.Update",e)}}setRound(e,t){!h.gameStore.IS_DM&&t||(this.roundCounter=e,t&&c.socket.emit("Initiative.Round.Update",e))}setTurn(e){this.currentActor=e}nextTurn(){if(!h.gameStore.IS_DM)return;const e=this.data,t=e[(e.findIndex(e=>e.uuid===this.currentActor)+1)%e.length];this.data[0].uuid===t.uuid&&this.setRound(this.roundCounter+1,!0),this.updateTurn(t.uuid,!0)}toggleHighlight(e,t){const i=d.layerManager.UUIDMap.get(e.uuid);void 0!==i&&(i.showHighlight=t,d.layerManager.getLayer(i.layer).invalidate(!0))}toggleOption(e,t){this.owns(e)&&(e[t]=!e[t],this.syncInitiative(e))}createEffect(e,t,i){this.owns(e)&&(e.effects.push(t),i&&c.socket.emit("Initiative.Effect.New",{actor:e.uuid,effect:t}))}syncEffect(e,t){this.owns(e)&&c.socket.emit("Initiative.Effect.Update",{actor:e.uuid,effect:t})}updateEffect(e,t,i){const s=this.data.find(t=>t.uuid===e);if(void 0===s)return;const n=s.effects.findIndex(e=>e.uuid===t.uuid);void 0!==n&&(s.effects[n]=t,i?this.syncEffect(s,t):this.$forceUpdate())}toggleVisionLock(){this.visionLock=!this.visionLock,this.visionLock?(this._activeTokens=[...h.gameStore._activeTokens],null!==this.currentActor&&h.gameStore.ownedtokens.includes(this.currentActor)&&h.gameStore.setActiveTokens([this.currentActor])):h.gameStore.setActiveTokens(this._activeTokens)}};p=s.__decorate([o.default({components:{Modal:a.default,draggable:r.default}})],p),t.default=p},ee96:function(e,t,i){},f086:function(e,t,i){"use strict";i.r(t);var s=i("e794"),n=i("7ba5");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("c5321");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"43d09857",null);t["default"]=a.exports},f10f:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=i("6fc5"),r=i("0bc6"),a=i("2b48"),l=i("6f92"),c=i("92b1"),u=i("5a5c"),d=i("99e3"),h=i("d6be"),f=i("3a0b");let p=class extends o.VuexModule{constructor(){super(...arguments),this.layers=[],this.selectedLayerIndex=-1,this.boardInitialized=!1,this.locations=[],this.assets={},this.notes=[],this.IS_DM=!1,this.FAKE_PLAYER=!1,this.isLocked=!1,this.gridSize=50,this.username="",this.roomName="",this.roomCreator="",this.invitationCode="",this.players=[],this.gridColour="rgba(0, 0, 0, 1)",this.fowColour="rgba(0, 0, 0, 1)",this.rulerColour="rgba(255, 0, 0, 1)",this.panX=0,this.panY=0,this.zoomDisplay=.5,this.unitSize=5,this.useGrid=!0,this.fullFOW=!1,this.fowOpacity=.3,this.fowLOS=!1,this.locationName="",this.visionSources=[],this.visionBlockers=[],this.annotations=[],this.movementblockers=[],this.ownedtokens=[],this._activeTokens=[],this.BV=Object.freeze(new d.BoundingVolume([])),this.visionMode="bvh",this.drawTEContour=!1,this.visionRangeMin=1640,this.visionRangeMax=3281,this.clipboard=[],this.labels={},this.filterNoLabel=!1,this.labelFilters=[],this.showUI=!0}get selectedLayer(){return this.layers[this.selectedLayerIndex]}get zoomFactor(){return u.zoomValue(this.zoomDisplay)}get activeTokens(){return 0===this._activeTokens.length?this.ownedtokens:this._activeTokens}setFakePlayer(e){this.FAKE_PLAYER=e,this.IS_DM=!e,l.layerManager.invalidate()}setZoomDisplay(e){e!==this.zoomDisplay&&(e<0&&(e=0),e>1&&(e=1),this.zoomDisplay=e,l.layerManager.invalidate())}setVisionMode(e){this.visionMode=e.mode,e.sync&&r.socket.emit("Location.Options.Set",{vision_mode:e.mode})}setBoardInitialized(e){this.boardInitialized=e}toggleUnlabeledFilter(){this.filterNoLabel=!this.filterNoLabel}addLabel(e){n.default.set(this.labels,e.uuid,e)}setLabelFilters(e){this.labelFilters=e}setLabelVisibility(e){e.uuid in this.labels&&(this.labels[e.uuid].visible=e.visible)}deleteLabel(e){if(!(e.uuid in this.labels))return;const t=this.labels[e.uuid],i=new Set;for(const s of l.layerManager.UUIDMap.values()){const e=s.labels.indexOf(t);e>=0&&(s.labels.splice(e,1),i.add(s.layer))}for(const s of i)l.layerManager.getLayer(s).invalidate(!1);n.default.delete(this.labels,e.uuid)}setDM(e){this.IS_DM=e}setUsername(e){this.username=e}setRoomName(e){this.roomName=e}setRoomCreator(e){this.roomCreator=e}setInvitationCode(e){this.invitationCode=e}addLayer(e){this.layers.push(e),-1===this.selectedLayerIndex&&(this.selectedLayerIndex=this.layers.indexOf(e))}selectLayer(e){const t=this.layers.indexOf(e.name);t>=0&&(this.selectedLayerIndex=t),e.sync&&r.socket.emit("Client.ActiveLayer.Set",e.name)}newNote(e){this.notes.push(e.note),e.sync&&r.socket.emit("Note.New",e.note)}setAssets(e){this.assets=e}setLocations(e){this.locations=e}resetLayerInfo(){this.layers=[],this.selectedLayerIndex=-1}recalculateVision(e=!1){this.boardInitialized&&("triangle"===this.visionMode?h.triangulate("vision",e):this.BV=Object.freeze(new d.BoundingVolume(this.visionBlockers)))}recalculateMovement(e=!1){this.boardInitialized&&"triangle"===this.visionMode&&h.triangulate("movement",e)}updateZoom(e){if(e.newZoomDisplay===this.zoomDisplay)return;e.newZoomDisplay<0&&(e.newZoomDisplay=0),e.newZoomDisplay>1&&(e.newZoomDisplay=1);const t=c.g2l(e.zoomLocation);this.zoomDisplay=e.newZoomDisplay;const i=c.l2g(t),s=i.subtract(e.zoomLocation);this.panX+=s.x,this.panY+=s.y,l.layerManager.invalidate(),a.sendClientOptions()}setGridColour(e){this.gridColour=e.colour,l.layerManager.getGridLayer().drawGrid(),e.sync&&r.socket.emit("Client.Options.Set",{gridColour:e.colour})}setFOWColour(e){this.fowColour=e.colour,l.layerManager.invalidate(),e.sync&&r.socket.emit("Client.Options.Set",{fowColour:e.colour})}setRulerColour(e){this.rulerColour=e.colour,e.sync&&r.socket.emit("Client.Options.Set",{rulerColour:e.colour})}setPanX(e){this.panX=e}setPanY(e){this.panY=e}increasePanX(e){this.panX+=e}increasePanY(e){this.panY+=e}setUnitSize(e){this.unitSize!==e.unitSize&&e.unitSize>0&&e.unitSize<1/0&&(this.unitSize=e.unitSize,l.layerManager.invalidate(),e.sync&&r.socket.emit("Location.Options.Set",{unit_size:e.unitSize}))}setUseGrid(e){if(this.useGrid!==e.useGrid){this.useGrid=e.useGrid;const t=l.layerManager.getGridLayer();e.useGrid?t.canvas.style.display="block":t.canvas.style.display="none",e.sync&&r.socket.emit("Location.Options.Set",{use_grid:e.useGrid})}}setGridSize(e){if(this.gridSize!==e.gridSize&&e.gridSize>0){this.gridSize=e.gridSize;const t=l.layerManager.getGridLayer();void 0!==t&&t.drawGrid(),e.sync&&r.socket.emit("Gridsize.Set",e.gridSize)}}setVisionRangeMin(e){this.visionRangeMin=e.value,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{vision_min_range:e.value})}setVisionRangeMax(e){this.visionRangeMax=Math.max(e.value,this.visionRangeMin),l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{vision_max_range:this.visionRangeMax})}setFullFOW(e){this.fullFOW!==e.fullFOW&&(this.fullFOW=e.fullFOW,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{full_fow:e.fullFOW}))}setFOWOpacity(e){this.fowOpacity=e.fowOpacity,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{fow_opacity:e.fowOpacity})}setLineOfSight(e){this.fowLOS!==e.fowLOS&&(this.fowLOS=e.fowLOS,l.layerManager.invalidate(),e.sync&&r.socket.emit("Location.Options.Set",{fow_los:e.fowLOS}))}setLocationName(e){this.locationName=e}updateNote(e){const t=this.notes.find(t=>t.uuid===e.note.uuid);void 0!==t&&(t.title=e.note.title,t.text=e.note.text,e.sync&&r.socket.emit("Note.Update",t))}removeNote(e){this.notes=this.notes.filter(t=>t.uuid!==e.note.uuid),e.sync&&r.socket.emit("Note.Remove",e.note.uuid)}toggleUI(){this.showUI=!this.showUI}setClipboard(e){this.clipboard=e}setActiveTokens(e){this._activeTokens=e,l.layerManager.invalidateLight()}addActiveToken(e){this._activeTokens.push(e),l.layerManager.invalidateLight()}removeActiveToken(e){0===this._activeTokens.length&&(this._activeTokens=[...this.ownedtokens]),this._activeTokens.splice(this._activeTokens.indexOf(e),1),l.layerManager.invalidateLight()}setPlayers(e){this.players=e}addPlayer(e){this.players.push(e)}kickPlayer(e){this.players=this.players.filter(t=>t.id!==e)}setIsLocked(e){this.isLocked=e.isLocked,e.sync&&r.socket.emit("Room.Info.Set.Locked",this.isLocked)}clear(){this.context.state.visionSources=[],this.context.state.visionBlockers=[],this.context.state.ownedtokens=[],this.context.state.annotations=[],this.context.state.movementblockers=[],this.context.state.notes=[],this.context.commit("recalculateVision"),this.context.commit("recalculateMovement")}};s.__decorate([o.Mutation],p.prototype,"setFakePlayer",null),s.__decorate([o.Mutation],p.prototype,"setZoomDisplay",null),s.__decorate([o.Mutation],p.prototype,"setVisionMode",null),s.__decorate([o.Mutation],p.prototype,"setBoardInitialized",null),s.__decorate([o.Mutation],p.prototype,"toggleUnlabeledFilter",null),s.__decorate([o.Mutation],p.prototype,"addLabel",null),s.__decorate([o.Mutation],p.prototype,"setLabelFilters",null),s.__decorate([o.Mutation],p.prototype,"setLabelVisibility",null),s.__decorate([o.Mutation],p.prototype,"deleteLabel",null),s.__decorate([o.Mutation],p.prototype,"setDM",null),s.__decorate([o.Mutation],p.prototype,"setUsername",null),s.__decorate([o.Mutation],p.prototype,"setRoomName",null),s.__decorate([o.Mutation],p.prototype,"setRoomCreator",null),s.__decorate([o.Mutation],p.prototype,"setInvitationCode",null),s.__decorate([o.Mutation],p.prototype,"addLayer",null),s.__decorate([o.Mutation],p.prototype,"selectLayer",null),s.__decorate([o.Mutation],p.prototype,"newNote",null),s.__decorate([o.Mutation],p.prototype,"setAssets",null),s.__decorate([o.Mutation],p.prototype,"setLocations",null),s.__decorate([o.Mutation],p.prototype,"resetLayerInfo",null),s.__decorate([o.Mutation],p.prototype,"recalculateVision",null),s.__decorate([o.Mutation],p.prototype,"recalculateMovement",null),s.__decorate([o.Mutation],p.prototype,"updateZoom",null),s.__decorate([o.Mutation],p.prototype,"setGridColour",null),s.__decorate([o.Mutation],p.prototype,"setFOWColour",null),s.__decorate([o.Mutation],p.prototype,"setRulerColour",null),s.__decorate([o.Mutation],p.prototype,"setPanX",null),s.__decorate([o.Mutation],p.prototype,"setPanY",null),s.__decorate([o.Mutation],p.prototype,"increasePanX",null),s.__decorate([o.Mutation],p.prototype,"increasePanY",null),s.__decorate([o.Mutation],p.prototype,"setUnitSize",null),s.__decorate([o.Mutation],p.prototype,"setUseGrid",null),s.__decorate([o.Mutation],p.prototype,"setGridSize",null),s.__decorate([o.Mutation],p.prototype,"setVisionRangeMin",null),s.__decorate([o.Mutation],p.prototype,"setVisionRangeMax",null),s.__decorate([o.Mutation],p.prototype,"setFullFOW",null),s.__decorate([o.Mutation],p.prototype,"setFOWOpacity",null),s.__decorate([o.Mutation],p.prototype,"setLineOfSight",null),s.__decorate([o.Mutation],p.prototype,"setLocationName",null),s.__decorate([o.Mutation],p.prototype,"updateNote",null),s.__decorate([o.Mutation],p.prototype,"removeNote",null),s.__decorate([o.Mutation],p.prototype,"toggleUI",null),s.__decorate([o.Mutation],p.prototype,"setClipboard",null),s.__decorate([o.Mutation],p.prototype,"setActiveTokens",null),s.__decorate([o.Mutation],p.prototype,"addActiveToken",null),s.__decorate([o.Mutation],p.prototype,"removeActiveToken",null),s.__decorate([o.Mutation],p.prototype,"setPlayers",null),s.__decorate([o.Mutation],p.prototype,"addPlayer",null),s.__decorate([o.Mutation],p.prototype,"kickPlayer",null),s.__decorate([o.Mutation],p.prototype,"setIsLocked",null),s.__decorate([o.Action],p.prototype,"clear",null),p=s.__decorate([o.Module({dynamic:!0,store:f.rootStore,name:"game",namespaced:!0})],p),t.gameStore=o.getModule(p)},f30c:function(e,t,i){"use strict";i.r(t);var s=i("dc37"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f312:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aurasFromServer=e=>{const t=[];for(const i of e)t.push({uuid:i.uuid,visionSource:i.vision_source,visible:i.visible,name:i.name,value:i.value,dim:i.dim,colour:i.colour});return t},t.aurasToServer=e=>{const t=[];for(const i of e)t.push({uuid:i.uuid,vision_source:i.visionSource,visible:i.visible,name:i.name,value:i.value,dim:i.dim,colour:i.colour});return t}},f51a:function(e,t,i){"use strict";i.r(t);var s=i("e0e9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f551:function(e,t,i){"use strict";i.r(t);var s=i("2686"),n=i("1dd6");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("28b6");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"7a3669fd",null);t["default"]=a.exports},f5fe:function(e,t,i){"use strict";i.r(t);var s=i("1131"),n=i("7018");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("8fc5");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"62228cde",null);t["default"]=a.exports},f692:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4185"),n=i("b906"),o=i("38c9"),r=i("bab4"),a=i("6f92"),l=i("f10f");function c(e){const t=document.createElement("canvas");let i;t.style.zIndex=a.layerManager.layers.length.toString(),t.width=window.innerWidth,t.height=window.innerHeight,i="grid"===e.type_?new o.GridLayer(t,e.name):"fow"===e.type_?new s.FOWLayer(t,e.name):"fow-players"===e.type_?new n.FOWPlayersLayer(t,e.name):new r.Layer(t,e.name),i.selectable=e.selectable,i.playerEditable=e.player_editable,a.layerManager.addLayer(i);const c=document.getElementById("layers");null!==c?("fow-players"!==e.name&&c.appendChild(t),"grid"===e.type_&&e.size&&l.gameStore.setGridSize({gridSize:e.size,sync:!1}),i.setShapes(e.shapes)):console.warn("Layers div is missing, this will prevent the main game board from loading!")}t.createLayer=c},f74c:function(e,t,i){"use strict";i.r(t);var s=i("1fd5"),n=i("29a2");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("7eb7");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"e477c214",null);t["default"]=a.exports},f8b3:function(e,t,i){"use strict";i.r(t);var s=i("d8ee"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f974:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{attrs:{id:"toolselect"}},[i("ul",e._l(e.visibleTools,function(t){return i("li",{directives:[{name:"show",rawName:"v-show",value:e.toolVisible(t),expression:"toolVisible(tool)"}],key:t,ref:t+"-selector",refInFor:!0,class:{"tool-selected":e.currentTool===t},on:{mousedown:function(i){e.currentTool=t}}},[i("a",{attrs:{href:"#"}},[e._v(e._s(t))])])}),0)]),i("div",[[i("select-tool",{directives:[{name:"show",rawName:"v-show",value:"Select"===e.currentTool,expression:"currentTool === 'Select'"}],ref:"selectTool"}),i("pan-tool",{directives:[{name:"show",rawName:"v-show",value:"Pan"===e.currentTool,expression:"currentTool === 'Pan'"}]}),i("keep-alive",[i("draw-tool",{directives:[{name:"show",rawName:"v-show",value:"Draw"===e.currentTool,expression:"currentTool === 'Draw'"}]})],1),i("ruler-tool",{directives:[{name:"show",rawName:"v-show",value:"Ruler"===e.currentTool,expression:"currentTool === 'Ruler'"}]}),i("map-tool",{directives:[{name:"show",rawName:"v-show",value:"Map"===e.currentTool,expression:"currentTool === 'Map'"}]}),i("filter-tool",{directives:[{name:"show",rawName:"v-show",value:"Filter"===e.currentTool,expression:"currentTool === 'Filter'"}]}),i("vision-tool",{directives:[{name:"show",rawName:"v-show",value:"Vision"===e.currentTool,expression:"currentTool === 'Vision'"}]}),i("shape-menu",{ref:"shapecontext"}),i("createtoken-dialog",{ref:"createtokendialog"})]],2)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},f994:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("form",{on:{focusin:e.focusin,focusout:e.focusout,submit:function(t){return t.preventDefault(),e.login(t)}}},[i("fieldset",[i("legend",{staticClass:"legend"},[e._v("PlanarAlly")]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],attrs:{type:"text",name:"username",placeholder:"Username",autocomplete:"username",required:""},domProps:{value:e.username},on:{input:function(t){t.target.composing||(e.username=t.target.value)}}}),e._m(0)]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],attrs:{type:"password",name:"password",placeholder:"Password",autocomplete:"current-password",required:""},domProps:{value:e.password},on:{input:function(t){t.target.composing||(e.password=t.target.value)}}}),e._m(1)]),i("div",{staticStyle:{display:"flex"}},[i("button",{staticStyle:{visibility:"hidden",display:"none"},attrs:{type:"submit",name:"login"}}),i("button",{staticClass:"submit",attrs:{type:"button",name:"register",title:"Register"},on:{click:e.register}},[i("i",{staticClass:"fas fa-plus"})]),e._m(2)])]),e.error?i("div",{staticClass:"feedback"},[i("p",{staticClass:"error"},[i("strong",[e._v("Error:")]),e._v("\n "+e._s(e.error)+"\n ")])]):e._e()])},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fas fa-user-circle"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fas fa-lock"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"submit",attrs:{type:"submit",name:"login",title:"Login"}},[i("i",{staticClass:"fas fa-arrow-right"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},fbdd:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d065")),a=i("4a5b"),l=i("0bc6"),c=i("af17"),u=i("6f92");let d=class extends n.default{constructor(){super(...arguments),this.shape=null}mounted(){c.EventBus.$on("SelectionInfo.Shape.Set",e=>{this.shape=e})}get shapes(){return null===this.shape?[]:[this.shape]}get visibleTrackers(){return null===this.shape?[]:this.shape.trackers.filter(e=>""!==e.name||0!==e.value)}get visibleAuras(){return null===this.shape?[]:this.shape.auras.filter(e=>""!==e.name||0!==e.value)}beforeDestroy(){c.EventBus.$off("SelectionInfo.Shape.Set")}openEditDialog(){this.$refs.editDialog.visible=!0}changeValue(e,t){null!==this.shape&&a.getRef("prompt").prompt(`New ${e.name} value:`,`Updating ${e.name}`).then(i=>{if(null===this.shape)return;const s=e.value;"+"===i[0]||"-"===i[0]?e.value+=parseInt(i,10):e.value=parseInt(i,10),isNaN(e.value)&&(e.value=s),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:t,temporary:!1}),t&&u.layerManager.invalidate()},()=>{})}};d=s.__decorate([o.default({components:{"edit-dialog":r.default}})],d),t.default=d},fcac:function(e,t,i){},fe11:function(e,t,i){},fe80:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("0bc6"),n=i("af17"),o=i("8f0a"),r=i("6f92"),a=i("f692"),l=i("9cb7"),c=i("f10f"),u=i("5f86"),d=i("5a5c");s.socket.on("connect",()=>{console.log("Connected")}),s.socket.on("disconnect",()=>{console.log("Disconnected")}),s.socket.on("connect_error",e=>{console.error("Could not connect to game session."),u.router.push("/dashboard")}),s.socket.on("error",e=>{console.error("Game session does not exist."),u.router.push("/dashboard")}),s.socket.on("redirect",e=>{console.log("redirecting"),u.router.push(e)}),s.socket.on("Room.Info.Set",e=>{c.gameStore.setRoomName(e.name),c.gameStore.setRoomCreator(e.creator),c.gameStore.setInvitationCode(e.invitationCode),c.gameStore.setIsLocked({isLocked:e.isLocked,sync:!1}),c.gameStore.setPlayers(e.players)}),s.socket.on("Room.Info.InvitationCode.Set",e=>{c.gameStore.setInvitationCode(e),n.EventBus.$emit("DmSettings.RefreshedInviteCode")}),s.socket.on("Room.Info.Players.Add",e=>{c.gameStore.addPlayer(e)}),s.socket.on("Username.Set",e=>{c.gameStore.setUsername(e),c.gameStore.setDM(e===decodeURIComponent(window.location.pathname.split("/")[2]))}),s.socket.on("Client.Options.Set",e=>{c.gameStore.setGridColour({colour:e.grid_colour,sync:!1}),c.gameStore.setFOWColour({colour:e.fow_colour,sync:!1}),c.gameStore.setRulerColour({colour:e.ruler_colour,sync:!1}),c.gameStore.setPanX(e.pan_x),c.gameStore.setPanY(e.pan_y),c.gameStore.setZoomDisplay(d.zoomDisplay(e.zoom_factor)),e.active_layer&&r.layerManager.selectLayer(e.active_layer,!1),void 0!==r.layerManager.getGridLayer()&&r.layerManager.getGridLayer().invalidate()}),s.socket.on("Location.Set",e=>{void 0!==e.name&&c.gameStore.setLocationName(e.name),void 0!==e.unit_size&&c.gameStore.setUnitSize({unitSize:e.unit_size,sync:!1}),void 0!==e.use_grid&&c.gameStore.setUseGrid({useGrid:e.use_grid,sync:!1}),void 0!==e.full_fow&&c.gameStore.setFullFOW({fullFOW:e.full_fow,sync:!1}),void 0!==e.fow_opacity&&c.gameStore.setFOWOpacity({fowOpacity:e.fow_opacity,sync:!1}),void 0!==e.fow_los&&c.gameStore.setLineOfSight({fowLOS:e.fow_los,sync:!1}),void 0!==e.vision_min_range&&c.gameStore.setVisionRangeMin({value:e.vision_min_range,sync:!1}),void 0!==e.vision_max_range&&c.gameStore.setVisionRangeMax({value:e.vision_max_range,sync:!1}),void 0!==e.vision_mode&&(c.gameStore.setVisionMode({mode:e.vision_mode,sync:!1}),c.gameStore.recalculateVision(),c.gameStore.recalculateMovement())}),s.socket.on("Position.Set",e=>{l.gameManager.setCenterPosition(new o.GlobalPoint(e.x,e.y))}),s.socket.on("Notes.Set",e=>{for(const t of e)c.gameStore.newNote({note:t,sync:!1})}),s.socket.on("Asset.List.Set",e=>{c.gameStore.setAssets(e)}),s.socket.on("Board.Set",e=>{c.gameStore.clear(),c.gameStore.setLocations(e.locations),document.getElementById("layers").innerHTML="",c.gameStore.resetLayerInfo(),r.layerManager.reset();for(const t of e.layers)a.createLayer(t);r.layerManager.selectLayer(r.layerManager.getLayer().name,!1),n.EventBus.$emit("Initiative.Clear"),c.gameStore.recalculateVision(),c.gameStore.recalculateMovement(),c.gameStore.setBoardInitialized(!0)}),s.socket.on("Gridsize.Set",e=>{c.gameStore.setGridSize({gridSize:e,sync:!1})}),s.socket.on("Shape.Add",e=>{l.gameManager.addShape(e)}),s.socket.on("Shape.Remove",e=>{if(!r.layerManager.UUIDMap.has(e.uuid))return void console.log("Attempted to remove an unknown shape");if(!r.layerManager.hasLayer(e.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.layer}`);const t=r.layerManager.getLayer(e.layer);t.removeShape(r.layerManager.UUIDMap.get(e.uuid),!1),t.invalidate(!1)}),s.socket.on("Shape.Order.Set",e=>{if(!r.layerManager.UUIDMap.has(e.shape.uuid))return void console.log("Attempted to move the shape order of an unknown shape");if(!r.layerManager.hasLayer(e.shape.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.shape.layer}`);const t=r.layerManager.UUIDMap.get(e.shape.uuid),i=r.layerManager.getLayer(t.layer);i.moveShapeOrder(t,e.index,!1)}),s.socket.on("Shape.Layer.Change",e=>{const t=r.layerManager.UUIDMap.get(e.uuid);void 0!==t&&t.moveLayer(e.layer,!1)}),s.socket.on("Shape.Update",e=>{l.gameManager.updateShape(e)}),s.socket.on("Temp.Clear",e=>{e.forEach(e=>{if(!r.layerManager.UUIDMap.has(e.uuid))return void console.log("Attempted to remove an unknown temporary shape");if(!r.layerManager.hasLayer(e.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.layer}`);const t=r.layerManager.UUIDMap.get(e.uuid);r.layerManager.getLayer(e.layer).removeShape(t,!1)})}),s.socket.on("Labels.Set",e=>{for(const t of e)c.gameStore.addLabel(t)}),s.socket.on("Label.Visibility.Set",e=>{c.gameStore.setLabelVisibility(e)}),s.socket.on("Label.Add",e=>{c.gameStore.addLabel(e)}),s.socket.on("Label.Delete",e=>{c.gameStore.deleteLabel(e)}),s.socket.on("Labels.Filter.Add",e=>{c.gameStore.labelFilters.push(e),r.layerManager.invalidate()}),s.socket.on("Labels.Filter.Remove",e=>{const t=c.gameStore.labelFilters.indexOf(e);t>=0&&(c.gameStore.labelFilters.splice(t,1),r.layerManager.invalidate())}),s.socket.on("Labels.Filters.Set",e=>{c.gameStore.setLabelFilters(e)})}}); +//# sourceMappingURL=app.2dfde930.js.map \ No newline at end of file diff --git a/server/static/js/app.2dfde930.js.map b/server/static/js/app.2dfde930.js.map new file mode 100644 index 000000000..e5d897f8b --- /dev/null +++ b/server/static/js/app.2dfde930.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/game/shapes/text.ts","webpack:///./src/game/ui/selection/shapecontext.vue","webpack:///./src/App.vue?5b85","webpack:///./src/core/components/modals/prompt.vue?d33d","webpack:///./src/core/components/colorpicker.vue?4d88","webpack:///./src/game/game.vue","webpack:///./src/game/api/socket.ts","webpack:///./src/assetManager/manager.vue?5633","webpack:///./src/game/ui/menu/asset_node.vue","webpack:///./src/auth/login.vue","webpack:///./src/game/ui/initiative.vue?b24a","webpack:///./src/game/ui/initiative.vue?fb8b","webpack:///./src/game/visibility/te/draw.ts","webpack:///./src/core/components/accordion.vue","webpack:///./src/game/ui/tools/tool.vue?5b17","webpack:///./src/game/shapes/circulartoken.ts","webpack:///./src/game/ui/annotation.ts","webpack:///./src/game/ui/menu/menu.vue","webpack:///./src/core/components/contextmenu.vue","webpack:///./src/game/ui/note.vue?49b7","webpack:///./src/auth/login.vue?c159","webpack:///./src/game/ui/labels.vue?da86","webpack:///./src/game/ui/labels.vue?1ecb","webpack:///./src/game/shapes/utils.ts","webpack:///./src/game/ui/dmsettings.vue?f205","webpack:///./src/core/components/modals/confirm.vue?e6fb","webpack:///./src/game/ui/tools/select.vue?3530","webpack:///./src/game/ui/tools/select.vue?29b9","webpack:///./src/game/ui/dmsettings.vue?a899","webpack:///./src/game/ui/dmsettings.vue?814f","webpack:///./src/game/shapes/shape.ts","webpack:///./src/core/components/modals/prompt.vue?d457","webpack:///./src/game/ui/menu/menu.vue?5c18","webpack:///./src/game/ui/menu/menu.vue?44af","webpack:///./src/game/ui/note.vue?e0e5","webpack:///./src/game/ui/note.vue?23aa","webpack:///./src/game/ui/tools/select.vue?49f9","webpack:///./src/game/ui/dmsettings.vue?fed3","webpack:///./src/game/ui/tools/utils.ts","webpack:///./src/game/ui/note.vue?a508","webpack:///./src/core/components/inputCopy.vue?4a5e","webpack:///./src/game/ui/labels.vue?15af","webpack:///./src/dashboard/main.vue?6d0a","webpack:///./src/dashboard/main.vue?bbae","webpack:///./src/game/ui/tools/vision.vue?4f0c","webpack:///./src/game/api/utils.ts","webpack:///./src/game/ui/menu/asset_node.vue?f519","webpack:///./src/core/components/colorpicker.vue?893c","webpack:///./src/core/components/contextmenu.vue?113a","webpack:///./src/core/components/contextmenu.vue?7efa","webpack:///./src/assetManager/store.ts","webpack:///./src/core/components/contextmenu.vue?50e1","webpack:///./src/game/ui/selection/shapecontext.vue?1cf6","webpack:///./src/game/ui/menu/menu.vue?b354","webpack:///./src/core/components/inputCopy.vue?f87b","webpack:///./src/game/ui/tools/map.vue?284a","webpack:///./src/assetManager/contextMenu.vue?c688","webpack:///./src/assetManager/contextMenu.vue?bce4","webpack:///./src/game/layers/grid.ts","webpack:///./src/core/components/colorpicker.vue?5bf8","webpack:///./src/core/components/colorpicker.vue?7374","webpack:///./src/store.ts","webpack:///./src/core/components/colorpicker.vue","webpack:///./src/game/ui/tools/vision.vue?48bb","webpack:///./src/auth/login.vue?3521","webpack:///./src/App.vue?5130","webpack:///./src/App.vue","webpack:///./src/game/layers/fow.ts","webpack:///./src/core/components/load.vue?18c2","webpack:///./src/game/ui/selection/edit_dialog.vue?b816","webpack:///./src/game/ui/selection/edit_dialog.vue?6334","webpack:///./src/game/shapes/circle.ts","webpack:///./src/game/ui/tools/map.vue?a3ab","webpack:///./src/core/components/load.vue","webpack:///./src/game/ui/tools/pan.ts","webpack:///./src/game/ui/tools/selectcontext.vue","webpack:///./src/core/utils.ts","webpack:///./src/assetManager/contextMenu.vue","webpack:///./src/game/visibility/te/triag.ts","webpack:///./src/game/ui/menu/asset_node.vue?1f27","webpack:///./src/game/ui/tools/selectcontext.vue?d72f","webpack:///./src/game/ui/tools/selectcontext.vue?3109","webpack:///./src/game/ui/tools/vision.vue?d25b","webpack:///./src/game/ui/selection/edit_dialog.vue?1206","webpack:///./src/core/components/modals/modal.vue?44ae","webpack:///./src/assetManager/socket.ts","webpack:///./src/game/ui/tools/filter.vue?ee60","webpack:///./src/core/components/accordion.vue?3e09","webpack:///./src/game/ui/tools/vision.vue?07fd","webpack:///./src/game/ui/tools/vision.vue?9b57","webpack:///./src/game/ui/tools/selectcontext.vue?6c84","webpack:///./src/game/game.vue?5550","webpack:///./src/game/shapes/multiline.ts","webpack:///./src/game/ui/tools/draw.vue","webpack:///./src/game/utils.ts","webpack:///./src/game/ui/tools/createtoken_modal.vue?d0df","webpack:///./src/game/ui/note.vue?f9bd","webpack:///./src/game/ui/tools/draw.vue?b96d","webpack:///./src/game/shapes/line.ts","webpack:///./src/router.ts","webpack:///./src/game/ui/tools/tool.vue?d136","webpack:///./src/game/ui/tools/tools.vue","webpack:///./src/game/ui/tools/tool.vue?8ce3","webpack:///./src/game/game.vue?dae5","webpack:///./src/game/game.vue?5780","webpack:///./src/core/components/inputCopy.vue?e1ee","webpack:///./src/core/components/inputCopy.vue?0a6a","webpack:///./src/game/shapes/asset.ts","webpack:///./src/core/components/inputCopy.vue","webpack:///./src/game/visibility/te/cdt.ts","webpack:///./src/game/ui/tools/draw.vue?1261","webpack:///./src/game/layers/manager.ts","webpack:///./src/game/ui/initiative.vue?c7e1","webpack:///./src/game/ui/tools/createtoken_modal.vue","webpack:///./src/game/visibility/bvh/node.ts","webpack:///./src/game/ui/tools/createtoken_modal.vue?f918","webpack:///./src/game/events/keyboard.ts","webpack:///./src/assetManager/manager.vue?433f","webpack:///./src/game/ui/tools/tools.vue?25b2","webpack:///./src/game/ui/selection/selection_info.vue?2310","webpack:///./src/core/components/modals/modal.vue?09d2","webpack:///./src/game/ui/labels.vue?e465","webpack:///./src/core/components/contextmenu.vue?a0a2","webpack:///./src/core/components/modals/prompt.vue?4e1b","webpack:///./src/dashboard/main.vue?1c14","webpack:///./src/core/components/accordion.vue?3d26","webpack:///./src/core/components/load.vue?14cd","webpack:///./src/core/components/load.vue?0f87","webpack:///./src/game/ui/menu/menu.vue?8b23","webpack:///./src/game/shapes/boundingrect.ts","webpack:///./src/game/geom.ts","webpack:///./src/game/ui/menu/asset_node.vue?61d2","webpack:///./src/game/ui/menu/asset_node.vue?3fe9","webpack:///./src/game/ui/initiative.vue?ebca","webpack:///./src/core/components/inputCopy.vue?946f","webpack:///./src/game/game.vue?5592","webpack:///./src/game/units.ts","webpack:///./src/game/ui/menu/menu.vue?ae57","webpack:///./src/core/components/colorpicker.vue?1682","webpack:///./src/game/visibility/te/tds.ts","webpack:///./src/game/visibility/bvh/bvh.ts","webpack:///./src/game/ui/tools/filter.vue?1da1","webpack:///./src/game/manager.ts","webpack:///./src/game/ui/menu/asset_node.vue?0d0e","webpack:///./src/core/components/modals/modal.vue?9335","webpack:///./src/game/ui/tools/vision.vue","webpack:///./src/core/components/load.vue?8cd0","webpack:///./src/dashboard/main.vue?3f72","webpack:///./src/core/components/modals/confirm.vue","webpack:///./src/game/ui/selection/shapecontext.vue?aac0","webpack:///./src/game/ui/tools/draw.vue?60f4","webpack:///./src/game/ui/selection/shapecontext.vue?c203","webpack:///./src/assetManager/manager.vue?a11e","webpack:///./src/game/event-bus.ts","webpack:///./src/dashboard/main.vue?d5a9","webpack:///./src/game/shapes/rect.ts","webpack:///./src/game/ui/tools/filter.vue?b0f4","webpack:///./src/game/ui/tools/selectcontext.vue?6f66","webpack:///./src/game/layers/fowplayers.ts","webpack:///./src/game/layers/layer.ts","webpack:///./src/game/events/mouse.ts","webpack:///./src/game/ui/tools/filter.vue","webpack:///./src/game/shapes/baserect.ts","webpack:///./src/game/ui/tools/select.vue","webpack:///./src/game/ui/selection/selection_info.vue?1f2b","webpack:///./src/dashboard/main.vue","webpack:///./src/game/ui/tools/createtoken_modal.vue?6f0b","webpack:///./src/assetManager/manager.vue?fbc6","webpack:///./src/assetManager/manager.vue?a045","webpack:///./src/game/ui/tools/selectcontext.vue?d61f","webpack:///./src/auth/logout.ts","webpack:///./src/core/store.ts","webpack:///./src/main.ts","webpack:///./src/core/components/contextmenu.vue?f402","webpack:///./src/invitation/invitation.ts","webpack:///./src/core/components/modals/prompt.vue","webpack:///./src/game/visibility/te/te.ts","webpack:///./src/game/ui/tools/map.vue?ed09","webpack:///./src/game/ui/tools/map.vue?7f60","webpack:///./src/game/ui/selection/edit_dialog.vue","webpack:///./src/core/components/modals/modal.vue?c616","webpack:///./src/core/components/modals/modal.vue?12fd","webpack:///./src/game/settings.ts","webpack:///./src/auth/login.vue?283c","webpack:///./src/game/ui/tools/createtoken_modal.vue?4595","webpack:///./src/game/ui/tools/createtoken_modal.vue?5fcc","webpack:///./src/game/ui/tools/tool.vue?780b","webpack:///./src/game/ui/tools/tool.vue?f5ba","webpack:///./src/game/game.vue?d01c","webpack:///./src/game/ui/tools/ruler.ts","webpack:///./src/core/components/modals/modal.vue","webpack:///./src/core/components/accordion.vue?4b34","webpack:///./src/game/visibility/te/pa.ts","webpack:///./src/game/ui/tools/tools.vue?4580","webpack:///./src/game/ui/selection/edit_dialog.vue?9a84","webpack:///./src/game/ui/selection/shapecontext.vue?3e44","webpack:///./src/game/ui/selection/shapecontext.vue?9807","webpack:///./src/core/components/modals/confirm.vue?f9ee","webpack:///./src/game/ui/dmsettings.vue?7896","webpack:///./src/game/ui/tools/map.vue","webpack:///./src/core/components/accordion.vue?ada1","webpack:///./src/core/components/accordion.vue?6229","webpack:///./src/core/components/modals/confirm.vue?cfcf","webpack:///./src/core/components/modals/confirm.vue?be48","webpack:///./src/game/ui/dmsettings.vue","webpack:///./src/assetManager/contextMenu.vue?1b1b","webpack:///./src/game/ui/tools/select.vue?b7fd","webpack:///./src/game/ui/tools/filter.vue?6447","webpack:///./src/game/ui/labels.vue?8d8f","webpack:///./src/game/shapes/polygon.ts","webpack:///./src/game/ui/tools/draw.vue?dd55","webpack:///./src/game/ui/tools/draw.vue?03b4","webpack:///./src/game/game.vue?4949","webpack:///./src/game/ui/selection/selection_info.vue?df44","webpack:///./src/game/ui/selection/selection_info.vue?928f","webpack:///./src/game/ui/tools/filter.vue?fb4f","webpack:///./src/game/ui/tools/filter.vue?fa63","webpack:///./src/assetManager/manager.vue","webpack:///./src/game/ui/tools/tools.vue?fa4a","webpack:///./src/game/ui/tools/tool.vue","webpack:///./src/core/components/modals/prompt.vue?29b4","webpack:///./src/core/components/modals/prompt.vue?36e2","webpack:///./src/game/ui/initiative.vue?36c8","webpack:///./src/game/ui/selection/selection_info.vue","webpack:///./src/game/store.ts","webpack:///./src/core/components/modals/confirm.vue?a22f","webpack:///./src/game/comm/conversion/aura.ts","webpack:///./src/assetManager/contextMenu.vue?1e9a","webpack:///./src/game/ui/note.vue","webpack:///./src/game/ui/initiative.vue","webpack:///./src/game/layers/utils.ts","webpack:///./src/game/ui/labels.vue","webpack:///./src/game/ui/selection/edit_dialog.vue?3800","webpack:///./src/game/ui/tools/tools.vue?28f3","webpack:///./src/game/ui/tools/tools.vue?c2f7","webpack:///./src/auth/login.vue?d700","webpack:///./src/auth/login.vue?8f9e","webpack:///./src/game/ui/selection/selection_info.vue?5d62","webpack:///./src/game/api/events.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","app","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","boundingrect_1","shape_1","units_1","Text","Shape","[object Object]","position","text","font","angle","fillColour","strokeColour","uuid","super","this","type","assign","getBaseDict","points","refPoint","x","y","BoundingRect","ctx","draw","fillStyle","save","dest","g2l","translate","rotate","textAlign","getLines","map","line","fillText","restore","point","centerPoint","canvas","getBoundingBox","visibleInCanvas","resizePoint","lines","lineHeight","widths","measureText","width","Math","max","split","allLines","maxWidth","targetLine","words","word","testLine","metrics","testWidth","__webpack_exports__","_shapecontext_vue_vue_type_template_id_6c66d243_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","__WEBPACK_IMPORT_KEY__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__","component","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_style_index_0_id_0602c2e6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_style_index_0_id_0602c2e6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tinycolor2_1","tslib_1","__importDefault","vue_1","vue_class_component_1","vue_color_1","vue_property_decorator_1","ColorPicker","default","display","left","top","transparent","$refs","chromePicker","val","rgba","a","setPosition","disabled","$nextTick","$children","$el","focus","newColor","toRgbString","$emit","color","rect","getBoundingClientRect","right","innerWidth","bottom","innerHeight","__decorate","Prop","String","Boolean","components","chrome-picker","Chrome","_game_vue_vue_type_template_id_3d0578ba_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__","socket_io_client_1","createConnection","route","socket","io","opts","query","decodeURIComponent","params","creator","room","connect","location","protocol","host","autoConnect","contextMenu_vue_1","confirm_vue_1","prompt_vue_1","socket_1","store_1","utils_1","AssetManager","path","draggingSelection","folders","assetStore","files","selected","idMap","currentFolder","root","parentFolder","parent","undefined","firstSelectedFile","sel","file_hash","nextFolder","pop","clearSelected","emit","prompt","inode","target","includes","indexOf","delete","event","shiftKey","inodes","start","end","ctrlKey","file","dataTransfer","setData","dropEffect","classList","contains","add","remove","moveInode","upload","document","getElementById","click","fls","CHUNK_SIZE","uuidv4","slices","ceil","size","fr","FileReader","readAsArrayBuffer","min","onload","e","directory","totalSlices","Prompt","ConfirmDialog","AssetContextMenu","to","from","next","disconnect","_asset_node_vue_vue_type_template_id_6d718094_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_login_vue_vue_type_template_id_bc30fc14_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","render","_vm","_h","$createElement","_c","_self","attrs","visible","mask","on","close","$event","scopedSlots","_u","fn","staticClass","draggable","dragstart","dragStart","dragend","dragEnd","_v","id","fakeSetData","$store","state","game","IS_DM","change","updateOrder","model","callback","$$v","expression","_l","actor","staticStyle","flex-direction","align-items","class","initiative-selected","currentActor","style","cursor","mouseenter","toggleHighlight","mouseleave","src","source","height","_s","directives","rawName","modifiers","lazy","number","notAllowed","owns","placeholder","domProps","$set","_n","syncInitiative","blur","$forceUpdate","opacity","createEffect","getDefaultEffect","effects","toggleOption","group","removeInitiative","effect","updateEffect","input","composing","turns","toString","_e","roundCounter","visionLock","toggleVisionLock","cameraLock","setRound","updateTurn","nextTurn","staticRenderFns","manager_1","tds_1","triag_1","drawPolygon","polygon","colour","dl","layerManager","getLayer","lineJoin","beginPath","strokeStyle","random","moveTo","g2lx","g2ly","lineTo","closePath","stroke","drawPolygonL","xx","local","yy","I","J","drl","constrained","drawPolygonT","tds","clear","logs","T","clearRect","ei","EdgeIterator","valid","collect","fromP","edge","first","vertices","ccw","second","toP","cw","Infinity","constraints","console","log","pos","triangles","isInfinite","po","arc","PI","fill","DP","DPL","DPT","_accordion_vue_vue_type_template_id_0bf2b7ba_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tinycolor","__importStar","circle_1","CircularToken","Circle","center","radius","fromDict","textBaseline","xs","calcFontScale","g2lz","ys","transform","mostReadable","toHexString","gameStore","has_img","index","geom_1","rect_1","text_1","AnnotationManager","shown","origin","GlobalPoint","annotationText","annotationRect","Rect","layer","hasLayer","warn","addShape","l2g","LocalPoint","getMaxWidth","getMaxHeight","w","zoomFactor","h","invalidate","_menu_vue_vue_type_template_id_c7fe324c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_contextmenu_vue_vue_type_template_id_256dde9c___WEBPACK_IMPORTED_MODULE_0__","_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","title","margin","ref","search","category","labels","label","selectLabel","lower-opacity","stopPropagation","toggleVisibility","deleteLabel","trim","newCategory","newName","addLabel","asset_1","circulartoken_1","line_1","multiline_1","polygon_1","createShapeFromDict","shape","sh","type_","fill_colour","stroke_colour","circ","token","Line","x2","y2","line_width","multiline","MultiLine","Polygon","v","asset","img","Image","startsWith","URL","pathname","Asset","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_style_index_0_id_1883e207_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_style_index_0_id_1883e207_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","handleClick","selection","player","kickPlayer","values","players","refreshState","invitationUrl","refreshInviteCode","toggleSessionLock","deleteSession","for","checked","Array","isArray","useGrid","_i","$$a","$$el","$$c","$$i","concat","gridSize","unitSize","fakePlayer","fullFOW","fowLOS","step","fowOpacity","changeVisionMode","visionMode","visionRangeMin","visionRangeMax","aura_1","nameVisible","trackers","auras","_owners","visionObstruction","movementObstruction","isToken","showHighlight","annotation","globalCompositeOperation","options","Map","_refPoint","delta","idx","entries","abs","prev","fromArray","vec","subtract","mid","multiply","normalize","skipLightUpdate","recalculate","self","obstructionIndex","visionBlockers","update","recalculateVision","forEach","au","ls","visionSources","findIndex","aura","visionSource","some","blocksMovement","movementblockers","recalculateMovement","ownedBy","ownedtokens","draw_operator","movement_obstruction","vision_obstruction","aurasToServer","owners","name_visible","is_token","JSON","stringify","aurasFromServer","parse","bbox","strokeRect","topLeft","dim","loc","innerRange","g2lr","gradient","createRadialGradient","tc","addColorStop","setAlpha","lastPath","sync","oldLayer","newLayer","shapes","freeze","username","FAKE_PLAYER","activeTokens","owner","oldValue","newValue","ownerIndex","addOwner","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","settings","locations","rm-list-dm","_m","enter","rm","transition","settingsClick","overflow-y","overflow-x","href","assets","createNote","note","openNote","notes","openDmSettings","gridColour","update:color","fowColour","rulerColour","text-decoration","changeLocation","createLocation","select","font-size","updateNote","calcHeight","removeNote","selectcontext_vue_1","tool_vue_1","utils_2","utils_3","SelectOperations","SelectTool","showContextMenu","active","Noop","deltaChanged","dragRay","Ray","Vector","selectionStartPoint","selectionHelper","mouse","getMouse","globalMouse","selectionStack","hit","getPointIndex","l2gz","getRef","Resize","Drag","localRefPoint","GroupSelect","endPoint","og","direction","ogDelta","calculateDelta","asDict","redraw","temporary","resize","updateCursor","body","clearSelection","topRight","botLeft","altKey","snapToGrid","resizeToGrid","$parent","shapecontext","open","selectcontext","getPointOrientation","SelectContext","vuex_1","inputCopy_vue_1","modal_vue_1","event_bus_1","DmSettings","categories","showRefreshState","EventBus","$on","$off","invitationCode","locked","isLocked","setUseGrid","setUnitSize","setGridSize","setFakePlayer","setFullFOW","setFOWOpacity","setLineOfSight","setVisionRangeMin","setVisionRangeMax","toLowerCase","setVisionMode","child","firstElementChild","HTMLInputElement","setIsLocked","roomCreator","roomName","then","$router","InputCopyElement","Modal","computed","mapState","pa_1","done","ogSelBBox","newSelBBox","offset","refine","movementBlocker","blocker","UUIDMap","blockerBBox","found","intersectsWithInner","ray","fromPoints","invDir","inverse","dirIsNegative","intersectP","bCenter","sCenter","ux","uy","dx","dot","dy","centerTriangle","PA_CDT","movement","locate","asArray","lt","triangle","checkTriangle","skip","endpoint","neighbours","_cw","_ccw","ix","intersection","isConstrained","orientation","Sign","LEFT_TURN","ZERO","newDelta","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_style_index_0_id_7a3669fd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_style_index_0_id_7a3669fd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_style_index_0_id_20bfdb3e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_style_index_0_id_20bfdb3e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","owned","joined","encodeURIComponent","submit","preventDefault","createRoom","newSessionName","tag","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","sendClientOptions","locationOptions","panX","panY","AssetNode","showImage","keys","filter","el","sort","alphSort","__files","b","children","imageSource","querySelector","setDragImage","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_style_index_0_id_f8744d60_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_style_index_0_id_f8744d60_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tabindex","_t","vuex_module_decorators_1","AssetStore","VuexModule","Mutation","Module","dynamic","store","rootStore","namespaced","getModule","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","contextmenu_vue_1","ShapeContext","activeLayer","pageX","pageY","layers","selectable","playerEditable","moveLayer","getActiveLayer","moveShapeOrder","initiative","addInitiative","getInitiativeRepr","ContextMenu","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_style_index_0_id_c7fe324c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_style_index_0_id_c7fe324c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","borderColour","popupString","showPopup","navigator","clipboard","writeText","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","rename","layer_1","GridLayer","Layer","doClear","drawGrid","gs","lineWidth","currentTarget","closePicker","z-index","updateColor","use","Store","_colorpicker_vue_vue_type_template_id_f8744d60_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","VisionTool","tokens","removeActiveToken","addActiveToken","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_bc30fc14_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_bc30fc14_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","script","componentNormalizer","settings_1","te_1","FOWLayer","isVisionLayer","preFogShapes","virtualCanvas","createElement","vCtx","getContext","has","removeShape","Settings","skipLightFOW","originalOperation","dctx","drawAngleLines","drawFirstLightHit","bb","lcenter","alm","light","find","auraLength","getUnitDistance","auraCircle","lastArcAngle","Path2D","firstPoint","angleSteps","anglePoint","cos","sin","lightRay","hitResult","BV","intersect","computeVisibility","drawImage","preShape","ogComposite","getFogColour","fillRect","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","grid-column","updateShape","grid-column-start","setToken","setVisionBlocker","setMovementBlocker","updateOwner","gridColumnStart","removeOwner","tracker","removeTracker","updateAuraColour","updateAuraVisionSource","removeAura","removeLabel","openLabelManager","updateAnnotation","pow","targetX","targetY","round","diff","sqrt","baserect_1","MapTool","xCount","yCount","startPoint","clone","BaseRect","_load_vue_vue_type_template_id_ff095222___WEBPACK_IMPORTED_MODULE_0__","_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__","PanTool","panStart","distance","increasePanX","increasePanY","_selectcontext_vue_vue_type_template_id_2e7d4582_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","main_1","replace","capitalize","charAt","toUpperCase","getHTMLFont","element","parentElement","getComputedStyle","getPropertyValue","getHTMLTextWidth","fakeElement","appendChild","partition","arr","predicate","ret","Number","fontWidth","fixedEncodeURIComponent","str","charCodeAt","OrderedMap","getComponent","activeComponent","_contextMenu_vue_vue_type_template_id_dbbd4d08___WEBPACK_IMPORTED_MODULE_0__","_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","edgeInfo","va","vb","ec","EdgeCirculator","indv","indexV","ri","infinite","vi","orient","COLLINEAR","collinearBetween","q","cPQ","cQR","compare","EQUAL","SMALLER","LARGER","px","py","qx","qy","rx","ry","pqx","pqy","prx","pry","det","determinant","maxX","maxY","aprX","aprY","eps","EPSILON","POSITIVE","NEGATIVE","a00","a01","a10","a11","hasInexactNegativeOrientation","sideOfOrientedCircle","perturb","sideOfOrientedCircleP","Error","p0","p1","p2","os","getOrientedSide","ON_ORIENTED_BOUNDARY","reverse","ON_NEGATIVE_SIDE","xyEqual","xySmaller","xyCompare","qpx","qpy","rpx","rpy","tpx","tpy","tqx","tqy","rqx","rqy","maxx","maxy","arpx","arpy","atqx","atqy","atpx","atpy","arqx","arqy","ON_POSITIVE_SIDE","segSegDoIntersectCrossing","p3","p4","RIGHT_TURN","segSegDoIntersectContained","pa","pb","pc","pd","getIntersectionType","intersectionType","IntersectionType","POINT","NO_INTERSECTION","getLine","doIntersect","l1","l2","info","getIntersectionTypeLine","la","lb","denom","nom1","nom2","A1","A2","B1","B2","nextUp","MAX_VALUE","MIN_VALUE","ulp","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","bringPlayers","createToken","showInitiative","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_style_index_0_id_46baf892_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_style_index_0_id_46baf892_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_style_index_0_id_23de098e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_style_index_0_id_23de098e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","positioned","offsetX","offsetY","screenX","screenY","dragging","updatePosition","container","offsetWidth","offsetHeight","clientX","clientY","parseInt","destination","setRoot","folder","set","accordion_vue_1","FilterTool","cat","","localeCompare","initalValues","labelFilters","f","toggleUnlabeledFilter","_","accordion","Accordion","initialValues","updateCategory","overall","items","indeterminate","item","--detailRight","detailRight","--detailArrow","detailArrow","toggle","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_style_index_0_id_2e7d4582_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_style_index_0_id_2e7d4582_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_points","minx","miny","lineCap","_draw_vue_vue_type_template_id_639cd890_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","opposite","zoomValue","exp","zoomDisplay","colorpicker_vue_1","CreateTokenModal","updatePreview","Watch","color-picker","NoteDialog","textarea","scrollHeight","DrawTool","brushHelper","ruler","shapeSelect","modeSelect","modes","brushSize","helperSize","onModeChange","fowLayer","normalLayer","setupBrush","_vertices","pushBrushBack","lastPoint","finaliseShape","axios_1","vue_router_1","manager_vue_1","login_vue_1","logout_1","load_vue_1","main_vue_1","game_vue_1","invitation_1","router","base","routes","redirect","meta","auth","template","beforeEach","coreStore","initialized","matched","record","authenticated","response","setAuthenticated","setUsername","setInitialized","catch","error","Tool","tool","onMouseDown","onMouseUp","onMouseMove","onContextMenu","onDeselect","onSelect","_tools_vue_vue_type_template_id_b6e1f51c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","wheel","zoom","ready","mousedown","mouseup","mousemove","contextmenu","dragover","drop","showUI","layer-selected","selectedLayer","selectLayer","interval","dot-width","dot-height","tooltip-dir","tooltip","formatter","toFixed","slider-style","border-radius","bg-style","background-color","box-shadow","process-style","copy","topleft","_inputCopy_vue_vue_type_template_id_20bfdb3e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","CDT","TDS","insert","insertConstraintV","stack","markConstraint","intersectionInfo","findIntersectedFaces","triangulateHole","intersectedFaces","listAB","listBA","edges","triangulateHole2","propagatingFlipE","triangulateHalfHole","fl","deleteTriangle","conflictBoundaries","iN","iT","iC","current","n1","n2","ind","ind1","ind2","mirrorIndex","v0","v1","v2","newlf","createTriangle","vaa","vbb","aa","lfc","LineFaceCirculator","lf","rf","indexT","unshift","previousFace","currentVertex","i1","i2","vcc","vdd","pi","BoundingBox","dilate","overlaps","removeConstrainedEdge","dimension","indf","locateInfo","iLocate","insertb","li","flipAround","propagatingFlip","depth","isFlipable","maxDepth","ni","flip","e1","e2","uid","eni","eI","edgeSet","lessEdge","indn","ed","tt","ii","u","t1","t2","t3","i3","t4","i4","insertInConstrainedEdge","LocateType","EDGE","insertc","updateConstraintsIncident","VERTEX","clearConstraintsIncident","updateConstraintsOpposite","c1","c2","fc","FaceCirculator","cwi","ccwi","insertFirst","finiteVertex","insertSecond","OUTSIDE_AFFINE_HULL","insertOutsideAffineHull","OUTSIDE_CONVEX_HULL","insertOutsideConvexHull","insertInEdge","FACE","insertInFace","insertDimUp","_infinite","conform","finiteEdge","COUNTERCLOCKWISE","insertOutsideConvexHull2","ccwlist","cwlist","th","marchLocate1D","marchLocate2D","ff","iv","pqt","Triangle","leftFirst","o0","o1","o2","sum","nTurns","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","LayerManager","drawLoop","requestAnimationFrame","addLayer","globalAlpha","getSelection","image","getData","l2gx","l2gy","lm","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_createtoken_modal_vue_vue_type_template_id_73816298_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","BoundingNode","nPrimitives","LeafNode","firstPrimOffset","InteriorNode","union","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","utils_4","onKeyUp","HTMLTextAreaElement","selectTool","onKeyDown","keyCode","hasSelection","toggleUI","setClipboard","clip","oldTrackers","newTracker","oldAuras","newAura","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","shapecontext_vue_1","createtoken_modal_vue_1","draw_vue_1","filter_vue_1","map_vue_1","pan_1","select_vue_1","vision_vue_1","manager_2","ruler_1","Tools","currentTool","tools","dmTools","currentToolComponent","visibleTools","tagName","targetTool","button","buttons","annotations","gameManager","annotationManager","setActiveText","select-tool","pan-tool","draw-tool","ruler-tool","RulerTool","map-tool","filter-tool","vision-tool","shape-menu","createtoken-dialog","watch","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_style_index_0_id_e477c214_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_style_index_0_id_e477c214_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","question","answer","resolve","reject","Promise","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_style_index_0_id_b102d41e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_style_index_0_id_b102d41e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_style_index_0_id_0bf2b7ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_style_index_0_id_0bf2b7ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","message","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","botRight","vector","other","xmin","xmax","ymin","ymax","botright","dirIsNeg","txmin","getDiagCorner","txmax","tymin","tymax","tMax","coreVisible","getPointDistance","Point","scale","atan2","maxT","mouseover","hash","mouseout","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_style_index_0_id_62228cde_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_style_index_0_id_62228cde_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","vue_slider_component_1","lodash_1","initiative_vue_1","labels_vue_1","menu_vue_1","note_vue_1","selection_info_vue_1","tools_vue_1","keyboard_1","mouse_1","dmsettings_vue_1","Game","manager","updateZoom","newZoomDisplay","zoomLocation","addEventListener","resizeWindow","removeEventListener","throttle","scrollZoom","setWidth","setHeight","confirm","dropAsset","tool-bar","selection-info","prompt-dialog","confirm-dialog","menu-bar","initiative-dialog","zoom-slider","note-dialog","label-dialog","dm-settings","obj","z","l2gr","asset_node_vue_1","MenuBar","setGridColour","setFOWColour","setRulerColour","nextElementSibling","newNote","asset-node","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_INFINITE_VERTEX","LineFaceState","newPoint","INFINITE","_counter","vertex","A","sign","Vertex","_point","_ri","Edge","_es","associatedEdge","increment","tr","dir","UNDEFINED","_tr","ic","vt","vr","pqr","VERTEX_VERTEX","VERTEX_EDGE","EDGE_VERTEX","EDGE_EDGE","createVertex","addVertex","infiniteVertex","n0","trig","t0","i0","setAdjacency","deleteList","neighbour","lfit","reorient","vCW","vCCW","tri","bl","bli","vv","g","x1","y1","dist","node_1","BoundingVolume","totalNodes","buildData","orderedPrims","nodes","recursiveBuild","compact","node","createLeaf","centroidBbox","getMaxExtent","pMid","partitionedData","flattened","stopOnFirstHit","tMin","todoOffset","nodeNum","todo","secondChildOffset","flatten","myOffset","secondOffset","primitivesOffset","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_1_id_dca395d6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_1_id_dca395d6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","annotation_1","GameManager","selectedTool","oldShape","redrawInitiative","checkVisionSources","setMovementBlock","setIsToken","localPos","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_style_index_0_id_6d718094_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_style_index_0_id_6d718094_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_id_c2851f0e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_id_c2851f0e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_vision_vue_vue_type_template_id_46baf892_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","LoadComponent","registerHooks","Dashboard","vm","err","post","_confirm_vue_vue_type_template_id_1883e207_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_style_index_0_id_639cd890_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_style_index_0_id_639cd890_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_style_index_0_id_6c66d243_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_style_index_0_id_6c66d243_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","FOWPlayersLayer","skipPlayerFOW","maxLength","tokenId","_a","selectionColor","selectionWidth","invalidateLight","serverShape","lsI","lbI","mbI","anI","annotationIndex","ownedIndex","ogOP","drawAuras","filterNoLabel","destinationIndex","oldIdx","deltaY","_filter_vue_vue_type_template_id_dca395d6_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","topright","botleft","mx","my","_select_vue_vue_type_template_id_048b3482___WEBPACK_IMPORTED_MODULE_0__","_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_style_index_0_id_43d09857_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_style_index_0_id_43d09857_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_main_vue_vue_type_template_id_b102d41e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_style_index_0_id_73816298_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_style_index_0_id_73816298_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","moveDrag","stopDrag","multiple","hidden","createDirectory","prepareUpload","dblclick","changeDirectory","dragleave","leaveDrag","inode-selected","cm","startDrag","createtokendialog","Logout","CoreStore","init","App_vue_1","router_1","config","productionTip","devtools","performance","$mount","props","Initiative","code","sessionUrl","_prompt_vue_vue_type_template_id_0602c2e6_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","draw_1","drawt","drawTEContour","Q","rawOutput","expandEdge","fh","nfh","nIndex","rIndex","lIndex","nvh","rvh","lvh","re","le","ro","lo","raySegIntersection","CLOCKWISE","denominator","ua","_edit_dialog_vue_vue_type_template_id_23de098e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","modal-mask","dialog-mask","dragOver","tempFill","Login","password","$route","statusText","span","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","diffsign","xdiff","ydiff","xmid","ymid","_modal_vue_vue_type_template_id_c2851f0e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","cdt_1","triangulate","partial","cdt","insertConstraint","vision","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_style_index_0_id_b6e1f51c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_style_index_0_id_b6e1f51c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","EditDialog","addEmpty","maxvalue","hadAnnotation","an","getLayers","setLayer","moveToBack","moveToFront","getInitiativeWord","openEditDialog","yes","no","ok","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_style_index_0_id_b908e87c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_style_index_0_id_b908e87c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_map_vue_vue_type_template_id_2104f147___WEBPACK_IMPORTED_MODULE_0__","_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","toggleDisplay","toggleCategory","showArrow","toggleSelection","deny","_dmsettings_vue_vue_type_template_id_b908e87c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","LabelManager","user","option-selected","max-width","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_1_id_3d0578ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_1_id_3d0578ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","changeValue","refInFor","selectionupdate","updateSelection","_manager_vue_vue_type_template_id_5b0def98___WEBPACK_IMPORTED_MODULE_0__","_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_tool_vue_vue_type_template_id_1e034b42___WEBPACK_IMPORTED_MODULE_0__","_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","keyup","_k","vuedraggable_1","_activeTokens","setTurn","getActor","actorId","setActiveTokens","setCenterPosition","order","show","option","effectIndex","syncEffect","_selection_info_vue_vue_type_template_id_43d09857_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","bvh_1","GameStore","selectedLayerIndex","boardInitialized","locationName","vision_mode","filters","updatedLayers","Set","isDM","oldLoc","newLoc","getGridLayer","increase","unit_size","gridLayer","use_grid","vision_min_range","vision_max_range","full_fow","fow_opacity","fow_los","actualNote","playerId","context","commit","Action","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","vision_source","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_note_vue_vue_type_template_id_7a3669fd_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_initiative_vue_vue_type_template_id_62228cde_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","fow_1","fowplayers_1","grid_1","createLayer","layerInfo","zIndex","player_editable","setShapes","_labels_vue_vue_type_template_id_e477c214_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","toolVisible","tool-selected","focusin","focusout","login","autocomplete","required","visibility","register","edit_dialog_vue_1","SelectionInfo","visibleTrackers","visibleAuras","editDialog","ogValue","isNaN","edit-dialog","setRoomName","setRoomCreator","setInvitationCode","setPlayers","addPlayer","setDM","grid_colour","fow_colour","ruler_colour","setPanX","pan_x","setPanY","pan_y","setZoomDisplay","zoom_factor","active_layer","setLocationName","setAssets","locationInfo","setLocations","innerHTML","resetLayerInfo","reset","setBoardInitialized","realShape","setLabelVisibility","setLabelFilters"],"mappings":"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","file":"static/js/app.2dfde930.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2l } from \"@/game/units\";\n\nexport class Text extends Shape {\n type = \"text\";\n text: string;\n font: string;\n angle: number;\n constructor(\n position: GlobalPoint,\n text: string,\n font: string,\n angle?: number,\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(position, fillColour, strokeColour, uuid);\n this.text = text;\n this.font = font;\n this.angle = angle || 0;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n text: this.text,\n font: this.font,\n angle: this.angle,\n });\n }\n get points() {\n return [[this.refPoint.x, this.refPoint.y]];\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(this.refPoint, 5, 5); // TODO: fix this bounding box\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.font = this.font;\n ctx.fillStyle = this.fillColour;\n ctx.save();\n const dest = g2l(this.refPoint);\n ctx.translate(dest.x, dest.y);\n ctx.rotate(this.angle);\n ctx.textAlign = \"center\";\n this.getLines(ctx).map(line => ctx.fillText(line.text, line.x, line.y));\n ctx.restore();\n }\n contains(point: GlobalPoint): boolean {\n return false; // TODO\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {} // TODO\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {}\n\n getMaxHeight(ctx: CanvasRenderingContext2D) {\n const lines = this.getLines(ctx);\n const lineHeight = 30;\n return lineHeight * lines.length;\n }\n\n getMaxWidth(ctx: CanvasRenderingContext2D) {\n const lines = this.getLines(ctx);\n const widths = lines.map(line => ctx.measureText(line.text).width);\n return Math.max(...widths);\n }\n\n private getLines(ctx: CanvasRenderingContext2D) {\n const lines = this.text.split(\"\\n\");\n const allLines: { text: string; x: number; y: number }[] = [];\n const maxWidth = ctx.canvas.width;\n const lineHeight = 30;\n const x = 0; // this.refPoint.x;\n let y = 0; // this.refPoint.y;\n\n for (const line of lines) {\n let targetLine = \"\";\n const words = line.split(\" \");\n for (const word of words) {\n const testLine = targetLine + word + \" \";\n const metrics = ctx.measureText(testLine);\n const testWidth = metrics.width;\n if (testWidth > maxWidth) {\n ctx.fillText(targetLine, x, y);\n allLines.push({ text: targetLine, x, y });\n targetLine = word + \" \";\n y += lineHeight;\n } else {\n targetLine = testLine;\n }\n }\n allLines.push({ text: targetLine, x, y });\n y += lineHeight;\n }\n return allLines;\n }\n}\n","import { render, staticRenderFns } from \"./shapecontext.vue?vue&type=template&id=6c66d243&scoped=true&\"\nimport script from \"./shapecontext.vue?vue&type=script&lang=ts&\"\nexport * from \"./shapecontext.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c66d243\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport tinycolor from \"tinycolor2\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Chrome } from \"vue-color\";\nimport { Prop } from \"vue-property-decorator\";\n\n@Component({\n components: {\n \"chrome-picker\": Chrome,\n },\n})\nexport default class ColorPicker extends Vue {\n @Prop(String) color!: string;\n @Prop(Boolean) disabled!: boolean;\n\n display = false;\n left = 0;\n top = 0;\n transparent = false;\n\n mounted() {\n this.transparent = (this.$refs.chromePicker).val.rgba.a === 0;\n this.setPosition();\n }\n\n open() {\n if (this.display || this.disabled) return; // click on the picker itself\n this.setPosition();\n this.display = true;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n updateColor(value: { rgba: { r: number; g: number; b: number; a: number } }) {\n this.transparent = value.rgba.a === 0;\n const newColor = tinycolor(value.rgba).toRgbString();\n this.$emit(\"update:color\", newColor);\n this.$emit(\"input\", newColor);\n }\n closePicker() {\n this.display = false;\n this.$emit(\"change\", this.color);\n }\n setPosition() {\n const rect = this.$el.getBoundingClientRect();\n // 224 is the width of the picker, 242 the height\n if (rect.right + 224 > window.innerWidth) this.left = rect.left - 224;\n else this.left = rect.right;\n if (rect.bottom + 242 > window.innerHeight) this.top = rect.top - 242;\n else this.top = rect.bottom;\n }\n}\n","import { render, staticRenderFns } from \"./game.vue?vue&type=template&id=3d0578ba&scoped=true&\"\nimport script from \"./game.vue?vue&type=script&lang=ts&\"\nexport * from \"./game.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./game.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d0578ba\",\n null\n \n)\n\nexport default component.exports","import io from \"socket.io-client\";\nimport { Route } from \"vue-router\";\n\nexport const socket = io(location.protocol + \"//\" + location.host + \"/planarally\", { autoConnect: false });\n\nexport function createConnection(route: Route) {\n socket.io.opts.query = `user=${decodeURIComponent(route.params.creator)}&room=${decodeURIComponent(route.params.room)}`;\n socket.connect();\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport AssetContextMenu from \"@/assetManager/contextMenu.vue\";\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\n\nimport { socket } from \"@/assetManager/socket\";\nimport { assetStore } from \"@/assetManager/store\";\nimport { Asset } from \"@/core/comm/types\";\nimport { uuidv4 } from \"@/core/utils\";\n\n@Component({\n components: {\n Prompt,\n ConfirmDialog,\n AssetContextMenu,\n },\n beforeRouteEnter(to, from, next) {\n socket.connect();\n next();\n },\n beforeRouteLeave(to, from, next) {\n socket.disconnect();\n next();\n },\n})\nexport default class AssetManager extends Vue {\n path: number[] = [];\n draggingSelection = false;\n\n get folders(): number[] {\n return assetStore.folders;\n }\n\n get files(): number[] {\n return assetStore.files;\n }\n\n get selected(): number[] {\n return assetStore.selected;\n }\n\n get idMap() {\n return assetStore.idMap;\n }\n\n get currentFolder(): number {\n if (this.path.length) return this.path[this.path.length - 1];\n return assetStore.root;\n }\n get parentFolder(): number {\n let parent = this.path[this.path.length - 2];\n if (parent === undefined) parent = assetStore.root;\n return parent;\n }\n get firstSelectedFile(): Asset | null {\n for (const sel of assetStore.selected) {\n if (assetStore.idMap.get(sel)!.file_hash) {\n return assetStore.idMap.get(sel)!;\n }\n }\n return null;\n }\n changeDirectory(nextFolder: number) {\n if (nextFolder < 0) this.path.pop();\n else this.path.push(nextFolder);\n assetStore.clearSelected();\n socket.emit(\"Folder.Get\", this.currentFolder);\n }\n createDirectory() {\n const name = window.prompt(\"New folder name\");\n if (name !== null) {\n socket.emit(\"Folder.Create\", { name, parent: this.currentFolder });\n }\n }\n moveInode(inode: number, target: number) {\n if (assetStore.files.includes(inode)) assetStore.files.splice(assetStore.files.indexOf(inode), 1);\n else assetStore.folders.splice(assetStore.folders.indexOf(inode), 1);\n assetStore.idMap.delete(inode);\n socket.emit(\"Inode.Move\", { inode, target });\n }\n select(event: MouseEvent, inode: number) {\n if (event.shiftKey && assetStore.selected.length > 0) {\n const inodes = [...assetStore.files, ...assetStore.folders];\n const start = inodes.indexOf(assetStore.selected[assetStore.selected.length - 1]);\n const end = inodes.indexOf(inode);\n for (let i = start; i !== end; start < end ? i++ : i--) {\n if (i === start) continue;\n assetStore.selected.push(inodes[i]);\n }\n assetStore.selected.push(inodes[end]);\n } else {\n if (!event.ctrlKey) {\n assetStore.clearSelected();\n }\n assetStore.selected.push(inode);\n }\n }\n startDrag(event: DragEvent, file: number) {\n if (event.dataTransfer === null) return;\n event.dataTransfer.setData(\"Hack\", \"ittyHack\");\n event.dataTransfer.dropEffect = \"move\";\n if (!assetStore.selected.includes(file)) assetStore.selected.push(file);\n this.draggingSelection = true;\n }\n moveDrag(event: DragEvent) {\n if ((event.target).classList.contains(\"folder\"))\n (event.target).classList.add(\"inode-selected\");\n }\n leaveDrag(event: DragEvent) {\n if ((event.target).classList.contains(\"folder\"))\n (event.target).classList.remove(\"inode-selected\");\n }\n stopDrag(event: DragEvent, target: number) {\n (event.target).classList.remove(\"inode-selected\");\n if (this.draggingSelection) {\n if (\n (target === assetStore.root || assetStore.folders.includes(target)) &&\n !assetStore.selected.includes(target)\n ) {\n for (const inode of assetStore.selected) {\n this.moveInode(inode, target);\n }\n }\n assetStore.clearSelected();\n } else if (event.dataTransfer && event.dataTransfer.files.length > 0) {\n this.upload(event.dataTransfer.files, target);\n }\n this.draggingSelection = false;\n }\n prepareUpload() {\n document.getElementById(\"files\")!.click();\n }\n upload(fls?: FileList, target?: number) {\n const files = (document.getElementById(\"files\")!).files;\n if (fls === undefined) {\n if (files) fls = files;\n else return;\n }\n if (target === undefined) target = this.currentFolder;\n const CHUNK_SIZE = 100000;\n for (const file of fls) {\n const uuid = uuidv4();\n const slices = Math.ceil(file.size / CHUNK_SIZE);\n for (let slice = 0; slice < slices; slice++) {\n const fr = new FileReader();\n fr.readAsArrayBuffer(\n file.slice(\n slice * CHUNK_SIZE,\n slice * CHUNK_SIZE + Math.min(CHUNK_SIZE, file.size - slice * CHUNK_SIZE),\n ),\n );\n fr.onload = e => {\n socket.emit(\"Asset.Upload\", {\n name: file.name,\n directory: target,\n data: fr.result,\n slice,\n totalSlices: slices,\n uuid,\n });\n };\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./asset_node.vue?vue&type=template&id=6d718094&scoped=true&\"\nimport script from \"./asset_node.vue?vue&type=script&lang=ts&\"\nexport * from \"./asset_node.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d718094\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=bc30fc14&scoped=true&\"\nimport script from \"./login.vue?vue&type=script&lang=ts&\"\nexport * from \"./login.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc30fc14\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Initiative\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('draggable',{attrs:{\"id\":\"initiative-list\",\"setData\":_vm.fakeSetData,\"disabled\":!_vm.$store.state.game.IS_DM},on:{\"change\":_vm.updateOrder},model:{value:(_vm.data),callback:function ($$v) {_vm.data=$$v},expression:\"data\"}},[_vm._l((_vm.data),function(actor){return [_c('div',{key:actor.uuid,staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"flex-end\"}},[_c('div',{staticClass:\"initiative-actor\",class:{'initiative-selected': _vm.currentActor === actor.uuid},style:({'cursor': _vm.$store.state.game.IS_DM && 'move'}),on:{\"mouseenter\":function($event){return _vm.toggleHighlight(actor, true)},\"mouseleave\":function($event){return _vm.toggleHighlight(actor, false)}}},[(actor.has_img)?[_c('img',{attrs:{\"src\":actor.source,\"width\":\"30px\",\"height\":\"30px\"}})]:[_c('span',{staticStyle:{\"width\":\"auto\"}},[_vm._v(_vm._s(actor.source))])],_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(actor.initiative),expression:\"actor.initiative\",modifiers:{\"lazy\":true,\"number\":true}}],class:{'notAllowed': !_vm.owns(actor)},attrs:{\"type\":\"text\",\"placeholder\":\"value\",\"disabled\":!_vm.owns(actor)},domProps:{\"value\":(actor.initiative)},on:{\"change\":[function($event){_vm.$set(actor, \"initiative\", _vm._n($event.target.value))},function($event){return _vm.syncInitiative(actor)}],\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('div',{staticClass:\"initiative-effects-icon\",class:{'notAllowed': !_vm.owns(actor)},staticStyle:{\"opacity\":\"0.6\"},on:{\"click\":function($event){_vm.createEffect(actor, _vm.getDefaultEffect(), true)}}},[_c('i',{staticClass:\"fas fa-stopwatch\"}),(actor.effects)?[_vm._v(_vm._s(actor.effects.length))]:[_vm._v(\"0\")]],2),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': actor.visible ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.toggleOption(actor, 'visible')}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': actor.group ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.toggleOption(actor, 'group')}}},[_c('i',{staticClass:\"fas fa-users\"})]),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': _vm.owns(actor) ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.removeInitiative(actor.uuid, true, true)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])],2),(actor.effects)?_c('div',{staticClass:\"initiative-effect\"},_vm._l((actor.effects),function(effect){return _c('div',{key:effect.uuid},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(effect.name),expression:\"effect.name\"}],attrs:{\"type\":\"text\",\"size\":effect.name.length || 1},domProps:{\"value\":(effect.name)},on:{\"change\":function($event){return _vm.updateEffect(actor.uuid, effect, true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(effect, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(effect.turns),expression:\"effect.turns\"}],attrs:{\"type\":\"text\",\"size\":effect.turns.toString().length || 1},domProps:{\"value\":(effect.turns)},on:{\"change\":function($event){return _vm.updateEffect(actor.uuid, effect, true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(effect, \"turns\", $event.target.value)}}})])}),0):_vm._e()])]})],2),_c('div',{attrs:{\"id\":\"initiative-bar\"}},[_c('div',{attrs:{\"id\":\"initiative-round\"}},[_vm._v(\"Round \"+_vm._s(_vm.roundCounter))]),_c('div',{staticStyle:{\"display\":\"flex\"}}),_c('div',{staticClass:\"initiative-bar-button\",style:(_vm.visionLock ? 'background-color: #82c8a0' : ''),on:{\"click\":_vm.toggleVisionLock}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{staticClass:\"initiative-bar-button\",style:(_vm.cameraLock ? 'background-color: #82c8a0' : ''),on:{\"click\":function($event){_vm.cameraLock = !_vm.cameraLock}}},[_c('i',{staticClass:\"fas fa-video\"})]),_c('div',{staticClass:\"initiative-bar-button\",class:{'notAllowed': !_vm.$store.state.game.IS_DM},on:{\"click\":function($event){_vm.setRound(0, true); _vm.updateTurn(_vm.data[0].uuid, true)}}},[_c('i',{staticClass:\"fas fa-sync-alt\"})]),_c('div',{staticClass:\"initiative-bar-button\",class:{'notAllowed': !_vm.$store.state.game.IS_DM},on:{\"click\":_vm.nextTurn}},[_c('i',{staticClass:\"fas fa-chevron-right\"})])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=template&id=62228cde&scoped=true&\"","import { layerManager } from \"@/game/layers/manager\";\nimport { g2lx, g2ly } from \"@/game/units\";\nimport { EdgeIterator, TDS } from \"./tds\";\nimport { ccw, cw } from \"./triag\";\n\nexport function drawPolygon(polygon: number[][], colour?: string) {\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n ctx.beginPath();\n ctx.strokeStyle =\n colour === undefined ? `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})` : colour;\n ctx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) {\n ctx.lineTo(g2lx(point[0]), g2ly(point[1]));\n }\n ctx.closePath();\n ctx.stroke();\n}\n\nexport function drawPolygonL(polygon: number[][], colour?: string) {\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n ctx.beginPath();\n ctx.strokeStyle =\n colour === undefined ? `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})` : colour;\n ctx.moveTo(polygon[0][0], polygon[0][1]);\n for (const point of polygon) {\n ctx.lineTo(point[0], point[1]);\n }\n ctx.closePath();\n ctx.stroke();\n}\n\nfunction x(xx: number, local: boolean) {\n if (local) return xx;\n else return g2lx(xx);\n}\n\nfunction y(yy: number, local: boolean) {\n if (local) return yy;\n else return g2ly(yy);\n}\n\nlet I = 0;\nlet J = 0;\n\nfunction drl(ctx: CanvasRenderingContext2D, from: number[], to: number[], constrained: boolean, local: boolean) {\n // J++;\n // if (constrained) {\n // I++;\n // console.log(\"*\", from, to);\n // } else {\n // console.log(\" \", from, to);\n // }\n ctx.beginPath();\n ctx.strokeStyle = constrained ? \"rgba(255, 0, 0, 0.30)\" : \"rgba(0, 0, 0, 0.30)\";\n ctx.moveTo(x(from[0], local), y(from[1], local));\n ctx.lineTo(x(to[0], local), y(to[1], local));\n ctx.closePath();\n ctx.stroke();\n}\n\nfunction drawPolygonT(tds: TDS, local = true, clear = true, logs: 0 | 1 | 2 = 0) {\n I = 0;\n J = 0;\n let T = 0;\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n if (clear) ctx.clearRect(0, 0, 2000, 1000);\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n const ei = new EdgeIterator(tds);\n while (ei.valid) {\n ei.next();\n ei.collect();\n }\n ei.collect();\n do {\n const fromP = ei.edge.first!.vertices[ccw(ei.edge.second)]!.point!;\n const toP = ei.edge.first!.vertices[cw(ei.edge.second)]!.point!;\n if (logs > 0) {\n if (fromP[0] === -Infinity || toP[0] === -Infinity) {\n ei.next();\n continue;\n }\n J++;\n if (ei.edge.first!.constraints[ei.edge.second]) {\n I++;\n if (logs === 2) console.log(`Edge: (*) ${fromP} > ${toP}`);\n } else if (logs === 2) console.log(`Edge: ${fromP} > ${toP}`);\n }\n do {\n ei.next();\n ei.collect();\n } while (ei.valid);\n } while (ei.pos !== null);\n for (const t of tds.triangles) {\n if (t.isInfinite()) continue;\n T++;\n const po = [];\n ctx.fillStyle = \"red\";\n if (t.vertices[0] !== undefined) {\n po.push(t.vertices[0]!.point);\n ctx.beginPath();\n ctx.arc(x(t.vertices[0]!.point![0], local), y(t.vertices[0]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (t.vertices[1] !== undefined) {\n po.push(t.vertices[1]!.point);\n ctx.arc(x(t.vertices[1]!.point![0], local), y(t.vertices[1]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (t.vertices[2] !== undefined) {\n po.push(t.vertices[2]!.point);\n ctx.arc(x(t.vertices[2]!.point![0], local), y(t.vertices[2]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (logs === 2) console.log(\"[T] \", ...po, t.constraints);\n\n ctx.moveTo(x(t.vertices[0]!.point![0], local), y(t.vertices[0]!.point![1], local));\n if (t.vertices[0] !== undefined && t.vertices[1] !== undefined)\n drl(ctx, t.vertices[0]!.point!, t.vertices[1]!.point!, t.constraints[2], local);\n if (t.vertices[1] !== undefined && t.vertices[2] !== undefined)\n drl(ctx, t.vertices[1]!.point!, t.vertices[2]!.point!, t.constraints[0], local);\n if (t.vertices[2] !== undefined && t.vertices[0] !== undefined)\n drl(ctx, t.vertices[2]!.point!, t.vertices[0]!.point!, t.constraints[1], local);\n }\n if (logs > 0) {\n console.log(`Edges: ${I}/${J}`);\n console.log(`Faces: ${T}`);\n }\n}\n\n(window).DP = drawPolygon;\n(window).DPL = drawPolygonL;\n(window).DPT = drawPolygonT;\n","import { render, staticRenderFns } from \"./accordion.vue?vue&type=template&id=0bf2b7ba&scoped=true&\"\nimport script from \"./accordion.vue?vue&type=script&lang=ts&\"\nexport * from \"./accordion.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0bf2b7ba\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=style&index=0&lang=css&\"","import * as tinycolor from \"tinycolor2\";\n\nimport { calcFontScale } from \"@/core/utils\";\nimport { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerCircularToken } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lz } from \"@/game/units\";\n\nexport class CircularToken extends Circle {\n type = \"circulartoken\";\n text: string;\n font: string;\n constructor(\n center: GlobalPoint,\n r: number,\n text: string,\n font: string,\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(center, r, fillColour, strokeColour, uuid);\n this.text = text;\n this.font = font;\n }\n asDict(): ServerCircularToken {\n return Object.assign(this.getBaseDict(), {\n radius: this.r,\n text: this.text,\n font: this.font,\n });\n }\n fromDict(data: ServerCircularToken) {\n super.fromDict(data);\n this.r = data.radius;\n this.text = data.text;\n this.font = data.font;\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.font = this.font;\n ctx.save();\n const dest = g2l(this.center());\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n const xs = calcFontScale(ctx, this.text, g2lz(this.r), g2lz(this.r));\n const ys = 0;\n ctx.transform(xs, ys, -ys, xs, dest.x, dest.y);\n ctx.fillStyle = tinycolor.mostReadable(this.fillColour, [\"#000\", \"#fff\"]).toHexString();\n ctx.fillText(this.text, 0, 0);\n ctx.restore();\n }\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.name === \"\" || this.name === \"Unknown shape\" ? this.text : this.name,\n has_img: false,\n effects: [],\n index: Infinity,\n };\n }\n}\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Text } from \"@/game/shapes/text\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\n\nexport class AnnotationManager {\n annotationText: Text;\n annotationRect: Rect;\n layer: Layer | undefined;\n shown: boolean = false;\n\n constructor() {\n const origin = new GlobalPoint(0, 0);\n this.annotationText = new Text(origin, \"\", \"bold 20px serif\", 0, \"rgba(230, 230, 230, 1)\");\n this.annotationRect = new Rect(origin, 0, 0, \"rgba(0, 0, 0, 0.6)\");\n }\n\n setActiveText(text: string) {\n if (this.layer === undefined) {\n if (layerManager.hasLayer(\"draw\")) {\n this.layer = layerManager.getLayer(\"draw\")!;\n this.layer.addShape(this.annotationRect, false);\n this.layer.addShape(this.annotationText, false);\n } else {\n console.warn(\"There is no draw layer to draw annotations on!\");\n return;\n }\n }\n this.shown = text !== \"\";\n this.annotationText.refPoint = l2g(new LocalPoint(this.layer.canvas.width / 2, 50));\n this.annotationText.text = text;\n const width = this.shown ? this.annotationText.getMaxWidth(this.layer.ctx) + 10 : 0;\n const height = this.shown ? this.annotationText.getMaxHeight(this.layer.ctx) + 10 : 0;\n this.annotationRect.refPoint = l2g(new LocalPoint(this.layer.canvas.width / 2 - width / 2, 30));\n this.annotationRect.w = width / gameStore.zoomFactor;\n this.annotationRect.h = height / gameStore.zoomFactor;\n this.layer.invalidate(true);\n }\n}\n","import { render, staticRenderFns } from \"./menu.vue?vue&type=template&id=c7fe324c&scoped=true&\"\nimport script from \"./menu.vue?vue&type=script&lang=ts&\"\nexport * from \"./menu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c7fe324c\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./contextmenu.vue?vue&type=template&id=256dde9c&\"\nimport script from \"./contextmenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./contextmenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./contextmenu.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Label manager\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Category\"}},[_vm._v(\"Cat.\")])]),_c('div',{staticClass:\"header name\"},[_vm._v(\"Name\")]),_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Visible\"}},[_vm._v(\"Vis.\")])]),_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Delete\"}},[_vm._v(\"Del.\")])]),_c('div',{staticClass:\"separator spanrow\",staticStyle:{\"margin\":\"0 0 7px\"}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search),expression:\"search\"}],ref:\"search\",staticClass:\"spanrow\",attrs:{\"type\":\"text\",\"placeholder\":\"search\"},domProps:{\"value\":(_vm.search)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.search=$event.target.value}}})]),_c('div',{staticClass:\"grid scroll\"},[_vm._l((_vm.categories),function(category){return [_vm._l((_vm.labels[category]),function(label){return [_c('div',{key:'row-'+label.uuid,staticClass:\"row\",on:{\"click\":function($event){return _vm.selectLabel(label.uuid)}}},[(label.category)?[_c('div',{key:'cat-'+label.uuid},[_vm._v(_vm._s(label.category))]),_c('div',{key:'name-'+label.uuid,staticClass:\"name\"},[_vm._v(_vm._s(label.name))])]:_vm._e(),(!label.category)?[_c('div',{key:'cat-'+label.uuid}),_c('div',{key:'name-'+label.uuid,staticClass:\"name\"},[_vm._v(_vm._s(label.name))])]:_vm._e(),_c('div',{key:'visible-'+label.uuid,class:{'lower-opacity': !label.visible},style:({textAlign: 'center'}),on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleVisibility(label)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{key:'delete-'+label.uuid,on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteLabel(label.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])],2)]})]}),(_vm.labels.length === 0)?[_c('div',{attrs:{\"id\":\"no-labels\"}},[_vm._v(\"No labels exist yet\")])]:_vm._e()],2),_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"separator spanrow\"}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newCategory),expression:\"newCategory\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newCategory)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newCategory=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newName),expression:\"newName\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newName=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('button',{attrs:{\"id\":\"addLabelButton\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.addLabel($event)}}},[_vm._v(\"Add\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=template&id=e477c214&scoped=true&\"","import {\n ServerAsset,\n ServerCircle,\n ServerCircularToken,\n ServerLine,\n ServerMultiLine,\n ServerPolygon,\n ServerRect,\n ServerShape,\n ServerText,\n} from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Asset } from \"@/game/shapes/asset\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { CircularToken } from \"@/game/shapes/circulartoken\";\nimport { Line } from \"@/game/shapes/line\";\nimport { MultiLine } from \"@/game/shapes/multiline\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { Text } from \"@/game/shapes/text\";\nimport { Polygon } from \"./polygon\";\n\nexport function createShapeFromDict(shape: ServerShape) {\n let sh: Shape;\n\n // A fromJSON and toJSON on Shape would be cleaner but ts does not allow for static abstracts so yeah.\n\n // Shape Type specifics\n\n const refPoint = new GlobalPoint(shape.x, shape.y);\n if (shape.type_ === \"rect\") {\n const rect = shape;\n sh = new Rect(refPoint, rect.width, rect.height, rect.fill_colour, rect.stroke_colour, rect.uuid);\n } else if (shape.type_ === \"circle\") {\n const circ = shape;\n sh = new Circle(refPoint, circ.radius, circ.fill_colour, circ.stroke_colour, circ.uuid);\n } else if (shape.type_ === \"circulartoken\") {\n const token = shape;\n sh = new CircularToken(\n refPoint,\n token.radius,\n token.text,\n token.font,\n token.fill_colour,\n token.stroke_colour,\n token.uuid,\n );\n } else if (shape.type_ === \"line\") {\n const line = shape;\n sh = new Line(refPoint, new GlobalPoint(line.x2, line.y2), line.line_width, line.stroke_colour, line.uuid);\n } else if (shape.type_ === \"multiline\") {\n const multiline = shape;\n sh = new MultiLine(\n refPoint,\n multiline.points.map(p => new GlobalPoint(p.x, p.y)),\n multiline.line_width,\n multiline.stroke_colour,\n multiline.uuid,\n );\n } else if (shape.type_ === \"polygon\") {\n const polygon = shape;\n sh = new Polygon(\n refPoint,\n polygon.vertices.map(v => new GlobalPoint(v.x, v.y)),\n polygon.fill_colour,\n polygon.stroke_colour,\n polygon.uuid,\n );\n } else if (shape.type_ === \"text\") {\n const text = shape;\n sh = new Text(refPoint, text.text, text.font, text.angle, text.fill_colour, text.stroke_colour, text.uuid);\n } else if (shape.type_ === \"assetrect\") {\n const asset = shape;\n const img = new Image(asset.width, asset.height);\n if (asset.src.startsWith(\"http\")) img.src = new URL(asset.src).pathname;\n else img.src = asset.src;\n sh = new Asset(img, refPoint, asset.width, asset.height, asset.uuid);\n img.onload = () => {\n layerManager.getLayer(shape.layer)!.invalidate(false);\n };\n } else {\n return undefined;\n }\n sh.fromDict(shape);\n return sh;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SelectContext',{ref:\"selectcontext\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=template&id=048b3482&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"colour\":'rgba(255, 255, 255, 0.8)',\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"DM Settings\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\",on:{\"click\":_vm.handleClick}},[_c('div',{attrs:{\"id\":\"categories\"}},_vm._l((_vm.categories),function(category,c){return _c('div',{key:category,staticClass:\"category\",class:{'selected': _vm.selection === c},on:{\"click\":function($event){_vm.selection = c}}},[_vm._v(_vm._s(category))])}),0),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 0),expression:\"selection === 0\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Players\")]),_vm._l((_vm.$store.state.game.players),function(player){return _c('div',{key:player.id,staticClass:\"row smallrow\"},[_c('div',[_vm._v(_vm._s(player.name))]),_c('div',[_c('div',{on:{\"click\":function($event){return _vm.kickPlayer(player.id)}}},[_vm._v(\"Kick\")])])])}),(Object.values(_vm.$store.state.game.players).length === 0)?_c('div',{staticClass:\"row smallrow\"},[_c('div',{staticClass:\"spanrow\"},[_vm._v(\"There are no players yet, invite some using the link below!\")])]):_vm._e(),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Invite code\")]),_c('div',{staticClass:\"row\"},[_c('div',[_vm._v(\"Invitation URL:\")]),(_vm.showRefreshState)?[_c('InputCopyElement',{attrs:{\"value\":_vm.refreshState}})]:[_c('InputCopyElement',{attrs:{\"value\":_vm.invitationUrl}})]],2),_c('div',{staticClass:\"row\",on:{\"click\":_vm.refreshInviteCode}},[_c('div'),_c('div',[_c('button',[_vm._v(\"Refresh invitation code\")])])]),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Danger Zone\")]),_c('div',{staticClass:\"row\"},[_c('div',[(_vm.locked)?[_vm._v(\"Unlock\")]:[_vm._v(\"Lock\")],_vm._v(\" Session \"),_c('i',[_vm._v(\"(DM access only)\")])],2),_c('div',[_c('button',{staticClass:\"danger\",on:{\"click\":_vm.toggleSessionLock}},[(_vm.locked)?[_vm._v(\"Unlock\")]:[_vm._v(\"Lock\")],_vm._v(\" this Session\")],2)])]),_c('div',{staticClass:\"row\"},[_c('div',[_vm._v(\"Remove Session\")]),_c('div',[_c('button',{staticClass:\"danger\",on:{\"click\":_vm.deleteSession}},[_vm._v(\"Delete this Session\")])])])],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 1),expression:\"selection === 1\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"useGridInput\"}},[_vm._v(\"Use grid\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.useGrid),expression:\"useGrid\"}],attrs:{\"id\":\"useGridInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.useGrid)?_vm._i(_vm.useGrid,null)>-1:(_vm.useGrid)},on:{\"change\":function($event){var $$a=_vm.useGrid,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.useGrid=$$a.concat([$$v]))}else{$$i>-1&&(_vm.useGrid=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.useGrid=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"gridSizeInput\"}},[_vm._v(\"Grid Size (in pixels):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.gridSize),expression:\"gridSize\",modifiers:{\"number\":true}}],attrs:{\"id\":\"gridSizeInput\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.gridSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.gridSize=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"unitSizeInput\"}},[_vm._v(\"Unit Size (in ft.):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.unitSize),expression:\"unitSize\",modifiers:{\"number\":true}}],attrs:{\"id\":\"unitSizeInput\",\"type\":\"number\"},domProps:{\"value\":(_vm.unitSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.unitSize=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 2),expression:\"selection === 2\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Core\")]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fakePlayerInput\"}},[_vm._v(\"Fake player:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fakePlayer),expression:\"fakePlayer\"}],attrs:{\"id\":\"fakePlayerInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fakePlayer)?_vm._i(_vm.fakePlayer,null)>-1:(_vm.fakePlayer)},on:{\"change\":function($event){var $$a=_vm.fakePlayer,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fakePlayer=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fakePlayer=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fakePlayer=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"useFOWInput\"}},[_vm._v(\"Fill entire canvas with FOW:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fullFOW),expression:\"fullFOW\"}],attrs:{\"id\":\"useFOWInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fullFOW)?_vm._i(_vm.fullFOW,null)>-1:(_vm.fullFOW)},on:{\"change\":function($event){var $$a=_vm.fullFOW,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fullFOW=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fullFOW=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fullFOW=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fowLOS\"}},[_vm._v(\"Only show lights in LoS:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fowLOS),expression:\"fowLOS\"}],attrs:{\"id\":\"fowLOS\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fowLOS)?_vm._i(_vm.fowLOS,null)>-1:(_vm.fowLOS)},on:{\"change\":function($event){var $$a=_vm.fowLOS,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fowLOS=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fowLOS=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fowLOS=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fowOpacity\"}},[_vm._v(\"FOW opacity:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.fowOpacity),expression:\"fowOpacity\",modifiers:{\"number\":true}}],attrs:{\"id\":\"fowOpacity\",\"type\":\"number\",\"min\":\"0\",\"max\":\"1\",\"step\":\"0.1\"},domProps:{\"value\":(_vm.fowOpacity)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.fowOpacity=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Advanced\")]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"visionMode\"}},[_vm._v(\"Vision Mode:\")]),_c('div',[_c('select',{attrs:{\"id\":\"visionMode\"},on:{\"change\":_vm.changeVisionMode}},[_c('option',{domProps:{\"selected\":_vm.$store.state.game.visionMode === 'bvh'}},[_vm._v(\"BVH\")]),_c('option',{domProps:{\"selected\":_vm.$store.state.game.visionMode === 'triangle'}},[_vm._v(\"Triangle\")])])])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"vmininp\"}},[_vm._v(\"Minimal full vision (ft):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(_vm.visionRangeMin),expression:\"visionRangeMin\",modifiers:{\"lazy\":true,\"number\":true}}],attrs:{\"id\":\"vmininp\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.visionRangeMin)},on:{\"change\":function($event){_vm.visionRangeMin=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"vmaxinp\"}},[_vm._v(\"Maximal vision (ft):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(_vm.visionRangeMax),expression:\"visionRangeMax\",modifiers:{\"lazy\":true,\"number\":true}}],attrs:{\"id\":\"vmaxinp\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.visionRangeMax)},on:{\"change\":function($event){_vm.visionRangeMax=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=template&id=b908e87c&scoped=true&\"","import tinycolor from \"tinycolor2\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { aurasFromServer, aurasToServer } from \"@/game/comm/conversion/aura\";\nimport { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz } from \"@/game/units\";\n\nexport abstract class Shape {\n // Used to create class instance from server shape data\n abstract readonly type: string;\n // The unique ID of this shape\n readonly uuid: string;\n // The layer the shape is currently on\n layer!: string;\n\n // A reference point regarding that specific shape's structure\n protected _refPoint: GlobalPoint;\n\n // Fill colour of the shape\n fillColour: string = \"#000\";\n strokeColour: string = \"rgba(0,0,0,0)\";\n // The optional name associated with the shape\n name = \"Unknown shape\";\n nameVisible = true;\n\n // Associated trackers/auras/owners\n trackers: Tracker[] = [];\n auras: Aura[] = [];\n labels: Label[] = [];\n protected _owners: string[] = [];\n\n // Block light sources\n visionObstruction = false;\n // Prevent shapes from overlapping with this shape\n movementObstruction = false;\n // Does this shape represent a playable token\n isToken = false;\n // Show a highlight box\n showHighlight = false;\n\n // Mouseover annotation\n annotation: string = \"\";\n\n // Draw modus to use\n globalCompositeOperation: string = \"source-over\";\n\n // Additional options for specialized uses\n options: Map = new Map();\n\n constructor(refPoint: GlobalPoint, fillColour?: string, strokeColour?: string, uuid?: string) {\n this._refPoint = refPoint;\n this.uuid = uuid || uuidv4();\n if (fillColour !== undefined) this.fillColour = fillColour;\n if (strokeColour !== undefined) this.strokeColour = strokeColour;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n this._refPoint = point;\n }\n\n abstract getBoundingBox(): BoundingRect;\n\n // If inWorldCoord is\n abstract contains(point: GlobalPoint): boolean;\n\n abstract center(): GlobalPoint;\n abstract center(centerPoint: GlobalPoint): void;\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n // for (const aura of this.auras) {\n // if (aura.value > 0) {\n // const auraCircle = new Circle(this.center(), aura.value);\n // if (auraCircle.visibleInCanvas(canvas)) return true;\n // }\n // }\n return false;\n }\n\n // Code to snap a shape to the grid\n // This is shape dependent as the shape refPoints are shape specific in\n abstract snapToGrid(): void;\n abstract resizeToGrid(): void;\n abstract resize(resizePoint: number, point: LocalPoint): void;\n\n abstract get points(): number[][];\n\n getPointIndex(p: GlobalPoint, delta = 0): number {\n for (const [idx, point] of this.points.entries()) {\n if (Math.abs(p.x - point[0]) <= delta && Math.abs(p.y - point[1]) <= delta) return idx;\n }\n return -1;\n }\n\n getPointOrientation(i: number): Vector {\n const prev = GlobalPoint.fromArray(this.points[(this.points.length + i - 1) % this.points.length]);\n const point = GlobalPoint.fromArray(this.points[i]);\n const next = GlobalPoint.fromArray(this.points[(i + 1) % this.points.length]);\n const vec = next.subtract(prev);\n const mid = prev.add(vec.multiply(0.5));\n return point.subtract(mid).normalize();\n }\n\n invalidate(skipLightUpdate: boolean) {\n const l = layerManager.getLayer(this.layer);\n if (l) l.invalidate(skipLightUpdate);\n }\n\n checkVisionSources(recalculate = true) {\n const self = this;\n const obstructionIndex = gameStore.visionBlockers.indexOf(this.uuid);\n let update = false;\n if (this.visionObstruction && obstructionIndex === -1) {\n gameStore.visionBlockers.push(this.uuid);\n update = true;\n } else if (!this.visionObstruction && obstructionIndex >= 0) {\n gameStore.visionBlockers.splice(obstructionIndex, 1);\n update = true;\n }\n if (update && recalculate) gameStore.recalculateVision();\n\n // Check if the visionsource auras are in the gameManager\n this.auras.forEach(au => {\n const ls = gameStore.visionSources;\n const i = ls.findIndex(o => o.aura === au.uuid);\n if (au.visionSource && i === -1) {\n ls.push({ shape: self.uuid, aura: au.uuid });\n } else if (!au.visionSource && i >= 0) {\n ls.splice(i, 1);\n }\n });\n // Check if anything in the gameManager referencing this shape is in fact still a visionsource\n for (let i = gameStore.visionSources.length - 1; i >= 0; i--) {\n const ls = gameStore.visionSources[i];\n if (ls.shape === self.uuid) {\n if (!self.auras.some(a => a.uuid === ls.aura && a.visionSource)) gameStore.visionSources.splice(i, 1);\n }\n }\n }\n\n setMovementBlock(blocksMovement: boolean, recalculate = true) {\n this.movementObstruction = blocksMovement || false;\n const obstructionIndex = gameStore.movementblockers.indexOf(this.uuid);\n let update = false;\n if (this.movementObstruction && obstructionIndex === -1) {\n gameStore.movementblockers.push(this.uuid);\n update = true;\n } else if (!this.movementObstruction && obstructionIndex >= 0) {\n gameStore.movementblockers.splice(obstructionIndex, 1);\n update = true;\n }\n if (update && recalculate) gameStore.recalculateMovement();\n }\n\n setIsToken(isToken: boolean) {\n this.isToken = isToken;\n if (this.ownedBy()) {\n const i = gameStore.ownedtokens.indexOf(this.uuid);\n if (this.isToken && i === -1) gameStore.ownedtokens.push(this.uuid);\n else if (!this.isToken && i >= 0) gameStore.ownedtokens.splice(i, 1);\n }\n }\n\n abstract asDict(): ServerShape;\n getBaseDict(): ServerShape {\n return {\n type_: this.type,\n uuid: this.uuid,\n x: this.refPoint.x,\n y: this.refPoint.y,\n layer: this.layer,\n draw_operator: this.globalCompositeOperation,\n movement_obstruction: this.movementObstruction,\n vision_obstruction: this.visionObstruction,\n auras: aurasToServer(this.auras),\n trackers: this.trackers,\n labels: this.labels,\n owners: this._owners,\n fill_colour: this.fillColour,\n stroke_colour: this.strokeColour,\n name: this.name,\n name_visible: this.nameVisible,\n annotation: this.annotation,\n is_token: this.isToken,\n options: JSON.stringify([...this.options]),\n };\n }\n fromDict(data: ServerShape) {\n this.layer = data.layer;\n this.globalCompositeOperation = data.draw_operator;\n this.movementObstruction = data.movement_obstruction;\n this.visionObstruction = data.vision_obstruction;\n this.auras = aurasFromServer(data.auras);\n this.trackers = data.trackers;\n this.labels = data.labels;\n this._owners = data.owners;\n this.isToken = data.is_token;\n this.nameVisible = data.name_visible;\n if (data.annotation) this.annotation = data.annotation;\n if (data.name) this.name = data.name;\n if (data.options) this.options = new Map(JSON.parse(data.options));\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n if (this.globalCompositeOperation !== undefined) ctx.globalCompositeOperation = this.globalCompositeOperation;\n else ctx.globalCompositeOperation = \"source-over\";\n if (this.showHighlight) {\n const bbox = this.getBoundingBox();\n ctx.strokeStyle = \"red\";\n ctx.strokeRect(g2lx(bbox.topLeft.x) - 5, g2ly(bbox.topLeft.y) - 5, g2lz(bbox.w) + 10, g2lz(bbox.h) + 10);\n }\n }\n\n drawAuras(ctx: CanvasRenderingContext2D) {\n for (const aura of this.auras) {\n if (aura.value === 0 && aura.dim === 0) return;\n ctx.beginPath();\n\n const loc = g2l(this.center());\n const innerRange = g2lr(aura.value + aura.dim);\n\n if (aura.dim === 0) ctx.fillStyle = aura.colour;\n else {\n const gradient = ctx.createRadialGradient(\n loc.x,\n loc.y,\n g2lr(aura.value),\n loc.x,\n loc.y,\n g2lr(aura.value + aura.dim),\n );\n const tc = tinycolor(aura.colour);\n ctx.fillStyle = gradient;\n gradient.addColorStop(0, aura.colour);\n gradient.addColorStop(1, tc.setAlpha(0).toRgbString());\n }\n if (!aura.visionSource || aura.lastPath === undefined) {\n ctx.arc(loc.x, loc.y, innerRange, 0, 2 * Math.PI);\n ctx.fill();\n } else {\n try {\n ctx.fill(aura.lastPath);\n } catch (e) {\n ctx.arc(loc.x, loc.y, innerRange, 0, 2 * Math.PI);\n ctx.fill();\n console.warn(e);\n }\n }\n }\n }\n\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.name,\n has_img: false,\n effects: [],\n index: Infinity,\n };\n }\n\n moveLayer(layer: string, sync: boolean) {\n const oldLayer = layerManager.getLayer(this.layer);\n const newLayer = layerManager.getLayer(layer);\n if (oldLayer === undefined || newLayer === undefined) return;\n this.layer = layer;\n // Update layer shapes\n oldLayer.shapes.splice(oldLayer.shapes.indexOf(this), 1);\n newLayer.shapes.push(this);\n // Revalidate layers (light should at most be redone once)\n oldLayer.invalidate(true);\n newLayer.invalidate(false);\n // Sync!\n if (sync) socket.emit(\"Shape.Layer.Change\", { uuid: this.uuid, layer });\n }\n\n get owners() {\n return Object.freeze(this._owners.slice());\n }\n\n ownedBy(username?: string) {\n if (username === undefined) username = gameStore.username;\n return gameStore.IS_DM || this._owners.includes(username) || (gameStore.FAKE_PLAYER && gameStore.activeTokens.includes(this.uuid));\n }\n\n addOwner(owner: string) {\n if (!this._owners.includes(owner)) this._owners.push(owner);\n }\n\n updateOwner(oldValue: string, newValue: string) {\n const ownerIndex = this._owners.findIndex(o => o === oldValue);\n if (ownerIndex >= 0) this._owners.splice(ownerIndex, 1, newValue);\n else this.addOwner(newValue);\n }\n\n removeOwner(owner: string) {\n const ownerIndex = this._owners.findIndex(o => o === owner);\n this._owners.splice(ownerIndex, 1);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"menuContainer\"}},[_c('div',{ref:\"rm\",style:({\n left: _vm.visible.settings ? '200px' : '0',\n top: _vm.visible.locations ? '100px' : '0'\n }),attrs:{\"id\":\"radialmenu\"}},[_c('div',{staticClass:\"rm-wrapper\"},[_c('div',{staticClass:\"rm-toggler\"},[_c('ul',{staticClass:\"rm-list\",class:{ 'rm-list-dm': _vm.IS_DM }},[(_vm.IS_DM)?_c('li',{staticClass:\"rm-item\",attrs:{\"id\":\"rm-locations\"},on:{\"click\":function($event){_vm.visible.locations = !_vm.visible.locations}}},[_vm._m(0)]):_vm._e(),_c('li',{staticClass:\"rm-item\",attrs:{\"id\":\"rm-settings\"},on:{\"click\":function($event){_vm.visible.settings = !_vm.visible.settings}}},[_vm._m(1)])])]),_vm._m(2)])]),_c('transition',{attrs:{\"name\":\"settings\"},on:{\"enter\":function($event){_vm.$refs.rm.style.transition = 'left 500ms'}}},[(_vm.visible.settings)?_c('div',{ref:\"settings\",attrs:{\"id\":\"menu\"},on:{\"click\":_vm.settingsClick}},[_c('div',{staticStyle:{\"width\":\"200px\",\"height\":\"90%\",\"overflow-y\":\"auto\",\"overflow-x\":\"hidden\"}},[(_vm.IS_DM)?[_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Assets\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('a',{staticClass:\"actionButton\",attrs:{\"href\":\"/assets\",\"target\":\"blank\",\"title\":\"Open asset manager\"}},[_c('i',{staticClass:\"fas fa-external-link-alt\"})]),_c('div',{staticClass:\"directory\",attrs:{\"id\":\"menu-tokens\"}},[_c('asset-node',{attrs:{\"asset\":_vm.assets}}),(!_vm.assets)?_c('div',[_vm._v(\"No assets\")]):_vm._e()],1)]),_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Notes\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('div',{staticClass:\"menu-accordion-subpanel\",attrs:{\"id\":\"menu-notes\"}},[_c('a',{staticClass:\"actionButton\",on:{\"click\":_vm.createNote}},[_c('i',{staticClass:\"far fa-plus-square\"})]),_vm._l((_vm.notes),function(note){return _c('div',{key:note.uuid,staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.openNote(note)}}},[_vm._v(_vm._s(note.title || \"[?]\"))])}),(!_vm.notes.length)?_c('div',[_vm._v(\"No notes\")]):_vm._e()],2)]),_c('button',{staticClass:\"menu-accordion\",on:{\"click\":_vm.openDmSettings}},[_vm._v(\"DM Options\")])]:_vm._e(),_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Client Options\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('div',{staticClass:\"menu-accordion-subpanel\"},[_c('label',{attrs:{\"for\":\"gridColour\"}},[_vm._v(\"Grid Colour:\")]),_c('color-picker',{attrs:{\"id\":\"gridColour\",\"color\":_vm.gridColour},on:{\"update:color\":function($event){_vm.gridColour=$event}}}),_c('label',{attrs:{\"for\":\"fowColour\"}},[_vm._v(\"FOW Colour:\")]),_c('color-picker',{attrs:{\"id\":\"fowColour\",\"color\":_vm.fowColour},on:{\"update:color\":function($event){_vm.fowColour=$event}}}),_c('label',{attrs:{\"for\":\"rulerColour\"}},[_vm._v(\"Ruler Colour:\")]),_c('color-picker',{attrs:{\"id\":\"rulerColour\",\"color\":_vm.rulerColour},on:{\"update:color\":function($event){_vm.rulerColour=$event}}})],1)])],2),_c('router-link',{staticClass:\"menu-accordion\",staticStyle:{\"text-decoration\":\"none\",\"display\":\"inline-block\",\"position\":\"absolute\",\"bottom\":\"0\"},attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"Exit\")])],1):_vm._e()]),_c('transition',{attrs:{\"name\":\"locations\"},on:{\"enter\":function($event){_vm.$refs.rm.style.transition = 'top 500ms'}}},[(_vm.IS_DM && _vm.visible.locations)?_c('div',{attrs:{\"id\":\"locations-menu\"}},[_c('div',[_vm._l((_vm.locations),function(location){return _c('div',{key:location,on:{\"click\":function($event){return _vm.changeLocation(location)}}},[_vm._v(_vm._s(location))])}),_c('div',{on:{\"click\":_vm.createLocation}},[_c('i',{staticClass:\"fas fa-plus\"})])],2)]):_vm._e()]),_c('img',{attrs:{\"id\":\"dragImage\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"#\"}},[_c('i',{staticClass:\"far fa-compass\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"#\"}},[_c('i',{staticClass:\"fas fa-cog\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"rm-topper\"},[_c('i',{staticClass:\"icon-share-alt\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=template&id=c7fe324c&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.note !== null)?_c('modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('span',{on:{\"click\":function($event){return _vm.$refs.title.select()}}},[_c('i',{staticClass:\"fas fa-pencil-alt\",staticStyle:{\"font-size\":\"15px\"}})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.title),expression:\"note.title\"}],ref:\"title\",domProps:{\"value\":(_vm.note.title)},on:{\"change\":_vm.updateNote,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.note, \"title\", $event.target.value)}}}),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}],null,false,1320213373)},[_c('div',{staticClass:\"modal-body\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.text),expression:\"note.text\"}],ref:\"textarea\",style:({'height': _vm.calcHeight()}),domProps:{\"value\":(_vm.note.text)},on:{\"change\":_vm.updateNote,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.note, \"text\", $event.target.value)}}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.removeNote}},[_c('i',{staticClass:\"far fa-trash-alt\"}),_vm._v(\" Remove\\n \")])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=template&id=7a3669fd&scoped=true&\"","\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport SelectContext from \"@/game/ui/tools/selectcontext.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\nimport SelectionInfo from \"../selection/selection_info.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint, LocalPoint, Ray, Vector } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz, l2g, l2gz } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\nexport enum SelectOperations {\n Noop,\n Resize,\n Drag,\n GroupSelect,\n}\n\nconst start = new GlobalPoint(-1000, -1000);\n\n@Component({\n components: {\n SelectContext,\n },\n})\nexport default class SelectTool extends Tool {\n name = \"Select\";\n showContextMenu = false;\n active = false;\n\n mode = SelectOperations.Noop;\n resizePoint = 0;\n deltaChanged = false;\n // Because we never drag from the asset's (0, 0) coord and want a smoother drag experience\n // we keep track of the actual offset within the asset.\n dragRay = new Ray(new LocalPoint(0, 0), new Vector(0, 0));\n selectionStartPoint = start;\n selectionHelper = new Rect(start, 0, 0);\n created() {\n this.selectionHelper.globalCompositeOperation = \"source-over\";\n }\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n if (!this.selectionHelper.owners.includes(gameStore.username)) {\n this.selectionHelper.addOwner(gameStore.username);\n }\n\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n\n let hit = false;\n // The selectionStack allows for lower positioned objects that are selected to have precedence during overlap.\n let selectionStack;\n if (!layer.selection.length) selectionStack = layer.shapes;\n else selectionStack = layer.shapes.concat(layer.selection);\n for (let i = selectionStack.length - 1; i >= 0; i--) {\n const shape = selectionStack[i];\n\n this.resizePoint = shape.getPointIndex(globalMouse, l2gz(3));\n\n // Resize case, a corner is selected\n if (this.resizePoint >= 0) {\n layer.selection = [shape];\n getRef(\"selectionInfo\").shape = shape;\n this.mode = SelectOperations.Resize;\n layer.invalidate(true);\n hit = true;\n break;\n\n // Drag case, a shape is selected\n } else if (shape.contains(globalMouse)) {\n const selection = shape;\n if (layer.selection.indexOf(selection) === -1) {\n layer.selection = [selection];\n getRef(\"selectionInfo\").shape = selection;\n }\n this.mode = SelectOperations.Drag;\n const localRefPoint = g2l(selection.refPoint);\n this.dragRay = new Ray(localRefPoint, mouse.subtract(localRefPoint));\n layer.invalidate(true);\n hit = true;\n break;\n }\n }\n\n // GroupSelect case, draw a selection box to select multiple shapes\n if (!hit) {\n this.mode = SelectOperations.GroupSelect;\n for (const selection of layer.selection) getRef(\"selectionInfo\").shape = selection;\n\n this.selectionStartPoint = globalMouse;\n\n this.selectionHelper.refPoint = this.selectionStartPoint;\n this.selectionHelper.w = 0;\n this.selectionHelper.h = 0;\n\n layer.selection = [this.selectionHelper];\n layer.invalidate(true);\n }\n this.active = true;\n }\n onMouseMove(event: MouseEvent) {\n // if (!this.active) return; we require mousemove for the resize cursor\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n this.deltaChanged = false;\n\n if (this.mode === SelectOperations.GroupSelect) {\n // Currently draw on active layer\n const endPoint = globalMouse;\n\n this.selectionHelper.w = Math.abs(endPoint.x - this.selectionStartPoint.x);\n this.selectionHelper.h = Math.abs(endPoint.y - this.selectionStartPoint.y);\n this.selectionHelper.refPoint = new GlobalPoint(\n Math.min(this.selectionStartPoint.x, endPoint.x),\n Math.min(this.selectionStartPoint.y, endPoint.y),\n );\n layer.invalidate(true);\n } else if (layer.selection.length) {\n const og = g2l(layer.selection[layer.selection.length - 1].refPoint);\n const origin = og.add(this.dragRay.direction);\n let delta = mouse.subtract(origin).multiply(1 / gameStore.zoomFactor);\n const ogDelta = delta;\n if (this.mode === SelectOperations.Drag) {\n // If we are on the tokens layer do a movement block check.\n if (layer.name === \"tokens\" && !(event.shiftKey && gameStore.IS_DM)) {\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n if (sel.uuid === this.selectionHelper.uuid) continue; // the selection helper should not be treated as a real shape.\n delta = calculateDelta(delta, sel);\n if (delta !== ogDelta) this.deltaChanged = true;\n }\n }\n // Actually apply the delta on all shapes\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n sel.refPoint = sel.refPoint.add(delta);\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision(true);\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: true });\n }\n }\n layer.invalidate(false);\n } else if (this.mode === SelectOperations.Resize) {\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n sel.resize(this.resizePoint, mouse);\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision(true);\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: true });\n }\n layer.invalidate(false);\n this.updateCursor(layer, globalMouse);\n }\n } else {\n this.updateCursor(layer, globalMouse);\n }\n } else {\n document.body.style.cursor = \"default\";\n }\n }\n onMouseUp(e: MouseEvent): void {\n if (!this.active) return;\n if (layerManager.getLayer() === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const layer = layerManager.getLayer()!;\n\n if (this.mode === SelectOperations.GroupSelect) {\n layer.clearSelection();\n layer.shapes.forEach(shape => {\n if (!shape.ownedBy()) return;\n if (shape === this.selectionHelper) return;\n const bbox = shape.getBoundingBox();\n if (!shape.ownedBy()) return;\n if (\n this.selectionHelper!.refPoint.x <= bbox.topRight.x &&\n this.selectionHelper!.refPoint.x + this.selectionHelper!.w >= bbox.topLeft.x &&\n this.selectionHelper!.refPoint.y <= bbox.botLeft.y &&\n this.selectionHelper!.refPoint.y + this.selectionHelper!.h >= bbox.topLeft.y\n ) {\n layer.selection.push(shape);\n }\n });\n\n // Push the selection helper as the last element of the selection\n // This makes sure that it will be the first one to be hit in the hit detection onMouseDown\n if (layer.selection.length > 0) layer.selection.push(this.selectionHelper);\n\n layer.invalidate(true);\n } else if (layer.selection.length) {\n layer.selection.forEach(sel => {\n if (!sel.ownedBy()) return;\n if (this.mode === SelectOperations.Drag) {\n if (\n this.dragRay.origin!.x === g2lx(sel.refPoint.x) &&\n this.dragRay.origin!.y === g2ly(sel.refPoint.y)\n )\n return;\n\n if (gameStore.useGrid && !e.altKey && !this.deltaChanged) {\n sel.snapToGrid();\n }\n\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision();\n if (sel.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n layer.invalidate(false);\n }\n if (this.mode === SelectOperations.Resize) {\n if (gameStore.useGrid && !e.altKey) {\n sel.resizeToGrid();\n }\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision();\n if (sel.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n layer.invalidate(false);\n }\n });\n }\n this.mode = SelectOperations.Noop;\n this.active = false;\n }\n onContextMenu(event: MouseEvent) {\n if (layerManager.getLayer() === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const layer = layerManager.getLayer()!;\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n\n for (const shape of layer.selection) {\n if (shape.contains(globalMouse) && shape !== this.selectionHelper) {\n layer.selection = [shape];\n getRef(\"selectionInfo\").shape = shape;\n layer.invalidate(true);\n (this.$parent.$refs.shapecontext).open(event, shape);\n return;\n }\n }\n (this.$refs.selectcontext).open(event);\n }\n updateCursor(layer: Layer, globalMouse: GlobalPoint) {\n for (const sel of layer.selection) {\n const resizePoint = sel.getPointIndex(globalMouse, l2gz(3));\n if (resizePoint < 0) document.body.style.cursor = \"default\";\n else {\n let angle = sel.getPointOrientation(resizePoint).angle();\n if (angle < 0) angle += 360;\n const d = 45 / 2;\n if (angle >= 315 + d || angle < d || (angle >= 135 + d && angle < 225 - d))\n document.body.style.cursor = \"ew-resize\";\n if ((angle >= 45 + d && angle < 135 - d) || (angle >= 225 + d && angle < 315 - d))\n document.body.style.cursor = \"ns-resize\";\n if ((angle >= d && angle < 90 - d) || (angle >= 180 + d && angle < 270 - d))\n document.body.style.cursor = \"nwse-resize\";\n if ((angle >= 90 + d && angle < 180 - d) || (angle >= 270 + d && angle < 360 - d))\n document.body.style.cursor = \"nesw-resize\";\n }\n }\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport InputCopyElement from \"@/core/components/inputCopy.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\nimport Prompt from '../../core/components/modals/prompt.vue';\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\nimport { layerManager } from \"../layers/manager\";\n\n@Component({\n components: {\n InputCopyElement,\n Modal,\n },\n computed: {\n ...mapState(\"game\", [\"invitationCode\"]),\n },\n})\nexport default class DmSettings extends Vue {\n visible = false;\n categories = [\"Admin\", \"Grid\", \"Vision\"];\n selection = 0;\n\n showRefreshState = false;\n refreshState = \"pending\";\n\n mounted() {\n EventBus.$on(\"DmSettings.Open\", () => {\n this.visible = true;\n });\n EventBus.$on(\"DmSettings.RefreshedInviteCode\", () => {\n this.showRefreshState = false;\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"DmSettings.Open\");\n EventBus.$off(\"DmSettings.RefreshedInviteCode\");\n }\n\n // Admin\n get invitationUrl(): string {\n return window.location.protocol + '//' + window.location.host + '/invite/' + gameStore.invitationCode;\n }\n get locked(): boolean {\n return gameStore.isLocked;\n }\n // Grid\n get useGrid(): boolean {\n return gameStore.useGrid;\n }\n set useGrid(value: boolean) {\n gameStore.setUseGrid({ useGrid: value, sync: true });\n }\n get unitSize(): number {\n return gameStore.unitSize;\n }\n set unitSize(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setUnitSize({ unitSize: value, sync: true });\n }\n get gridSize(): number {\n return gameStore.gridSize;\n }\n set gridSize(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setGridSize({ gridSize: value, sync: true });\n }\n // Vision\n get fakePlayer(): boolean {\n return gameStore.FAKE_PLAYER;\n }\n set fakePlayer(value: boolean) {\n gameStore.setFakePlayer(value);\n }\n get fullFOW(): boolean {\n return gameStore.fullFOW;\n }\n set fullFOW(value: boolean) {\n gameStore.setFullFOW({ fullFOW: value, sync: true });\n }\n get fowOpacity(): number {\n return gameStore.fowOpacity;\n }\n set fowOpacity(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setFOWOpacity({ fowOpacity: value, sync: true });\n }\n get fowLOS(): boolean {\n return gameStore.fowLOS;\n }\n set fowLOS(value: boolean) {\n gameStore.setLineOfSight({ fowLOS: value, sync: true });\n }\n get visionRangeMin(): number {\n return gameStore.visionRangeMin;\n }\n set visionRangeMin(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setVisionRangeMin({ value, sync: true });\n }\n get visionRangeMax(): number {\n return gameStore.visionRangeMax;\n }\n set visionRangeMax(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setVisionRangeMax({ value, sync: true });\n }\n changeVisionMode(event: { target: HTMLSelectElement }) {\n const value = event.target.value.toLowerCase();\n if (value !== \"bvh\" && value !== \"triangle\") return;\n gameStore.setVisionMode({ mode: value, sync: true });\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n layerManager.invalidate();\n }\n handleClick(event: { target: HTMLElement }) {\n const child = event.target.firstElementChild;\n if (child instanceof HTMLInputElement) {\n child.click();\n }\n }\n refreshInviteCode() {\n socket.emit(\"Room.Info.InviteCode.Refresh\");\n this.refreshState = \"pending\";\n this.showRefreshState = true;\n }\n kickPlayer(id: number) {\n socket.emit(\"Room.Info.Players.Kick\", id);\n gameStore.kickPlayer(id);\n }\n toggleSessionLock() {\n gameStore.setIsLocked({isLocked: !gameStore.isLocked, sync: true});\n }\n deleteSession() {\n getRef(\"prompt\")\n .prompt(`ENTER ${gameStore.roomCreator}/${gameStore.roomName} TO CONFIRM SESSION REMOVAL.`, `DELETING SESSION`)\n .then(\n (value: string) => {\n if (value !== `${gameStore.roomCreator}/${gameStore.roomName}`) return;\n socket.emit(\"Room.Delete\");\n this.$router.push(\"/\");\n },\n () => {},\n );\n }\n}\n","import { GlobalPoint, Ray, Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { PA_CDT } from \"@/game/visibility/te/pa\";\nimport { Point, Sign, Triangle } from \"@/game/visibility/te/tds\";\nimport { ccw, cw, intersection, orientation } from \"@/game/visibility/te/triag\";\n\n// First go through each shape in the selection and see if the delta has to be truncated due to movement blockers\n\n// This is definitely super convoluted and inefficient but I was tired and really wanted the smooth wall sliding collision stuff to work\n// And it does now, so hey ¯\\_(ツ)_/¯\nexport function calculateDelta(delta: Vector, sel: Shape, done?: string[]) {\n if (delta.x === 0 && delta.y === 0) return delta;\n if (gameStore.visionMode === \"bvh\") {\n if (done === undefined) done = [];\n const ogSelBBox = sel.getBoundingBox();\n const newSelBBox = ogSelBBox.offset(delta);\n let refine = false;\n for (const movementBlocker of gameStore.movementblockers) {\n if (done.includes(movementBlocker)) continue;\n const blocker = layerManager.UUIDMap.get(movementBlocker)!;\n const blockerBBox = blocker.getBoundingBox();\n let found = blockerBBox.intersectsWithInner(newSelBBox);\n if (!found) {\n // This is an edge case, precalculating the rays is not worth in this case.\n const ray = Ray.fromPoints(ogSelBBox.topLeft.add(delta.normalize()), newSelBBox.topLeft);\n const invDir = ray.direction.inverse();\n const dirIsNegative = [invDir.x < 0, invDir.y < 0];\n found = blockerBBox.intersectP(ray, invDir, dirIsNegative).hit;\n }\n // Check if the bounding box of our destination would intersect with the bounding box of the movementblocker\n if (found) {\n const bCenter = blockerBBox.center();\n const sCenter = ogSelBBox.center();\n\n const d = sCenter.subtract(bCenter);\n const ux = new Vector(1, 0);\n const uy = new Vector(0, 1);\n let dx = d.dot(ux);\n let dy = d.dot(uy);\n if (dx > blockerBBox.w / 2) dx = blockerBBox.w / 2;\n if (dx < -blockerBBox.w / 2) dx = -blockerBBox.w / 2;\n if (dy > blockerBBox.h / 2) dy = blockerBBox.h / 2;\n if (dy < -blockerBBox.h / 2) dy = -blockerBBox.h / 2;\n\n // Closest point / intersection point between the two bboxes. Not the delta intersect!\n const p = bCenter.add(ux.multiply(dx)).add(uy.multiply(dy));\n\n if (p.x === ogSelBBox.topLeft.x || p.x === ogSelBBox.topRight.x) delta = new Vector(0, delta.y);\n else if (p.y === ogSelBBox.topLeft.y || p.y === ogSelBBox.botLeft.y) delta = new Vector(delta.x, 0);\n else {\n if (p.x < ogSelBBox.topLeft.x) delta = new Vector(p.x - ogSelBBox.topLeft.x, delta.y);\n else if (p.x > ogSelBBox.topRight.x) delta = new Vector(p.x - ogSelBBox.topRight.x, delta.y);\n else if (p.y < ogSelBBox.topLeft.y) delta = new Vector(delta.x, p.y - ogSelBBox.topLeft.y);\n else if (p.y > ogSelBBox.botLeft.y) delta = new Vector(delta.x, p.y - ogSelBBox.botLeft.y);\n }\n refine = true;\n done.push(movementBlocker);\n break;\n }\n }\n if (refine) delta = calculateDelta(delta, sel, done);\n return delta;\n } else {\n const centerTriangle = PA_CDT.movement.locate(sel.center().asArray(), null).loc;\n for (const point of sel.points) {\n const lt = PA_CDT.movement.locate(point, centerTriangle);\n const triangle = lt.loc;\n if (triangle === null) continue;\n delta = checkTriangle(point, triangle, delta);\n }\n return delta;\n }\n}\n\nfunction checkTriangle(point: Point, triangle: Triangle, delta: Vector, skip: Triangle[] = []): Vector {\n const p = new GlobalPoint(point[0], point[1]);\n const endpoint = p.add(delta).asArray();\n if (triangle.contains(endpoint)) return delta;\n skip.push(triangle);\n\n for (let i = 0; i < 3; i++) {\n if (skip.includes(triangle.neighbours[i]!)) continue;\n\n const _cw = triangle.vertices[cw(i)]!.point!;\n const _ccw = triangle.vertices[ccw(i)]!.point!;\n const ix = intersection(point, endpoint, _cw, _ccw);\n\n if (ix === null) continue;\n\n if (!triangle.isConstrained(i)) return checkTriangle(point, triangle.neighbours[i]!, delta, skip);\n\n if (ix[0] === p.x && ix[1] === p.y) {\n const OR = orientation;\n const o = orientation(point, endpoint, _ccw);\n // Remember: canvas y axis is inverted\n if (o === Sign.LEFT_TURN) continue;\n if (o === Sign.ZERO) continue;\n }\n let newDelta = new GlobalPoint(ix[0], ix[1]).subtract(p).multiply(0.8);\n if (newDelta.length() < 1) newDelta = new Vector(0, 0);\n if (newDelta.length() < delta.length()) delta = newDelta;\n }\n return delta;\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"formcontainer\"}},[(_vm.owned || _vm.joined)?_c('form',[_c('fieldset',[_c('legend',{staticClass:\"legend\"},[_vm._v(\"Your sessions\")]),_c('div',{staticClass:\"input\"},[_vm._l((_vm.owned),function(room,i){return _c('router-link',{key:'o-'+i,attrs:{\"to\":'/game/' + encodeURIComponent(room[1]) + '/' + encodeURIComponent(room[0])}},[_vm._v(_vm._s(room[0]))])}),_vm._l((_vm.joined),function(room,i){return _c('router-link',{key:'j-'+i,attrs:{\"to\":'/game/' + encodeURIComponent(room[1]) + '/' + encodeURIComponent(room[0])}},[_vm._v(_vm._s(room[1])+\"/\"+_vm._s(room[0]))])})],2),(_vm.owned.length === 0)?_c('div',{staticClass:\"input\"},[_vm._v(\"No active sessions\")]):_vm._e()])]):_vm._e(),_vm._m(0),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.createRoom($event)}}},[_c('fieldset',[(!_vm.owned && !_vm.joined)?_c('legend',{staticClass:\"legend\"},[_vm._v(\"Create a session\")]):_c('div',{staticClass:\"input\"},[_vm._v(\"Create a new session\")]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newSessionName),expression:\"newSessionName\"}],attrs:{\"type\":\"text\",\"name\":\"room_name\",\"placeholder\":\"Session Name\"},domProps:{\"value\":(_vm.newSessionName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newSessionName=$event.target.value}}}),_vm._m(1)]),_vm._m(2)])]),_c('div',{attrs:{\"id\":\"account-options\"}},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('router-link',{staticClass:\"submit\",attrs:{\"tag\":\"button\",\"title\":\"Account Settings\",\"to\":\"/account\"}},[_c('i',{staticClass:\"fas fa-cog\"})])],1),_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('router-link',{staticClass:\"submit\",attrs:{\"tag\":\"button\",\"title\":\"Logout\",\"to\":\"/auth/logout\"}},[_c('i',{staticClass:\"fas fa-sign-out-alt\"})])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_c('span',[_vm._v(\"OR\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fab fa-d-and-d\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"submit\",attrs:{\"type\":\"submit\",\"title\":\"Create\"}},[_c('i',{staticClass:\"fas fa-arrow-right\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=template&id=b102d41e&scoped=true&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=script&lang=ts&\"","import { socket } from \"@/game/api/socket\";\nimport { gameStore } from \"@/game/store\";\n\nexport function sendClientOptions() {\n socket.emit(\"Client.Options.Set\", {\n locationOptions: {\n panX: gameStore.panX,\n panY: gameStore.panY,\n zoomFactor: gameStore.zoomFactor,\n },\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\n\nimport { AssetFile, AssetList } from \"@/core/comm/types\";\nimport { alphSort } from \"@/core/utils\";\n\n@Component({\n name: \"asset-node\",\n})\nexport default class AssetNode extends Vue {\n @Prop() asset!: AssetList;\n\n showImage = null;\n get folders(): string[] {\n return Object.keys(this.asset)\n .filter(el => ![\"__files\"].includes(el))\n .sort(alphSort);\n }\n\n get files(): AssetFile[] {\n if (this.asset.__files)\n return (this.asset.__files)\n .concat()\n .sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1));\n return [];\n }\n\n toggle(event: { target: HTMLElement }) {\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < event.target.children.length; i++) {\n const el = event.target.children[i];\n el.style.display = el.style.display === \"\" ? \"block\" : \"\";\n }\n }\n\n dragStart(event: DragEvent, imageSource: string) {\n this.showImage = null;\n if (event === null || event.dataTransfer === null) return;\n const img = (event.target).querySelector(\".preview\")!;\n event.dataTransfer.setDragImage(img, 0, 0);\n event.dataTransfer.setData(\"text/plain\", imageSource);\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"ContextMenu\",style:({left:_vm.left, top:_vm.top}),attrs:{\"tabindex\":\"-1\"},on:{\"blur\":function($event){return _vm.$emit('close')}}},[_c('ul',[_vm._t(\"default\")],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=template&id=256dde9c&\"","// import Vuex from \"vuex\";\nimport { getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { Asset } from \"@/core/comm/types\";\nimport { rootStore } from \"@/store\";\n\nexport interface AssetState {\n root: number;\n files: number[];\n folders: number[];\n idMap: Map;\n selected: number[];\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"assets\", namespaced: true })\nclass AssetStore extends VuexModule {\n root = -1;\n files: number[] = [];\n folders: number[] = [];\n idMap: Map = new Map();\n selected: number[] = [];\n\n @Mutation\n clear() {\n this.folders = [];\n this.files = [];\n }\n\n @Mutation\n clearSelected() {\n console.log(\"Cleared\");\n this.selected = [];\n }\n\n @Mutation\n setRoot(root: number) {\n this.root = root;\n }\n}\n\nexport const assetStore = getModule(AssetStore);\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\nimport Initiative from \"@/game/ui/initiative.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class ShapeContext extends Vue {\n visible = false;\n x = 0;\n y = 0;\n shape: Shape | null = null;\n get activeLayer(): string {\n const layer = layerManager.getLayer();\n return layer === undefined ? \"\" : layer.name;\n }\n open(event: MouseEvent, shape: Shape) {\n this.visible = true;\n this.x = event.pageX;\n this.y = event.pageY;\n this.shape = shape;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n close() {\n this.visible = false;\n this.shape = null;\n }\n getLayers() {\n return layerManager.layers.filter(l => l.selectable && (gameStore.IS_DM || l.playerEditable));\n }\n getActiveLayer() {\n return layerManager.getLayer();\n }\n getInitiativeWord() {\n if (this.shape === null) return \"\";\n return getRef(\"initiative\").contains(this.shape.uuid) ? \"Show\" : \"Add\";\n }\n setLayer(newLayer: string) {\n if (this.shape === null) return;\n this.shape.moveLayer(newLayer, true);\n this.close();\n }\n moveToBack() {\n if (this.shape === null) return;\n const layer = this.getActiveLayer()!;\n layer.moveShapeOrder(this.shape, 0, true);\n this.close();\n }\n moveToFront() {\n if (this.shape === null) return;\n const layer = this.getActiveLayer()!;\n layer.moveShapeOrder(this.shape, layer.shapes.length - 1, true);\n this.close();\n }\n addInitiative() {\n if (this.shape === null) return;\n const initiative = getRef(\"initiative\");\n if (!initiative.contains(this.shape.uuid)) initiative.addInitiative(this.shape.getInitiativeRepr());\n initiative.visible = true;\n this.close();\n }\n openEditDialog() {\n EventBus.$emit(\"EditDialog.Open\", this.shape);\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class InputCopyElement extends Vue {\n @Prop() value!: string;\n\n borderColour = \"lightgray\";\n popupString = \"\";\n showPopup = false;\n\n copy() {\n (navigator).clipboard.writeText(this.value).then(\n () => {\n this.popupString = \"Copied!\";\n this.showPopup = true;\n },\n () => {\n console.log(\"Could not copy to clipboard :(\");\n this.popupString = \"Error!\";\n this.showPopup = true;\n },\n );\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.left + 'px',\"top\":_vm.top + 'px'},on:{\"close\":_vm.close}},[_c('li',{on:{\"click\":_vm.rename}},[_vm._v(\"Rename\")]),_c('li',{on:{\"click\":_vm.remove}},[_vm._v(\"Remove\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=template&id=dbbd4d08&\"","import { Layer } from \"@/game/layers/layer\";\nimport { gameStore } from \"@/game/store\";\n\nexport class GridLayer extends Layer {\n invalidate(): void {\n this.valid = false;\n }\n draw(doClear?: boolean): void {\n if (!this.valid) {\n this.drawGrid();\n }\n }\n drawGrid(): void {\n const ctx = this.ctx;\n this.clear();\n ctx.beginPath();\n\n const gs = gameStore.gridSize;\n\n for (let i = 0; i < this.width; i += gs * gameStore.zoomFactor) {\n ctx.moveTo(i + (gameStore.panX % gs) * gameStore.zoomFactor, 0);\n ctx.lineTo(i + (gameStore.panX % gs) * gameStore.zoomFactor, this.height);\n ctx.moveTo(0, i + (gameStore.panY % gs) * gameStore.zoomFactor);\n ctx.lineTo(this.width, i + (gameStore.panY % gs) * gameStore.zoomFactor);\n }\n\n ctx.strokeStyle = gameStore.gridColour;\n ctx.lineWidth = 1;\n ctx.stroke();\n this.valid = true;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"outer\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.open($event)}}},[_c('div',{staticClass:\"current-color\",style:(_vm.transparent ? 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)' : 'background-color:' + _vm.color),on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.open($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],staticClass:\"mask\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.closePicker($event)}}}),_c('chrome-picker',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],ref:\"chromePicker\",style:({position: 'fixed', left:_vm.left + 'px', top:_vm.top + 'px', 'z-index': 9999}),attrs:{\"value\":_vm.color,\"tabindex\":\"-1\"},on:{\"input\":_vm.updateColor}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=template&id=f8744d60&scoped=true&\"","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport { AssetState } from \"@/assetManager/store\";\nimport { CoreState } from \"@/core/store\";\nimport { GameState } from \"@/game/store\";\n\nVue.use(Vuex);\n\nexport interface RootState {\n assets: AssetState;\n core: CoreState;\n game: GameState;\n}\n\nexport const rootStore = new Vuex.Store({});\n","import { render, staticRenderFns } from \"./colorpicker.vue?vue&type=template&id=f8744d60&scoped=true&\"\nimport script from \"./colorpicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./colorpicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f8744d60\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { Shape } from \"../../shapes/shape\";\n\n@Component\nexport default class VisionTool extends Tool {\n name = \"Vision\";\n active = false;\n\n get selection(): string[] {\n return gameStore.activeTokens;\n }\n\n get tokens(): Shape[] {\n return gameStore.ownedtokens.map(t => layerManager.UUIDMap.get(t)!);\n }\n\n toggle(uuid: string) {\n if (this.selection.includes(uuid)) gameStore.removeActiveToken(uuid);\n else gameStore.addActiveToken(uuid);\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view',{ref:\"activeComponent\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=196415f0&\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { GlobalPoint, Ray } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Settings } from \"@/game/settings\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz, getUnitDistance } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\nimport { computeVisibility } from \"../visibility/te/te\";\n\nexport class FOWLayer extends Layer {\n isVisionLayer: boolean = true;\n preFogShapes: Shape[] = [];\n virtualCanvas: HTMLCanvasElement;\n vCtx: CanvasRenderingContext2D;\n\n constructor(canvas: HTMLCanvasElement, name: string) {\n super(canvas, name);\n this.virtualCanvas = document.createElement(\"canvas\");\n this.virtualCanvas.width = window.innerWidth;\n this.virtualCanvas.height = window.innerHeight;\n this.vCtx = this.virtualCanvas.getContext(\"2d\")!;\n }\n\n addShape(shape: Shape, sync: boolean, temporary?: boolean, invalidate = true): void {\n super.addShape(shape, sync, temporary, invalidate);\n if (shape.options.has(\"preFogShape\") && shape.options.get(\"preFogShape\")) {\n this.preFogShapes.push(shape);\n }\n }\n\n removeShape(shape: Shape, sync: boolean, temporary?: boolean) {\n if (shape.options.has(\"preFogShape\") && shape.options.get(\"preFogShape\")) {\n const idx = this.preFogShapes.findIndex(s => s.uuid === shape.uuid);\n this.preFogShapes.splice(idx, 1);\n }\n super.removeShape(shape, sync, temporary);\n }\n\n draw(): void {\n if (!this.valid) {\n const ctx = this.ctx;\n\n if (Settings.skipLightFOW) {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.valid = true;\n return;\n }\n\n const originalOperation = ctx.globalCompositeOperation;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n\n const dctx = layerManager.getLayer(\"draw\")!.ctx;\n if (Settings.drawAngleLines || Settings.drawFirstLightHit) {\n dctx.clearRect(0, 0, dctx.canvas.width, dctx.canvas.height);\n }\n\n // At all times provide a minimal vision range to prevent losing your tokens in fog.\n if (gameStore.fullFOW && layerManager.hasLayer(\"tokens\")) {\n layerManager.getLayer(\"tokens\")!.shapes.forEach(sh => {\n if (!sh.ownedBy() || !sh.isToken) return;\n const bb = sh.getBoundingBox();\n const lcenter = g2l(sh.center());\n const alm = 0.8 * g2lz(bb.w);\n ctx.beginPath();\n ctx.arc(lcenter.x, lcenter.y, alm, 0, 2 * Math.PI);\n const gradient = ctx.createRadialGradient(lcenter.x, lcenter.y, alm / 2, lcenter.x, lcenter.y, alm);\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n ctx.fill();\n });\n }\n\n this.vCtx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n\n // First cut out all the light sources\n for (const light of gameStore.visionSources) {\n const shape = layerManager.UUIDMap.get(light.shape);\n if (shape === undefined) continue;\n const aura = shape.auras.find(a => a.uuid === light.aura);\n if (aura === undefined) continue;\n\n const auraLength = getUnitDistance(aura.value + aura.dim);\n const center = shape.center();\n const lcenter = g2l(center);\n\n const auraCircle = new Circle(center, auraLength);\n if (!auraCircle.visibleInCanvas(ctx.canvas)) continue;\n\n if (gameStore.visionMode === \"bvh\") {\n let lastArcAngle = -1;\n\n const path = new Path2D();\n path.moveTo(lcenter.x, lcenter.y);\n let firstPoint: GlobalPoint;\n\n for (let angle = 0; angle < 2 * Math.PI; angle += (Settings.angleSteps / 180) * Math.PI) {\n const anglePoint = new GlobalPoint(\n center.x + auraLength * Math.cos(angle),\n center.y + auraLength * Math.sin(angle),\n );\n if (Settings.drawAngleLines) {\n dctx!.beginPath();\n dctx!.moveTo(g2lx(center.x), g2ly(center.y));\n dctx!.lineTo(g2lx(anglePoint.x), g2ly(anglePoint.y));\n dctx!.stroke();\n }\n\n // Check if there is a hit with one of the nearby light blockers.\n const lightRay = Ray.fromPoints(center, anglePoint);\n const hitResult = gameStore.BV.intersect(lightRay);\n\n if (angle === 0) firstPoint = hitResult.hit ? hitResult.intersect : anglePoint;\n\n // We can move on to the next angle if nothing was hit.\n if (!hitResult.hit) {\n // If an earlier hit caused the aura to leave the arc, we need to go back to the arc\n if (lastArcAngle === -1) {\n // Set the start of a new arc beginning at the current angle\n lastArcAngle = angle;\n // Draw a line from the last non arc location back to the arc\n const dest = g2l(anglePoint);\n ctx.lineTo(dest.x, dest.y);\n }\n continue;\n }\n // If hit , first finish any ongoing arc, then move to the intersection point\n if (lastArcAngle !== -1) {\n path.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), lastArcAngle, angle);\n lastArcAngle = -1;\n }\n path.lineTo(g2lx(hitResult.intersect.x), g2ly(hitResult.intersect.y));\n }\n // Finish the final arc.\n if (lastArcAngle === -1) path.lineTo(g2lx(firstPoint!.x), g2ly(firstPoint!.y));\n else path.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), lastArcAngle, 2 * Math.PI);\n\n if (gameStore.fullFOW) {\n if (aura.dim > 0) {\n // Fill the light aura with a radial dropoff towards the outside.\n const gradient = ctx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(aura.value),\n lcenter.x,\n lcenter.y,\n g2lr(aura.value + aura.dim),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n } else {\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n ctx.fill(path);\n }\n\n aura.lastPath = path;\n } else {\n this.vCtx.globalCompositeOperation = \"source-over\";\n this.vCtx.fillStyle = \"rgba(0, 0, 0, 1)\";\n const polygon = computeVisibility(center, \"vision\");\n this.vCtx.beginPath();\n this.vCtx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) this.vCtx.lineTo(g2lx(point[0]), g2ly(point[1]));\n this.vCtx.closePath();\n this.vCtx.fill();\n if (aura.dim > 0) {\n // Fill the light aura with a radial dropoff towards the outside.\n const gradient = this.vCtx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(aura.value),\n lcenter.x,\n lcenter.y,\n g2lr(aura.value + aura.dim),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n this.vCtx.fillStyle = gradient;\n } else {\n this.vCtx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n this.vCtx.globalCompositeOperation = \"source-in\";\n this.vCtx.beginPath();\n this.vCtx.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), 0, 2 * Math.PI);\n this.vCtx.fill();\n ctx.drawImage(this.virtualCanvas, 0, 0);\n }\n }\n\n // At the DM Side due to opacity of the two fow layers, it looks strange if we just render them on top of eachother like players.\n if (gameStore.fowLOS) {\n ctx.globalCompositeOperation = \"source-in\";\n ctx.drawImage(layerManager.getLayer(\"fow-players\")!.canvas, 0, 0);\n }\n\n for (const preShape of this.preFogShapes) {\n if (!preShape.visibleInCanvas(this.canvas)) continue;\n const ogComposite = preShape.globalCompositeOperation;\n if (!gameStore.fullFOW) {\n if (preShape.globalCompositeOperation === \"source-over\")\n preShape.globalCompositeOperation = \"destination-out\";\n else if (preShape.globalCompositeOperation === \"destination-out\")\n preShape.globalCompositeOperation = \"source-over\";\n }\n preShape.draw(ctx);\n preShape.globalCompositeOperation = ogComposite;\n }\n\n if (gameStore.fullFOW) {\n ctx.globalCompositeOperation = \"source-out\";\n ctx.fillStyle = getFogColour();\n ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n }\n\n super.draw(false);\n\n ctx.globalCompositeOperation = originalOperation;\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Edit asset\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"grid\"},[_c('label',{attrs:{\"for\":\"shapeselectiondialog-name\"}},[_vm._v(\"Name\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shape.name),expression:\"shape.name\"}],staticStyle:{\"grid-column\":\"numerator / remove\"},attrs:{\"type\":\"text\",\"id\":\"shapeselectiondialog-name\",\"disabled\":!_vm.owned},domProps:{\"value\":(_vm.shape.name)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.shape, \"name\", $event.target.value)}}}),_c('div',{style:({opacity: _vm.shape.nameVisible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){_vm.shape.nameVisible = !_vm.shape.nameVisible;_vm.updateShape(false)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('label',{attrs:{\"for\":\"shapeselectiondialog-istoken\"}},[_vm._v(\"Is a token\")]),_c('input',{staticClass:\"styled-checkbox\",staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-istoken\",\"disabled\":!_vm.owned},domProps:{\"checked\":_vm.shape.isToken},on:{\"click\":_vm.setToken}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-visionblocker\"}},[_vm._v(\"Blocks vision/light\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shape.visionObstruction),expression:\"shape.visionObstruction\"}],staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-visionblocker\",\"disabled\":!_vm.owned},domProps:{\"checked\":Array.isArray(_vm.shape.visionObstruction)?_vm._i(_vm.shape.visionObstruction,null)>-1:(_vm.shape.visionObstruction)},on:{\"change\":[function($event){var $$a=_vm.shape.visionObstruction,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.shape, \"visionObstruction\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.shape, \"visionObstruction\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.shape, \"visionObstruction\", $$c)}},_vm.setVisionBlocker]}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-moveblocker\"}},[_vm._v(\"Blocks movement\")]),_c('input',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-moveblocker\",\"disabled\":!_vm.owned},domProps:{\"checked\":_vm.shape.movementObstruction},on:{\"click\":_vm.setMovementBlocker}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-strokecolour\"}},[_vm._v(\"Border colour\")]),_c('color-picker',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"color\":_vm.shape.strokeColour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(_vm.shape, \"strokeColour\", $event)},\"input\":function($event){return _vm.updateShape(true, true)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-fillcolour\"}},[_vm._v(\"Fill colour\")]),_c('color-picker',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"color\":_vm.shape.fillColour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(_vm.shape, \"fillColour\", $event)},\"input\":function($event){return _vm.updateShape(true, true)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Access\")]),_vm._l((_vm.shape.owners),function(owner){return [_c('input',{key:owner,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":owner},on:{\"change\":function($event){return _vm.updateOwner($event, owner)}}}),(owner !== '')?_c('div',{key:'remove-' + owner,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center', gridColumnStart: 'remove'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeOwner(owner)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Trackers\")]),_vm._l((_vm.shape.trackers),function(tracker){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(tracker.name),expression:\"tracker.name\"}],key:'name-'+tracker.uuid,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.name)},on:{\"change\":function($event){return _vm.updateShape(false);},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(tracker.value),expression:\"tracker.value\",modifiers:{\"number\":true}}],key:'value-'+tracker.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.value)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"value\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'fspan-'+tracker.uuid},[_vm._v(\"/\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(tracker.maxvalue),expression:\"tracker.maxvalue\",modifiers:{\"number\":true}}],key:'maxvalue-'+tracker.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.maxvalue)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"maxvalue\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'sspan-'+tracker.uuid}),_c('div',{key:'visibility-'+tracker.uuid,style:({opacity: tracker.visible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){tracker.visible = !tracker.visible;_vm.updateShape(false)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('span',{key:'tspan-'+tracker.uuid}),(tracker.name !== '' || tracker.value !== 0)?_c('div',{key:'remove-'+tracker.uuid,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeTracker(tracker.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Auras\")]),_vm._l((_vm.shape.auras),function(aura){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(aura.name),expression:\"aura.name\"}],key:'name-'+aura.uuid,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.name)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(aura.value),expression:\"aura.value\",modifiers:{\"number\":true}}],key:'value-'+aura.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.value)},on:{\"change\":function($event){return _vm.updateShape(true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"value\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'fspan-'+aura.uuid},[_vm._v(\"/\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(aura.dim),expression:\"aura.dim\",modifiers:{\"number\":true}}],key:'dimvalue-'+aura.uuid,attrs:{\"type\":\"text\",\"title\":\"Dim value\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.dim)},on:{\"change\":function($event){return _vm.updateShape(true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"dim\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('color-picker',{key:'colour-'+aura.uuid,attrs:{\"color\":aura.colour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(aura, \"colour\", $event)},\"input\":function($event){return _vm.updateAuraColour(aura, $event)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('div',{key:'visibility-'+aura.uuid,style:({opacity: aura.visible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){aura.visible = !aura.visible;_vm.updateShape(true)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{key:'visionsource-'+aura.uuid,style:({opacity: aura.visionSource ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.updateAuraVisionSource(aura)}}},[_c('i',{staticClass:\"fas fa-lightbulb\"})]),(aura.name !== '' || aura.value !== 0)?_c('div',{key:'remove-'+aura.uuid,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeAura(aura.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Labels\")]),_c('div',{staticClass:\"spanrow\",attrs:{\"id\":\"labels\"}},[_vm._l((_vm.shape.labels),function(label){return _c('div',{key:label.uuid,staticClass:\"label\"},[(label.category)?[_c('div',{staticClass:\"label-user\"},[_vm._v(_vm._s(label.category))]),_c('div',{staticClass:\"label-main\",on:{\"click\":function($event){return _vm.removeLabel(label.uuid)}}},[_vm._v(_vm._s(label.name))])]:_vm._e(),(!label.category)?[_c('div',{staticClass:\"label-main\",on:{\"click\":function($event){return _vm.removeLabel(label.uuid)}}},[_vm._v(_vm._s(label.name))])]:_vm._e()],2)}),(_vm.owned)?_c('div',{staticClass:\"label\",attrs:{\"id\":\"label-add\"}},[_c('div',{staticClass:\"label-main\",on:{\"click\":_vm.openLabelManager}},[_vm._v(\"+\")])]):_vm._e()],2),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Annotation\")]),_c('textarea',{staticClass:\"spanrow\",attrs:{\"disabled\":!_vm.owned},domProps:{\"value\":_vm.shape.annotation},on:{\"change\":_vm.updateAnnotation}})],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=template&id=23de098e&scoped=true&\"","import { ServerCircle } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2l, g2lz, l2g } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\n\nexport class Circle extends Shape {\n type = \"circle\";\n r: number;\n constructor(center: GlobalPoint, r: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(center, fillColour, strokeColour, uuid);\n this.r = r || 1;\n }\n asDict(): ServerCircle {\n // const base = this.getBaseDict();\n // base.r = this.r;\n // base.border = this.border;\n // return base;\n return Object.assign(this.getBaseDict(), {\n radius: this.r,\n });\n }\n fromDict(data: ServerCircle) {\n super.fromDict(data);\n this.r = data.radius;\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(\n new GlobalPoint(this.refPoint.x - this.r, this.refPoint.y - this.r),\n this.r * 2,\n this.r * 2,\n );\n }\n\n get points() {\n return this.getBoundingBox().points;\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.beginPath();\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n const loc = g2l(this.refPoint);\n ctx.arc(loc.x, loc.y, g2lz(this.r), 0, 2 * Math.PI);\n ctx.fill();\n if (this.strokeColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.beginPath();\n ctx.lineWidth = g2lz(5);\n ctx.strokeStyle = this.strokeColour;\n ctx.arc(loc.x, loc.y, g2lz(this.r), 0, 2 * Math.PI);\n ctx.stroke();\n }\n }\n contains(point: GlobalPoint): boolean {\n return (point.x - this.refPoint.x) ** 2 + (point.y - this.refPoint.y) ** 2 < this.r ** 2;\n }\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n if (centerPoint === undefined) return this.refPoint;\n this.refPoint = centerPoint;\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid() {\n const gs = gameStore.gridSize;\n let targetX;\n let targetY;\n if (((2 * this.r) / gs) % 2 === 0) {\n targetX = Math.round(this.refPoint.x / gs) * gs;\n } else {\n targetX = Math.round((this.refPoint.x - gs / 2) / gs) * gs + this.r;\n }\n if (((2 * this.r) / gs) % 2 === 0) {\n targetY = Math.round(this.refPoint.y / gs) * gs;\n } else {\n targetY = Math.round((this.refPoint.y - gs / 2) / gs) * gs + this.r;\n }\n const delta = calculateDelta(new Vector(targetX - this.refPoint.x, targetY - this.refPoint.y), this);\n this.refPoint = this.refPoint.add(delta);\n this.invalidate(false);\n }\n resizeToGrid() {\n const gs = gameStore.gridSize;\n this.r = Math.max(Math.round(this.r / gs) * gs, gs / 2);\n this.invalidate(false);\n }\n resize(resizePoint: number, point: LocalPoint) {\n const z = gameStore.zoomFactor;\n const diff = l2g(point).subtract(this.refPoint);\n this.r = Math.sqrt(Math.pow(diff.length(), 2) / 2);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class MapTool extends Tool {\n name = \"Map\";\n active = false;\n xCount = 3;\n yCount = 3;\n startPoint: GlobalPoint | null = null;\n rect: Rect | null = null;\n\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = true;\n\n this.startPoint = l2g(getMouse(event));\n this.rect = new Rect(this.startPoint.clone(), 0, 0, \"rgba(0,0,0,0)\", \"black\");\n layer.addShape(this.rect, false, false);\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active || this.rect === null || this.startPoint === null) return;\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n const endPoint = l2g(getMouse(event));\n\n this.rect.w = Math.abs(endPoint.x - this.startPoint.x);\n this.rect.h = Math.abs(endPoint.y - this.startPoint.y);\n this.rect.refPoint = new GlobalPoint(\n Math.min(this.startPoint.x, endPoint.x),\n Math.min(this.startPoint.y, endPoint.y),\n );\n layer.invalidate(false);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.rect === null) return;\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = false;\n\n if (layer.selection.length !== 1) {\n layer.removeShape(this.rect, false, false);\n return;\n }\n\n const w = this.rect.w;\n const h = this.rect.h;\n const sel = layer.selection[0];\n\n if (sel instanceof BaseRect) {\n sel.w *= (this.xCount * gameStore.gridSize) / w;\n sel.h *= (this.yCount * gameStore.gridSize) / h;\n }\n\n layer.removeShape(this.rect, false, false);\n }\n}\n","import { render, staticRenderFns } from \"./load.vue?vue&type=template&id=ff095222&\"\nimport script from \"./load.vue?vue&type=script&lang=ts&\"\nexport * from \"./load.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { LocalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class PanTool extends Tool {\n name = \"Pan\";\n panStart = new LocalPoint(0, 0);\n active = false;\n\n onMouseDown(event: MouseEvent) {\n this.panStart = getMouse(event);\n this.active = true;\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active) return;\n const mouse = getMouse(event);\n const distance = mouse.subtract(this.panStart).multiply(1 / gameStore.zoomFactor);\n gameStore.increasePanX(Math.round(distance.x));\n gameStore.increasePanY(Math.round(distance.y));\n this.panStart = mouse;\n layerManager.invalidate();\n }\n onMouseUp(event: MouseEvent) {\n this.active = false;\n sendClientOptions();\n }\n}\n","import { render, staticRenderFns } from \"./selectcontext.vue?vue&type=template&id=2e7d4582&scoped=true&\"\nimport script from \"./selectcontext.vue?vue&type=script&lang=ts&\"\nexport * from \"./selectcontext.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e7d4582\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nimport { app } from \"@/main\";\n\n// Reference: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nexport function uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nexport function capitalize(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\nexport function alphSort(a: string, b: string) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n else return 1;\n}\n\nexport function getHTMLFont(element: HTMLElement) {\n let font = element.style.font;\n while (font === null && element.parentElement !== null) {\n element = element.parentElement;\n font = element.style.font;\n }\n if (font === null) font = window.getComputedStyle(document.body).getPropertyValue(\"font\");\n return font;\n}\n\nexport function getHTMLTextWidth(text: string, font: string): number {\n let fakeElement = document.getElementById(\"emptycanvas\");\n if (fakeElement === null) {\n fakeElement = document.createElement(\"canvas\");\n fakeElement.id = \"emptycanvas\";\n fakeElement.style.display = \"\";\n document.body.appendChild(fakeElement);\n }\n const ctx = fakeElement.getContext(\"2d\")!;\n ctx.font = font;\n return Math.ceil(ctx.measureText(text).width);\n}\n\nexport function partition(arr: T[], predicate: (n: T) => boolean) {\n const ret: T[][] = [[], []];\n arr.forEach(n => (predicate(n) ? ret[1].push(n) : ret[0].push(n)));\n return ret;\n}\n\nexport function calcFontScale(ctx: CanvasRenderingContext2D, text: string, width: number, height: number) {\n const points = Number(ctx.font.split(\"px\")[0]) * 0.2;\n const fontWidth = ctx.measureText(text).width;\n return Math.min(width / fontWidth, height / points);\n}\n\nexport function fixedEncodeURIComponent(str: string) {\n return encodeURIComponent(str).replace(/[!'()*]/g, c => {\n return \"%\" + c.charCodeAt(0).toString(16);\n });\n}\n\nexport class OrderedMap {\n keys: K[] = [];\n values: V[] = [];\n\n get length() {\n return this.keys.length;\n }\n\n get(key: K) {\n return this.values[this.keys.indexOf(key)];\n }\n getIndexValue(idx: number) {\n return this.values[idx];\n }\n getIndexKey(idx: number) {\n return this.keys[idx];\n }\n set(key: K, value: V) {\n this.keys.push(key);\n this.values.push(value);\n }\n has(key: K) {\n return this.indexOf(key) >= 0;\n }\n indexOf(element: K) {\n return this.keys.indexOf(element);\n }\n remove(element: K) {\n const idx = this.indexOf(element);\n this.keys.splice(idx, 1);\n this.values.splice(idx, 1);\n }\n}\n\nexport function getComponent(): T {\n return app.$children[0].$refs.activeComponent;\n}\n\nexport function getRef(ref: string): T {\n const active = app.$children[0].$refs.activeComponent;\n return active.$refs[ref];\n}\n","import { render, staticRenderFns } from \"./contextMenu.vue?vue&type=template&id=dbbd4d08&\"\nimport script from \"./contextMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./contextMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { EdgeCirculator, Point, Sign, Triangle, Vertex } from \"./tds\";\n\ntype Line = number[];\n\nexport function cw(index: number) {\n return (index + 2) % 3;\n}\n\nexport function ccw(index: number) {\n return (index + 1) % 3;\n}\n\nexport function edgeInfo(va: Vertex, vb: Vertex) {\n const ec = new EdgeCirculator(va, null);\n if (ec.valid) {\n do {\n const indv = 3 - ec.t!.indexV(va) - ec.ri;\n const v = ec.t!.vertices[indv]!;\n if (!v.infinite) {\n if (v === vb) {\n return { includes: true, vi: vb, fr: ec.t!, i: ec.ri };\n } else {\n const orient = orientation(va.point!, vb.point!, v.point!);\n if (orient === Sign.COLLINEAR && collinearBetween(va.point!, v.point!, vb.point!)) {\n return { includes: true, vi: v, fr: ec.t!, i: ec.ri };\n }\n }\n }\n } while (ec.next());\n }\n return { includes: false };\n}\n\nexport function collinearBetween(p: Point, q: Point, r: Point): boolean {\n let cPQ: Sign;\n let cQR: Sign;\n if (compare(0, p, r) === Sign.EQUAL) {\n cPQ = compare(1, p, q);\n cQR = compare(1, q, r);\n } else {\n cPQ = compare(0, p, q);\n cQR = compare(0, q, r);\n }\n return (cPQ === Sign.SMALLER && cQR === Sign.SMALLER) || (cPQ === Sign.LARGER && cQR === Sign.LARGER);\n}\n\nfunction compare(index: number, a: Point, b: Point): Sign {\n if (a[index] < b[index]) return Sign.SMALLER;\n if (a[index] > b[index]) return Sign.LARGER;\n return Sign.EQUAL;\n}\n\nexport function orientation(p: Point, q: Point, r: Point) {\n const px = p[0];\n const py = p[1];\n const qx = q[0];\n const qy = q[1];\n const rx = r[0];\n const ry = r[1];\n const pqx = qx - px;\n const pqy = qy - py;\n const prx = rx - px;\n const pry = ry - py;\n const det = determinant(pqx, pqy, prx, pry);\n let maxX = Math.abs(pqx);\n let maxY = Math.abs(pqy);\n const aprX = Math.abs(prx);\n const aprY = Math.abs(pry);\n if (maxX < aprX) maxX = aprX;\n if (maxY < aprY) maxY = aprY;\n if (maxX > maxY) [maxX, maxY] = [maxY, maxX];\n // underflow proection in eps computation?? Math.sqrt(Number.MIN_VALUE, Number.EPSILON)\n if (maxX < 2e-162 && maxX === 0) {\n return Sign.ZERO;\n }\n // overflow protection in det computation\n if (maxY < 1e153) {\n const eps = Number.EPSILON * maxX * maxY;\n if (det > eps) return Sign.POSITIVE;\n if (det < -eps) return Sign.NEGATIVE;\n }\n return Sign.ZERO;\n}\n\nexport function determinant(a00: number, a01: number, a10: number, a11: number) {\n return a00 * a11 - a01 * a10;\n}\n\nexport function hasInexactNegativeOrientation(p: Point, q: Point, r: Point) {\n return determinant(q[0] - p[0], q[1] - p[1], r[0] - p[0], r[1] - p[1]) < 0;\n}\n\nexport function sideOfOrientedCircle(t: Triangle, p: Point, perturb: boolean): Sign {\n if (!t.isInfinite())\n return sideOfOrientedCircleP(t.vertices[0]!.point!, t.vertices[1]!.point!, t.vertices[2]!.point!, p, perturb);\n throw new Error(\"SSS\");\n}\n\nfunction sideOfOrientedCircleP(p0: Point, p1: Point, p2: Point, p: Point, perturb: boolean): Sign {\n const os = getOrientedSide(p0, p1, p2, p);\n if (os !== Sign.ON_ORIENTED_BOUNDARY || !perturb) return os;\n const points = [p0, p1, p2, p];\n points.sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n for (const point of points.reverse()) {\n if (point === p) return Sign.ON_NEGATIVE_SIDE;\n let o = orientation(p0, p1, p);\n if (point === p2 && o !== Sign.COLLINEAR) return o;\n o = orientation(p0, p, p2);\n if (point === p1 && o !== Sign.COLLINEAR) return o;\n o = orientation(p, p1, p2);\n if (point === p0 && o !== Sign.COLLINEAR) return o;\n }\n return Sign.ON_NEGATIVE_SIDE;\n}\n\nexport function xyEqual(p: Point, q: Point) {\n return p[0] === q[0] && p[1] === q[1];\n}\n\nexport function xySmaller(p: Point, q: Point) {\n return p[0] < q[0] || (p[0] === q[0] && p[1] < q[1]);\n}\n\nexport function xyCompare(p: Point, q: Point) {\n if (xySmaller(p, q)) return Sign.SMALLER;\n if (xyEqual(p, q)) return Sign.EQUAL;\n return Sign.LARGER;\n}\n\nfunction getOrientedSide(p: Point, q: Point, r: Point, t: Point): Sign {\n const qpx = q[0] - p[0];\n const qpy = q[1] - p[1];\n const rpx = r[0] - p[0];\n const rpy = r[1] - p[1];\n const tpx = t[0] - p[0];\n const tpy = t[1] - p[1];\n const tqx = t[0] - q[0];\n const tqy = t[1] - q[1];\n const rqx = r[0] - q[0];\n const rqy = r[1] - q[1];\n\n const det = determinant(qpx * tpy - qpy * tpx, tpx * tqx + tpy * tqy, qpx * rpy - qpy * rpx, rpx * rqx + rpy * rqy);\n let maxx = Math.abs(qpx);\n let maxy = Math.abs(qpy);\n const arpx = Math.abs(rpx);\n const arpy = Math.abs(rpy);\n const atqx = Math.abs(tqx);\n const atqy = Math.abs(tqy);\n const atpx = Math.abs(tpx);\n const atpy = Math.abs(tpy);\n const arqx = Math.abs(rqx);\n const arqy = Math.abs(rqy);\n\n if (maxx < arpx) maxx = arpx;\n if (maxx < atpx) maxx = atpx;\n if (maxx < atqx) maxx = atqx;\n if (maxx < arqx) maxx = arqx;\n\n if (maxy < arpy) maxy = arpy;\n if (maxy < atpy) maxy = atpy;\n if (maxy < atqy) maxy = atqy;\n if (maxy < arqy) maxy = arqy;\n\n if (maxx > maxy) [maxx, maxy] = [maxy, maxx];\n\n if (maxx < 1e-73 && maxx === 0) return Sign.ON_ORIENTED_BOUNDARY;\n // sqrt(sqrt(max_double/16\n else if (maxy < 1e76) {\n const eps = Number.EPSILON * maxx * maxy * (maxy * maxy);\n if (det > eps) return Sign.ON_POSITIVE_SIDE;\n if (det < -eps) return Sign.ON_NEGATIVE_SIDE;\n }\n\n return Sign.ZERO;\n}\n\nfunction segSegDoIntersectCrossing(p1: Point, p2: Point, p3: Point, p4: Point): boolean {\n switch (orientation(p1, p2, p3)) {\n case Sign.LEFT_TURN:\n return orientation(p3, p4, p2) !== Sign.RIGHT_TURN;\n case Sign.RIGHT_TURN:\n return orientation(p3, p4, p2) !== Sign.LEFT_TURN;\n case Sign.COLLINEAR:\n return true;\n }\n}\n\nfunction segSegDoIntersectContained(p1: Point, p2: Point, p3: Point, p4: Point): boolean {\n switch (orientation(p1, p2, p3)) {\n case Sign.LEFT_TURN:\n return orientation(p1, p2, p4) !== Sign.LEFT_TURN;\n case Sign.RIGHT_TURN:\n return orientation(p1, p2, p4) !== Sign.RIGHT_TURN;\n case Sign.COLLINEAR:\n return true;\n }\n}\n\nexport function intersection(pa: Point, pb: Point, pc: Point, pd: Point) {\n const i = getIntersectionType(pa, pb, pc, pd);\n switch (i.intersectionType) {\n case IntersectionType.POINT:\n return i.point!;\n case IntersectionType.NO_INTERSECTION:\n return null;\n }\n throw new Error(\"sdfgighowen\");\n}\n\nenum IntersectionType {\n NO_INTERSECTION,\n POINT,\n SEGMENT,\n}\n\nfunction getLine(p0: Point, p1: Point): Line {\n if (p0[0] === p1[0]) return [1, 0, -p0[0]];\n if (p0[1] === p1[1]) return [0, 1, -p0[1]];\n const x = p1[0] - p0[0];\n const y = p1[1] - p0[1];\n return [-y, x, -x * p0[1] + y * p0[0]];\n}\n\nfunction getIntersectionType(pa: Point, pb: Point, pc: Point, pd: Point) {\n if (!doIntersect(pa, pb, pc, pd)) return { intersectionType: IntersectionType.NO_INTERSECTION, point: null };\n const l1 = getLine(pa, pb);\n const l2 = getLine(pc, pd);\n const info = getIntersectionTypeLine(l1, l2);\n switch (info.intersectionType) {\n case IntersectionType.POINT: {\n return info;\n }\n }\n throw new Error(\"gzseuihgpib\");\n}\n\nfunction getIntersectionTypeLine(la: Line, lb: Line) {\n const denom = la[0] * lb[1] - lb[0] * la[1];\n const nom1 = la[1] * lb[2] - lb[1] * la[2];\n const nom2 = lb[0] * la[2] - la[0] * lb[2];\n return {\n intersectionType: IntersectionType.POINT,\n point: [nom1 / denom, nom2 / denom],\n };\n}\n\nfunction doIntersect(A1: Point, A2: Point, B1: Point, B2: Point): boolean {\n if (xySmaller(A1, A2)) {\n if (xySmaller(B1, B2)) {\n if (xySmaller(A2, B1) || xySmaller(B2, A1)) return false;\n } else {\n if (xySmaller(A2, B2) || xySmaller(B1, A1)) return false;\n }\n } else {\n if (xySmaller(B1, B2)) {\n if (xySmaller(A1, B1) || xySmaller(B2, A2)) return false;\n } else {\n if (xySmaller(A1, B2) || xySmaller(B1, A2)) return false;\n }\n }\n if (xySmaller(A1, A2)) {\n if (xySmaller(B1, B2)) {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER: {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A1, A2, B1, B2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A1, A2, B1, B2);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B2, A1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B2, A2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B1, B2, A1, A2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B1, B2, A1, A2);\n }\n }\n }\n }\n } else {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER: {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A1, A2, B2, B1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A1, A2, B2, B1);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B1, A1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B1, A2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B2, B1, A1, A2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B2, B1, A1, A2);\n }\n }\n }\n }\n }\n } else {\n if (xySmaller(B1, B2)) {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER: {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A2, A1, B1, B2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A2, A1, B1, B2);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B2, A2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B2, A1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B1, B2, A2, A1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B1, B2, A2, A1);\n }\n }\n }\n }\n } else {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER: {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A2, A1, B2, B1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A2, A1, B2, B1);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B1, A2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B1, A1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B2, B1, A2, A1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B2, B1, A2, A1);\n }\n }\n }\n }\n }\n }\n}\n\nfunction nextUp(x: number) {\n if (x !== x) {\n return x;\n }\n if (x === -1 / 0) {\n return -Number.MAX_VALUE;\n }\n if (x === +1 / 0) {\n return +1 / 0;\n }\n if (x === +Number.MAX_VALUE) {\n return +1 / 0;\n }\n let y = x * (x < 0 ? 1 - Number.EPSILON / 2 : 1 + Number.EPSILON);\n if (y === x) {\n y = Number.MIN_VALUE * Number.EPSILON > 0 ? x + Number.MIN_VALUE * Number.EPSILON : x + Number.MIN_VALUE;\n }\n if (y === +1 / 0) {\n y = +Number.MAX_VALUE;\n }\n const b = x + (y - x) / 2;\n if (x < b && b < y) {\n y = b;\n }\n const c = (y + x) / 2;\n if (x < c && c < y) {\n y = c;\n }\n return y === 0 ? -0 : y;\n}\n\nexport function ulp(x: number) {\n return x < 0 ? nextUp(x) - x : x + nextUp(-x);\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.x + 'px',\"top\":_vm.y + 'px'},on:{\"close\":_vm.close}},[(_vm.IS_DM)?_c('li',{on:{\"click\":_vm.bringPlayers}},[_vm._v(\"Bring players\")]):_vm._e(),_c('li',{on:{\"click\":_vm.createToken}},[_vm._v(\"Create basic token\")]),_c('li',{on:{\"click\":_vm.showInitiative}},[_vm._v(\"Show initiative\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=template&id=2e7d4582&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class Modal extends Vue {\n @Prop(Boolean) visible!: boolean;\n @Prop({ type: Boolean, default: true }) mask!: boolean;\n @Prop({ type: String, default: \"white\" }) colour!: string;\n\n $refs!: {\n container: HTMLElement;\n };\n\n positioned = false;\n offsetX = 0;\n offsetY = 0;\n screenX = 0;\n screenY = 0;\n dragging = false;\n\n // Example of mounted required: opening note\n mounted() {\n this.updatePosition();\n }\n // Example of updated required: opening initiative\n updated() {\n this.updatePosition();\n }\n\n close(event: MouseEvent) {\n this.$emit(\"close\");\n }\n updatePosition() {\n if (!this.positioned) {\n const container = this.$refs.container;\n if (container.offsetWidth === 0 && container.offsetHeight === 0) return;\n this.$refs.container.style.left = (window.innerWidth - container.offsetWidth) / 2 + \"px\";\n this.$refs.container.style.top = (window.innerHeight - container.offsetHeight) / 2 + \"px\";\n this.positioned = true;\n }\n }\n dragStart(event: DragEvent) {\n if (event === null || event.dataTransfer === null) return;\n event.dataTransfer.setData(\"Hack\", \"\");\n // Because the drag event is happening on the header, we have to change the drag image\n // in order to give the impression that the entire modal is dragged.\n event.dataTransfer.setDragImage(this.$refs.container, event.offsetX, event.offsetY);\n this.offsetX = event.offsetX;\n this.offsetY = event.offsetY;\n this.screenX = event.screenX;\n this.screenY = event.screenY;\n this.dragging = true;\n }\n dragEnd(event: DragEvent) {\n this.dragging = false;\n let left = event.clientX - this.offsetX;\n let top = event.clientY - this.offsetY;\n if (event.clientX === 0 && event.clientY === 0 && event.pageX === 0 && event.pageY === 0) {\n left = parseInt(this.$refs.container.style.left!, 10) - (this.screenX - event.screenX);\n top = parseInt(this.$refs.container.style.top!, 10) - (this.screenY - event.screenY);\n }\n if (left < 0) left = 0;\n if (left > window.innerWidth - 100) left = window.innerWidth - 100;\n if (top < 0) top = 0;\n if (top > window.innerHeight - 100) top = window.innerHeight - 100;\n this.$refs.container.style.left = left + \"px\";\n this.$refs.container.style.top = top + \"px\";\n this.$refs.container.style.display = \"block\";\n }\n dragOver(event: DragEvent) {\n if (this.dragging) this.$refs.container.style.display = \"none\";\n }\n}\n","import io from \"socket.io-client\";\n\nimport { Asset } from \"@/core/comm/types\";\nimport { assetStore } from \"./store\";\n\nexport const socket = io(location.protocol + \"//\" + location.host + \"/pa_assetmgmt\", { autoConnect: false });\n\n// export const socket = io.connect(location.protocol + \"//\" + location.host + \"/pa_assetmgmt\");\nsocket.on(\"connect\", () => {\n console.log(\"Connected\");\n});\nsocket.on(\"disconnect\", () => {\n console.log(\"Disconnected\");\n});\nsocket.on(\"redirect\", (destination: string) => {\n console.log(\"redirecting\");\n window.location.href = destination;\n});\nsocket.on(\"Folder.Root.Set\", (root: number) => {\n assetStore.setRoot(root);\n});\nsocket.on(\"Folder.Set\", (folder: Asset) => {\n assetStore.clear();\n if (folder.children) {\n for (const child of folder.children) {\n assetStore.idMap.set(child.id, child);\n if (child.file_hash) {\n assetStore.files.push(child.id);\n } else {\n assetStore.folders.push(child.id);\n }\n }\n }\n});\nsocket.on(\"Folder.Create\", (folder: Asset) => {\n assetStore.folders.push(folder.id);\n assetStore.idMap.set(folder.id, folder);\n});\nsocket.on(\"Asset.Upload.Finish\", (asset: Asset) => {\n assetStore.idMap.set(asset.id, asset);\n assetStore.files.push(asset.id);\n});\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport Accordion from \"@/core/components/accordion.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n accordion: Accordion,\n },\n})\nexport default class FilterTool extends Tool {\n name = \"Filter\";\n active = false;\n\n get labels() {\n const cat: { [category: string]: [string, string][] } = {'': []};\n for (const uuid of Object.keys(gameStore.labels)) {\n const label = gameStore.labels[uuid];\n if (!label.category) cat[\"\"].push([label.uuid, label.name]);\n else {\n if (!(label.category in cat)) cat[label.category] = [];\n cat[label.category].push([label.uuid, label.name]);\n cat[label.category].sort((a, b) => a[1].localeCompare(b[1]));\n }\n }\n return cat;\n }\n\n get initalValues() {\n const values: { [category: string]: string[] } = {};\n for (const cat of Object.keys(this.labels)) {\n values[cat] = gameStore.labelFilters.filter(f => this.labels[cat].map(l => l[0]).includes(f));\n }\n return values;\n }\n\n get categories() {\n return Object.keys(this.labels).sort();\n }\n\n isFilter(uuid: string): boolean {\n return gameStore.labelFilters.includes(uuid);\n }\n\n toggleFilter(uuid: string) {\n const i = gameStore.labelFilters.indexOf(uuid);\n if (i >= 0) gameStore.labelFilters.splice(i, 1);\n else gameStore.labelFilters.push(uuid);\n layerManager.invalidate();\n }\n\n toggleUnlabeled() {\n gameStore.toggleUnlabeledFilter();\n layerManager.invalidate();\n }\n\n updateSelection(data: { title: string; selection: string[] }) {\n if (!(data.title in this.labels)) return;\n for (const [uuid, _] of this.labels[data.title]) {\n const idx = gameStore.labelFilters.indexOf(uuid);\n const selected = data.selection.includes(uuid);\n if (idx >= 0 && !selected) {\n gameStore.labelFilters.splice(idx, 1);\n socket.emit(\"Labels.Filter.Remove\", uuid);\n } else if (idx < 0 && selected) {\n gameStore.labelFilters.push(uuid);\n socket.emit(\"Labels.Filter.Add\", uuid);\n }\n }\n layerManager.invalidate();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\nimport { gameStore } from '../../game/store';\n\n@Component\nexport default class Accordion extends Vue {\n @Prop(String) title!: string;\n @Prop({ default: true, type: Boolean }) showArrow!: boolean;\n @Prop({ default: () => []}) items!: [string, string][];\n @Prop({ default: () => []}) initialValues!: string[];\n\n selected: string[] = [];\n\n active = false;\n\n mounted() {\n this.selected = this.initialValues;\n this.updateCategory();\n }\n\n toggleDisplay(event: MouseEvent) {\n this.active = !this.active;\n }\n\n toggleCategory() {\n const overall = this.$refs.overall as HTMLInputElement;\n if (overall.checked) this.selected = this.items.map((i) => i[0]);\n else this.selected = [];\n this.$emit(\"selectionupdate\", {title: this.title, selection: this.selected});\n }\n\n updateCategory() {\n const overall = this.$refs.overall as HTMLInputElement;\n if (this.selected.length === 0) {\n overall.checked = false;\n overall.indeterminate = false;\n } else if(this.selected.length === this.items.length) {\n overall.checked = true;\n overall.indeterminate = false;\n } else {\n overall.checked = false;\n overall.indeterminate = true;\n }\n }\n\n toggleSelection(item: string) {\n const found = this.selected.indexOf(item);\n if (found === -1) this.selected.push(item);\n else this.selected.splice(found, 1);\n this.updateCategory();\n this.$emit(\"selectionupdate\", {title: this.title, selection: this.selected});\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},_vm._l((_vm.tokens),function(token){return _c('div',{key:token.uuid,staticClass:\"token\",class:{'selected': _vm.selection.includes(token.uuid)},on:{\"click\":function($event){return _vm.toggle(token.uuid)}}},[(token.src)?_c('img',{attrs:{\"src\":token.src,\"width\":\"30px\",\"height\":\"30px\"}}):_vm._e(),_c('div',[_vm._v(_vm._s(token.name))])])}),0):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=template&id=46baf892&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=0&lang=css&\"","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2lx, g2ly, g2lz, l2g } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\nimport { ServerMultiLine } from \"../comm/types/shapes\";\n\nexport class MultiLine extends Shape {\n type = \"multiline\";\n _points: GlobalPoint[] = [];\n lineWidth: number;\n constructor(\n startPoint: GlobalPoint,\n points?: GlobalPoint[],\n lineWidth?: number,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, \"rgba(0, 0, 0, 0)\", strokeColour || \"#000\", uuid);\n this._points = points || [];\n this.lineWidth = lineWidth || 3;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n const delta = point.subtract(this._refPoint);\n this._refPoint = point;\n for (let i = 0; i < this._points.length; i++) this._points[i] = this._points[i].add(delta);\n }\n\n asDict() {\n return Object.assign(this.getBaseDict(), {\n line_width: this.lineWidth,\n points: this._points.map(p => ({ x: p.x, y: p.y })),\n });\n }\n fromDict(data: ServerMultiLine) {\n super.fromDict(data);\n this._points = data.points.map(p => new GlobalPoint(p.x, p.y));\n }\n get points() {\n return this._points.map(point => [point.x, point.y]);\n }\n getBoundingBox(): BoundingRect {\n let minx: number = this.refPoint.x;\n let maxx: number = this.refPoint.x;\n let miny: number = this.refPoint.y;\n let maxy: number = this.refPoint.y;\n for (const p of this._points) {\n if (p.x < minx) minx = p.x;\n if (p.x > maxx) maxx = p.x;\n if (p.y < miny) miny = p.y;\n if (p.y > maxy) maxy = p.y;\n }\n return new BoundingRect(new GlobalPoint(minx, miny), maxx - minx, maxy - miny);\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.beginPath();\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.moveTo(g2lx(this.refPoint.x), g2ly(this.refPoint.y));\n for (const p of this._points) ctx.lineTo(g2lx(p.x), g2ly(p.y));\n if (this.strokeColour === \"fog\") ctx.strokeStyle = getFogColour();\n else ctx.strokeStyle = this.strokeColour;\n ctx.lineWidth = g2lz(this.lineWidth);\n ctx.stroke();\n }\n contains(point: GlobalPoint): boolean {\n return this.getBoundingBox().contains(point);\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n return this.getBoundingBox().center();\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this._refPoint = l2g(point);\n else this._points[resizePoint - 1] = l2g(point);\n }\n}\n","import { render, staticRenderFns } from \"./draw.vue?vue&type=template&id=639cd890&scoped=true&\"\nimport script from \"./draw.vue?vue&type=script&lang=ts&\"\nexport * from \"./draw.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"639cd890\",\n null\n \n)\n\nexport default component.exports","import tinycolor from \"tinycolor2\";\n\nimport { LocalPoint } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nexport function getMouse(e: MouseEvent): LocalPoint {\n return new LocalPoint(e.pageX, e.pageY);\n}\n\nexport function getFogColour(opposite: boolean = false): string {\n const tc = tinycolor(gameStore.fowColour);\n if (gameStore.IS_DM) tc.setAlpha(opposite ? 1 : gameStore.fowOpacity);\n else tc.setAlpha(1);\n return tc.toRgbString();\n}\n\nexport function zoomValue(display: number) {\n // Powercurve 0.2/3/10\n // Based on https://stackoverflow.com/a/17102320\n return 1 / (-5 / 3 + (28 / 15) * Math.exp(1.83 * display));\n}\n\nexport function zoomDisplay(value: number) {\n return Math.log((1 / value + 5 / 3) * (15 / 28)) / 1.83;\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport * as tinycolor from \"tinycolor2\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { calcFontScale } from \"@/core/utils\";\nimport { LocalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { CircularToken } from \"@/game/shapes/circulartoken\";\nimport { gameStore } from \"@/game/store\";\nimport { getUnitDistance, l2g } from \"@/game/units\";\nimport { Watch } from \"vue-property-decorator\";\n\n@Component({\n components: {\n Modal,\n \"color-picker\": ColorPicker,\n },\n computed: {\n ...mapState(\"game\", [\"unitSize\"]),\n },\n})\nexport default class CreateTokenModal extends Vue {\n x = 0;\n y = 0;\n visible = false;\n text = \"X\";\n fillColour = \"rgba(255, 255, 255, 1)\";\n borderColour = \"rgba(0, 0, 0, 1)\";\n\n mounted() {\n this.updatePreview();\n }\n\n @Watch(\"text\")\n onTextChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n @Watch(\"fillColour\")\n onFillChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n @Watch(\"borderColour\")\n onBorderChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n\n open(x: number, y: number) {\n this.visible = true;\n this.x = x;\n this.y = y;\n }\n submit() {\n const layer = layerManager.getLayer();\n if (layer === undefined) return;\n const token = new CircularToken(\n l2g(new LocalPoint(this.x, this.y)),\n getUnitDistance(gameStore.unitSize / 2),\n this.text,\n \"10px serif\",\n this.fillColour,\n this.borderColour,\n );\n token.addOwner(gameStore.username);\n layer.addShape(token, true);\n layer.invalidate(false);\n this.visible = false;\n }\n updatePreview() {\n const ctx = (this.$refs.canvas).getContext(\"2d\")!;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n ctx.beginPath();\n const dest = { x: ctx.canvas.width / 2, y: ctx.canvas.height / 2 };\n const r = Math.min(dest.x, dest.y) * 0.9;\n\n ctx.fillStyle = this.fillColour;\n\n ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI);\n ctx.fill();\n if (this.borderColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.beginPath();\n ctx.lineWidth = 5;\n ctx.strokeStyle = this.borderColour;\n ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI);\n ctx.stroke();\n }\n ctx.save();\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n const xs = calcFontScale(ctx, this.text, r, r);\n const ys = 0;\n ctx.transform(xs, ys, -ys, xs, dest.x, dest.y);\n ctx.fillStyle = tinycolor.mostReadable(this.fillColour, [\"#000\", \"#fff\"]).toHexString();\n ctx.fillText(this.text, 0, 0);\n ctx.restore();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class NoteDialog extends Vue {\n visible = false;\n note: Note | null = null;\n\n open(note: Note) {\n this.visible = true;\n this.note = note;\n }\n calcHeight() {\n if (this.$refs.textarea) {\n const el = this.$refs.textarea;\n el.style.height = \"auto\";\n el.style.height = el.scrollHeight + \"px\";\n // Using the return value without the above did not achieve what I want, so hey /shrug\n return el.scrollHeight + \"px\";\n }\n return \"100px\";\n }\n updateNote() {\n if (this.note) gameStore.updateNote({ note: this.note, sync: true });\n }\n removeNote() {\n getRef(\"confirm\")\n .open(\"Are you sure you wish to remove this?\")\n .then(\n (result: boolean) => {\n if (result && this.note) {\n gameStore.removeNote({ note: this.note, sync: true });\n this.visible = false;\n }\n },\n () => {},\n );\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport { Watch } from \"vue-property-decorator\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { Line } from \"@/game/shapes/line\";\nimport { MultiLine } from \"@/game/shapes/multiline\";\nimport { Polygon } from \"@/game/shapes/polygon\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { getUnitDistance, l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\n@Component({\n components: {\n \"color-picker\": ColorPicker,\n },\n})\nexport default class DrawTool extends Tool {\n name = \"Draw\";\n active = false;\n\n startPoint: GlobalPoint | null = null;\n shape: Shape | null = null;\n brushHelper: Circle | null = null;\n ruler: Line | null = null;\n\n fillColour = \"rgba(0, 0, 0, 1)\";\n borderColour = \"rgba(255, 255, 255, 0)\";\n\n shapeSelect = \"square\";\n shapes = [\"square\", \"circle\", \"draw-polygon\", \"paint-brush\"];\n modeSelect = \"normal\";\n modes = [\"normal\", \"reveal\", \"hide\"];\n\n brushSize = getUnitDistance(gameStore.unitSize);\n\n get helperSize(): number {\n if (this.shapeSelect === \"paint-brush\") return this.brushSize / 2;\n return getUnitDistance(this.unitSize) / 8;\n }\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n get unitSize(): number {\n return gameStore.unitSize;\n }\n get useGrid(): boolean {\n return gameStore.useGrid;\n }\n\n @Watch(\"fillColour\")\n onFillChange() {\n if (this.brushHelper) this.brushHelper.fillColour = this.fillColour;\n }\n\n @Watch(\"modeSelect\")\n onModeUpdate(newValue: string, oldValue: string) {\n this.onModeChange(newValue, oldValue);\n }\n\n setupBrush() {\n if (this.brushHelper === null) return;\n if (this.modeSelect === \"reveal\" || this.modeSelect === \"hide\") {\n this.brushHelper.options.set(\"preFogShape\", true);\n this.brushHelper.options.set(\"skipDraw\", true);\n this.brushHelper.fillColour = \"rgba(0, 0, 0, 1)\";\n\n if (this.modeSelect === \"reveal\") this.brushHelper.globalCompositeOperation = \"source-over\";\n else if (this.modeSelect === \"hide\") this.brushHelper.globalCompositeOperation = \"destination-out\";\n } else {\n this.brushHelper.options.delete(\"preFogShape\");\n this.brushHelper.options.delete(\"skipDraw\");\n this.brushHelper.globalCompositeOperation = \"source-over\";\n this.brushHelper.fillColour = this.fillColour;\n }\n }\n onModeChange(newValue: string, oldValue: string) {\n if (this.brushHelper === null) return;\n\n const fowLayer = layerManager.getLayer(\"fow\");\n const normalLayer = layerManager.getLayer();\n if (fowLayer === undefined || normalLayer === undefined) return;\n\n this.setupBrush();\n\n if (newValue !== \"normal\" && oldValue === \"normal\") {\n normalLayer.removeShape(this.brushHelper, false);\n fowLayer.addShape(this.brushHelper, false);\n } else if (newValue === \"normal\" && oldValue !== \"normal\") {\n normalLayer.addShape(this.brushHelper, false);\n fowLayer.removeShape(this.brushHelper, false);\n }\n }\n getLayer() {\n if (this.modeSelect === \"normal\") return layerManager.getLayer();\n return layerManager.getLayer(\"fow\");\n }\n onMouseDown(event: MouseEvent) {\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n if (!this.active) {\n this.startPoint = l2g(getMouse(event));\n this.active = true;\n switch (this.shapeSelect) {\n case \"square\": {\n this.shape = new Rect(this.startPoint.clone(), 0, 0, this.fillColour, this.borderColour);\n break;\n }\n case \"circle\": {\n this.shape = new Circle(\n this.startPoint.clone(),\n this.helperSize,\n this.fillColour,\n this.borderColour,\n );\n break;\n }\n case \"paint-brush\": {\n this.shape = new MultiLine(this.startPoint.clone(), [], this.brushSize);\n this.shape.fillColour = this.fillColour;\n break;\n }\n case \"draw-polygon\": {\n this.shape = new Polygon(this.startPoint.clone(), [], this.fillColour, this.borderColour);\n break;\n }\n default:\n return;\n }\n\n if (this.modeSelect !== \"normal\") {\n this.shape.options.set(\"preFogShape\", true);\n this.shape.options.set(\"skipDraw\", true);\n this.shape.fillColour = \"rgba(0, 0, 0, 1)\";\n }\n if (this.modeSelect === \"reveal\") this.shape.globalCompositeOperation = \"source-over\";\n else if (this.modeSelect === \"hide\") this.shape.globalCompositeOperation = \"destination-out\";\n\n this.shape.addOwner(gameStore.username);\n if (layer.name === \"fow\" && this.modeSelect === \"normal\") {\n this.shape.visionObstruction = true;\n this.shape.movementObstruction = true;\n }\n layer.addShape(this.shape, true, false, false);\n\n // Push brushhelper to back\n this.pushBrushBack();\n } else if (this.shape !== null && this.shape instanceof Polygon) {\n // For polygon draw\n this.shape._vertices.push(l2g(getMouse(event)));\n }\n if (this.shape !== null && this.shape instanceof Polygon) {\n const lastPoint = l2g(getMouse(event));\n if (this.ruler === null) {\n this.ruler = new Line(lastPoint, lastPoint, 3, \"black\");\n layer.addShape(this.ruler, false);\n } else {\n this.ruler.refPoint = lastPoint;\n this.ruler.endPoint = lastPoint;\n }\n if (this.shape.visionObstruction) gameStore.recalculateVision(true);\n layer.invalidate(false);\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: true });\n }\n }\n onMouseMove(event: MouseEvent) {\n const endPoint = l2g(getMouse(event));\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n if (this.brushHelper !== null) {\n this.brushHelper.r = this.helperSize;\n this.brushHelper.refPoint = endPoint;\n if (!this.active) layer.invalidate(false);\n }\n\n if (!this.active || this.startPoint === null || this.shape === null) return;\n\n switch (this.shapeSelect) {\n case \"square\": {\n (this.shape).w = Math.abs(endPoint.x - this.startPoint.x);\n (this.shape).h = Math.abs(endPoint.y - this.startPoint.y);\n this.shape.refPoint = new GlobalPoint(\n Math.min(this.startPoint.x, endPoint.x),\n Math.min(this.startPoint.y, endPoint.y),\n );\n break;\n }\n case \"circle\": {\n (this.shape).r = endPoint.subtract(this.startPoint).length();\n break;\n }\n case \"paint-brush\": {\n (this.shape)._points.push(endPoint);\n break;\n }\n case \"draw-polygon\": {\n this.ruler!.endPoint = endPoint;\n break;\n }\n }\n\n if (!(this.shape instanceof Polygon)) {\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: true });\n if (this.shape.visionObstruction) gameStore.recalculateVision(true);\n }\n layer.invalidate(false);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.shape === null || this.shape instanceof Polygon) return;\n if (!event.altKey && this.useGrid) {\n this.shape.resizeToGrid();\n }\n this.finaliseShape();\n }\n onContextMenu(event: MouseEvent) {\n if (!this.active || this.shape === null || !(this.shape instanceof Polygon)) return;\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n layer.removeShape(this.ruler!, false);\n this.ruler = null;\n this.finaliseShape();\n }\n\n private finaliseShape() {\n if (this.shape === null) return;\n if (this.shape.visionObstruction) gameStore.recalculateVision();\n if (this.shape.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: false });\n this.active = false;\n }\n\n onSelect() {\n const layer = this.getLayer();\n if (layer === undefined) return;\n this.brushHelper = new Circle(new GlobalPoint(-1000, -1000), this.brushSize / 2, this.fillColour);\n this.setupBrush();\n layer.addShape(this.brushHelper, false); // during mode change the shape is already added\n }\n onDeselect() {\n const layer = this.getLayer();\n if (this.brushHelper !== null && layer !== undefined) layer.removeShape(this.brushHelper, false);\n if (this.active && layer !== undefined && this.shape !== null) {\n layer.removeShape(this.shape, true, false);\n this.shape = null;\n this.active = false;\n layer.invalidate(false);\n }\n }\n\n private pushBrushBack() {\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n if (this.brushHelper !== null) layer.removeShape(this.brushHelper, false);\n this.brushHelper = new Circle(new GlobalPoint(-1000, -1000), this.brushSize / 2, this.fillColour);\n this.setupBrush();\n layer.addShape(this.brushHelper, false); // during mode change the shape is already added\n }\n}\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2lx, g2ly, l2g } from \"@/game/units\";\n\nexport class Line extends Shape {\n type = \"line\";\n endPoint: GlobalPoint;\n lineWidth: number;\n constructor(\n startPoint: GlobalPoint,\n endPoint: GlobalPoint,\n lineWidth?: number,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, \"rgba(0, 0, 0, 0)\", strokeColour || \"#000\", uuid);\n this.endPoint = endPoint;\n this.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n x2: this.endPoint.x,\n y2: this.endPoint.y,\n line_width: this.lineWidth,\n });\n }\n get points() {\n return [[this.refPoint.x, this.refPoint.y], [this.endPoint.x, this.endPoint.y]];\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(\n new GlobalPoint(Math.min(this.refPoint.x, this.endPoint.x), Math.min(this.refPoint.y, this.endPoint.y)),\n Math.abs(this.refPoint.x - this.endPoint.x),\n Math.abs(this.refPoint.y - this.endPoint.y),\n );\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.strokeStyle = this.strokeColour;\n ctx.beginPath();\n ctx.moveTo(g2lx(this.refPoint.x), g2ly(this.refPoint.y));\n ctx.lineTo(g2lx(this.endPoint.x), g2ly(this.endPoint.y));\n ctx.lineWidth = this.lineWidth;\n ctx.stroke();\n }\n contains(point: GlobalPoint): boolean {\n return false; // TODO\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {} // TODO\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this.refPoint = l2g(point);\n else this.endPoint = l2g(point);\n }\n}\n","// import \"./class-component-hooks\";\n\nimport axios, { AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Router from \"vue-router\";\n\nVue.use(Router);\n\nimport AssetManager from \"@/assetManager/manager.vue\";\nimport Login from \"@/auth/login.vue\";\nimport Logout from \"@/auth/logout\";\nimport LoadComponent from \"@/core/components/load.vue\";\nimport Dashboard from \"@/dashboard/main.vue\";\nimport Game from \"@/game/game.vue\";\nimport Invitation from \"@/invitation/invitation\";\n\nimport { coreStore } from \"@/core/store\";\n// import { AssetManager } from \"./assetManager/assets\";\n// const AssetManager = () => import(\"./assetManager/assets\").then(m => m.AssetManager);\n\nexport const router = new Router({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes: [\n {\n path: \"/\",\n redirect: \"/dashboard\",\n },\n {\n path: \"/_load\",\n name: \"load\",\n component: LoadComponent,\n },\n {\n path: \"/assets\",\n component: AssetManager,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/auth\",\n component: { template: \"\" },\n children: [{ path: \"login\", component: Login }, { path: \"logout\", component: Logout }],\n },\n {\n path: \"/invite/:code\",\n component: Invitation,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/dashboard\",\n component: Dashboard,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/game/:creator/:room\",\n component: Game,\n meta: {\n auth: true,\n },\n },\n ],\n});\n\nrouter.beforeEach((to, from, next) => {\n if (!coreStore.initialized && to.path !== \"/_load\") {\n next({ path: \"/_load\" });\n axios\n .get(\"/api/auth\")\n .then((response: AxiosResponse) => {\n if (response.data.auth) {\n coreStore.setAuthenticated(true);\n coreStore.setUsername(response.data.username);\n }\n coreStore.setInitialized(true);\n router.push(to.path);\n })\n .catch(() => {\n console.error(\"Authentication check could not be fulfilled.\");\n });\n } else if (to.matched.some(record => record.meta.auth) && !coreStore.authenticated) {\n next({ path: \"/auth/login\", query: { redirect: to.path } });\n } else {\n next();\n }\n});\n","\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class Tool extends Vue {\n name = \"\";\n selected = false;\n active = false;\n get detailRight(): string {\n const rect = (this.$parent.$refs[this.name + \"-selector\"])[0].getBoundingClientRect();\n const mid = rect.left + rect.width / 2;\n\n return `${window.innerWidth - Math.min(window.innerWidth - 25, mid + 75)}px`;\n }\n get detailArrow(): string {\n const rect = (this.$parent.$refs[this.name + \"-selector\"])[0].getBoundingClientRect();\n const mid = rect.left + rect.width / 2;\n const right = Math.min(window.innerWidth - 25, mid + 75);\n return `${right - mid - 14}px`; // border width\n }\n created() {\n this.$parent.$on(\"mousedown\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseDown(event);\n });\n this.$parent.$on(\"mouseup\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseUp(event);\n });\n this.$parent.$on(\"mousemove\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseMove(event);\n });\n this.$parent.$on(\"contextmenu\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onContextMenu(event);\n });\n this.$parent.$on(\"tools-select-change\", (newValue: string, oldValue: string) => {\n if (oldValue === this.name) {\n this.selected = false;\n this.onDeselect();\n } else if (newValue === this.name) {\n this.selected = true;\n this.onSelect();\n }\n });\n }\n onSelect() {}\n onDeselect() {}\n onMouseDown(event: MouseEvent) {}\n onMouseUp(event: MouseEvent) {}\n onMouseMove(event: MouseEvent) {}\n onContextMenu(event: MouseEvent) {}\n}\n","import { render, staticRenderFns } from \"./tools.vue?vue&type=template&id=b6e1f51c&scoped=true&\"\nimport script from \"./tools.vue?vue&type=script&lang=ts&\"\nexport * from \"./tools.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6e1f51c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"main\"},on:{\"mouseleave\":_vm.mouseleave,\"wheel\":_vm.zoom}},[(_vm.showUI)?_c('menu-bar'):_vm._e(),_c('div',{attrs:{\"id\":\"board\"}},[(_vm.ready.manager)?[_c('tool-bar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],ref:\"tools\"})]:_vm._e(),_c('div',{attrs:{\"id\":\"layers\"},on:{\"mousedown\":_vm.mousedown,\"mouseup\":_vm.mouseup,\"mousemove\":_vm.mousemove,\"contextmenu\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.contextmenu($event)},\"dragover\":function($event){$event.preventDefault();},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.drop($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI && _vm.layers.length>1),expression:\"showUI && layers.length>1\"}],attrs:{\"id\":\"layerselect\"}},[_c('ul',_vm._l((_vm.layers),function(layer){return _c('li',{key:layer.name,class:{ 'layer-selected': layer === _vm.selectedLayer },on:{\"mousedown\":function($event){return _vm.selectLayer(layer)}}},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(layer))])])}),0)])],2),_c('selection-info',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],ref:\"selectionInfo\"}),_c('initiative-dialog',{ref:\"initiative\",attrs:{\"id\":\"initiativedialog\"}}),_c('note-dialog',{ref:\"note\"}),_c('label-dialog',{ref:\"labels\"}),(_vm.IS_DM || _vm.FAKE_PLAYER)?_c('dm-settings',{ref:\"dmsettings\"}):_vm._e(),_c('zoom-slider',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],attrs:{\"id\":\"zoomer\",\"height\":6,\"width\":200,\"min\":0,\"max\":1,\"interval\":0.1,\"dot-width\":8,\"dot-height\":20,\"tooltip-dir\":'bottom',\"tooltip\":'hover',\"formatter\":_vm.zoomDisplay.toFixed(1),\"slider-style\":{'border-radius': '15%'},\"bg-style\":{'background-color': '#fff', 'box-shadow': '0.5px 0.5px 3px 1px rgba(0, 0, 0, .36)'},\"process-style\":{'background-color': '#fff'}},model:{value:(_vm.zoomDisplay),callback:function ($$v) {_vm.zoomDisplay=$$v},expression:\"zoomDisplay\"}}),_c('prompt-dialog',{ref:\"prompt\"}),_c('confirm-dialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=template&id=3d0578ba&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"input-copy\"},on:{\"mouseleave\":function($event){_vm.showPopup=false}}},[_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"disabled\",\"id\":\"input-element\"},domProps:{\"value\":_vm.value}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPopup),expression:\"showPopup\"}],attrs:{\"id\":\"show-popup\"}},[_vm._v(_vm._s(_vm.popupString))]),_c('div',{attrs:{\"id\":\"copy-button\"},on:{\"click\":_vm.copy}},[_c('i',{staticClass:\"far fa-copy\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=template&id=20bfdb3e&scoped=true&\"","import { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerAsset } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly, g2lz } from \"@/game/units\";\n\nexport class Asset extends BaseRect {\n type = \"assetrect\";\n img: HTMLImageElement;\n src: string = \"\";\n constructor(img: HTMLImageElement, topleft: GlobalPoint, w: number, h: number, uuid?: string) {\n super(topleft, w, h, undefined, undefined, uuid);\n this.img = img;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n src: this.src,\n });\n }\n fromDict(data: ServerAsset) {\n super.fromDict(data);\n this.src = data.src;\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n try {\n ctx.drawImage(this.img, g2lx(this.refPoint.x), g2ly(this.refPoint.y), g2lz(this.w), g2lz(this.h));\n } catch (error) {\n console.warn(`Shape ${this.uuid} could not load the image ${this.src}`);\n }\n }\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.src,\n has_img: true,\n effects: [],\n index: Infinity,\n };\n }\n}\n","import { render, staticRenderFns } from \"./inputCopy.vue?vue&type=template&id=20bfdb3e&scoped=true&\"\nimport script from \"./inputCopy.vue?vue&type=script&lang=ts&\"\nexport * from \"./inputCopy.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20bfdb3e\",\n null\n \n)\n\nexport default component.exports","import {\n BoundingBox,\n EdgeCirculator,\n FaceCirculator,\n LineFaceCirculator,\n LocateType,\n Point,\n Sign,\n TDS,\n Triangle,\n Vertex,\n} from \"./tds\";\nimport {\n ccw,\n collinearBetween,\n cw,\n edgeInfo,\n hasInexactNegativeOrientation,\n intersection,\n orientation,\n sideOfOrientedCircle,\n xyEqual,\n} from \"./triag\";\n\nexport type Edge = [Triangle, number];\n\nexport class CDT {\n tds: TDS;\n constructor() {\n this.tds = new TDS();\n }\n insertConstraint(a: Point, b: Point) {\n const va = this.insert(a);\n const vb = this.insert(b);\n if (va !== vb) this.insertConstraintV(va, vb);\n }\n\n insertConstraintV(va: Vertex, vb: Vertex) {\n const stack = [[va, vb]];\n while (stack.length > 0) {\n const v = stack.pop()!;\n const info = edgeInfo(v[0], v[1]);\n if (info.includes) {\n this.markConstraint(info.fr!, info.i!);\n if (info.vi! !== v[1]) {\n stack.push([info.vi!, v[1]]);\n }\n continue;\n }\n const intersectionInfo = this.findIntersectedFaces(v[0], v[1]);\n if (intersectionInfo.found) {\n if (intersectionInfo.vi !== v[0] && intersectionInfo.vi !== v[1]) {\n stack.push([v[0], intersectionInfo.vi]);\n stack.push([intersectionInfo.vi, v[1]]);\n } else {\n stack.push(v);\n }\n continue;\n }\n this.triangulateHole(intersectionInfo.intersectedFaces, intersectionInfo.listAB, intersectionInfo.listBA);\n if (intersectionInfo.vi !== v[1]) {\n stack.push([intersectionInfo.vi, v[1]]);\n }\n }\n }\n\n triangulateHole(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[]) {\n const edges: Edge[] = [];\n this.triangulateHole2(intersectedFaces, listAB, listBA, edges);\n this.propagatingFlipE(edges);\n }\n\n triangulateHole2(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[], edges: Edge[]) {\n if (listAB.length > 0) {\n this.triangulateHalfHole(listAB, edges);\n this.triangulateHalfHole(listBA, edges);\n const fl = listAB[0][0];\n const fr = listBA[0][0];\n fl.neighbours[2] = fr;\n fr.neighbours[2] = fl;\n fl.constraints[2] = true;\n fr.constraints[2] = true;\n\n while (intersectedFaces.length > 0) {\n this.tds.deleteTriangle(intersectedFaces.shift()!);\n }\n }\n }\n\n triangulateHalfHole(conflictBoundaries: Edge[], edges: Edge[]) {\n let iC = 0;\n let iN: number;\n let iT: number;\n const current = () => conflictBoundaries[iC];\n const next = () => conflictBoundaries[iN];\n const tempo = () => conflictBoundaries[iT];\n\n const va = current()[0].vertices[ccw(current()[1])]!;\n iN = iC;\n ++iN;\n\n let n: Triangle;\n let n1: Triangle;\n let n2: Triangle;\n let ind: number;\n let ind1: number;\n let ind2: number;\n do {\n n1 = current()[0];\n ind1 = current()[1];\n if (n1.neighbours[ind1] !== null) {\n n = n1.neighbours[ind1]!;\n ind = cw(n.indexV(n1.vertices[cw(ind1)]!));\n n1 = n.neighbours[ind]!;\n ind1 = this.tds.mirrorIndex(n, ind);\n }\n n2 = next()[0];\n ind2 = next()[1];\n if (n2.neighbours[ind2] !== null) {\n n = n2.neighbours[ind2]!;\n ind = cw(n.indexV(n2.vertices[cw(ind2)]!));\n n2 = n.neighbours[ind]!;\n ind2 = this.tds.mirrorIndex(n, ind);\n }\n const v0 = n1.vertices[ccw(ind1)]!;\n const v1 = n1.vertices[cw(ind1)]!;\n const v2 = n2.vertices[cw(ind2)]!;\n const orient = orientation(v0.point!, v1.point!, v2.point!);\n switch (orient) {\n case Sign.RIGHT_TURN: {\n const newlf = this.tds.createTriangle(v0, v2, v1, null, null, null);\n edges.push([newlf, 2]);\n newlf.neighbours[1] = n1;\n newlf.neighbours[0] = n2;\n n1.neighbours[ind1] = newlf;\n n2.neighbours[ind2] = newlf;\n if (n1.isConstrained(ind1)) newlf.constraints[1] = true;\n if (n2.isConstrained(ind2)) newlf.constraints[0] = true;\n v0.triangle = newlf;\n v1.triangle = newlf;\n v2.triangle = newlf;\n iT = iC + 1;\n conflictBoundaries.splice(iC, 0, [newlf, 2]);\n conflictBoundaries.splice(Math.max(iT, iN), 1);\n conflictBoundaries.splice(Math.min(iT, iN), 1);\n iN = iC;\n if (v0 !== va) --iC;\n else ++iN;\n break;\n }\n case Sign.LEFT_TURN:\n case Sign.COLLINEAR: {\n ++iC;\n ++iN;\n break;\n }\n }\n } while (iN < conflictBoundaries.length);\n }\n\n findIntersectedFaces(vaa: Vertex, vbb: Vertex) {\n const aa = vaa.point!;\n const bb = vbb.point!;\n const listAB: Edge[] = [];\n const listBA: Edge[] = [];\n const intersectedFaces: Triangle[] = [];\n const lfc = new LineFaceCirculator(vaa, this, bb);\n let ind = lfc.pos!.indexV(vaa);\n let vi: Vertex;\n if (lfc.pos!.isConstrained(ind)) {\n vi = this.intersect(lfc.pos!, ind, vaa, vbb);\n return { found: true, vi, listAB, listBA, intersectedFaces };\n }\n let lf = lfc.pos!.neighbours[ccw(ind)]!;\n let rf = lfc.pos!.neighbours[cw(ind)]!;\n listAB.push([lf, lf.indexT(lfc.pos!)]);\n listBA.unshift([rf, rf.indexT(lfc.pos!)]);\n intersectedFaces.unshift(lfc.pos!);\n let previousFace = lfc.pos!;\n lfc.next();\n ind = lfc.pos!.indexT(previousFace);\n let currentVertex = lfc.pos!.vertices[ind]!;\n let done = false;\n while (currentVertex !== vbb && !done) {\n let i1: number;\n let i2: number;\n const orient = orientation(aa, bb, currentVertex.point!);\n switch (orient) {\n case Sign.COLLINEAR: {\n done = true;\n break;\n }\n case Sign.LEFT_TURN:\n case Sign.RIGHT_TURN: {\n if (orient === Sign.LEFT_TURN) {\n i1 = ccw(ind);\n i2 = cw(ind);\n } else {\n i1 = cw(ind);\n i2 = ccw(ind);\n }\n if (lfc.pos!.isConstrained(i1)) {\n vi = this.intersect(lfc.pos!, i1, vaa, vbb);\n return { found: true, vi, listAB, listBA, intersectedFaces };\n } else {\n lf = lfc.pos!.neighbours[i2]!;\n intersectedFaces.unshift(lfc.pos!);\n if (orient === Sign.LEFT_TURN) listAB.push([lf, lf.indexT(lfc.pos!)]);\n else listBA.unshift([lf, lf.indexT(lfc.pos!)]);\n previousFace = lfc.pos!;\n lfc.next();\n ind = lfc.pos!.indexT(previousFace);\n currentVertex = lfc.pos!.vertices[ind]!;\n }\n break;\n }\n }\n }\n vi = currentVertex;\n intersectedFaces.unshift(lfc.pos!);\n lf = lfc.pos!.neighbours[cw(ind)]!;\n listAB.push([lf, lf.indexT(lfc.pos!)]);\n rf = lfc.pos!.neighbours[ccw(ind)]!;\n listBA.unshift([rf, rf.indexT(lfc.pos!)]);\n return { found: false, vi, listAB, listBA, intersectedFaces };\n }\n\n intersect(t: Triangle, i: number, vaa: Vertex, vbb: Vertex): Vertex {\n const vcc = t.vertices[cw(i)]!;\n const vdd = t.vertices[ccw(i)]!;\n const pa = vaa.point!;\n const pb = vbb.point!;\n const pc = vcc.point!;\n const pd = vdd.point!;\n let pi = intersection(pa, pb, pc, pd);\n if (pi !== pa && pi !== pb && pi !== pc && pi !== pd) {\n const bbox = new BoundingBox(pi!);\n bbox.dilate(4);\n if (bbox.overlaps(new BoundingBox(pa))) pi = pa;\n if (bbox.overlaps(new BoundingBox(pb))) pi = pb;\n if (bbox.overlaps(new BoundingBox(pc))) pi = pc;\n if (bbox.overlaps(new BoundingBox(pd))) pi = pd;\n }\n let vi: Vertex;\n if (pi === null) throw new Error(\"what\");\n else {\n this.removeConstrainedEdge(t, i);\n vi = this.insert(pi, t);\n }\n\n if (vi !== vcc && vi !== vdd) {\n this.insertConstraintV(vcc, vi);\n this.insertConstraintV(vi, vdd);\n } else {\n this.insertConstraintV(vcc, vdd);\n }\n return vi;\n }\n\n removeConstrainedEdge(t: Triangle, i: number) {\n t.constraints[i] = false;\n if (this.tds.dimension === 2) t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = false;\n }\n\n updateConstraintsOpposite(v: Vertex) {\n let t = v.triangle!;\n const start = t;\n let indf: number;\n do {\n indf = t.indexV(v);\n if (t.neighbours[indf]!.constraints[this.tds.mirrorIndex(t, indf)]) t.constraints[indf] = true;\n else t.constraints[indf] = false;\n t = t.neighbours[ccw(indf)]!;\n } while (t !== start);\n }\n\n markConstraint(t: Triangle, i: number) {\n if (this.tds.dimension === 1) t.constraints[2] = true;\n else {\n t.constraints[i] = true;\n t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = true;\n }\n }\n\n insert(p: Point, start: Triangle | null = null) {\n const locateInfo = this.locate(p, this.iLocate(p, start));\n const va = this.insertb(p, locateInfo.loc, locateInfo.lt, locateInfo.li);\n this.flipAround(va);\n return va;\n }\n\n flipAround(v: Vertex) {\n if (this.tds.dimension <= 1) return;\n let t = v.triangle!;\n let i: number;\n let next: Triangle;\n const start = t;\n do {\n i = t.indexV(v);\n next = t.neighbours[ccw(i)]!;\n this.propagatingFlip(t, i);\n t = next;\n } while (next !== start);\n }\n\n propagatingFlip(t: Triangle, i: number, depth = 0) {\n if (!this.isFlipable(t, i)) return;\n const maxDepth = 100;\n if (depth === maxDepth) {\n throw new Error(\"maxde\");\n return;\n }\n const ni = t.neighbours[i]!;\n this.flip(t, i);\n this.propagatingFlip(t, i, depth + 1);\n i = ni.indexV(t.vertices[i]!);\n this.propagatingFlip(ni, i, depth + 1);\n }\n\n lessEdge(e1: Edge, e2: Edge) {\n const ind1 = e1[1];\n const ind2 = e2[1];\n return e1[0].uid < e2[0].uid || (e1[0].uid === e2[0].uid && ind1 < ind2);\n }\n\n propagatingFlipE(edges: Edge[]) {\n let eI = 0;\n let t: Triangle;\n let i: number;\n let eni: Edge;\n const edgeSet: Edge[] = [];\n while (eI < edges.length) {\n t = edges[eI][0];\n i = edges[eI][1];\n if (this.isFlipable(t, i)) {\n eni = [t.neighbours[i]!, this.tds.mirrorIndex(t, i)];\n if (this.lessEdge(edges[eI], eni)) edgeSet.push(edges[eI]);\n else edgeSet.push(eni);\n }\n ++eI;\n }\n let indf: number;\n let ni: Triangle;\n let indn: number;\n let ei: Edge;\n const e: (Edge | null)[] = [null, null, null, null];\n while (edgeSet.length > 0) {\n t = edgeSet[0][0];\n indf = edgeSet[0][1];\n ni = t.neighbours[indf]!;\n indn = this.tds.mirrorIndex(t, indf);\n ei = [t, indf];\n edgeSet.splice(edgeSet.findIndex(ed => ed[0] === ei[0] && ed[1] === ei[1]), 1);\n e[0] = [t, cw(indf)];\n e[1] = [t, ccw(indf)];\n e[2] = [ni, cw(indn)];\n e[3] = [ni, ccw(indn)];\n\n for (const edge of e) {\n const tt = edge![0];\n const ii = edge![1];\n eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)];\n if (this.lessEdge(edge!, eni))\n edgeSet.splice(edgeSet.findIndex(ed => ed[0] === edge![0] && ed[1] === edge![1]), 1);\n else edgeSet.splice(edgeSet.findIndex(ed => ed[0] === eni[0] && ed[1] === eni[1]), 1);\n }\n\n this.flip(t, indf);\n\n for (const edge of e) {\n const tt = edge![0];\n const ii = edge![1];\n if (this.isFlipable(tt, ii)) {\n eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)];\n if (this.lessEdge(edge!, eni)) edgeSet.push(edge!);\n else edgeSet.push(eni);\n }\n }\n }\n }\n\n flip(t: Triangle, i: number) {\n const u = t.neighbours[i]!;\n const j = this.tds.mirrorIndex(t, i);\n const t1 = t.neighbours[cw(i)]!;\n const i1 = this.tds.mirrorIndex(t, cw(i));\n const t2 = t.neighbours[ccw(i)]!;\n const i2 = this.tds.mirrorIndex(t, ccw(i));\n const t3 = u.neighbours[cw(j)]!;\n const i3 = this.tds.mirrorIndex(u, cw(j));\n const t4 = u.neighbours[ccw(j)]!;\n const i4 = this.tds.mirrorIndex(u, ccw(j));\n this.tds.flip(t, i);\n t.constraints[t.indexT(u)] = false;\n u.constraints[u.indexT(t)] = false;\n t1.neighbours[i1]!.constraints[this.tds.mirrorIndex(t1, i1)] = t1.constraints[i1];\n t2.neighbours[i2]!.constraints[this.tds.mirrorIndex(t2, i2)] = t2.constraints[i2];\n t3.neighbours[i3]!.constraints[this.tds.mirrorIndex(t3, i3)] = t3.constraints[i3];\n t4.neighbours[i4]!.constraints[this.tds.mirrorIndex(t4, i4)] = t4.constraints[i4];\n }\n\n isFlipable(t: Triangle, i: number, perturb = true) {\n const ni = t.neighbours[i]!;\n if (t.isInfinite() || ni.isInfinite()) return false;\n if (t.constraints[i]) return false;\n return sideOfOrientedCircle(ni, t.vertices[i]!.point!, perturb) === Sign.ON_POSITIVE_SIDE;\n }\n\n insertb(a: Point, loc: Triangle | null, lt: LocateType, li: number): Vertex {\n let insertInConstrainedEdge = false;\n let v1: Vertex;\n let v2: Vertex;\n if (lt === LocateType.EDGE && loc!.isConstrained(li)) {\n insertInConstrainedEdge = true;\n v1 = loc!.vertices[ccw(li)]!;\n v2 = loc!.vertices[cw(li)]!;\n }\n const va = this.insertc(a, loc, lt, li);\n if (insertInConstrainedEdge) this.updateConstraintsIncident(va, v1!, v2!);\n else if (lt !== LocateType.VERTEX) this.clearConstraintsIncident(va);\n if (this.tds.dimension === 2) this.updateConstraintsOpposite(va);\n return va;\n }\n\n updateConstraintsIncident(va: Vertex, c1: Vertex, c2: Vertex) {\n if (this.tds.dimension === 0) return;\n if (this.tds.dimension === 1) {\n const ec = new EdgeCirculator(va, null);\n do {\n ec.t!.constraints[2] = true;\n } while (ec.next());\n } else {\n const fc = new FaceCirculator(va, null);\n do {\n const indf = fc.t!.indexV(va);\n const cwi = cw(indf);\n const ccwi = ccw(indf);\n if (fc.t!.vertices[cwi] === c1 || fc.t!.vertices[cwi] === c2) {\n fc.t!.constraints[ccwi] = true;\n fc.t!.constraints[cwi] = false;\n } else {\n fc.t!.constraints[ccwi] = false;\n fc.t!.constraints[cwi] = true;\n }\n } while (fc.next());\n }\n }\n\n clearConstraintsIncident(v: Vertex) {\n const ec = new EdgeCirculator(v, null);\n if (ec.valid) {\n do {\n const t = ec.t!;\n const indf = ec.ri;\n t.constraints[indf] = false;\n if (this.tds.dimension === 2) t.neighbours[indf]!.constraints[this.tds.mirrorIndex(t, indf)] = false;\n } while (ec.next());\n }\n }\n\n insertc(p: Point, loc: Triangle | null, lt: LocateType, li: number): Vertex {\n if (this.tds.vertices.length === 1) {\n return this.insertFirst(p);\n } else if (this.tds.vertices.length === 2) {\n if (lt === LocateType.VERTEX) return this.tds.finiteVertex;\n else return this.insertSecond(p);\n }\n switch (lt) {\n case LocateType.VERTEX: {\n return loc!.vertices[li]!;\n }\n case LocateType.OUTSIDE_AFFINE_HULL: {\n return this.insertOutsideAffineHull(p);\n }\n case LocateType.OUTSIDE_CONVEX_HULL: {\n return this.insertOutsideConvexHull(p, loc!);\n }\n case LocateType.EDGE: {\n return this.insertInEdge(p, loc!, li);\n }\n case LocateType.FACE: {\n return this.insertInFace(p, loc!);\n }\n }\n throw new Error(\"qwe\");\n return new Vertex();\n }\n\n insertInEdge(p: Point, loc: Triangle, li: number): Vertex {\n const v = this.tds.insertInEdge(loc, li);\n v.point = p;\n return v;\n }\n\n insertInFace(p: Point, loc: Triangle): Vertex {\n const v = this.tds.insertInFace(loc);\n v.point = p;\n return v;\n }\n\n insertFirst(p: Point): Vertex {\n const v = this.tds.insertDimUp();\n v.point = p;\n return v;\n }\n\n insertSecond(p: Point): Vertex {\n const v = this.tds.insertDimUp(this.tds._infinite, true);\n v.point = p;\n return v;\n }\n\n insertOutsideAffineHull(p: Point): Vertex {\n let conform = false;\n if (this.tds.dimension === 1) {\n const t = this.tds.finiteEdge.first!;\n const orient = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p);\n conform = orient === Sign.COUNTERCLOCKWISE;\n }\n const v = this.tds.insertDimUp(this.tds._infinite, conform);\n v.point = p;\n return v;\n }\n\n insertOutsideConvexHull(p: Point, t: Triangle): Vertex {\n let v: Vertex;\n if (this.tds.dimension === 1) {\n throw new Error(\"sdfasdasd\");\n } else {\n v = this.insertOutsideConvexHull2(p, t);\n }\n v.point = p;\n return v;\n }\n\n insertOutsideConvexHull2(p: Point, t: Triangle): Vertex {\n let li = t.indexV(this.tds._infinite);\n const ccwlist: Triangle[] = [];\n const cwlist: Triangle[] = [];\n let fc = new FaceCirculator(this.tds._infinite, t);\n let done = false;\n while (!done) {\n fc.prev();\n li = fc.t!.indexV(this.tds._infinite);\n const q = fc.t!.vertices[ccw(li)]!.point!;\n const r = fc.t!.vertices[cw(li)]!.point!;\n if (orientation(p, q, r) === Sign.LEFT_TURN) ccwlist.push(fc.t!);\n else done = true;\n }\n fc = new FaceCirculator(this.tds._infinite, t);\n done = false;\n while (!done) {\n fc.next();\n li = fc.t!.indexV(this.tds._infinite);\n const q = fc.t!.vertices[ccw(li)]!.point!;\n const r = fc.t!.vertices[cw(li)]!.point!;\n if (orientation(p, q, r) === Sign.LEFT_TURN) cwlist.push(fc.t!);\n else done = true;\n }\n const v = this.tds.insertInFace(t);\n v.point = p;\n let th;\n while (ccwlist.length > 0) {\n th = ccwlist[0];\n li = ccw(th.indexV(this.tds._infinite));\n this.tds.flip(th, li);\n ccwlist.shift();\n }\n while (cwlist.length > 0) {\n th = cwlist[0];\n li = cw(th.indexV(this.tds._infinite));\n this.tds.flip(th, li);\n cwlist.shift();\n }\n fc = new FaceCirculator(v, null);\n while (!fc.t!.isInfinite()) fc.next();\n this.tds._infinite.triangle = fc.t!;\n return v;\n }\n\n locate(p: Point, start: Triangle | null) {\n let lt = 0;\n let li = 0;\n if (this.tds.dimension < 0) {\n lt = LocateType.OUTSIDE_AFFINE_HULL;\n li = 4;\n return { loc: null, lt, li };\n } else if (this.tds.dimension === 0) {\n if (xyEqual(p, this.tds.finiteVertex.triangle!.vertices[0]!.point!)) {\n lt = LocateType.VERTEX;\n } else {\n lt = LocateType.OUTSIDE_AFFINE_HULL;\n }\n li = 4;\n return { loc: null, lt, li };\n } else if (this.tds.dimension === 1) {\n return this.marchLocate1D(p);\n }\n if (start === null) {\n const t = this.tds._infinite.triangle!;\n start = t.neighbours[t.indexV(this.tds._infinite)]!;\n } else if (start.isInfinite()) {\n start = start.neighbours[start.indexV(this.tds._infinite)]!;\n }\n return this.marchLocate2D(start, p);\n }\n\n marchLocate1D(p: Point) {\n const ff = this.tds._infinite.triangle!;\n const iv = ff.indexV(this.tds._infinite);\n const t = ff.neighbours[iv]!;\n const pqt = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p);\n if (pqt === Sign.RIGHT_TURN || pqt === Sign.LEFT_TURN) {\n return { loc: new Triangle(), lt: LocateType.OUTSIDE_AFFINE_HULL, li: 4 };\n }\n const i = t.indexT(ff);\n if (collinearBetween(p, t.vertices[1 - i]!.point!, t.vertices[i]!.point!))\n return { loc: ff, lt: LocateType.OUTSIDE_CONVEX_HULL, li: iv };\n\n if (xyEqual(p, t.vertices[1 - i]!.point!)) return { loc: t, lt: LocateType.VERTEX, li: 1 - i };\n throw new Error(\"sdfsdf\");\n }\n\n marchLocate2D(c: Triangle, p: Point) {\n let prev = null;\n let first = true;\n let lt: LocateType | undefined;\n let li: number | undefined;\n while (true) {\n if (c.isInfinite()) {\n return { loc: c, lt: LocateType.OUTSIDE_CONVEX_HULL, li: c.indexV(this.tds._infinite) };\n }\n const leftFirst = 0; // Math.round(Math.random());\n const p0 = c.vertices[0]!.point!;\n const p1 = c.vertices[1]!.point!;\n const p2 = c.vertices[2]!.point!;\n let o0: Sign;\n let o1: Sign;\n let o2: Sign;\n if (first) {\n prev = c;\n first = false;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n } else if (leftFirst) {\n if (c.neighbours[0]! === prev) {\n prev = c;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o1 = Sign.POSITIVE;\n } else if (c.neighbours[1]! === prev) {\n prev = c;\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o2 = Sign.POSITIVE;\n } else {\n prev = c;\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o0 = Sign.POSITIVE;\n }\n } else {\n if (c.neighbours[0] === prev) {\n prev = c;\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = Sign.POSITIVE;\n } else if (c.neighbours[1] === prev) {\n prev = c;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = Sign.POSITIVE;\n } else {\n prev = c;\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o0 = Sign.POSITIVE;\n }\n }\n const sum =\n (o0 === Sign.COLLINEAR ? 1 : 0) + (o1 === Sign.COLLINEAR ? 1 : 0) + (o2 === Sign.COLLINEAR ? 1 : 0);\n switch (sum) {\n case 0: {\n lt = LocateType.FACE;\n li = 4;\n break;\n }\n case 1: {\n lt = LocateType.EDGE;\n li = o0 === Sign.COLLINEAR ? 2 : o1 === Sign.COLLINEAR ? 0 : 1;\n break;\n }\n case 2: {\n lt = LocateType.VERTEX;\n li = o0 !== Sign.COLLINEAR ? 2 : o1 !== Sign.COLLINEAR ? 0 : 1;\n break;\n }\n }\n if (lt === undefined || li === undefined) throw new Error(\"ert\");\n return { loc: c, lt, li };\n }\n }\n\n iLocate(p: Point, start: Triangle | null) {\n if (this.tds.dimension < 2) return start;\n if (start === null) {\n const t = this.tds._infinite.triangle!;\n start = t.neighbours[t.indexV(this.tds._infinite)];\n } else if (start.isInfinite()) {\n start = start.neighbours[start.indexV(this.tds._infinite)];\n }\n let prev = null;\n let c = start!;\n let first = true;\n let nTurns = 2500;\n while (true) {\n if (!nTurns--) return c;\n if (c.isInfinite()) return c;\n const p0 = c.vertices[0]!.point!;\n const p1 = c.vertices[1]!.point!;\n const p2 = c.vertices[2]!.point!;\n if (first) {\n prev = c;\n first = false;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n } else {\n if (c.neighbours[0] === prev) {\n prev = c;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n } else if (c.neighbours[1] === prev) {\n prev = c;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n } else {\n prev = c;\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n }\n }\n break;\n }\n return c;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=script&lang=ts&\"","import { GlobalPoint } from \"@/game/geom\";\nimport { GridLayer } from \"@/game/layers/grid\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { Asset } from \"@/game/shapes/asset\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { l2gx, l2gy, l2gz } from \"@/game/units\";\n\nclass LayerManager {\n layers: Layer[] = [];\n width = window.innerWidth;\n height = window.innerHeight;\n\n UUIDMap: Map = new Map();\n\n // Refresh interval and redraw setter.\n interval = 30;\n\n constructor() {\n requestAnimationFrame(this.drawLoop);\n }\n\n reset() {\n this.layers = [];\n this.UUIDMap = new Map();\n }\n\n drawLoop = () => {\n for (let i = this.layers.length - 1; i >= 0; i--) {\n this.layers[i].draw();\n }\n requestAnimationFrame(this.drawLoop);\n };\n\n setWidth(width: number): void {\n this.width = width;\n for (const layer of this.layers) {\n layer.canvas.width = width;\n layer.width = width;\n }\n }\n\n setHeight(height: number): void {\n this.height = height;\n for (const layer of this.layers) {\n layer.canvas.height = height;\n layer.height = height;\n }\n }\n\n addLayer(layer: Layer): void {\n this.layers.push(layer);\n if (!gameStore.IS_DM && !layer.playerEditable) return;\n if (layer.selectable) gameStore.addLayer(layer.name);\n }\n\n hasLayer(name: string): boolean {\n return this.layers.some(l => l.name === name);\n }\n\n getLayer(name?: string) {\n name = name === undefined ? gameStore.selectedLayer : name;\n for (const layer of this.layers) {\n if (layer.name === name) return layer;\n }\n }\n\n selectLayer(name: string, sync: boolean = true): void {\n let found = false;\n for (const layer of this.layers) {\n if (!layer.selectable) continue;\n if (found && layer.name !== \"fow\") layer.ctx.globalAlpha = 0.3;\n else layer.ctx.globalAlpha = 1.0;\n\n if (name === layer.name) {\n gameStore.selectLayer({ name, sync });\n found = true;\n }\n\n layer.clearSelection();\n layer.invalidate(true);\n }\n }\n\n getGridLayer(): GridLayer | undefined {\n return this.getLayer(\"grid\");\n }\n\n hasSelection() {\n const selection = this.getSelection();\n return selection !== undefined && selection.length > 0;\n }\n\n // THIS INCLUDES POTENTIALLY THE SelectTool.SelectionHelper !!!\n getSelection() {\n const layer = this.getLayer();\n if (layer === undefined) return undefined;\n return layer.selection;\n }\n\n invalidate(): void {\n for (let i = this.layers.length - 1; i >= 0; i--) {\n this.layers[i].invalidate(true);\n }\n }\n\n invalidateLight() {\n for (let i = this.layers.length - 1; i >= 0; i--)\n if (this.layers[i].isVisionLayer) this.layers[i].invalidate(true);\n }\n\n dropAsset(event: DragEvent) {\n const layer = this.getLayer();\n if (layer === undefined || event === null || event.dataTransfer === null) return;\n const image = document.createElement(\"img\");\n image.src = event.dataTransfer.getData(\"text/plain\");\n const asset = new Asset(\n image,\n new GlobalPoint(l2gx(event.clientX), l2gy(event.clientY)),\n l2gz(image.width),\n l2gz(image.height),\n );\n asset.src = new URL(image.src).pathname;\n\n if (gameStore.useGrid) {\n const gs = gameStore.gridSize;\n asset.refPoint = new GlobalPoint(\n Math.round(asset.refPoint.x / gs) * gs,\n Math.round(asset.refPoint.y / gs) * gs,\n );\n asset.w = Math.max(Math.round(asset.w / gs) * gs, gs);\n asset.h = Math.max(Math.round(asset.h / gs) * gs, gs);\n }\n\n layer.addShape(asset, true);\n }\n}\n\nexport const layerManager = new LayerManager();\n(window).lm = layerManager;\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./createtoken_modal.vue?vue&type=template&id=73816298&scoped=true&\"\nimport script from \"./createtoken_modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./createtoken_modal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73816298\",\n null\n \n)\n\nexport default component.exports","import { BoundingRect } from \"@/game/shapes/boundingrect\";\n\nexport class BoundingNode {\n bbox: BoundingRect;\n nPrimitives: number;\n children: BoundingNode[] = [];\n constructor(nPrimitives: number, bbox: BoundingRect) {\n this.nPrimitives = nPrimitives;\n this.bbox = bbox;\n }\n}\n\nexport class LeafNode extends BoundingNode {\n firstPrimOffset: number;\n constructor(first: number, n: number, bbox: BoundingRect) {\n super(n, bbox);\n this.firstPrimOffset = first;\n }\n}\n\nexport class InteriorNode extends BoundingNode {\n dimension: number;\n constructor(dimension: number, c1: BoundingNode, c2: BoundingNode) {\n super(0, c1.bbox.union(c2.bbox));\n this.dimension = dimension;\n this.children.push(c1);\n this.children.push(c2);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=script&lang=ts&\"","import Tools from \"@/game/ui/tools/tools.vue\";\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { ServerAura } from '@/game/comm/types/shapes';\nimport { EventBus } from \"@/game/event-bus\";\nimport { Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\n\nexport function onKeyUp(event: KeyboardEvent) {\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {\n } else {\n if (event.key === \"Delete\" || event.key === \"Del\" || event.key === \"Backspace\") {\n if (layerManager.getLayer === undefined) {\n console.log(\"No active layer selected for delete operation\");\n return;\n }\n const l = layerManager.getLayer()!;\n for (let i = l.selection.length - 1; i >= 0; i--) {\n const sel = l.selection[i];\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) {\n l.selection.splice(i, 1);\n continue;\n }\n l.removeShape(sel, true, false);\n EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n EventBus.$emit(\"Initiative.Remove\", sel.uuid);\n }\n }\n }\n}\n\nexport function onKeyDown(event: KeyboardEvent) {\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {\n if (event.keyCode === 65 && event.ctrlKey) event.target!.select();\n } else {\n if (event.keyCode >= 37 && event.keyCode <= 40) {\n // todo: this should already be rounded\n const gridSize = Math.round(gameStore.gridSize);\n let offsetX = gridSize * (event.keyCode % 2);\n let offsetY = gridSize * (event.keyCode % 2 ? 0 : 1);\n if (layerManager.hasSelection()) {\n const selection = layerManager.getSelection()!;\n offsetX *= event.keyCode <= 38 ? -1 : 1;\n offsetY *= event.keyCode <= 38 ? -1 : 1;\n let delta = new Vector(offsetX, offsetY);\n if (!event.shiftKey || !gameStore.IS_DM) {\n // First check for collisions. Using the smooth wall slide collision check used on mouse move is overkill here.\n for (const sel of selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) continue;\n delta = calculateDelta(delta, sel);\n }\n }\n for (const sel of selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) continue;\n sel.refPoint = sel.refPoint.add(delta);\n // todo: Fix again\n // if (sel.refPoint.x % gridSize !== 0 || sel.refPoint.y % gridSize !== 0) sel.snapToGrid();\n socket.emit(\"Shape.Position.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n gameStore.recalculateVision();\n layerManager.getLayer()!.invalidate(false);\n } else {\n // The pan offsets should be in the opposite direction to give the correct feel.\n gameStore.increasePanX(offsetX * (event.keyCode <= 38 ? 1 : -1));\n gameStore.increasePanY(offsetY * (event.keyCode <= 38 ? 1 : -1));\n layerManager.invalidate();\n sendClientOptions();\n }\n } else if (event.keyCode === 68) {\n const layer = layerManager.getLayer();\n if (layer) {\n layer.clearSelection();\n layer.invalidate(true);\n }\n } else if (event.key === \"u\" && event.ctrlKey) {\n event.preventDefault();\n event.stopPropagation();\n gameStore.toggleUI();\n } else if (event.key === \"c\" && event.ctrlKey) {\n const layer = layerManager.getLayer();\n if (!layer) return;\n if (!layer.selection) return;\n const clipboard = [];\n for (const shape of layer.selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === shape.uuid) continue;\n clipboard.push(shape.asDict());\n }\n gameStore.setClipboard(clipboard);\n } else if (event.key === \"v\" && event.ctrlKey) {\n const layer = layerManager.getLayer();\n if (!layer) return;\n if (!gameStore.clipboard) return;\n layer.selection = [];\n for (const clip of gameStore.clipboard) {\n clip.x += 10;\n clip.y += 10;\n clip.uuid = uuidv4();\n const oldTrackers = clip.trackers;\n clip.trackers = [];\n for (const tracker of oldTrackers) {\n const newTracker: Tracker = {\n ...tracker,\n uuid: uuidv4()\n }\n clip.trackers.push(newTracker);\n }\n const oldAuras = clip.auras;\n clip.auras = [];\n for (const aura of oldAuras) {\n const newAura: ServerAura = {\n ...aura,\n uuid: uuidv4()\n }\n clip.auras.push(newAura);\n }\n const shape = createShapeFromDict(clip);\n if (shape === undefined) continue;\n layer.addShape(shape, true);\n layer.selection.push(shape);\n }\n if (layer.selection.length === 1) EventBus.$emit(\"SelectionInfo.Shape.Set\", layer.selection[0]);\n else EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n layer.invalidate(false);\n }\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n\nimport ShapeContext from \"@/game/ui/selection/shapecontext.vue\";\nimport CreateTokenModal from \"@/game/ui/tools/createtoken_modal.vue\";\nimport DrawTool from \"@/game/ui/tools/draw.vue\";\nimport FilterTool from \"@/game/ui/tools/filter.vue\";\nimport MapTool from \"@/game/ui/tools/map.vue\";\nimport PanTool from \"@/game/ui/tools/pan\";\nimport SelectTool from \"@/game/ui/tools/select.vue\";\nimport VisionTool from \"@/game/ui/tools/vision.vue\";\n\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameManager } from \"@/game/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { RulerTool } from \"@/game/ui/tools/ruler\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component({\n components: {\n \"select-tool\": SelectTool,\n \"pan-tool\": PanTool,\n \"draw-tool\": DrawTool,\n \"ruler-tool\": RulerTool,\n \"map-tool\": MapTool,\n \"filter-tool\": FilterTool,\n \"vision-tool\": VisionTool,\n \"shape-menu\": ShapeContext,\n \"createtoken-dialog\": CreateTokenModal,\n },\n watch: {\n currentTool(newValue, oldValue) {\n this.$emit(\"tools-select-change\", newValue, oldValue);\n },\n },\n})\nexport default class Tools extends Vue {\n $refs!: {\n selectTool: InstanceType;\n };\n\n currentTool = \"Select\";\n tools = [\"Select\", \"Pan\", \"Draw\", \"Ruler\", \"Map\", \"Filter\", \"Vision\"];\n dmTools = [\"Map\"];\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n get currentToolComponent(): string {\n return `${this.currentTool.toLowerCase()}-tool`;\n }\n\n get visibleTools(): string[] {\n return this.tools.filter(t => (!this.dmTools.includes(t) || this.IS_DM));\n }\n\n toolVisible(tool: string): boolean {\n if (tool === 'Filter') {\n return Object.keys(gameStore.labels).length > 0;\n } else if (tool === 'Vision') {\n return gameStore.ownedtokens.length > 1;\n }\n return true;\n }\n\n mousedown(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if (event.button === 1) {\n targetTool = \"Pan\";\n } else if (event.button !== 0) {\n return;\n }\n\n this.$emit(\"mousedown\", event, targetTool);\n }\n mouseup(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if (event.button === 1) {\n targetTool = \"Pan\";\n } else if (event.button !== 0) {\n return;\n }\n\n this.$emit(\"mouseup\", event, targetTool);\n }\n mousemove(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if ((event.buttons & 4) !== 0) {\n targetTool = \"Pan\";\n } else if ((event.button & 1) > 1) {\n return;\n }\n\n this.$emit(\"mousemove\", event, targetTool);\n\n // Annotation hover\n let found = false;\n for (const uuid of gameStore.annotations) {\n if (layerManager.UUIDMap.has(uuid) && layerManager.hasLayer(\"draw\")) {\n const shape = layerManager.UUIDMap.get(uuid)!;\n if (shape.contains(l2g(getMouse(event)))) {\n found = true;\n gameManager.annotationManager.setActiveText(shape.annotation);\n }\n }\n }\n if (!found && gameManager.annotationManager.shown) {\n gameManager.annotationManager.setActiveText(\"\");\n }\n }\n mouseleave(event: MouseEvent) {\n // When leaving the window while a mouse is pressed down, act as if it was released\n if ((event.buttons & 1) !== 0) {\n this.$emit(\"mouseup\", event, this.currentTool);\n }\n }\n contextmenu(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n if (event.button !== 2 || (event.target).tagName !== \"CANVAS\") return;\n this.$emit(\"contextmenu\", event, this.currentTool);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class Prompt extends Vue {\n $refs!: {\n answer: HTMLElement;\n };\n\n visible = false;\n question = \"\";\n answer = \"\";\n title = \"\";\n\n resolve = (value: string) => {};\n reject = () => {};\n\n submit() {\n this.resolve(this.answer);\n this.close();\n }\n close() {\n this.reject();\n this.visible = false;\n this.question = \"\";\n this.answer = \"\";\n this.title = \"\";\n }\n prompt(question: string, title: string): Promise {\n this.question = question;\n this.title = title;\n this.visible = true;\n this.$nextTick(() => {\n this.$refs.answer.focus();\n });\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&id=b102d41e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&id=b102d41e&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(_vm._s(_vm.message))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=template&id=ff095222&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=script&lang=ts&\"","import { GlobalPoint, Point, Ray, Vector } from \"@/game/geom\";\nimport { g2lx, g2ly } from \"../units\";\n\nexport class BoundingRect {\n readonly w: number;\n readonly h: number;\n readonly topLeft: GlobalPoint;\n readonly topRight: GlobalPoint;\n readonly botRight: GlobalPoint;\n readonly botLeft: GlobalPoint;\n\n constructor(topleft: GlobalPoint, w: number, h: number) {\n this.w = w;\n this.h = h;\n this.topLeft = topleft;\n this.topRight = new GlobalPoint(topleft.x + w, topleft.y);\n this.botRight = new GlobalPoint(topleft.x + w, topleft.y + h);\n this.botLeft = new GlobalPoint(topleft.x, topleft.y + h);\n }\n\n contains(point: GlobalPoint): boolean {\n return (\n this.topLeft.x <= point.x &&\n this.topRight.x >= point.x &&\n this.topLeft.y <= point.y &&\n this.botLeft.y >= point.y\n );\n }\n\n get points() {\n if (this.w === 0 || this.h === 0) return [[this.topLeft.x, this.topLeft.y]];\n return [\n [this.topLeft.x, this.topLeft.y],\n [this.botLeft.x, this.botLeft.y],\n [this.botRight.x, this.botRight.y],\n [this.topRight.x, this.topRight.y],\n ];\n }\n\n offset(vector: Vector): BoundingRect {\n return new BoundingRect(this.topLeft.add(vector), this.w, this.h);\n }\n\n union(other: BoundingRect): BoundingRect {\n const xmin = Math.min(this.topLeft.x, other.topLeft.x);\n const xmax = Math.max(this.topRight.x, other.topRight.x);\n const ymin = Math.min(this.topLeft.y, other.topLeft.y);\n const ymax = Math.max(this.botLeft.y, other.botLeft.y);\n return new BoundingRect(new GlobalPoint(xmin, ymin), xmax - xmin, ymax - ymin);\n }\n\n getDiagCorner(botright: boolean) {\n return botright ? this.botRight : this.topLeft;\n }\n\n intersectsWith(other: BoundingRect): boolean {\n return !(\n other.topLeft.x > this.topRight.x ||\n other.topRight.x < this.topLeft.x ||\n other.topLeft.y > this.botLeft.y ||\n other.botLeft.y < this.topLeft.y\n );\n }\n\n intersectsWithInner(other: BoundingRect): boolean {\n return !(\n other.topLeft.x >= this.topRight.x ||\n other.topRight.x <= this.topLeft.x ||\n other.topLeft.y >= this.botLeft.y ||\n other.botLeft.y <= this.topLeft.y\n );\n }\n\n intersectP(ray: Ray, invDir: Vector, dirIsNeg: boolean[]) {\n let txmin = invDir.x * (this.getDiagCorner(dirIsNeg[0]).x - ray.origin!.x);\n let txmax = invDir.x * (this.getDiagCorner(!dirIsNeg[0]).x - ray.origin!.x);\n const tymin = invDir.y * (this.getDiagCorner(dirIsNeg[1]).y - ray.origin!.y);\n const tymax = invDir.y * (this.getDiagCorner(!dirIsNeg[1]).y - ray.origin!.y);\n if (txmin > tymax || tymin > txmax) return { hit: false, min: txmin, max: txmax };\n if (tymin > txmin) txmin = tymin;\n if (tymax < txmax) txmax = tymax;\n return { hit: txmin < ray.tMax! && txmax > 0, min: txmin, max: txmax };\n }\n\n center(): GlobalPoint {\n return this.topLeft.add(new Vector(this.w / 2, this.h / 2));\n }\n\n getMaxExtent() {\n return this.w > this.h ? 0 : 1;\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n const coreVisible = !(\n g2lx(this.topLeft.x) > canvas.width ||\n g2ly(this.topLeft.y) > canvas.height ||\n g2lx(this.topRight.x) < 0 ||\n g2ly(this.botRight.y) < 0\n );\n if (coreVisible) return true;\n return false;\n }\n}\n","/*\nThis module defines some Point classes.\nA strong focus is made to ensure that at no time a global and a local point are mixed up with each other.\nAt first glance this adds weird looking hacks as ts does not support nominal typing.\n*/\n\nexport function getPointDistance(p1: Point, p2: Point) {\n const a = p1.x - p2.x;\n const b = p1.y - p2.y;\n return Math.sqrt(a * a + b * b);\n}\n\nexport class Point {\n readonly x: number;\n readonly y: number;\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n static fromArray(point: number[]) {\n return new Point(point[0], point[1]);\n }\n add(vec: Vector) {\n return new Point(this.x + vec.x, this.y + vec.y);\n }\n subtract(other: Point) {\n return new Vector(this.x - other.x, this.y - other.y);\n }\n clone(): Point {\n return new Point(this.x, this.y);\n }\n get(dimension: 0 | 1) {\n if (dimension === 0) return this.x;\n return this.y;\n }\n asArray(): number[] {\n return [this.x, this.y];\n }\n}\nexport class GlobalPoint extends Point {\n // This is to differentiate with LocalPoint, is actually never used\n // We do ! to prevent errors that it never gets initialized\n // tslint:disable-next-line:variable-name\n _GlobalPoint!: string;\n add(vec: Vector): GlobalPoint {\n return super.add(vec);\n }\n subtract(other: GlobalPoint): Vector {\n return super.subtract(other);\n }\n clone(): GlobalPoint {\n return super.clone();\n }\n static fromArray(point: number[]) {\n return new GlobalPoint(point[0], point[1]);\n }\n}\n\nexport class LocalPoint extends Point {\n // This is to differentiate with GlobalPoint, is actually never used\n // We do ! to prevent errors that it never gets initialized\n // tslint:disable-next-line:variable-name\n _LocalPoint!: string;\n add(vec: Vector): LocalPoint {\n return super.add(vec);\n }\n subtract(other: LocalPoint): Vector {\n return super.subtract(other);\n }\n clone(): LocalPoint {\n return super.clone();\n }\n}\n\nexport class Vector {\n readonly x: number;\n readonly y: number;\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n dot(other: Vector): number {\n return this.x * other.x + this.y * other.y;\n }\n inverse(): Vector {\n return new Vector(this.x === 0 ? 0 : 1 / this.x, this.y === 0 ? 0 : 1 / this.y);\n }\n length(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));\n }\n normalize(): Vector {\n const l = this.length();\n return new Vector(this.x / l, this.y / l);\n }\n reverse(): Vector {\n return new Vector(-this.x, -this.y);\n }\n multiply(scale: number): Vector {\n return new Vector(this.x * scale, this.y * scale);\n }\n angle(): number {\n return (Math.atan2(this.y, this.x) * 180) / Math.PI;\n }\n}\n\nexport class Ray {\n readonly direction: Vector;\n readonly origin: T;\n tMax: number;\n constructor(origin: T, direction: Vector, tMax?: number) {\n this.direction = direction;\n this.origin = origin;\n if (tMax === undefined) tMax = Infinity;\n this.tMax = tMax;\n }\n static fromPoints(p1: T, p2: T): Ray {\n const vec = new Vector(p2.x - p1.x, p2.y - p1.y);\n let maxT;\n if (Math.abs(vec.x) > 0.01) maxT = (p2.x - p1.x) / vec.x;\n else maxT = (p2.y - p1.y) / vec.y;\n return new Ray(p1, vec, maxT);\n }\n get(t: number): T {\n return new Point(this.origin.x + t * this.direction.x, this.origin.y + t * this.direction.y);\n }\n getDistance(t1: number, t2: number) {\n return Math.sqrt(Math.pow(t2 - t1, 2) * (Math.pow(this.direction.x, 2) + Math.pow(this.direction.y, 2)));\n }\n getT(t1: number, distance: number) {\n return t1 + Math.sqrt(Math.pow(distance, 2) / (Math.pow(this.direction.x, 2) + Math.pow(this.direction.y, 2)));\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_vm._l((_vm.folders),function(folder){return _c('li',{key:folder,staticClass:\"folder\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle($event)}}},[_vm._v(\"\\n \"+_vm._s(folder)+\"\\n \"),_c('asset-node',{attrs:{\"asset\":_vm.asset[folder]}})],1)}),_vm._l((_vm.files),function(file){return _c('li',{key:file.name,staticClass:\"file draggable token\",attrs:{\"draggable\":\"true\"},on:{\"mouseover\":function($event){_vm.showImage = file.hash},\"mouseout\":function($event){_vm.showImage = null},\"dragstart\":function($event){return _vm.dragStart($event, '/static/assets/' + file.hash)}}},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \"),(_vm.showImage == file.hash)?_c('div',{staticClass:\"preview\"},[_c('img',{staticClass:\"asset-preview-image\",attrs:{\"src\":'/static/assets/' + file.hash}})]):_vm._e()])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=template&id=6d718094&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=style&index=0&id=62228cde&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=style&index=0&id=62228cde&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport vueSlider from \"vue-slider-component\";\n\nimport \"@/game/api/events\";\n\nimport { throttle } from \"lodash\";\nimport { mapGetters, mapState } from \"vuex\";\n\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport Initiative from \"@/game/ui/initiative.vue\";\nimport LabelManager from \"@/game/ui/labels.vue\";\nimport MenuBar from \"@/game/ui/menu/menu.vue\";\nimport NoteDialog from \"@/game/ui/note.vue\";\nimport SelectionInfo from \"@/game/ui/selection/selection_info.vue\";\nimport Tools from \"@/game/ui/tools/tools.vue\";\n\nimport { createConnection, socket } from \"@/game/api/socket\";\nimport { onKeyDown, onKeyUp } from \"@/game/events/keyboard\";\nimport { scrollZoom } from \"@/game/events/mouse\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { LocalPoint } from \"./geom\";\nimport DmSettings from \"./ui/dmsettings.vue\";\n\n@Component({\n components: {\n \"tool-bar\": Tools,\n \"selection-info\": SelectionInfo,\n \"prompt-dialog\": Prompt,\n \"confirm-dialog\": ConfirmDialog,\n \"menu-bar\": MenuBar,\n \"initiative-dialog\": Initiative,\n \"zoom-slider\": vueSlider,\n \"note-dialog\": NoteDialog,\n \"label-dialog\": LabelManager,\n \"dm-settings\": DmSettings,\n },\n beforeRouteEnter(to, from, next) {\n createConnection(to);\n next();\n },\n beforeRouteLeave(to, from, next) {\n socket.disconnect();\n next();\n },\n})\nexport default class Game extends Vue {\n $refs!: {\n confirm: InstanceType;\n tools: InstanceType;\n };\n\n ready = {\n manager: false,\n tools: false,\n };\n\n get showUI(): boolean {\n return gameStore.showUI;\n }\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n get FAKE_PLAYER(): boolean {\n return gameStore.FAKE_PLAYER;\n }\n\n get layers(): string[] {\n return gameStore.layers;\n }\n\n get selectedLayer(): string {\n return gameStore.selectedLayer;\n }\n\n get zoomDisplay(): number {\n return gameStore.zoomDisplay;\n }\n\n set zoomDisplay(value: number) {\n gameStore.updateZoom({\n newZoomDisplay: value,\n zoomLocation: l2g(new LocalPoint(window.innerWidth / 2, window.innerHeight / 2)),\n });\n }\n\n mounted() {\n window.addEventListener(\"resize\", this.resizeWindow);\n window.addEventListener(\"keyup\", onKeyUp);\n window.addEventListener(\"keydown\", onKeyDown);\n this.ready.manager = true;\n }\n\n destroyed() {\n window.removeEventListener(\"resize\", this.resizeWindow);\n window.removeEventListener(\"keyup\", onKeyUp);\n window.removeEventListener(\"keydown\", onKeyDown);\n this.ready.manager = false;\n }\n\n // Window events\n\n zoom(event: WheelEvent) {\n throttle(scrollZoom)(event);\n }\n\n resizeWindow() {\n layerManager.setWidth(window.innerWidth);\n layerManager.setHeight(window.innerHeight);\n layerManager.invalidate();\n }\n\n // Mouse events\n\n mousedown(event: MouseEvent) {\n this.$refs.tools.mousedown(event);\n }\n mouseup(event: MouseEvent) {\n this.$refs.tools.mouseup(event);\n }\n mousemove(event: MouseEvent) {\n this.$refs.tools.mousemove(event);\n }\n mouseleave(event: MouseEvent) {\n this.$refs.tools.mouseleave(event);\n }\n contextmenu(event: MouseEvent) {\n this.$refs.tools.contextmenu(event);\n }\n selectLayer(layer: string) {\n layerManager.selectLayer(layer);\n }\n drop(event: DragEvent) {\n if (event === null || event.dataTransfer === null) return;\n if (event.dataTransfer.files.length > 0) {\n this.$refs.confirm\n .open(\"Uploading files should be done through the asset manager.\", \"Ok\", \"\")\n .then(() => {}, () => {});\n } else if (event.dataTransfer.getData(\"text/plain\") === \"\") {\n return;\n } else {\n layerManager.dropAsset(event);\n }\n }\n}\n","import { GlobalPoint, LocalPoint, Ray } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nexport function g2l(obj: GlobalPoint): LocalPoint {\n const z = gameStore.zoomFactor;\n const panX = gameStore.panX;\n const panY = gameStore.panY;\n return new LocalPoint((obj.x + panX) * z, (obj.y + panY) * z);\n}\n\nexport function g2lx(x: number) {\n return g2l(new GlobalPoint(x, 0)).x;\n}\n\nexport function g2ly(y: number) {\n return g2l(new GlobalPoint(0, y)).y;\n}\n\nexport function g2lz(z: number) {\n return z * gameStore.zoomFactor;\n}\n\nexport function getUnitDistance(r: number) {\n return (r / gameStore.unitSize) * gameStore.gridSize;\n}\n\nexport function g2lr(r: number) {\n return g2lz(getUnitDistance(r));\n}\n\nexport function l2g(obj: LocalPoint): GlobalPoint;\nexport function l2g(obj: Ray): Ray;\nexport function l2g(obj: LocalPoint | Ray): GlobalPoint | Ray {\n const z = gameStore.zoomFactor;\n const panX = gameStore.panX;\n const panY = gameStore.panY;\n if (obj instanceof LocalPoint) {\n return new GlobalPoint(obj.x / z - panX, obj.y / z - panY);\n } else {\n return new Ray(l2g(obj.origin), obj.direction.multiply(1 / z), obj.tMax);\n }\n}\n\nexport function l2gx(x: number) {\n return l2g(new LocalPoint(x, 0)).x;\n}\n\nexport function l2gy(y: number) {\n return l2g(new LocalPoint(0, y)).y;\n}\n\nexport function l2gz(z: number) {\n return z / gameStore.zoomFactor;\n}\n\nexport function l2gr(r: number) {\n return l2gz(getUnitDistance(r));\n}\n\n(window).g2lx = g2lx;\n(window).g2ly = g2ly;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport AssetNode from \"@/game/ui/menu/asset_node.vue\";\nimport NoteDialog from \"@/game/ui/note.vue\";\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { gameStore } from \"@/game/store\";\nimport { EventBus } from \"../../event-bus\";\n\n@Component({\n components: {\n \"color-picker\": ColorPicker,\n \"asset-node\": AssetNode,\n },\n computed: {\n ...mapState(\"game\", [\"locations\", \"assets\", \"notes\"]),\n },\n})\nexport default class MenuBar extends Vue {\n visible = {\n settings: false,\n locations: false,\n };\n\n get IS_DM(): boolean {\n return gameStore.IS_DM || gameStore.FAKE_PLAYER;\n }\n get gridColour(): string {\n return gameStore.gridColour;\n }\n set gridColour(value: string) {\n gameStore.setGridColour({ colour: value, sync: true });\n }\n get fowColour(): string {\n return gameStore.fowColour;\n }\n set fowColour(value: string) {\n gameStore.setFOWColour({ colour: value, sync: true });\n }\n get rulerColour(): string {\n return gameStore.rulerColour;\n }\n set rulerColour(value: string) {\n gameStore.setRulerColour({ colour: value, sync: true });\n }\n settingsClick(event: { target: HTMLElement }) {\n if (event.target.classList.contains(\"menu-accordion\")) {\n event.target.classList.toggle(\"menu-accordion-active\");\n const next = event.target.nextElementSibling;\n if (next !== null) next.style.display = next.style.display === \"\" ? \"block\" : \"\";\n }\n }\n changeLocation(name: string) {\n socket.emit(\"Location.Change\", name);\n }\n createLocation() {\n getRef(\"prompt\")\n .prompt(`New location name:`, `Create new location`)\n .then(\n (value: string) => {\n socket.emit(\"Location.New\", value);\n },\n () => {},\n );\n }\n createNote() {\n const note = { title: \"New note\", text: \"\", uuid: uuidv4() };\n gameStore.newNote({ note, sync: true });\n this.openNote(note);\n }\n openNote(note: Note) {\n getRef(\"note\").open(note);\n }\n\n openDmSettings() {\n EventBus.$emit(\"DmSettings.Open\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=script&lang=ts&\"","import { CDT } from \"./cdt\";\nimport { ccw, cw, orientation, ulp } from \"./triag\";\n\nexport type Point = number[];\n\nexport const INFINITE = -7e310;\n\nlet _INFINITE_VERTEX: Vertex;\n\nexport enum Sign {\n NEGATIVE = -1,\n ZERO = 0,\n POSITIVE = 1,\n\n RIGHT_TURN = -1,\n LEFT_TURN = 1,\n\n SMALLER = -1,\n EQUAL = 0,\n LARGER = 1,\n\n CLOCKWISE = -1,\n COUNTERCLOCKWISE = 1,\n\n COLLINEAR = 0,\n COPLANAR = 0,\n DEGENERATE = 0,\n\n ON_NEGATIVE_SIDE = -1,\n ON_ORIENTED_BOUNDARY = 0,\n ON_POSITIVE_SIDE = 1,\n}\n\nenum LineFaceState {\n UNDEFINED = -1,\n VERTEX_VERTEX = 0,\n VERTEX_EDGE = 1,\n EDGE_VERTEX = 2,\n EDGE_EDGE = 3,\n}\n\nfunction newPoint(): Point {\n return [INFINITE, INFINITE];\n}\n\nexport class Triangle {\n vertices: (Vertex | null)[] = [];\n neighbours: (Triangle | null)[] = [null, null, null];\n constraints = [false, false, false];\n static _counter = 0;\n uid = Triangle._counter++;\n\n constructor(...vertices: (Vertex | null)[]) {\n this.vertices = vertices;\n }\n\n from(t: Triangle): this {\n this.vertices = t.vertices.slice(0, t.vertices.length);\n this.neighbours = t.neighbours.slice(0, t.neighbours.length);\n this.constraints = t.constraints.slice(0, t.constraints.length);\n return this;\n }\n\n get dimension() {\n return this.vertices.length - 1;\n }\n\n addVertex(vertex: Vertex) {\n if (vertex === undefined) {\n console.log(\"UNDEFINED HIERE\");\n }\n this.vertices.push(vertex);\n vertex.triangle = this;\n }\n\n isConstrained(index: number): boolean {\n return this.constraints[index];\n }\n\n reorient() {\n // If certain indices do not exist yet thay will append faulty undefined's, thus we slice them\n this.vertices = [this.vertices[1], this.vertices[0], this.vertices[2]].slice(0, this.vertices.length);\n this.neighbours = [this.neighbours[1], this.neighbours[0], this.neighbours[2]];\n this.constraints = [this.constraints[1], this.constraints[0], this.constraints[2]];\n }\n\n indexV(v: Vertex): number {\n return this.vertices.indexOf(v);\n }\n\n indexT(t: Triangle): number {\n return this.neighbours.indexOf(t);\n }\n\n isInfinite(index?: number): boolean {\n if (index === undefined) {\n return this.vertices.includes(_INFINITE_VERTEX);\n } else {\n return this.vertices[ccw(index)]!.infinite || this.vertices[cw(index)]!.infinite;\n }\n }\n\n contains(point: Point) {\n const A =\n -this.vertices[1]!.point![1] * this.vertices[2]!.point![0] +\n this.vertices[0]!.point![1] * (-this.vertices[1]!.point![0] + this.vertices[2]!.point![0]) +\n this.vertices[0]!.point![0] * (this.vertices[1]!.point![1] - this.vertices[2]!.point![1]) +\n this.vertices[1]!.point![0] * this.vertices[2]!.point![1];\n const sign = A < 0 ? -1 : 1;\n const s =\n (this.vertices[0]!.point![1] * this.vertices[2]!.point![0] -\n this.vertices[0]!.point![0] * this.vertices[2]!.point![1] +\n (this.vertices[2]!.point![1] - this.vertices[0]!.point![1]) * point[0] +\n (this.vertices[0]!.point![0] - this.vertices[2]!.point![0]) * point[1]) *\n sign;\n if (s < 0) return false;\n const t =\n (this.vertices[0]!.point![0] * this.vertices[1]!.point![1] -\n this.vertices[0]!.point![1] * this.vertices[1]!.point![0] +\n (this.vertices[0]!.point![1] - this.vertices[1]!.point![1]) * point[0] +\n (this.vertices[1]!.point![0] - this.vertices[0]!.point![0]) * point[1]) *\n sign;\n\n return t > 0 && s + t < A * sign;\n }\n}\n\nexport class Vertex {\n infinite = false;\n private _point: Point | undefined;\n triangle: Triangle | undefined;\n\n constructor(point?: Point) {\n this._point = point;\n }\n\n get point(): Point | undefined {\n return this._point;\n }\n\n set point(point: Point | undefined) {\n this._point = point;\n this.infinite = false;\n }\n}\n\nexport class EdgeCirculator {\n ri: number;\n v: Vertex | null;\n t: Triangle | null;\n _ri: number;\n _v: Vertex | null;\n _t: Triangle | null;\n\n constructor(v: Vertex | null, t: Triangle | null) {\n this.v = v;\n this.t = t;\n if (v === null) {\n this.t = null;\n } else if (t === null) {\n this.t = v.triangle!;\n }\n if (this.t == null || this.t.dimension < 1) {\n this.ri = 0;\n this.v = null;\n this.t = null;\n } else {\n const i = this.t.indexV(v!);\n if (this.t.dimension === 2) this.ri = ccw(i);\n else this.ri = 2;\n }\n this._ri = this.ri;\n this._v = this.v;\n this._t = this.t;\n }\n\n get valid() {\n return this.t !== null && this.v !== null;\n }\n\n next(): boolean {\n let i = this.t!.indexV(this.v!);\n if (this.t!.dimension === 1) {\n this.t = this.t!.neighbours[i === 0 ? 1 : 0];\n } else {\n this.t = this.t!.neighbours[ccw(i)];\n i = this.t!.indexV(this.v!);\n this.ri = ccw(i);\n }\n return this.ri !== this._ri || this.v !== this._v || this.t !== this._t;\n }\n}\n\nexport class EdgeIterator {\n private i = 0;\n pos: Triangle | null;\n edge: Edge = new Edge();\n tds: TDS;\n _es = 0;\n constructor(tds: TDS) {\n this.tds = tds;\n this.edge.second = 0;\n if (tds.dimension <= 0) {\n this.pos = null;\n return;\n }\n this.pos = tds.triangles[0];\n if (tds.dimension === 1) this.edge.second = 2;\n while (this.pos !== null && !this.associatedEdge()) {\n throw new Error(\"[poi\");\n }\n\n if (tds.dimension === 1) this._es = 2;\n }\n\n get valid(): boolean {\n return (this.pos !== null || this._es !== this.edge.second) && this.pos!.isInfinite(this.edge.second);\n }\n\n next() {\n do {\n this.increment();\n } while (this.pos !== null && !this.associatedEdge());\n }\n\n collect(): Edge {\n this.edge.first = this.pos;\n return this.edge;\n }\n\n associatedEdge(): boolean {\n if (this.tds.dimension === 1) return true;\n return (\n this.tds.triangles.indexOf(this.pos!) < this.tds.triangles.indexOf(this.pos!.neighbours[this.edge.second]!)\n );\n }\n\n increment() {\n if (this.tds.dimension === 1) {\n this.i++;\n if (this.tds.triangles.length <= this.i) this.pos = null;\n else this.pos = this.tds.triangles[this.i];\n } else if (this.edge.second === 2) {\n this.edge.second = 0;\n this.i++;\n if (this.tds.triangles.length <= this.i) this.pos = null;\n else this.pos = this.tds.triangles[this.i];\n } else {\n this.edge.second++;\n }\n }\n}\n\nexport class FaceCirculator {\n v: Vertex | null;\n t: Triangle | null;\n _v: Vertex | null;\n _t: Triangle | null;\n\n constructor(v: Vertex | null, t: Triangle | null) {\n this.v = v;\n this.t = t;\n if (v === null) {\n this.t = null;\n } else if (t === null) {\n this.t = v.triangle!;\n }\n if (this.t == null || this.t.dimension < 2) {\n this.v = null;\n this.t = null;\n }\n this._v = this.v;\n this._t = this.t;\n }\n\n get valid() {\n return this.t !== null && this.v !== null;\n }\n\n prev() {\n const i = this.t!.indexV(this.v!);\n this.t = this.t!.neighbours[cw(i)];\n }\n\n next(): boolean {\n const i = this.t!.indexV(this.v!);\n this.t = this.t!.neighbours[ccw(i)];\n return this.v !== this._v || this.t !== this._t;\n }\n}\n\nexport class LineFaceCirculator {\n private i = 0;\n pos: Triangle | null = null;\n _tr: CDT;\n s: LineFaceState = LineFaceState.UNDEFINED;\n p: Point;\n q: Point;\n\n constructor(v: Vertex, tr: CDT, dir: Point) {\n this._tr = tr;\n this.p = v.point!;\n this.q = dir;\n\n const fc = new FaceCirculator(v, null);\n let ic = fc.t!.indexV(v);\n let vt = fc.t!.vertices[cw(ic)]!;\n while (v === _INFINITE_VERTEX || orientation(this.p, this.q, vt.point!) !== Sign.LEFT_TURN) {\n fc.next();\n ic = fc.t!.indexV(v);\n vt = fc.t!.vertices[cw(ic)]!;\n if (!fc.valid) {\n return;\n }\n }\n\n let vr = fc.t!.vertices[ccw(ic)]!;\n let pqr: Sign = Sign.RIGHT_TURN;\n // tslint:disable:no-conditional-assignment\n while (vr !== _INFINITE_VERTEX && (pqr = orientation(this.p, this.q, vr.point!)) === Sign.LEFT_TURN) {\n fc.prev();\n ic = fc.t!.indexV(v);\n vr = fc.t!.vertices[ccw(ic)]!;\n }\n\n ic = fc.t!.indexV(v);\n vt = fc.t!.vertices[cw(ic)]!;\n\n if (vr === _INFINITE_VERTEX) {\n fc.prev();\n ic = fc.t!.indexV(v);\n vr = fc.t!.vertices[ccw(ic)]!;\n pqr = orientation(this.p, this.q, vr.point!);\n switch (pqr) {\n case Sign.RIGHT_TURN:\n case Sign.COLLINEAR: {\n fc.next();\n ic = fc.t!.indexV(_INFINITE_VERTEX);\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ic;\n break;\n }\n case Sign.LEFT_TURN: {\n break;\n }\n }\n } else if (pqr === Sign.COLLINEAR) {\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ccw(ic);\n } else {\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_EDGE;\n this.i = ic;\n }\n }\n\n next() {\n this.increment();\n }\n\n increment() {\n let o: Sign;\n if (this.s === LineFaceState.VERTEX_VERTEX || this.s === LineFaceState.EDGE_VERTEX) {\n do {\n const n = this.pos!.neighbours[cw(this.i)]!;\n this.i = n.indexT(this.pos!);\n this.pos = n;\n if (this.pos!.vertices[this.i] === _INFINITE_VERTEX) {\n o = Sign.COLLINEAR;\n this.i = cw(this.i);\n break;\n }\n o = orientation(this.p, this.q, this.pos!.vertices[this.i]!.point!);\n this.i = cw(this.i);\n } while (o === Sign.LEFT_TURN);\n if (o === Sign.COLLINEAR) {\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ccw(this.i);\n } else {\n this.s = LineFaceState.VERTEX_EDGE;\n }\n } else {\n const n = this.pos!.neighbours[this.i]!;\n const ni = n.indexT(this.pos!);\n this.pos = n;\n o =\n this.pos!.vertices[ni]! === _INFINITE_VERTEX\n ? Sign.COLLINEAR\n : orientation(this.p, this.q, this.pos!.vertices[ni]!.point!);\n switch (o) {\n case Sign.LEFT_TURN: {\n this.s = LineFaceState.EDGE_EDGE;\n this.i = ccw(ni);\n break;\n }\n case Sign.RIGHT_TURN: {\n this.s = LineFaceState.EDGE_EDGE;\n this.i = cw(ni);\n break;\n }\n default: {\n this.s = LineFaceState.EDGE_VERTEX;\n this.i = ni;\n }\n }\n }\n }\n}\n\nclass Edge {\n first: Triangle | null = null;\n second: number = 0;\n}\n\nexport enum LocateType {\n VERTEX,\n EDGE,\n FACE,\n OUTSIDE_CONVEX_HULL,\n OUTSIDE_AFFINE_HULL,\n}\n\nexport class TDS {\n dimension = -1;\n vertices: Vertex[] = [];\n triangles: Triangle[] = [];\n _infinite: Vertex;\n\n constructor() {\n this._infinite = this.createVertex();\n _INFINITE_VERTEX = this._infinite;\n const t = new Triangle();\n t.addVertex(this._infinite);\n this.triangles.push(t);\n }\n\n createVertex(): Vertex {\n const v = this.infiniteVertex;\n if (v === undefined) {\n console.log(\"UNDEFINED HIERE\");\n }\n this.vertices.push(v);\n return v;\n }\n\n createTriangle(\n v0: Vertex | null,\n v1: Vertex | null,\n v2: Vertex | null,\n n0: Triangle | null,\n n1: Triangle | null,\n n2: Triangle | null,\n ) {\n const t = new Triangle(v0, v1, v2);\n t.neighbours[0] = n0;\n t.neighbours[1] = n1;\n t.neighbours[2] = n2;\n this.triangles.push(t);\n return t;\n }\n\n deleteTriangle(trig: Triangle) {\n this.triangles = this.triangles.filter(t => t !== trig);\n }\n\n setAdjacency(t0: Triangle, i0: number, t1: Triangle, i1: number) {\n t0.neighbours[i0] = t1;\n t1.neighbours[i1] = t0;\n }\n\n get finiteVertex(): Vertex {\n return this.vertices[1];\n }\n\n get infiniteVertex(): Vertex {\n const v = new Vertex(newPoint());\n v.infinite = true;\n return v;\n }\n\n get finiteEdge(): Edge {\n if (this.dimension < 1) throw new Error(\"aspo\");\n const ei = new EdgeIterator(this);\n while (ei.valid) ei.next();\n return ei.collect();\n }\n\n insertDimUp(w: Vertex = new Vertex(), orient: boolean = true): Vertex {\n const v = this.createVertex();\n this.dimension++;\n let t1: Triangle;\n let t2: Triangle;\n switch (this.dimension) {\n case 0: {\n t1 = this.triangles[0];\n t2 = new Triangle(v);\n this.triangles.push(t2);\n this.setAdjacency(t1, 0, t2, 0);\n v.triangle = t2;\n break;\n }\n case 1:\n case 2: {\n const deleteList: Triangle[] = [];\n const triangles = this.triangles.slice(0, this.triangles.length);\n for (const trig of triangles) {\n const copy = new Triangle().from(trig);\n this.triangles.push(copy);\n trig.vertices[this.dimension] = v;\n copy.vertices[this.dimension] = w;\n this.setAdjacency(trig, this.dimension, copy, this.dimension);\n if (trig.vertices.includes(w)) deleteList.push(copy);\n }\n for (const trig of triangles) {\n const neighbour = trig.neighbours[this.dimension];\n for (let j = 0; j < this.dimension; ++j) {\n neighbour!.neighbours[j] = trig.neighbours[j]!.neighbours[this.dimension];\n }\n }\n\n let lfit = 0;\n if (this.dimension === 1) {\n if (orient) {\n triangles[lfit].reorient();\n lfit++;\n triangles[lfit].neighbours[1]!.reorient();\n } else {\n triangles[lfit].neighbours[1]!.reorient();\n lfit++;\n triangles[lfit].reorient();\n }\n } else {\n for (const trig of triangles) {\n if (orient) trig.neighbours[2]!.reorient();\n else trig.reorient();\n }\n }\n\n for (const trig of deleteList) {\n let j = 1;\n if (trig.vertices[0] === w) j = 0;\n t1 = trig.neighbours[this.dimension]!;\n const i1 = this.mirrorIndex(trig, this.dimension);\n t2 = trig.neighbours[j]!;\n const i2 = this.mirrorIndex(trig, j);\n this.setAdjacency(t1, i1, t2, i2);\n this.deleteTriangle(trig);\n }\n v.triangle = triangles[0];\n break;\n }\n default: {\n throw new Error(\"Dimension unknown\");\n }\n }\n return v;\n }\n\n mirrorIndex(t: Triangle, i: number): number {\n if (t.dimension === 1) {\n const j = t.neighbours[i]!.indexV(t.vertices[i === 0 ? 1 : 0]!);\n return j === 0 ? 1 : 0;\n }\n return ccw(t.neighbours[i]!.indexV(t.vertices[ccw(i)]!));\n }\n\n insertInFace(t: Triangle) {\n const v = this.createVertex();\n const v0 = t.vertices[0]!;\n const v1 = t.vertices[1]!;\n const v2 = t.vertices[2]!;\n const n1 = t.neighbours[1]!;\n const n2 = t.neighbours[2]!;\n const t1 = this.createTriangle(v0, v, v2, t, n1, null);\n const t2 = this.createTriangle(v0, v1, v, t, null, n2);\n this.setAdjacency(t1, 2, t2, 1);\n if (n1 !== null) {\n const i1 = this.mirrorIndex(t, 1);\n n1.neighbours[i1] = t1;\n }\n if (n2 !== null) {\n const i2 = this.mirrorIndex(t, 2);\n n2.neighbours[i2] = t2;\n }\n t.vertices[0] = v;\n t.neighbours[1] = t1;\n t.neighbours[2] = t2;\n if (v0.triangle === t) v0.triangle = t2;\n v.triangle = t;\n return v;\n }\n\n flip(t: Triangle, i: number) {\n const n = t.neighbours[i]!;\n const ni = this.mirrorIndex(t, i);\n const vCW = t.vertices[cw(i)]!;\n const vCCW = t.vertices[ccw(i)]!;\n const tr = t.neighbours[ccw(i)]!;\n const tri = this.mirrorIndex(t, ccw(i));\n const bl = n.neighbours[ccw(ni)]!;\n const bli = this.mirrorIndex(n, ccw(ni));\n\n t.vertices[cw(i)] = n.vertices[ni]!;\n n.vertices[cw(ni)] = t.vertices[i]!;\n\n this.setAdjacency(t, i, bl, bli);\n this.setAdjacency(t, ccw(i), n, ccw(ni));\n this.setAdjacency(n, ni, tr, tri);\n\n if (vCW.triangle! === t) vCW.triangle = n;\n if (vCCW.triangle! === n) vCCW.triangle = t;\n }\n\n insertInEdge(t: Triangle, i: number) {\n let v: Vertex;\n if (this.dimension === 1) {\n v = this.createVertex();\n const ff = t.neighbours[0]!;\n const vv = t.vertices[1]!;\n const g = this.createTriangle(v, vv, null, ff, t, null);\n t.vertices[1] = v;\n t.neighbours[0] = g;\n ff.neighbours[1] = g;\n v.triangle = g;\n vv.triangle = ff;\n } else {\n const n = t.neighbours[i]!;\n const ni = this.mirrorIndex(t, i);\n v = this.insertInFace(t);\n this.flip(n, ni);\n }\n return v;\n }\n}\n\nexport class BoundingBox {\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n constructor(p: Point) {\n this.x1 = p[0];\n this.y1 = p[1];\n this.x2 = p[0];\n this.y2 = p[1];\n }\n\n dilate(dist: number) {\n this.x1 -= dist * ulp(this.x1);\n this.y1 -= dist * ulp(this.y1);\n this.x2 += dist * ulp(this.x2);\n this.y2 += dist * ulp(this.y2);\n }\n\n overlaps(other: BoundingBox): boolean {\n if (this.x2 < other.x1 || other.x2 < this.x1) return false;\n if (this.y2 < other.y1 || other.y2 < this.y1) return false;\n return true;\n }\n}\n","import { partition } from \"@/core/utils\";\nimport { GlobalPoint, Ray } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly, g2lz } from \"@/game/units\";\nimport { BoundingNode, InteriorNode, LeafNode } from \"@/game/visibility/bvh/node\";\n\ninterface BuildInfo {\n index: number;\n bbox: BoundingRect;\n center: BoundingRect;\n}\ninterface LinearBHVNode {\n bbox: BoundingRect;\n nPrimitives: number;\n}\ninterface LinearLeafNode extends LinearBHVNode {\n primitivesOffset: number;\n}\ninterface LinearInternalNode extends LinearBHVNode {\n secondChildOffset: number;\n dimension: number;\n}\n\nexport class BoundingVolume {\n totalNodes = 0;\n buildData: BuildInfo[] = [];\n shapes: string[];\n orderedPrims: string[] = [];\n root: BoundingNode | null;\n nodes: LinearBHVNode[] = [];\n\n offset = 0;\n\n constructor(shapes: string[]) {\n this.shapes = shapes;\n if (this.shapes.length === 0) {\n this.root = null;\n this.nodes = [];\n return;\n }\n for (let i = 0; i < shapes.length; i++) {\n const shape = layerManager.UUIDMap.get(shapes[i])!;\n this.buildData.push({\n index: i,\n bbox: shape.getBoundingBox(),\n center: new BoundingRect(shape.center(), 0, 0),\n });\n }\n this.root = this.recursiveBuild(0, shapes.length);\n this.compact();\n }\n\n draw() {\n const ctx = layerManager.getLayer(\"draw\")!.ctx;\n for (const node of this.nodes) {\n const b = node.bbox;\n ctx.strokeRect(g2lx(b.topLeft.x), g2ly(b.topLeft.y), g2lz(b.w), g2lz(b.h));\n }\n }\n\n recursiveBuild(start: number, end: number): BoundingNode {\n this.totalNodes++;\n let bbox = this.buildData[start].bbox;\n for (let i = start + 1; i < end; i++) bbox = bbox.union(this.buildData[i].bbox);\n const nPrimitives = end - start;\n if (nPrimitives === 1) {\n return this.createLeaf(start, end, nPrimitives, bbox);\n } else {\n let centroidBbox = this.buildData[start].center;\n for (let i = start; i < end; i++) centroidBbox = centroidBbox.union(this.buildData[i].center);\n const dimension = centroidBbox.getMaxExtent();\n if (centroidBbox.botRight.get(dimension) === centroidBbox.topLeft.get(dimension)) {\n return this.createLeaf(start, end, nPrimitives, bbox);\n }\n // Use shitty Middle thingy until an introselect js algo is added\n const pMid = 0.5 * (centroidBbox.topLeft.get(dimension) + centroidBbox.botRight.get(dimension));\n const partitionedData = partition(\n this.buildData.slice(start, end),\n (n: BuildInfo) => n.center.center().get(dimension) < pMid,\n );\n const flattened = ([]).concat.apply([], partitionedData);\n if (partitionedData[0].length === 0 || partitionedData[1].length === 0) console.log(\"EMPTY\");\n this.buildData.splice(start, flattened.length, ...flattened);\n const mid = partitionedData[0].length + start;\n return new InteriorNode(dimension, this.recursiveBuild(start, mid), this.recursiveBuild(mid, end));\n }\n }\n\n intersect(ray: Ray, stopOnFirstHit?: boolean) {\n if (this.nodes.length === 0) return { hit: false, intersect: ray.get(0), tMin: 0, tMax: ray.tMax };\n if (stopOnFirstHit === undefined) stopOnFirstHit = false;\n // Initialize return values\n let hit = false;\n let tMin = 0;\n let tMax = ray.tMax;\n\n // Initialize work variables\n let todoOffset = 0;\n let nodeNum = 0;\n const todo: number[] = [];\n\n // Precalculate intersection vectors\n const invDir = ray.direction.inverse();\n const dirIsNegative = [invDir.x < 0, invDir.y < 0];\n\n while (true) {\n const node = this.nodes[nodeNum];\n\n const i = node.bbox.intersectP(ray, invDir, dirIsNegative);\n if (i.hit) {\n if (node.nPrimitives > 0) {\n // TODO: nPrimitives is currently always 1 , this could be generalised\n // for (let i=0; i < node.nPrimitives; i++) {\n // if (this.shapes[(node).primitivesOffset + i])\n // }\n hit = true;\n tMin = ray.tMax = i.min;\n tMax = i.max;\n if (todoOffset === 0 || stopOnFirstHit) break;\n nodeNum = todo[--todoOffset];\n } else {\n if (dirIsNegative[(node).dimension]) {\n todo[todoOffset++] = nodeNum + 1;\n nodeNum = (node).secondChildOffset;\n } else {\n todo[todoOffset++] = (node).secondChildOffset;\n nodeNum++;\n }\n }\n } else {\n if (todoOffset === 0) break;\n nodeNum = todo[--todoOffset];\n }\n }\n return { hit, intersect: ray.get(tMin), tMin, tMax };\n }\n\n private compact() {\n this.offset = 0;\n if (this.root !== null) this.flatten(this.root);\n }\n\n private flatten(node: BoundingNode) {\n const index = this.offset;\n const myOffset = this.offset++;\n if (node.nPrimitives === 0) {\n this.flatten(node.children[0]);\n const secondOffset = this.flatten(node.children[1]);\n this.nodes[index] = {\n bbox: node.bbox,\n dimension: (node).dimension,\n nPrimitives: 0,\n secondChildOffset: secondOffset,\n };\n } else {\n this.nodes[index] = {\n bbox: node.bbox,\n primitivesOffset: (node).firstPrimOffset,\n nPrimitives: node.nPrimitives,\n };\n }\n return myOffset;\n }\n\n private createLeaf(start: number, end: number, nPrimitives: number, bbox: BoundingRect) {\n const size = this.orderedPrims.length;\n for (let i = start; i < end; i++) this.orderedPrims.push(this.shapes[this.buildData[i].index]);\n return new LeafNode(size, nPrimitives, bbox);\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"","import Initiative from \"./ui/initiative.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { AnnotationManager } from \"@/game/ui/annotation\";\nimport { g2l } from \"@/game/units\";\n\nexport class GameManager {\n selectedTool: number = 0;\n\n annotationManager = new AnnotationManager();\n\n addShape(shape: ServerShape): void {\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Shape with unknown layer ${shape.layer} could not be added`);\n return;\n }\n const layer = layerManager.getLayer(shape.layer)!;\n const sh = createShapeFromDict(shape);\n if (sh === undefined) {\n console.log(`Shape with unknown type ${shape.type_} could not be added`);\n return;\n }\n layer.addShape(sh, false);\n layer.invalidate(false);\n }\n\n updateShape(data: { shape: ServerShape; redraw: boolean; move: boolean; temporary: boolean }): void {\n if (!layerManager.hasLayer(data.shape.layer)) {\n console.log(`Shape with unknown layer ${data.shape.layer} could not be added`);\n return;\n }\n const sh = createShapeFromDict(data.shape);\n if (sh === undefined) {\n console.log(`Shape with unknown type ${data.shape.type_} could not be added`);\n return;\n }\n const oldShape = layerManager.UUIDMap.get(data.shape.uuid);\n if (oldShape === undefined) {\n console.log(`Shape with unknown id could not be updated`);\n return;\n }\n const redrawInitiative = sh.owners !== oldShape.owners;\n const shape = Object.assign(oldShape, sh);\n shape.checkVisionSources();\n shape.setMovementBlock(shape.movementObstruction);\n shape.setIsToken(shape.isToken);\n if (data.redraw) {\n if (shape.visionObstruction) gameStore.recalculateVision(data.temporary);\n layerManager.getLayer(data.shape.layer)!.invalidate(false);\n if (shape.movementObstruction) gameStore.recalculateMovement(data.temporary);\n }\n if (redrawInitiative) getRef(\"initiative\").$forceUpdate();\n }\n\n setCenterPosition(position: GlobalPoint) {\n const localPos = g2l(position);\n gameStore.increasePanX((window.innerWidth / 2 - localPos.x) / gameStore.zoomFactor);\n gameStore.increasePanY((window.innerHeight / 2 - localPos.y) / gameStore.zoomFactor);\n layerManager.invalidate();\n sendClientOptions();\n }\n}\n\nexport const gameManager = new GameManager();\n(window).gameManager = gameManager;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./vision.vue?vue&type=template&id=46baf892&scoped=true&\"\nimport script from \"./vision.vue?vue&type=script&lang=ts&\"\nexport * from \"./vision.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46baf892\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class LoadComponent extends Vue {\n message = \"Loading...\";\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\nimport { coreStore } from \"@/core/store\";\n\nComponent.registerHooks([\"beforeRouteEnter\"]);\n\n@Component\nexport default class Dashboard extends Vue {\n owned = [];\n joined = [];\n error = \"\";\n\n newSessionName = \"\";\n\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n axios\n .get(\"/api/rooms\")\n .then((response: AxiosResponse) => {\n next((vm: this) => {\n vm.owned = response.data.owned;\n vm.joined = response.data.joined;\n });\n })\n .catch((err: AxiosError) => {\n next((vm: this) => {\n vm.error = err.message;\n });\n });\n }\n\n createRoom(event: Event) {\n axios\n .post(\"/api/rooms\", {\n name: this.newSessionName,\n })\n .then((response: AxiosResponse) => {\n this.$router.push(`/game/${encodeURIComponent(coreStore.username)}/${encodeURIComponent(this.newSessionName)}`);\n })\n .catch((err: AxiosError) => {\n this.error = err.message;\n });\n }\n}\n","import { render, staticRenderFns } from \"./confirm.vue?vue&type=template&id=1883e207&scoped=true&\"\nimport script from \"./confirm.vue?vue&type=script&lang=ts&\"\nexport * from \"./confirm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1883e207\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=script&lang=ts&\"","import Vue from \"vue\";\nexport const EventBus = new Vue();\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=ts&\"","import { GlobalPoint } from \"@/game/geom\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\n\nexport class Rect extends BaseRect {\n type = \"rect\";\n constructor(topleft: GlobalPoint, w: number, h: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(topleft, w, h, fillColour, strokeColour, uuid);\n }\n asDict() {\n return super.getBaseDict();\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n const z = gameStore.zoomFactor;\n const loc = g2l(this.refPoint);\n ctx.fillRect(loc.x, loc.y, this.w * z, this.h * z);\n if (this.strokeColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.strokeStyle = this.strokeColour;\n ctx.lineWidth = 5;\n ctx.strokeRect(loc.x, loc.y, this.w * z, this.h * z);\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=script&lang=ts&\"","import { Ray, Vector } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Settings } from \"@/game/settings\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly } from \"@/game/units\";\nimport { computeVisibility } from \"../visibility/te/te\";\n\nexport class FOWPlayersLayer extends Layer {\n isVisionLayer: boolean = true;\n\n draw(): void {\n if (!this.valid) {\n // console.time(\"VI\");\n const ctx = this.ctx;\n\n if (!gameStore.fowLOS || Settings.skipPlayerFOW) {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.valid = true;\n return;\n }\n\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n const originalOperation = ctx.globalCompositeOperation;\n\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n\n // For the DM this is done at the end of this function. TODO: why the split up ???\n // This was done in commit be1e65cff1e7369375fe11cfa1643fab1d11beab.\n if (!gameStore.IS_DM) super.draw(!gameStore.fullFOW);\n\n // Then cut out all the player vision auras\n const maxLength = ctx.canvas.width + ctx.canvas.height;\n\n for (const tokenId of gameStore.activeTokens) {\n const token = layerManager.UUIDMap.get(tokenId);\n if (token === undefined) continue;\n const center = token.center();\n const lcenter = g2l(center);\n if (gameStore.visionMode === \"bvh\") {\n ctx.beginPath();\n let lastArcAngle = -1;\n\n for (let angle = 0; angle < 2 * Math.PI; angle += (Settings.angleSteps / 2 / 180) * Math.PI) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n // Check if there is a hit with one of the nearby light blockers.\n const lightRay = new Ray(center, new Vector(cos, sin));\n const hitResult = gameStore.BV.intersect(lightRay);\n\n // We can move on to the next angle if nothing was hit.\n if (!hitResult.hit) {\n // If an earlier hit caused the aura to leave the arc, we need to go back to the arc\n if (lastArcAngle === -1) {\n // Draw a line from the last non arc location back to the arc\n ctx.lineTo(lcenter.x + maxLength * cos, lcenter.y + maxLength * sin);\n // Set the start of a new arc beginning at the current angle\n lastArcAngle = angle;\n }\n continue;\n }\n // If hit , first finish any ongoing arc, then move to the intersection point\n if (lastArcAngle !== -1) {\n ctx.arc(lcenter.x, lcenter.y, maxLength, lastArcAngle, angle);\n lastArcAngle = -1;\n }\n ctx.lineTo(g2lx(hitResult.intersect.x), g2ly(hitResult.intersect.y));\n }\n\n // Finish the final arc.\n if (lastArcAngle !== -1) ctx.arc(lcenter.x, lcenter.y, maxLength, lastArcAngle, 2 * Math.PI);\n else ctx.closePath();\n ctx.fill();\n } else {\n if (true) {\n // Add a gradient vision dropoff\n const gradient = ctx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(gameStore.visionRangeMin),\n lcenter.x,\n lcenter.y,\n g2lr(gameStore.visionRangeMax),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n } else {\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n try {\n const polygon = computeVisibility(token.center(), \"vision\");\n ctx.beginPath();\n ctx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) ctx.lineTo(g2lx(point[0]), g2ly(point[1]));\n ctx.closePath();\n ctx.fill();\n } catch {}\n }\n }\n\n // For the players this is done at the beginning of this function. TODO: why the split up ???\n // This was done in commit be1e65cff1e7369375fe11cfa1643fab1d11beab.\n if (gameStore.IS_DM) super.draw(!gameStore.fullFOW);\n\n ctx.globalCompositeOperation = originalOperation;\n // console.timeEnd(\"VI\");\n }\n }\n}\n","import { socket } from \"@/game/api/socket\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly } from \"@/game/units\";\n\nexport class Layer {\n name: string;\n width: number;\n height: number;\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n\n selectable: boolean = false;\n playerEditable: boolean = false;\n isVisionLayer: boolean = false;\n\n // When set to false, the layer will be redrawn on the next tick\n valid: boolean = false;\n // The collection of shapes that this layer contains.\n // These are ordered on a depth basis.\n shapes: Shape[] = [];\n\n // Collection of shapes that are currently selected\n selection: Shape[] = [];\n\n // Extra selection highlighting settings\n selectionColor = \"#CC0000\";\n selectionWidth = 2;\n\n constructor(canvas: HTMLCanvasElement, name: string) {\n this.canvas = canvas;\n this.name = name;\n this.width = canvas.width;\n this.height = canvas.height;\n this.ctx = canvas.getContext(\"2d\")!;\n }\n\n invalidate(skipLightUpdate: boolean): void {\n this.valid = false;\n if (!skipLightUpdate) {\n layerManager.invalidateLight();\n }\n }\n\n addShape(shape: Shape, sync: boolean, temporary?: boolean, invalidate = true): void {\n if (temporary === undefined) temporary = false;\n shape.layer = this.name;\n this.shapes.push(shape);\n layerManager.UUIDMap.set(shape.uuid, shape);\n shape.checkVisionSources(invalidate);\n shape.setMovementBlock(shape.movementObstruction, invalidate);\n if (shape.ownedBy(gameStore.username) && shape.isToken) gameStore.ownedtokens.push(shape.uuid);\n if (shape.annotation.length) gameStore.annotations.push(shape.uuid);\n if (sync) socket.emit(\"Shape.Add\", { shape: shape.asDict(), temporary });\n if (invalidate) this.invalidate(!sync);\n }\n\n setShapes(shapes: ServerShape[]): void {\n for (const serverShape of shapes) {\n const shape = createShapeFromDict(serverShape);\n if (shape === undefined) {\n console.log(`Shape with unknown type ${serverShape.type_} could not be added`);\n return;\n }\n this.addShape(shape, false, false, false);\n }\n this.clearSelection(); // TODO: Fix keeping selection on those items that are not moved.\n this.invalidate(false);\n }\n\n removeShape(shape: Shape, sync: boolean, temporary?: boolean) {\n if (temporary === undefined) temporary = false;\n this.shapes.splice(this.shapes.indexOf(shape), 1);\n\n if (sync) socket.emit(\"Shape.Remove\", { shape: shape.asDict(), temporary });\n const lsI = gameStore.visionSources.findIndex(ls => ls.shape === shape.uuid);\n const lbI = gameStore.visionBlockers.findIndex(ls => ls === shape.uuid);\n\n const mbI = gameStore.movementblockers.findIndex(ls => ls === shape.uuid);\n const anI = gameStore.annotations.findIndex(ls => ls === shape.uuid);\n if (lsI >= 0) gameStore.visionSources.splice(lsI, 1);\n if (lbI >= 0) gameStore.visionBlockers.splice(lbI, 1);\n if (mbI >= 0) gameStore.movementblockers.splice(mbI, 1);\n if (anI >= 0) gameStore.annotations.splice(anI, 1);\n\n const annotationIndex = gameStore.annotations.indexOf(shape.uuid);\n if (annotationIndex >= 0) gameStore.annotations.splice(annotationIndex, 1);\n\n const ownedIndex = gameStore.ownedtokens.indexOf(shape.uuid);\n if (ownedIndex >= 0) gameStore.ownedtokens.splice(ownedIndex, 1);\n\n layerManager.UUIDMap.delete(shape.uuid);\n\n const index = this.selection.indexOf(shape);\n if (index >= 0) this.selection.splice(index, 1);\n if (lbI >= 0) gameStore.recalculateVision();\n if (mbI >= 0) gameStore.recalculateMovement();\n this.invalidate(!sync);\n }\n\n clear(): void {\n this.ctx.clearRect(0, 0, this.width, this.height);\n }\n\n clearSelection(): void {\n this.selection = [];\n EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n }\n\n draw(doClear?: boolean): void {\n if (!this.valid) {\n const ctx = this.ctx;\n const ogOP = ctx.globalCompositeOperation;\n doClear = doClear === undefined ? true : doClear;\n\n if (doClear) this.clear();\n\n const state = this;\n\n // We iteratre twice over all shapes\n // First to draw the auras and a second time to draw the shapes themselves\n // Otherwise auras from one shape could be overlapping another shape itself.\n\n this.shapes.forEach(shape => {\n if (shape.options.has(\"skipDraw\") && shape.options.get(\"skipDraw\")) return;\n if (layerManager.getLayer() === undefined) return;\n if (!shape.visibleInCanvas(state.canvas)) return;\n if (state.name === \"fow\" && shape.visionObstruction && layerManager.getLayer()!.name !== state.name)\n return;\n shape.drawAuras(ctx);\n });\n this.shapes.forEach(shape => {\n if (shape.options.has(\"skipDraw\") && shape.options.get(\"skipDraw\")) return;\n if (shape.labels.length === 0 && gameStore.filterNoLabel) return;\n if (\n shape.labels.length &&\n gameStore.labelFilters.length &&\n !shape.labels.some(l => gameStore.labelFilters.includes(l.uuid))\n )\n return;\n if (layerManager.getLayer() === undefined) return;\n if (!shape.visibleInCanvas(state.canvas)) return;\n if (state.name === \"fow\" && shape.visionObstruction && layerManager.getLayer()!.name !== state.name)\n return;\n shape.draw(ctx);\n });\n\n if (this.selection != null) {\n ctx.fillStyle = this.selectionColor;\n ctx.strokeStyle = this.selectionColor;\n ctx.lineWidth = this.selectionWidth;\n const z = gameStore.zoomFactor;\n this.selection.forEach(sel => {\n ctx.globalCompositeOperation = sel.globalCompositeOperation;\n const bb = sel.getBoundingBox();\n // TODO: REFACTOR THIS TO Shape.drawSelection(ctx);\n ctx.strokeRect(g2lx(bb.topLeft.x), g2ly(bb.topLeft.y), bb.w * z, bb.h * z);\n\n for (const p of sel.points) {\n ctx.beginPath();\n ctx.arc(g2lx(p[0]), g2ly(p[1]), 3, 0, 2 * Math.PI);\n ctx.fill();\n }\n ctx.beginPath();\n ctx.moveTo(g2lx(sel.points[0][0]), g2ly(sel.points[0][1]));\n for (let i = 1; i <= sel.points.length; i++) {\n const vertex = sel.points[i % sel.points.length];\n ctx.lineTo(g2lx(vertex[0]), g2ly(vertex[1]));\n }\n ctx.stroke();\n });\n }\n ctx.globalCompositeOperation = ogOP;\n this.valid = true;\n }\n }\n\n moveShapeOrder(shape: Shape, destinationIndex: number, sync: boolean): void {\n const oldIdx = this.shapes.indexOf(shape);\n if (oldIdx === destinationIndex) return;\n this.shapes.splice(oldIdx, 1);\n this.shapes.splice(destinationIndex, 0, shape);\n if (sync) socket.emit(\"Shape.Order.Set\", { shape: shape.asDict(), index: destinationIndex });\n this.invalidate(true);\n }\n}\n","import { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\nexport function scrollZoom(e: WheelEvent) {\n if (!e.target || !(e.target).tagName || (e.target).tagName !== \"CANVAS\") return;\n let delta: number;\n delta = Math.sign(e.deltaY) * -1;\n gameStore.updateZoom({ newZoomDisplay: gameStore.zoomDisplay - 0.1 * delta, zoomLocation: l2g(getMouse(e)) });\n}\n","import { render, staticRenderFns } from \"./filter.vue?vue&type=template&id=dca395d6&scoped=true&\"\nimport script from \"./filter.vue?vue&type=script&lang=ts&\"\nexport * from \"./filter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./filter.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dca395d6\",\n null\n \n)\n\nexport default component.exports","import { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2lx, g2ly, l2g, l2gx, l2gy } from \"@/game/units\";\n\nexport abstract class BaseRect extends Shape {\n w: number;\n h: number;\n constructor(topleft: GlobalPoint, w: number, h: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(topleft, fillColour, strokeColour, uuid);\n this.w = w;\n this.h = h;\n }\n getBaseDict() {\n return Object.assign(super.getBaseDict(), {\n width: this.w,\n height: this.h,\n });\n }\n getBoundingBox() {\n return new BoundingRect(this.refPoint, this.w, this.h);\n }\n\n get points() {\n if (this.w === 0 || this.h === 0) return [[this.refPoint.x, this.refPoint.y]];\n // note to self: topright and botleft are swapped because I'm retarded.\n const topright = this.refPoint.add(new Vector(0, this.h));\n const botright = this.refPoint.add(new Vector(this.w, this.h));\n const botleft = this.refPoint.add(new Vector(this.w, 0));\n return [\n [this.refPoint.x, this.refPoint.y],\n [topright.x, topright.y],\n [botright.x, botright.y],\n [botleft.x, botleft.y],\n ];\n }\n\n contains(point: GlobalPoint): boolean {\n return (\n this.refPoint.x <= point.x &&\n this.refPoint.x + this.w >= point.x &&\n this.refPoint.y <= point.y &&\n this.refPoint.y + this.h >= point.y\n );\n }\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n if (centerPoint === undefined) return this.refPoint.add(new Vector(this.w / 2, this.h / 2));\n this.refPoint = new GlobalPoint(centerPoint.x - this.w / 2, centerPoint.y - this.h / 2);\n }\n\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n if (super.visibleInCanvas(canvas)) return true;\n const coreVisible = !(\n g2lx(this.refPoint.x) > canvas.width ||\n g2ly(this.refPoint.y) > canvas.height ||\n g2lx(this.refPoint.x + this.w) < 0 ||\n g2ly(this.refPoint.y + this.h) < 0\n );\n if (coreVisible) return true;\n return false;\n }\n snapToGrid() {\n const gs = gameStore.gridSize;\n const center = this.center();\n const mx = center.x;\n const my = center.y;\n\n let targetX;\n let targetY;\n\n if ((this.w / gs) % 2 === 0) {\n targetX = Math.round(mx / gs) * gs - this.w / 2;\n } else {\n targetX = (Math.round((mx + gs / 2) / gs) - 1 / 2) * gs - this.w / 2;\n }\n if ((this.h / gs) % 2 === 0) {\n targetY = Math.round(my / gs) * gs - this.h / 2;\n } else {\n targetY = (Math.round((my + gs / 2) / gs) - 1 / 2) * gs - this.h / 2;\n }\n\n const delta = calculateDelta(new Vector(targetX - this.refPoint.x, targetY - this.refPoint.y), this);\n this.refPoint = this.refPoint.add(delta);\n\n this.invalidate(false);\n }\n resizeToGrid() {\n const gs = gameStore.gridSize;\n this.refPoint = new GlobalPoint(Math.round(this.refPoint.x / gs) * gs, Math.round(this.refPoint.y / gs) * gs);\n this.w = Math.max(Math.round(this.w / gs) * gs, gs);\n this.h = Math.max(Math.round(this.h / gs) * gs, gs);\n this.invalidate(false);\n }\n resize(resizePoint: number, point: LocalPoint) {\n const z = gameStore.zoomFactor;\n switch (resizePoint) {\n case 0: {\n this.w = g2lx(this.refPoint.x) + this.w * z - point.x;\n this.h = g2ly(this.refPoint.y) + this.h * z - point.y;\n this.refPoint = l2g(point);\n break;\n }\n case 1: {\n this.w = g2lx(this.refPoint.x) + this.w * z - point.x;\n this.h = point.y - g2ly(this.refPoint.y);\n this.refPoint = new GlobalPoint(l2gx(point.x), this.refPoint.y);\n break;\n }\n case 2: {\n this.w = point.x - g2lx(this.refPoint.x);\n this.h = point.y - g2ly(this.refPoint.y);\n break;\n }\n case 3: {\n this.w = point.x - g2lx(this.refPoint.x);\n this.h = g2ly(this.refPoint.y) + this.h * z - point.y;\n this.refPoint = new GlobalPoint(this.refPoint.x, l2gy(point.y));\n break;\n }\n }\n\n this.w /= z;\n this.h /= z;\n\n if (this.w < 0) {\n this.refPoint = this.refPoint.add(new Vector(this.w, 0));\n this.w = Math.abs(this.w);\n }\n if (this.h < 0) {\n this.refPoint = this.refPoint.add(new Vector(0, this.h));\n this.h = Math.abs(this.h);\n }\n }\n}\n","import { render, staticRenderFns } from \"./select.vue?vue&type=template&id=048b3482&\"\nimport script from \"./select.vue?vue&type=script&lang=ts&\"\nexport * from \"./select.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=style&index=0&id=43d09857&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=style&index=0&id=43d09857&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=b102d41e&scoped=true&\"\nimport script from \"./main.vue?vue&type=script&lang=ts&\"\nexport * from \"./main.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./main.vue?vue&type=style&index=0&id=b102d41e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b102d41e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"AssetManager\"}},[_c('div',{attrs:{\"id\":\"titlebar\"}},[_vm._v(\"Asset Manager\")]),_c('div',{attrs:{\"id\":\"main\"}},[_c('div',{attrs:{\"id\":\"assets\"},on:{\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, _vm.currentFolder)}}},[_c('div',{attrs:{\"id\":\"breadcrumbs\"}},[_c('div',[_vm._v(\"/\")]),_vm._l((_vm.path),function(dir){return _c('div',{key:dir},[_vm._v(_vm._s(_vm.idMap.get(dir).name))])})],2),_c('div',{attrs:{\"id\":\"actionbar\"}},[_c('input',{attrs:{\"id\":\"files\",\"type\":\"file\",\"multiple\":\"\",\"hidden\":\"\"},on:{\"change\":function($event){return _vm.upload()}}}),_c('div',{attrs:{\"title\":\"Create folder\"},on:{\"click\":_vm.createDirectory}},[_c('i',{staticClass:\"fas fa-plus-square\"})]),_c('div',{attrs:{\"title\":\"Upload files\"},on:{\"click\":_vm.prepareUpload}},[_c('i',{staticClass:\"fas fa-upload\"})])]),_c('div',{attrs:{\"id\":\"explorer\"}},[(_vm.path.length)?_c('div',{staticClass:\"inode folder\",on:{\"dblclick\":function($event){return _vm.changeDirectory(-1)},\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"dragleave\":function($event){$event.preventDefault();return _vm.leaveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, _vm.parentFolder)}}},[_c('i',{staticClass:\"fas fa-folder\",staticStyle:{\"font-size\":\"50px\"}}),_c('div',{staticClass:\"title\"},[_vm._v(\"..\")])]):_vm._e(),_vm._l((_vm.folders),function(key){return _c('div',{key:key,staticClass:\"inode folder\",class:{'inode-selected': _vm.selected.includes(key)},attrs:{\"draggable\":\"true\"},on:{\"click\":function($event){return _vm.select($event, key)},\"dblclick\":function($event){return _vm.changeDirectory(key)},\"contextmenu\":function($event){$event.preventDefault();return _vm.$refs.cm.open($event, key)},\"dragstart\":function($event){return _vm.startDrag($event, key)},\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"dragleave\":function($event){$event.preventDefault();return _vm.leaveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, key)}}},[_c('i',{staticClass:\"fas fa-folder\",staticStyle:{\"font-size\":\"50px\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.idMap.get(key).name))])])}),_vm._l((_vm.files),function(file){return _c('div',{key:file,staticClass:\"inode file\",class:{'inode-selected': _vm.selected.includes(file)},attrs:{\"draggable\":\"true\"},on:{\"click\":function($event){return _vm.select($event, file)},\"contextmenu\":function($event){$event.preventDefault();return _vm.$refs.cm.open($event, file)},\"dragstart\":function($event){return _vm.startDrag($event, file)}}},[_c('img',{attrs:{\"src\":'/static/assets/' + _vm.idMap.get(file).file_hash,\"width\":\"50\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.idMap.get(file).name))])])})],2)]),(_vm.firstSelectedFile)?_c('div',{attrs:{\"id\":\"asset-details\"}},[_c('div',{attrs:{\"id\":\"asset-detail-title\"}},[_vm._v(_vm._s(_vm.firstSelectedFile.name))]),_c('img',{attrs:{\"src\":'/static/assets/' + _vm.firstSelectedFile.file_hash}})]):_vm._e()]),_c('AssetContextMenu',{ref:\"cm\"}),_c('Prompt',{ref:\"prompt\"}),_c('ConfirmDialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=template&id=5b0def98&\"","\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\nimport { l2gx, l2gy } from \"@/game/units\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class SelectContext extends Vue {\n visible = false;\n x = 0;\n y = 0;\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n open(event: MouseEvent) {\n this.visible = true;\n this.x = event.pageX;\n this.y = event.pageY;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n close() {\n this.visible = false;\n }\n bringPlayers() {\n if (!gameStore.IS_DM) return;\n socket.emit(\"Players.Bring\", { x: l2gx(this.x), y: l2gy(this.y) });\n this.close();\n }\n createToken() {\n (this.$parent.$parent.$refs.createtokendialog).open(this.x, this.y);\n this.close();\n }\n showInitiative() {\n EventBus.$emit(\"Initiative.Show\");\n this.close();\n }\n}\n","import Axios from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\nimport { coreStore } from \"@/core/store\";\n\nComponent.registerHooks([\"beforeRouteEnter\"]);\n\n@Component({})\nexport default class Logout extends Vue {\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n Axios.post(\"/api/logout\").then(() => {\n coreStore.setAuthenticated(false);\n coreStore.setUsername(\"\");\n next({ path: \"/auth/login\" });\n });\n }\n}\n","import { getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { rootStore } from \"@/store\";\n\nexport interface CoreState {\n authenticated: boolean;\n initialized: boolean;\n username: string;\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"core\" })\nclass CoreStore extends VuexModule implements CoreState {\n authenticated = false;\n initialized = false;\n username = \"\";\n\n @Mutation\n setAuthenticated(auth: boolean) {\n this.authenticated = auth;\n }\n\n @Mutation\n setInitialized(init: boolean) {\n this.initialized = init;\n }\n\n @Mutation\n setUsername(username: string) {\n this.username = username;\n }\n}\n\nexport const coreStore = getModule(CoreStore);\n","import Vue from \"vue\";\n\nimport App from \"@/App.vue\";\nimport { router } from \"@/router\";\nimport { rootStore } from \"@/store\";\n\nVue.config.productionTip = false;\nVue.config.devtools = true;\nVue.config.performance = true;\n\nexport const app = new Vue({\n router,\n store: rootStore,\n render: h => h(App),\n}).$mount(\"#app\");\n\n(window).app = app;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component({\n props: [\"visible\", \"left\", \"top\"],\n})\nexport default class ContextMenu extends Vue {}\n","import Axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\n@Component({ template: \"\" })\nexport default class Initiative extends Vue {\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n Axios.post(\"/api/invite\", {\n code: to.params.code,\n })\n .then((response: AxiosResponse) => {\n next({ path: response.data.sessionUrl });\n })\n .catch((error: AxiosError) => {\n console.error(\"Invitation code could not be redeemed\");\n next({ path: \"/dashboard\" });\n });\n }\n}\n","import { render, staticRenderFns } from \"./prompt.vue?vue&type=template&id=0602c2e6&scoped=true&\"\nimport script from \"./prompt.vue?vue&type=script&lang=ts&\"\nexport * from \"./prompt.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0602c2e6\",\n null\n \n)\n\nexport default component.exports","import { GlobalPoint } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nimport { Edge } from \"./cdt\";\nimport { drawPolygon } from \"./draw\";\nimport { PA_CDT } from \"./pa\";\nimport { Point, Sign, Triangle } from \"./tds\";\nimport { ccw, cw, orientation } from \"./triag\";\n\nexport function computeVisibility(q: GlobalPoint, target: \"vision\" | \"movement\", drawt?: boolean): number[][] {\n if (drawt === undefined) drawt = gameStore.drawTEContour;\n // console.time(\"CV\");\n const Q: Point = [q.x, q.y];\n const rawOutput: number[][] = [];\n const triangle = PA_CDT[target].locate(Q, null).loc;\n if (triangle === null) {\n console.error(\"Triangle not found\");\n return [];\n }\n // triangle.fill();\n rawOutput.push(triangle.vertices[1]!.point!);\n if (!triangle.isConstrained(0))\n expandEdge(Q, triangle.vertices[2]!.point!, triangle.vertices[1]!.point!, triangle, 0, rawOutput);\n rawOutput.push(triangle.vertices[2]!.point!);\n if (!triangle.isConstrained(1))\n expandEdge(Q, triangle.vertices[0]!.point!, triangle.vertices[2]!.point!, triangle, 1, rawOutput);\n rawOutput.push(triangle.vertices[0]!.point!);\n if (!triangle.isConstrained(2))\n expandEdge(Q, triangle.vertices[1]!.point!, triangle.vertices[0]!.point!, triangle, 2, rawOutput);\n // console.timeEnd(\"CV\");\n\n if (drawt) drawPolygon(rawOutput, \"red\");\n\n return rawOutput;\n}\n\nfunction expandEdge(\n q: Point,\n left: number[],\n right: number[],\n fh: Triangle,\n index: number,\n rawOutput: number[][],\n): void {\n // fh.edge(index).draw();\n const nfh = fh.neighbours[index]!;\n // nfh.fill(\"rgba(255, 0, 0, 0.25)\");\n const nIndex = nfh.indexT(fh);\n const rIndex = ccw(nIndex);\n const lIndex = cw(nIndex);\n const nvh = nfh.vertices[nIndex]!;\n const rvh = nfh.vertices[lIndex]!;\n const lvh = nfh.vertices[rIndex]!;\n\n const re: Edge = [nfh, rIndex];\n const le: Edge = [nfh, lIndex];\n\n const ro = orientation(q, right, nvh.point!);\n const lo = orientation(q, left, nvh.point!);\n\n // const ctx = layerManager.getLayer(\"draw\")!.ctx;\n // ctx.beginPath();\n // ctx.strokeStyle = \"red\";\n // ctx.lineJoin = \"round\";\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(left[0]), g2ly(left[1]));\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(nvh[0]), g2ly(nvh[1]));\n // ctx.strokeStyle = \"blue\";\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(right[0]), g2ly(right[1]));\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(nvh[0]), g2ly(nvh[1]));\n // ctx.closePath();\n // ctx.stroke();\n\n // Right edge is seen if the new vertex is ccw of the right ray\n if (ro === Sign.COUNTERCLOCKWISE) {\n if (re[0].isConstrained(re[1])) {\n // See if current right ray is rvh\n if (right !== rvh.point!) rawOutput.push(raySegIntersection(q, right, nvh.point!, rvh.point!));\n if (lo === Sign.COUNTERCLOCKWISE) rawOutput.push(raySegIntersection(q, left, nvh.point!, rvh.point!));\n } else {\n if (lo === Sign.COUNTERCLOCKWISE) return expandEdge(q, left, right, nfh, rIndex, rawOutput);\n else expandEdge(q, nvh.point!, right, nfh, rIndex, rawOutput);\n }\n }\n\n if (ro !== Sign.CLOCKWISE && lo !== Sign.COUNTERCLOCKWISE) {\n rawOutput.push(nvh.point!);\n }\n\n if (lo === Sign.CLOCKWISE) {\n if (le[0].isConstrained(le[1])) {\n if (ro === Sign.CLOCKWISE) {\n rawOutput.push(raySegIntersection(q, right, nvh.point!, lvh.point!));\n }\n if (left !== lvh.point!) {\n rawOutput.push(raySegIntersection(q, left, nvh.point!, lvh.point!));\n }\n return;\n } else {\n if (ro === Sign.CLOCKWISE) {\n return expandEdge(q, left, right, nfh, lIndex, rawOutput);\n } else {\n return expandEdge(q, left, nvh.point!, nfh, lIndex, rawOutput);\n }\n }\n }\n}\n\nfunction raySegIntersection(q: Point, b: Point, s: Point, t: Point) {\n const denominator = (t[1] - s[1]) * (b[0] - q[0]) - (t[0] - s[0]) * (b[1] - q[1]);\n const ua = ((t[0] - s[0]) * (q[1] - s[1]) - (t[1] - s[1]) * (q[0] - s[0])) / denominator;\n // const ub = ((b[0] - q.x) * (q.y - s[1]) - (b[1] - q.y) * (q.x - s[0])) / denominator;\n const x = q[0] + ua * (b[0] - q[0]);\n const y = q[1] + ua * (b[1] - q[1]);\n\n return [x, y];\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',[_vm._v(\"#X\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.xCount),expression:\"xCount\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.xCount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.xCount=$event.target.value}}}),_c('div',[_vm._v(\"#Y\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.yCount),expression:\"yCount\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.yCount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.yCount=$event.target.value}}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=template&id=2104f147&\"","import { render, staticRenderFns } from \"./edit_dialog.vue?vue&type=template&id=23de098e&scoped=true&\"\nimport script from \"./edit_dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./edit_dialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23de098e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"modal\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"mask\",class:{'modal-mask': _vm.mask, 'dialog-mask': !_vm.mask},on:{\"click\":_vm.close,\"dragover\":function($event){$event.preventDefault();return _vm.dragOver($event)}}},[_c('div',{ref:\"container\",staticClass:\"modal-container\",style:({'background-color': _vm.colour}),on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._t(\"header\",null,{\"dragStart\":_vm.dragStart,\"dragEnd\":_vm.dragEnd}),_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=template&id=c2851f0e&scoped=true&\"","export class Settings {\n static angleSteps = 4;\n static drawAngleLines = false;\n static drawFirstLightHit = false;\n static skipPlayerFOW = false;\n static skipLightFOW = false;\n\n static tempFill: string = \"fog\";\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { coreStore } from \"@/core/store\";\n\n@Component\nexport default class Login extends Vue {\n username = \"\";\n password = \"\";\n error = \"\";\n\n login() {\n axios\n .post(\"/api/login\", {\n username: this.username,\n password: this.password,\n })\n .then((response: AxiosResponse) => {\n coreStore.setUsername(this.username);\n coreStore.setAuthenticated(true);\n this.$router.push(this.$route.query.redirect || \"/\");\n })\n .catch((error: AxiosError) => {\n if (error.response) this.error = error.response.statusText;\n else this.error = \"Unknown error occured\";\n });\n }\n\n register() {\n axios\n .post(\"/api/register\", {\n username: this.username,\n password: this.password,\n })\n .then((response: AxiosResponse) => {\n coreStore.setUsername(this.username);\n coreStore.setAuthenticated(true);\n this.$router.push(this.$route.query.redirect || \"/\");\n })\n .catch((error: AxiosError) => {\n if (error.response) this.error = error.response.statusText;\n else this.error = \"Unknown error occured\";\n });\n }\n\n focusin(event: { target?: { nextElementSibling?: HTMLElement } }) {\n if (event.target && event.target.nextElementSibling) {\n const span = event.target.nextElementSibling;\n span.style.opacity = \"0\";\n }\n }\n\n focusout(event: { target?: { nextElementSibling?: HTMLElement } }) {\n if (event.target && event.target.nextElementSibling) {\n const span = event.target.nextElementSibling;\n span.style.opacity = \"1\";\n }\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(\"Create basic token\")])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('label',{attrs:{\"for\":\"createtokendialog-text\"}},[_vm._v(\"Text\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],attrs:{\"type\":\"text\",\"id\":\"createtokendialog-name\"},domProps:{\"value\":(_vm.text)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.text=$event.target.value}}}),_c('label',[_vm._v(\"Colours\")]),_c('div',{staticClass:\"colours\"},[_c('span',[_vm._v(\"Fill:\")]),_c('color-picker',{attrs:{\"color\":_vm.fillColour},on:{\"update:color\":function($event){_vm.fillColour=$event}}}),_c('span',[_vm._v(\"Border:\")]),_c('color-picker',{attrs:{\"color\":_vm.borderColour},on:{\"update:color\":function($event){_vm.borderColour=$event}}})],1),_c('canvas',{ref:\"canvas\",attrs:{\"width\":\"100px\",\"height\":\"100px\"}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=template&id=73816298&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(\"div\")}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=template&id=1e034b42&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=script&lang=ts&\"","import Component from \"vue-class-component\";\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Line } from \"@/game/shapes/line\";\nimport { Text } from \"@/game/shapes/text\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\n@Component\nexport class RulerTool extends Tool {\n name = \"Ruler\";\n active = false;\n startPoint: GlobalPoint | null = null;\n ruler: Line | null = null;\n text: Text | null = null;\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No draw layer!\");\n return;\n }\n this.active = true;\n this.startPoint = l2g(getMouse(event));\n this.ruler = new Line(this.startPoint, this.startPoint, 3, gameStore.rulerColour);\n this.text = new Text(this.startPoint.clone(), \"\", \"bold 20px serif\");\n this.ruler.addOwner(gameStore.username);\n this.text.addOwner(gameStore.username);\n layer.addShape(this.ruler, true, true);\n layer.addShape(this.text, true, true);\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active || this.ruler === null || this.startPoint === null || this.text === null) return;\n\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No draw layer!\");\n return;\n }\n const endPoint = l2g(getMouse(event));\n\n this.ruler.endPoint = endPoint;\n socket.emit(\"Shape.Update\", { shape: this.ruler!.asDict(), redraw: true, temporary: true });\n\n const diffsign = Math.sign(endPoint.x - this.startPoint.x) * Math.sign(endPoint.y - this.startPoint.y);\n const xdiff = Math.abs(endPoint.x - this.startPoint.x);\n const ydiff = Math.abs(endPoint.y - this.startPoint.y);\n const label =\n Math.round((Math.sqrt(xdiff ** 2 + ydiff ** 2) * gameStore.unitSize) / gameStore.gridSize) + \" ft\";\n const angle = Math.atan2(diffsign * ydiff, xdiff);\n const xmid = Math.min(this.startPoint.x, endPoint.x) + xdiff / 2;\n const ymid = Math.min(this.startPoint.y, endPoint.y) + ydiff / 2;\n this.text.refPoint = new GlobalPoint(xmid, ymid);\n this.text.text = label;\n this.text.angle = angle;\n socket.emit(\"Shape.Update\", { shape: this.text.asDict(), redraw: true, temporary: true });\n layer.invalidate(true);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.ruler === null || this.startPoint === null || this.text === null) return;\n\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = false;\n\n layer.removeShape(this.ruler, true, true);\n layer.removeShape(this.text, true, true);\n layer.invalidate(true);\n this.ruler = this.startPoint = this.text = null;\n }\n}\n","import { render, staticRenderFns } from \"./modal.vue?vue&type=template&id=c2851f0e&scoped=true&\"\nimport script from \"./modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./modal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c2851f0e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=script&lang=ts&\"","import { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\nimport { CDT } from \"./cdt\";\n\nexport let PA_CDT = {\n vision: new CDT(),\n movement: new CDT(),\n};\n\nexport function triangulate(target: \"vision\" | \"movement\", partial: boolean = false) {\n const cdt = new CDT();\n\n let shapes;\n if (target === \"vision\") shapes = gameStore.visionBlockers;\n else shapes = gameStore.movementblockers;\n\n for (const sh of shapes) {\n const shape = layerManager.UUIDMap.get(sh)!;\n if (partial && !shape.visibleInCanvas(layerManager.getLayer()!.canvas)) continue;\n for (let i = 0; i < shape.points.length; i++) {\n cdt.insertConstraint(shape.points[i], shape.points[(i + 1) % shape.points.length]);\n }\n }\n // LEFT WALL\n cdt.insertConstraint([-1e8, -1e8], [-1e8, 1e8]);\n cdt.insertConstraint([-1e8, 1e8], [-1e11, 1e8]);\n cdt.insertConstraint([-1e11, 1e8], [-1e11, -1e8]);\n cdt.insertConstraint([-1e11, -1e8], [-1e8, -1e8]);\n // TOP WALL\n cdt.insertConstraint([-1e8, -1e8], [1e8, -1e8]);\n cdt.insertConstraint([1e8, -1e8], [1e8, -1e11]);\n cdt.insertConstraint([1e8, -1e11], [-1e8, -1e11]);\n cdt.insertConstraint([-1e8, -1e11], [-1e8, -1e8]);\n // RIGHT WALL\n cdt.insertConstraint([1e8, -1e8], [1e8, 1e8]);\n cdt.insertConstraint([1e8, 1e8], [1e11, 1e8]);\n cdt.insertConstraint([1e11, 1e8], [1e11, -1e8]);\n cdt.insertConstraint([1e11, -1e8], [1e8, -1e8]);\n // BOT WALL\n cdt.insertConstraint([-1e8, 1e8], [1e8, 1e8]);\n cdt.insertConstraint([1e8, 1e8], [1e8, 1e11]);\n cdt.insertConstraint([1e8, 1e11], [-1e8, 1e11]);\n cdt.insertConstraint([-1e8, 1e11], [-1e8, 1e8]);\n PA_CDT[target] = cdt;\n (window).CDT = PA_CDT;\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n \"color-picker\": ColorPicker,\n },\n})\nexport default class EditDialog extends Vue {\n @Prop() shape!: Shape;\n\n visible = false;\n\n get owned(): boolean {\n return this.shape.ownedBy();\n }\n\n mounted() {\n EventBus.$on(\"EditDialog.Open\", (shape: Shape) => {\n this.shape = shape;\n this.visible = true;\n });\n EventBus.$on(\"EditDialog.AddLabel\", (label: string) => {\n if (this.visible) {\n this.shape.labels.push(gameStore.labels[label]);\n this.updateShape(true);\n }\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"EditDialog.Open\");\n EventBus.$off(\"EditDialog.AddLabel\");\n }\n\n updated() {\n this.addEmpty();\n }\n\n addEmpty() {\n if (this.shape.owners[this.shape.owners.length - 1] !== \"\") this.shape.addOwner(\"\");\n if (\n !this.shape.trackers.length ||\n this.shape.trackers[this.shape.trackers.length - 1].name !== \"\" ||\n this.shape.trackers[this.shape.trackers.length - 1].value !== 0\n )\n this.shape.trackers.push({ uuid: uuidv4(), name: \"\", value: 0, maxvalue: 0, visible: false });\n if (\n !this.shape.auras.length ||\n this.shape.auras[this.shape.auras.length - 1].name !== \"\" ||\n this.shape.auras[this.shape.auras.length - 1].value !== 0\n )\n this.shape.auras.push({\n uuid: uuidv4(),\n name: \"\",\n value: 0,\n dim: 0,\n visionSource: false,\n colour: \"rgba(0,0,0,0)\",\n visible: false,\n });\n }\n updateShape(redraw: boolean, temporary = false) {\n if (!this.owned) return;\n socket.emit(\"Shape.Update\", { shape: this.shape.asDict(), redraw, temporary });\n if (redraw) layerManager.invalidate();\n this.addEmpty();\n }\n setToken(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.setIsToken(event.target.checked);\n this.updateShape(true);\n }\n setVisionBlocker(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.checkVisionSources();\n this.updateShape(true);\n }\n setMovementBlocker(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.setMovementBlock(event.target.checked);\n this.updateShape(false);\n }\n updateAnnotation(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n const hadAnnotation = this.shape.annotation !== \"\";\n this.shape.annotation = event.target.value;\n if (this.shape.annotation !== \"\" && !hadAnnotation) {\n gameStore.annotations.push(this.shape.uuid);\n if (layerManager.hasLayer(\"draw\")) layerManager.getLayer(\"draw\")!.invalidate(true);\n } else if (this.shape.annotation === \"\" && hadAnnotation) {\n gameStore.annotations.splice(gameStore.annotations.findIndex(an => an === this.shape.uuid));\n if (layerManager.hasLayer(\"draw\")) layerManager.getLayer(\"draw\")!.invalidate(true);\n }\n this.updateShape(false);\n }\n updateOwner(event: { target: HTMLInputElement }, oldValue: string) {\n if (!this.owned) return;\n this.shape.updateOwner(oldValue, event.target.value);\n this.updateShape(gameStore.fowLOS);\n }\n removeOwner(value: string) {\n if (!this.owned) return;\n this.shape.removeOwner(value);\n this.updateShape(gameStore.fowLOS);\n }\n removeTracker(uuid: string) {\n if (!this.owned) return;\n this.shape.trackers = this.shape.trackers.filter(tr => tr.uuid !== uuid);\n this.updateShape(false);\n }\n removeAura(uuid: string) {\n if (!this.owned) return;\n this.shape.auras = this.shape.auras.filter(au => au.uuid !== uuid);\n this.shape.checkVisionSources();\n this.updateShape(true);\n }\n updateAuraVisionSource(aura: Aura) {\n if (!this.owned) return;\n aura.visionSource = !aura.visionSource;\n const i = gameStore.visionSources.findIndex(ls => ls.aura === aura.uuid);\n if (aura.visionSource && i === -1) gameStore.visionSources.push({ shape: this.shape.uuid, aura: aura.uuid });\n else if (!aura.visionSource && i >= 0) gameStore.visionSources.splice(i, 1);\n this.updateShape(true);\n }\n updateAuraColour(aura: Aura, colour: string) {\n if (!this.owned) return;\n const layer = layerManager.getLayer(this.shape.layer);\n if (layer === undefined) return;\n layer.invalidate(!aura.visionSource);\n }\n openLabelManager() {\n EventBus.$emit(\"LabelManager.Open\");\n }\n removeLabel(uuid: string) {\n if(!this.owned) return;\n this.shape.labels = this.shape.labels.filter(l => l.uuid !== uuid);\n this.updateShape(true);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.getActiveLayer() !== undefined)?_c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.x + 'px',\"top\":_vm.y + 'px'},on:{\"close\":_vm.close}},[(_vm.getLayers().length > 1)?_c('li',[_vm._v(\"Layer\\n \"),_c('ul',_vm._l((_vm.getLayers()),function(layer){return _c('li',{key:layer.name,style:([_vm.getActiveLayer().name === layer.name ? {'background-color':'#82c8a0'}: {}]),on:{\"click\":function($event){return _vm.setLayer(layer.name)}}},[_vm._v(_vm._s(layer.name))])}),0)]):_vm._e(),_c('li',{on:{\"click\":_vm.moveToBack}},[_vm._v(\"Move to back\")]),_c('li',{on:{\"click\":_vm.moveToFront}},[_vm._v(\"Move to front\")]),_c('li',{on:{\"click\":_vm.addInitiative}},[_vm._v(_vm._s(_vm.getInitiativeWord())+\" initiative\")]),_c('li',{on:{\"click\":_vm.openEditDialog}},[_vm._v(\"Show properties\")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=template&id=6c66d243&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class ConfirmDialog extends Vue {\n $refs!: {\n confirm: HTMLButtonElement;\n };\n\n visible = false;\n yes = \"Yes\";\n no = \"No\";\n title = \"\";\n\n resolve = (ok: boolean) => {};\n reject = () => {};\n\n confirm() {\n this.resolve(true);\n this.close();\n }\n deny() {\n this.resolve(false);\n this.close();\n }\n close() {\n this.reject();\n this.visible = false;\n this.title = \"\";\n }\n open(title: string, yes = \"yes\", no = \"no\"): Promise {\n this.yes = yes;\n this.no = no;\n this.title = title;\n\n this.visible = true;\n this.$nextTick(() => {\n this.$refs.confirm.focus();\n });\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./map.vue?vue&type=template&id=2104f147&\"\nimport script from \"./map.vue?vue&type=script&lang=ts&\"\nexport * from \"./map.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"accordion\"},[_c('div',{attrs:{\"id\":\"header\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleDisplay($event)}}},[_c('input',{ref:\"overall\",attrs:{\"type\":\"checkbox\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleCategory($event)}}}),_c('strong',[_vm._v(_vm._s(_vm.title))]),(_vm.showArrow)?[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showArrow && !_vm.active),expression:\"showArrow && !active\"}],staticClass:\"down-Arrow\"},[_vm._v(\"▼\")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showArrow && _vm.active),expression:\"showArrow && active\"}],staticClass:\"up-Arrow\"},[_vm._v(\"▲\")])]:_vm._e()],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],attrs:{\"id\":\"body\"}},_vm._l((_vm.items),function(item){return _c('div',{key:item[0],staticClass:\"item\",on:{\"click\":function($event){return _vm.toggleSelection(item[0])}}},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.selected.includes(item[0])},on:{\"click\":function($event){$event.preventDefault();}}}),_vm._v(\" \"+_vm._s(item[1])+\"\\n \")])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=template&id=0bf2b7ba&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":_vm.close},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(_vm._s(_vm.title))])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('button',{ref:\"confirm\",on:{\"click\":_vm.confirm}},[_vm._v(_vm._s(_vm.yes))]),(!!_vm.no)?_c('button',{on:{\"click\":_vm.deny}},[_vm._v(_vm._s(_vm.no))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=template&id=1883e207&scoped=true&\"","import { render, staticRenderFns } from \"./dmsettings.vue?vue&type=template&id=b908e87c&scoped=true&\"\nimport script from \"./dmsettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./dmsettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b908e87c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\n\nimport { socket } from \"@/assetManager/socket\";\nimport { assetStore } from \"@/assetManager/store\";\nimport { getComponent, getRef } from \"@/core/utils\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class AssetContextMenu extends Vue {\n visible = false;\n left = 0;\n top = 0;\n open(event: MouseEvent, inode: number) {\n if (!assetStore.selected.includes(inode)) getComponent().select(event, inode);\n\n this.visible = true;\n this.left = event.pageX;\n this.top = event.pageY;\n this.$nextTick(() => {\n (this.$children[0].$el).focus();\n });\n }\n close() {\n this.visible = false;\n }\n rename() {\n if (assetStore.selected.length !== 1) return;\n const asset = assetStore.idMap.get(assetStore.selected[0])!;\n\n getRef(\"prompt\")\n .prompt(\"New name:\", `Renaming ${asset.name}`)\n .then(\n (name: string) => {\n socket.emit(\"Asset.Rename\", {\n asset: asset.id,\n name,\n });\n asset.name = name;\n getComponent().$forceUpdate();\n },\n () => {},\n );\n this.close();\n }\n remove() {\n if (assetStore.selected.length === 0) return;\n getRef(\"confirm\")\n .open(\"Are you sure you wish to remove this?\")\n .then(\n (result: boolean) => {\n if (result) {\n for (const sel of assetStore.selected) {\n socket.emit(\"Asset.Remove\", sel);\n if (assetStore.files.includes(sel))\n assetStore.files.splice(assetStore.files.indexOf(sel), 1);\n else assetStore.folders.splice(assetStore.folders.indexOf(sel), 1);\n }\n assetStore.clearSelected();\n }\n },\n () => {},\n );\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class LabelManager extends Vue {\n visible = false;\n newCategory = \"\";\n newName = \"\";\n search = \"\";\n\n mounted() {\n EventBus.$on(\"LabelManager.Open\", () => {\n this.visible = true;\n this.newCategory = \"\";\n this.newName = \"\";\n this.$nextTick(() => (this.$refs.search).focus());\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"LabelManager.Open\");\n }\n\n get labels() {\n const cat: {[category: string]: Label[]} = {'': []};\n for (const uuid of Object.keys(gameStore.labels)) {\n const label = gameStore.labels[uuid];\n if (this.search.length && `${label.category.toLowerCase()}${label.name.toLowerCase()}`.search(this.search.toLowerCase()) < 0) continue;\n if (label.user !== gameStore.username) continue;\n if (!label.category) cat[''].push(label);\n else {\n if (!(label.category in cat)) cat[label.category] = [];\n cat[label.category].push(label);\n cat[label.category].sort((a, b) => a.name.localeCompare(b.name));\n }\n }\n return cat;\n }\n\n get categories() {\n return Object.keys(this.labels).sort();\n }\n\n selectLabel(label: string) {\n EventBus.$emit(\"EditDialog.AddLabel\", label);\n this.visible = false;\n }\n\n toggleVisibility(label: Label) {\n label.visible = !label.visible;\n socket.emit(\"Label.Visibility.Set\", { uuid: label.uuid, visible: label.visible });\n }\n\n addLabel() {\n if (this.newName === \"\") return;\n const label = {\n uuid: uuidv4(),\n category: this.newCategory,\n name: this.newName,\n visible: false,\n user: gameStore.username,\n };\n gameStore.addLabel(label);\n socket.emit(\"Label.Add\", label);\n this.newCategory = \"\";\n this.newName = \"\";\n }\n\n deleteLabel(uuid: string) {\n gameStore.deleteLabel({ uuid, user: gameStore.username });\n socket.emit(\"Label.Delete\", uuid);\n }\n}\n","import { ServerPolygon } from \"../comm/types/shapes\";\nimport { GlobalPoint, LocalPoint } from \"../geom\";\nimport { g2lx, g2ly, g2lz, l2g } from \"../units\";\nimport { getFogColour } from \"../utils\";\nimport { BoundingRect } from \"./boundingrect\";\nimport { Shape } from \"./shape\";\n\nexport class Polygon extends Shape {\n type = \"polygon\";\n _vertices: GlobalPoint[] = [];\n\n constructor(\n startPoint: GlobalPoint,\n vertices: GlobalPoint[] = [],\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, fillColour, strokeColour, uuid);\n this._vertices = vertices;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n const delta = point.subtract(this._refPoint);\n this._refPoint = point;\n for (let i = 0; i < this._vertices.length; i++) this._vertices[i] = this._vertices[i].add(delta);\n }\n\n get vertices() {\n return [this._refPoint, ...this._vertices];\n }\n\n asDict() {\n return Object.assign(this.getBaseDict(), {\n vertices: this._vertices.map(p => ({ x: p.x, y: p.y })),\n });\n }\n\n fromDict(data: ServerPolygon) {\n super.fromDict(data);\n this._vertices = data.vertices.map(v => new GlobalPoint(v.x, v.y));\n }\n\n get points() {\n return this.vertices.map(point => [point.x, point.y]);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n\n if (this.strokeColour === \"fog\") ctx.strokeStyle = getFogColour();\n else if (this.vertices.length === 2) ctx.strokeStyle = this.fillColour;\n else ctx.strokeStyle = this.strokeColour;\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n ctx.lineWidth = g2lz(2);\n\n ctx.beginPath();\n ctx.moveTo(g2lx(this.vertices[0].x), g2ly(this.vertices[0].y));\n for (let i = 1; i <= this.vertices.length; i++) {\n const vertex = this.vertices[i % this.vertices.length];\n ctx.lineTo(g2lx(vertex.x), g2ly(vertex.y));\n }\n ctx.fill();\n ctx.stroke();\n }\n\n contains(point: GlobalPoint): boolean {\n return this.getBoundingBox().contains(point);\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n return this.getBoundingBox().center();\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this._refPoint = l2g(point);\n else this._vertices[resizePoint - 1] = l2g(point);\n }\n getBoundingBox(): BoundingRect {\n let minx: number = this.refPoint.x;\n let maxx: number = this.refPoint.x;\n let miny: number = this.refPoint.y;\n let maxy: number = this.refPoint.y;\n for (const p of this._vertices) {\n if (p.x < minx) minx = p.x;\n if (p.x > maxx) maxx = p.x;\n if (p.y < miny) miny = p.y;\n if (p.y > maxy) maxy = p.y;\n }\n return new BoundingRect(new GlobalPoint(minx, miny), maxx - minx, maxy - miny);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IS_DM),expression:\"IS_DM\"}]},[_vm._v(\"Mode\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IS_DM),expression:\"IS_DM\"}],staticClass:\"selectgroup\"},_vm._l((_vm.modes),function(mode){return _c('div',{key:mode,staticClass:\"option\",class:{'option-selected': _vm.modeSelect === mode},on:{\"click\":function($event){_vm.modeSelect = mode}}},[_vm._v(_vm._s(mode))])}),0),_c('div',[_vm._v(\"Shape\")]),_c('div',{staticClass:\"selectgroup\"},_vm._l((_vm.shapes),function(shape){return _c('div',{key:shape,staticClass:\"option\",class:{'option-selected': _vm.shapeSelect === shape},on:{\"click\":function($event){_vm.shapeSelect = shape}}},[_c('i',{staticClass:\"fas\",class:'fa-' + shape})])}),0),_c('div',[_vm._v(\"Colours\")]),_c('div',{staticClass:\"selectgroup\"},[_c('color-picker',{staticClass:\"option\",attrs:{\"color\":_vm.fillColour},on:{\"update:color\":function($event){_vm.fillColour=$event}}}),_c('color-picker',{staticClass:\"option\",attrs:{\"color\":_vm.borderColour},on:{\"update:color\":function($event){_vm.borderColour=$event}}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shapeSelect === 'paint-brush'),expression:\"shapeSelect === 'paint-brush'\"}]},[_vm._v(\"Brush size\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.brushSize),expression:\"brushSize\"},{name:\"show\",rawName:\"v-show\",value:(_vm.shapeSelect === 'paint-brush'),expression:\"shapeSelect === 'paint-brush'\"}],staticStyle:{\"max-width\":\"100px\"},attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.brushSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.brushSize=$event.target.value}}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=template&id=639cd890&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shapes.length > 0),expression:\"shapes.length > 0\"}]},_vm._l((_vm.shapes),function(shape){return _c('div',{key:shape.uuid},[_c('div',{attrs:{\"id\":\"selection-menu\"}},[_c('div',{attrs:{\"id\":\"selection-edit-button\"},on:{\"click\":_vm.openEditDialog}},[_c('i',{staticClass:\"fas fa-edit\"})]),_c('div',{attrs:{\"id\":\"selection-name\"}},[_vm._v(_vm._s(shape.name))]),_c('div',{attrs:{\"id\":\"selection-trackers\"}},[_vm._l((_vm.visibleTrackers),function(tracker){return [_c('div',{key:'name-' + tracker.uuid},[_vm._v(_vm._s(tracker.name))]),_c('div',{key:'value-' + tracker.uuid,staticClass:\"selection-tracker-value\",on:{\"click\":function($event){return _vm.changeValue(tracker, false)}}},[(tracker.maxvalue === 0)?[_vm._v(_vm._s(tracker.value))]:[_vm._v(_vm._s(tracker.value)+\" / \"+_vm._s(tracker.maxvalue))]],2)]})],2),_c('div',{attrs:{\"id\":\"selection-auras\"}},[_vm._l((_vm.visibleAuras),function(aura){return [_c('div',{key:'name-' + aura.uuid},[_vm._v(_vm._s(aura.name))]),_c('div',{key:'value-' + aura.uuid,staticClass:\"selection-tracker-value\",on:{\"click\":function($event){return _vm.changeValue(aura, true)}}},[(aura.dim === 0)?[_vm._v(_vm._s(aura.value))]:[_vm._v(_vm._s(aura.value)+\" / \"+_vm._s(aura.dim))]],2)]})],2)]),_c('edit-dialog',{ref:\"editDialog\",refInFor:true,attrs:{\"shape\":shape}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=template&id=43d09857&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',{attrs:{\"id\":\"accordion-container\"}},_vm._l((_vm.categories),function(category){return _c('accordion',{key:category,attrs:{\"title\":category === '' ? 'no category' : category,\"showArrow\":false,\"items\":_vm.labels[category],\"initialValues\":_vm.initalValues[category]},on:{\"selectionupdate\":_vm.updateSelection}})}),1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=template&id=dca395d6&scoped=true&\"","import { render, staticRenderFns } from \"./manager.vue?vue&type=template&id=5b0def98&\"\nimport script from \"./manager.vue?vue&type=script&lang=ts&\"\nexport * from \"./manager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./manager.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./tool.vue?vue&type=template&id=1e034b42&\"\nimport script from \"./tool.vue?vue&type=script&lang=ts&\"\nexport * from \"./tool.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./tool.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":_vm.close},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(_vm._s(_vm.title))])}}])},[_c('div',{staticClass:\"modal-body\"},[_vm._v(\"\\n \"+_vm._s(_vm.question)+\"\\n \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.answer),expression:\"answer\"}],ref:\"answer\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.answer)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.answer=$event.target.value}}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=template&id=0602c2e6&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport draggable from \"vuedraggable\";\nVue.component(\"draggable\", draggable);\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { InitiativeData, InitiativeEffect } from \"@/game/comm/types/general\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { gameManager } from '../manager';\n\n@Component({\n components: {\n Modal,\n draggable,\n },\n})\nexport default class Initiative extends Vue {\n visible = false;\n data: InitiativeData[] = [];\n currentActor: string | null = null;\n roundCounter = 0;\n visionLock = false;\n cameraLock = false;\n _activeTokens: string[] = [];\n\n mounted() {\n EventBus.$on(\"Initiative.Clear\", this.clear);\n EventBus.$on(\"Initiative.Remove\", (data: string) => this.removeInitiative(data));\n EventBus.$on(\"Initiative.Show\", () => (this.visible = true));\n\n socket.on(\"Initiative.Set\", (data: InitiativeData[]) => {\n this.data = data;\n });\n socket.on(\"Initiative.Turn.Set\", (data: string) => this.setTurn(data));\n socket.on(\"Initiative.Turn.Update\", (data: string) => this.updateTurn(data, false));\n socket.on(\"Initiative.Round.Update\", (data: number) => this.setRound(data, false));\n socket.on(\"Initiative.Effect.New\", (data: { actor: string; effect: InitiativeEffect }) => {\n const actor = this.getActor(data.actor);\n if (actor === undefined) return;\n this.createEffect(actor, data.effect, false);\n });\n socket.on(\"Initiative.Effect.Update\", (data: { actor: string; effect: InitiativeEffect }) =>\n this.updateEffect(data.actor, data.effect, false),\n );\n }\n\n beforeDestroy() {\n EventBus.$off(\"Initiative.Clear\");\n EventBus.$off(\"Initiative.Remove\");\n EventBus.$off(\"Initiative.Show\");\n }\n\n // Utilities\n clear() {\n this.data = [];\n this.currentActor = null;\n }\n getActor(actorId: string) {\n return this.data.find(a => a.uuid === actorId);\n }\n contains(uuid: string) {\n return this.data.some(d => d.uuid === uuid);\n }\n owns(actor: InitiativeData): boolean {\n if (gameStore.IS_DM) return true;\n const shape = layerManager.UUIDMap.get(actor.uuid);\n // Shapes that are unknown to this client are hidden from this client but owned by other clients\n if (shape === undefined) return false;\n return shape.owners.includes(gameStore.username);\n }\n getDefaultEffect() {\n return { uuid: uuidv4(), name: \"New Effect\", turns: 10 };\n }\n fakeSetData(dataTransfer: DataTransfer) {\n dataTransfer.setData(\"Hack\", \"\");\n }\n syncInitiative(data: InitiativeData | { uuid: string }) {\n socket.emit(\"Initiative.Update\", data);\n }\n // Events\n addInitiative(data: InitiativeData) {\n const d = this.data.findIndex(a => a.uuid === data.uuid);\n if (d >= 0) return;\n if (data.initiative === undefined) data.initiative = 0;\n this.syncInitiative(data);\n }\n removeInitiative(uuid: string) {\n const d = this.data.findIndex(a => a.uuid === uuid);\n if (d < 0 || this.data[d].group) return;\n this.syncInitiative({ uuid });\n // Remove highlight\n const shape = layerManager.UUIDMap.get(uuid);\n if (shape === undefined) return;\n if (shape.showHighlight) {\n shape.showHighlight = false;\n layerManager.getLayer(shape.layer)!.invalidate(true);\n }\n }\n updateOrder() {\n if (!gameStore.IS_DM) return;\n socket.emit(\"Initiative.Set\", this.data.map(d => d.uuid));\n }\n updateTurn(actorId: string | null, sync: boolean) {\n if (!gameStore.IS_DM && sync) return;\n this.currentActor = actorId;\n const actor = this.data.find(a => a.uuid === actorId);\n if (actor === undefined) return;\n if (actor.effects) {\n for (let e = actor.effects.length - 1; e >= 0; e--) {\n if (actor.effects[e].turns <= 0) actor.effects.splice(e, 1);\n else actor.effects[e].turns--;\n }\n }\n if (this.visionLock) {\n if (actorId !== null && gameStore.ownedtokens.includes(actorId)) gameStore.setActiveTokens([actorId]);\n else gameStore.setActiveTokens([]);\n }\n if (this.cameraLock) {\n if (actorId !== null) {\n const shape = layerManager.UUIDMap.get(actorId);\n if (shape !== undefined && shape.ownedBy()) {\n gameManager.setCenterPosition(shape.center());\n }\n }\n }\n if (sync) socket.emit(\"Initiative.Turn.Update\", actorId);\n }\n setRound(round: number, sync: boolean) {\n if (!gameStore.IS_DM && sync) return;\n this.roundCounter = round;\n if (sync) socket.emit(\"Initiative.Round.Update\", round);\n }\n setTurn(actorId: string | null) {\n this.currentActor = actorId;\n }\n nextTurn() {\n if (!gameStore.IS_DM) return;\n const order = this.data;\n const next = order[(order.findIndex(a => a.uuid === this.currentActor) + 1) % order.length];\n if (this.data[0].uuid === next.uuid) this.setRound(this.roundCounter + 1, true);\n this.updateTurn(next.uuid, true);\n }\n toggleHighlight(actor: InitiativeData, show: boolean) {\n const shape = layerManager.UUIDMap.get(actor.uuid);\n if (shape === undefined) return;\n shape.showHighlight = show;\n layerManager.getLayer(shape.layer)!.invalidate(true);\n }\n toggleOption(actor: InitiativeData, option: \"visible\" | \"group\") {\n if (!this.owns(actor)) return;\n actor[option] = !actor[option];\n this.syncInitiative(actor);\n }\n createEffect(actor: InitiativeData, effect: InitiativeEffect, sync: boolean) {\n if (!this.owns(actor)) return;\n actor.effects.push(effect);\n if (sync) socket.emit(\"Initiative.Effect.New\", { actor: actor.uuid, effect });\n }\n syncEffect(actor: InitiativeData, effect: InitiativeEffect) {\n if (!this.owns(actor)) return;\n socket.emit(\"Initiative.Effect.Update\", { actor: actor.uuid, effect });\n }\n updateEffect(actorId: string, effect: InitiativeEffect, sync: boolean) {\n const actor = this.data.find(a => a.uuid === actorId);\n if (actor === undefined) return;\n const effectIndex = actor.effects.findIndex(e => e.uuid === effect.uuid);\n if (effectIndex === undefined) return;\n actor.effects[effectIndex] = effect;\n if (sync) this.syncEffect(actor, effect);\n else this.$forceUpdate();\n }\n toggleVisionLock() {\n this.visionLock = !this.visionLock;\n if (this.visionLock) {\n this._activeTokens = [...gameStore._activeTokens];\n if (this.currentActor !== null && gameStore.ownedtokens.includes(this.currentActor)) gameStore.setActiveTokens([this.currentActor]);\n } else {\n gameStore.setActiveTokens(this._activeTokens);\n }\n }\n}\n","import { render, staticRenderFns } from \"./selection_info.vue?vue&type=template&id=43d09857&scoped=true&\"\nimport script from \"./selection_info.vue?vue&type=script&lang=ts&\"\nexport * from \"./selection_info.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./selection_info.vue?vue&type=style&index=0&id=43d09857&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43d09857\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nimport { Action, getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { AssetList } from \"@/core/comm/types\";\nimport { socket } from \"@/game/api/socket\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { g2l, l2g } from \"@/game/units\";\nimport { zoomValue } from \"@/game/utils\";\nimport { BoundingVolume } from \"@/game/visibility/bvh/bvh\";\nimport { triangulate } from \"@/game/visibility/te/pa\";\nimport { rootStore } from \"@/store\";\n\nexport interface GameState {\n boardInitialized: boolean;\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"game\", namespaced: true })\nclass GameStore extends VuexModule implements GameState {\n // This is a limited view of selectable layers that is used to generate the layer selection UI and ability to switch layers\n // See the layerManager for proper layer management tools\n layers: string[] = [];\n selectedLayerIndex = -1;\n boardInitialized = false;\n\n locations: string[] = [];\n\n assets: AssetList = {};\n\n notes: Note[] = [];\n\n IS_DM = false;\n FAKE_PLAYER = false;\n isLocked = false;\n gridSize = 50;\n username = \"\";\n roomName = \"\";\n roomCreator = \"\";\n invitationCode = \"\";\n players: { id: number; name: string; }[] = [];\n\n gridColour = \"rgba(0, 0, 0, 1)\";\n fowColour = \"rgba(0, 0, 0, 1)\";\n rulerColour = \"rgba(255, 0, 0, 1)\";\n panX = 0;\n panY = 0;\n\n zoomDisplay = 0.5;\n // zoomFactor = 1;\n\n unitSize = 5;\n useGrid = true;\n fullFOW = false;\n fowOpacity = 0.3;\n fowLOS = false;\n locationName = \"\";\n\n visionSources: { shape: string; aura: string }[] = [];\n visionBlockers: string[] = [];\n annotations: string[] = [];\n movementblockers: string[] = [];\n ownedtokens: string[] = [];\n _activeTokens: string[] = [];\n\n BV = Object.freeze(new BoundingVolume([]));\n\n visionMode: \"bvh\" | \"triangle\" = \"bvh\";\n drawTEContour = false;\n visionRangeMin = 1640;\n visionRangeMax = 3281;\n\n clipboard: ServerShape[] = [];\n\n // Maps are not yet supported in Vue untill 3.X, so for now we're using a plain old object\n labels: { [uuid: string]: Label } = {};\n\n filterNoLabel = false;\n labelFilters: string[] = [];\n\n showUI = true;\n\n get selectedLayer() {\n return this.layers[this.selectedLayerIndex];\n }\n\n get zoomFactor() {\n return zoomValue(this.zoomDisplay);\n }\n\n get activeTokens() {\n if (this._activeTokens.length === 0) return this.ownedtokens;\n return this._activeTokens;\n }\n\n @Mutation\n setFakePlayer(value: boolean) {\n this.FAKE_PLAYER = value;\n this.IS_DM = !value;\n layerManager.invalidate();\n }\n\n @Mutation\n setZoomDisplay(zoom: number) {\n if (zoom === this.zoomDisplay) return;\n if (zoom < 0) zoom = 0;\n if (zoom > 1) zoom = 1;\n this.zoomDisplay = zoom;\n layerManager.invalidate();\n }\n\n @Mutation\n setVisionMode(data: { mode: \"bvh\" | \"triangle\"; sync: boolean }) {\n this.visionMode = data.mode;\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_mode: data.mode });\n }\n\n @Mutation\n setBoardInitialized(boardInitialized: boolean) {\n this.boardInitialized = boardInitialized;\n }\n\n @Mutation\n toggleUnlabeledFilter() {\n this.filterNoLabel = !this.filterNoLabel;\n }\n\n @Mutation\n addLabel(label: Label) {\n Vue.set(this.labels, label.uuid, label);\n }\n\n @Mutation\n setLabelFilters(filters: string[]) {\n this.labelFilters = filters;\n }\n\n @Mutation\n setLabelVisibility(data: { user: string; uuid: string; visible: boolean }) {\n if (!(data.uuid in this.labels)) return;\n this.labels[data.uuid].visible = data.visible;\n }\n\n @Mutation\n deleteLabel(data: { uuid: string; user: string }) {\n if (!(data.uuid in this.labels)) return;\n const label = this.labels[data.uuid];\n const updatedLayers: Set = new Set();\n for (const shape of layerManager.UUIDMap.values()) {\n const i = shape.labels.indexOf(label);\n if (i >= 0) {\n shape.labels.splice(i, 1);\n updatedLayers.add(shape.layer);\n }\n }\n for (const layer of updatedLayers) layerManager.getLayer(layer)!.invalidate(false);\n Vue.delete(this.labels, data.uuid);\n }\n\n @Mutation\n setDM(isDM: boolean) {\n this.IS_DM = isDM;\n }\n\n @Mutation\n setUsername(username: string) {\n this.username = username;\n }\n\n @Mutation\n setRoomName(name: string) {\n this.roomName = name;\n }\n\n @Mutation\n setRoomCreator(name: string) {\n this.roomCreator = name;\n }\n\n @Mutation\n setInvitationCode(code: string) {\n this.invitationCode = code;\n }\n\n @Mutation\n addLayer(name: string) {\n this.layers.push(name);\n if (this.selectedLayerIndex === -1) this.selectedLayerIndex = this.layers.indexOf(name);\n }\n\n @Mutation\n selectLayer(data: { name: string; sync: boolean }) {\n const index = this.layers.indexOf(data.name);\n if (index >= 0) this.selectedLayerIndex = index;\n if (data.sync) socket.emit(\"Client.ActiveLayer.Set\", data.name);\n }\n\n @Mutation\n newNote(data: { note: Note; sync: boolean }) {\n this.notes.push(data.note);\n if (data.sync) socket.emit(\"Note.New\", data.note);\n }\n\n @Mutation\n setAssets(assets: AssetList) {\n this.assets = assets;\n }\n\n @Mutation\n setLocations(locations: string[]) {\n this.locations = locations;\n }\n\n @Mutation\n resetLayerInfo() {\n this.layers = [];\n this.selectedLayerIndex = -1;\n }\n\n @Mutation\n recalculateVision(partial = false) {\n if (this.boardInitialized) {\n if (this.visionMode === \"triangle\") triangulate(\"vision\", partial);\n else this.BV = Object.freeze(new BoundingVolume(this.visionBlockers));\n }\n }\n\n @Mutation\n recalculateMovement(partial = false) {\n if (this.boardInitialized && this.visionMode === \"triangle\") triangulate(\"movement\", partial);\n }\n\n @Mutation\n updateZoom(data: { newZoomDisplay: number; zoomLocation: GlobalPoint }) {\n if (data.newZoomDisplay === this.zoomDisplay) return;\n if (data.newZoomDisplay < 0) data.newZoomDisplay = 0;\n if (data.newZoomDisplay > 1) data.newZoomDisplay = 1;\n const oldLoc = g2l(data.zoomLocation);\n this.zoomDisplay = data.newZoomDisplay;\n const newLoc = l2g(oldLoc);\n // Change the pan settings to keep the zoomLocation in the same exact location before and after the zoom.\n const diff = newLoc.subtract(data.zoomLocation);\n this.panX += diff.x;\n this.panY += diff.y;\n layerManager.invalidate();\n sendClientOptions();\n }\n\n @Mutation\n setGridColour(data: { colour: string; sync: boolean }) {\n this.gridColour = data.colour;\n layerManager.getGridLayer()!.drawGrid();\n if (data.sync) socket.emit(\"Client.Options.Set\", { gridColour: data.colour });\n }\n\n @Mutation\n setFOWColour(data: { colour: string; sync: boolean }) {\n this.fowColour = data.colour;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Client.Options.Set\", { fowColour: data.colour });\n }\n\n @Mutation\n setRulerColour(data: { colour: string; sync: boolean }) {\n this.rulerColour = data.colour;\n if (data.sync) socket.emit(\"Client.Options.Set\", { rulerColour: data.colour });\n }\n\n @Mutation\n setPanX(x: number) {\n this.panX = x;\n }\n\n @Mutation\n setPanY(y: number) {\n this.panY = y;\n }\n\n @Mutation\n increasePanX(increase: number) {\n this.panX += increase;\n }\n\n @Mutation\n increasePanY(increase: number) {\n this.panY += increase;\n }\n\n @Mutation\n setUnitSize(data: { unitSize: number; sync: boolean }) {\n if (this.unitSize !== data.unitSize && data.unitSize > 0 && data.unitSize < Infinity) {\n this.unitSize = data.unitSize;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Location.Options.Set\", { unit_size: data.unitSize });\n }\n }\n\n @Mutation\n setUseGrid(data: { useGrid: boolean; sync: boolean }) {\n if (this.useGrid !== data.useGrid) {\n this.useGrid = data.useGrid;\n const gridLayer = layerManager.getGridLayer()!;\n if (data.useGrid) gridLayer.canvas.style.display = \"block\";\n else gridLayer.canvas.style.display = \"none\";\n if (data.sync) socket.emit(\"Location.Options.Set\", { use_grid: data.useGrid });\n }\n }\n\n @Mutation\n setGridSize(data: { gridSize: number; sync: boolean }): void {\n if (this.gridSize !== data.gridSize && data.gridSize > 0) {\n this.gridSize = data.gridSize;\n const gridLayer = layerManager.getGridLayer();\n if (gridLayer !== undefined) gridLayer.drawGrid();\n if (data.sync) socket.emit(\"Gridsize.Set\", data.gridSize);\n }\n }\n\n @Mutation\n setVisionRangeMin(data: { value: number; sync: boolean }): void {\n this.visionRangeMin = data.value;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_min_range: data.value });\n }\n\n @Mutation\n setVisionRangeMax(data: { value: number; sync: boolean }): void {\n this.visionRangeMax = Math.max(data.value, this.visionRangeMin);\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_max_range: this.visionRangeMax });\n }\n\n @Mutation\n setFullFOW(data: { fullFOW: boolean; sync: boolean }) {\n if (this.fullFOW !== data.fullFOW) {\n this.fullFOW = data.fullFOW;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { full_fow: data.fullFOW });\n }\n }\n\n @Mutation\n setFOWOpacity(data: { fowOpacity: number; sync: boolean }) {\n this.fowOpacity = data.fowOpacity;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { fow_opacity: data.fowOpacity });\n }\n\n @Mutation\n setLineOfSight(data: { fowLOS: boolean; sync: boolean }) {\n if (this.fowLOS !== data.fowLOS) {\n this.fowLOS = data.fowLOS;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Location.Options.Set\", { fow_los: data.fowLOS });\n }\n }\n\n @Mutation\n setLocationName(name: string) {\n this.locationName = name;\n }\n\n @Mutation\n updateNote(data: { note: Note; sync: boolean }) {\n const actualNote = this.notes.find(n => n.uuid === data.note.uuid);\n if (actualNote === undefined) return;\n actualNote.title = data.note.title;\n actualNote.text = data.note.text;\n if (data.sync) socket.emit(\"Note.Update\", actualNote);\n }\n\n @Mutation\n removeNote(data: { note: Note; sync: boolean }) {\n this.notes = this.notes.filter(n => n.uuid !== data.note.uuid);\n if (data.sync) socket.emit(\"Note.Remove\", data.note.uuid);\n }\n\n @Mutation\n toggleUI() {\n this.showUI = !this.showUI;\n }\n\n @Mutation\n setClipboard(clipboard: ServerShape[]) {\n this.clipboard = clipboard;\n }\n\n @Mutation\n setActiveTokens(tokens: string[]) {\n this._activeTokens = tokens;\n layerManager.invalidateLight();\n }\n\n @Mutation\n addActiveToken(token: string) {\n this._activeTokens.push(token);\n layerManager.invalidateLight();\n }\n\n @Mutation\n removeActiveToken(token: string) {\n if (this._activeTokens.length === 0) {\n this._activeTokens = [...this.ownedtokens];\n }\n this._activeTokens.splice(this._activeTokens.indexOf(token), 1);\n layerManager.invalidateLight();\n }\n\n @Mutation\n setPlayers(players: { id: number; name: string; }[]) {\n this.players = players;\n }\n\n @Mutation\n addPlayer(player: { id: number; name: string }) {\n this.players.push(player);\n }\n\n @Mutation\n kickPlayer(playerId: number) {\n this.players = this.players.filter(p => p.id !== playerId);\n }\n\n @Mutation\n setIsLocked(data: {isLocked: boolean, sync: boolean}) {\n this.isLocked = data.isLocked;\n if (data.sync) {\n socket.emit(\"Room.Info.Set.Locked\", this.isLocked);\n }\n }\n\n @Action\n clear() {\n (this.context.state).visionSources = [];\n (this.context.state).visionBlockers = [];\n (this.context.state).ownedtokens = [];\n (this.context.state).annotations = [];\n (this.context.state).movementblockers = [];\n (this.context.state).notes = [];\n this.context.commit(\"recalculateVision\");\n this.context.commit(\"recalculateMovement\");\n }\n}\n\nexport const gameStore = getModule(GameStore);\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=script&lang=ts&\"","import { ServerAura } from \"@/game/comm/types/shapes\";\n\nexport const aurasFromServer = (auras: ServerAura[]): Aura[] => {\n const result = [];\n for (const aura of auras) {\n result.push({\n uuid: aura.uuid,\n visionSource: aura.vision_source,\n visible: aura.visible,\n name: aura.name,\n value: aura.value,\n dim: aura.dim,\n colour: aura.colour,\n });\n }\n return result;\n};\n\nexport const aurasToServer = (auras: Aura[]): ServerAura[] => {\n const result = [];\n for (const aura of auras) {\n result.push({\n uuid: aura.uuid,\n vision_source: aura.visionSource,\n visible: aura.visible,\n name: aura.name,\n value: aura.value,\n dim: aura.dim,\n colour: aura.colour,\n });\n }\n return result;\n};\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./note.vue?vue&type=template&id=7a3669fd&scoped=true&\"\nimport script from \"./note.vue?vue&type=script&lang=ts&\"\nexport * from \"./note.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a3669fd\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./initiative.vue?vue&type=template&id=62228cde&scoped=true&\"\nimport script from \"./initiative.vue?vue&type=script&lang=ts&\"\nexport * from \"./initiative.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./initiative.vue?vue&type=style&index=0&id=62228cde&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62228cde\",\n null\n \n)\n\nexport default component.exports","import { ServerLayer } from \"@/game/comm/types/general\";\nimport { FOWLayer } from \"@/game/layers/fow\";\nimport { FOWPlayersLayer } from \"@/game/layers/fowplayers\";\nimport { GridLayer } from \"@/game/layers/grid\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\nexport function createLayer(layerInfo: ServerLayer) {\n // Create canvas element\n const canvas = document.createElement(\"canvas\");\n canvas.style.zIndex = layerManager.layers.length.toString();\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n\n // Create the Layer instance\n let layer: Layer;\n if (layerInfo.type_ === \"grid\") layer = new GridLayer(canvas, layerInfo.name);\n else if (layerInfo.type_ === \"fow\") layer = new FOWLayer(canvas, layerInfo.name);\n else if (layerInfo.type_ === \"fow-players\") layer = new FOWPlayersLayer(canvas, layerInfo.name);\n else layer = new Layer(canvas, layerInfo.name);\n layer.selectable = layerInfo.selectable;\n layer.playerEditable = layerInfo.player_editable;\n layerManager.addLayer(layer);\n\n // Add the element to the DOM\n const layers = document.getElementById(\"layers\");\n if (layers === null) {\n console.warn(\"Layers div is missing, this will prevent the main game board from loading!\");\n return;\n }\n if (layerInfo.name !== \"fow-players\") layers.appendChild(canvas);\n\n if (layerInfo.type_ === \"grid\" && layerInfo.size) gameStore.setGridSize({ gridSize: layerInfo.size, sync: false });\n // Load layer shapes\n layer.setShapes(layerInfo.shapes);\n}\n","import { render, staticRenderFns } from \"./labels.vue?vue&type=template&id=e477c214&scoped=true&\"\nimport script from \"./labels.vue?vue&type=script&lang=ts&\"\nexport * from \"./labels.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e477c214\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{attrs:{\"id\":\"toolselect\"}},[_c('ul',_vm._l((_vm.visibleTools),function(tool){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.toolVisible(tool)),expression:\"toolVisible(tool)\"}],key:tool,ref:tool + '-selector',refInFor:true,class:{'tool-selected': _vm.currentTool === tool},on:{\"mousedown\":function($event){_vm.currentTool = tool}}},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(tool))])])}),0)]),_c('div',[[_c('select-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Select'),expression:\"currentTool === 'Select'\"}],ref:\"selectTool\"}),_c('pan-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Pan'),expression:\"currentTool === 'Pan'\"}]}),_c('keep-alive',[_c('draw-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Draw'),expression:\"currentTool === 'Draw'\"}]})],1),_c('ruler-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Ruler'),expression:\"currentTool === 'Ruler'\"}]}),_c('map-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Map'),expression:\"currentTool === 'Map'\"}]}),_c('filter-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Filter'),expression:\"currentTool === 'Filter'\"}]}),_c('vision-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Vision'),expression:\"currentTool === 'Vision'\"}]}),_c('shape-menu',{ref:\"shapecontext\"}),_c('createtoken-dialog',{ref:\"createtokendialog\"})]],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=template&id=b6e1f51c&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"focusin\":_vm.focusin,\"focusout\":_vm.focusout,\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('fieldset',[_c('legend',{staticClass:\"legend\"},[_vm._v(\"PlanarAlly\")]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],attrs:{\"type\":\"text\",\"name\":\"username\",\"placeholder\":\"Username\",\"autocomplete\":\"username\",\"required\":\"\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._m(0)]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"type\":\"password\",\"name\":\"password\",\"placeholder\":\"Password\",\"autocomplete\":\"current-password\",\"required\":\"\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._m(1)]),_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('button',{staticStyle:{\"visibility\":\"hidden\",\"display\":\"none\"},attrs:{\"type\":\"submit\",\"name\":\"login\"}}),_c('button',{staticClass:\"submit\",attrs:{\"type\":\"button\",\"name\":\"register\",\"title\":\"Register\"},on:{\"click\":_vm.register}},[_c('i',{staticClass:\"fas fa-plus\"})]),_vm._m(2)])]),(_vm.error)?_c('div',{staticClass:\"feedback\"},[_c('p',{staticClass:\"error\"},[_c('strong',[_vm._v(\"Error:\")]),_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-user-circle\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-lock\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"submit\",attrs:{\"type\":\"submit\",\"name\":\"login\",\"title\":\"Login\"}},[_c('i',{staticClass:\"fas fa-arrow-right\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"17a953f2-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=template&id=bc30fc14&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport EditDialog from \"@/game/ui/selection/edit_dialog.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\n\n@Component({\n components: {\n \"edit-dialog\": EditDialog,\n },\n})\nexport default class SelectionInfo extends Vue {\n shape: Shape | null = null;\n\n mounted() {\n EventBus.$on(\"SelectionInfo.Shape.Set\", (shape: Shape | null) => {\n this.shape = shape;\n });\n }\n\n get shapes() {\n if (this.shape === null) return [];\n return [this.shape];\n }\n\n get visibleTrackers() {\n if (this.shape === null) return [];\n return this.shape.trackers.filter(tr => tr.name !== '' || tr.value !== 0);\n }\n\n get visibleAuras() {\n if (this.shape === null) return [];\n return this.shape.auras.filter(au => au.name !== '' || au.value !== 0);\n }\n\n beforeDestroy() {\n EventBus.$off(\"SelectionInfo.Shape.Set\");\n }\n\n openEditDialog() {\n (this.$refs.editDialog).visible = true;\n }\n changeValue(object: Tracker | Aura, redraw: boolean) {\n if (this.shape === null) return;\n getRef(\"prompt\")\n .prompt(`New ${object.name} value:`, `Updating ${object.name}`)\n .then(\n (value: string) => {\n if (this.shape === null) return;\n const ogValue = object.value;\n if (value[0] === \"+\" || value[0] === \"-\") object.value += parseInt(value, 10);\n else object.value = parseInt(value, 10);\n if (isNaN(object.value)) object.value = ogValue;\n socket.emit(\"Shape.Update\", { shape: this.shape.asDict(), redraw, temporary: false });\n if (redraw) layerManager.invalidate();\n },\n () => {},\n );\n }\n}\n","import { AssetList } from \"@/core/comm/types\";\nimport { socket } from \"@/game/api/socket\";\nimport { BoardInfo, Note, ServerClient, ServerLocation } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createLayer } from \"@/game/layers/utils\";\nimport { gameManager } from \"@/game/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { router } from \"@/router\";\nimport { zoomDisplay } from \"../utils\";\n\nsocket.on(\"connect\", () => {\n console.log(\"Connected\");\n});\nsocket.on(\"disconnect\", () => {\n console.log(\"Disconnected\");\n});\nsocket.on(\"connect_error\", (error: any) => {\n console.error(\"Could not connect to game session.\");\n router.push(\"/dashboard\");\n});\nsocket.on(\"error\", (error: any) => {\n console.error(\"Game session does not exist.\");\n router.push(\"/dashboard\");\n});\nsocket.on(\"redirect\", (destination: string) => {\n console.log(\"redirecting\");\n router.push(destination);\n});\nsocket.on(\"Room.Info.Set\", (data: { name: string; creator: string; invitationCode: string, isLocked: boolean, players: { id: number; name: string }[] }) => {\n gameStore.setRoomName(data.name);\n gameStore.setRoomCreator(data.creator);\n gameStore.setInvitationCode(data.invitationCode);\n gameStore.setIsLocked({isLocked: data.isLocked, sync: false});\n gameStore.setPlayers(data.players);\n});\nsocket.on(\"Room.Info.InvitationCode.Set\", (invitationCode: string) => {\n gameStore.setInvitationCode(invitationCode);\n EventBus.$emit(\"DmSettings.RefreshedInviteCode\");\n});\nsocket.on(\"Room.Info.Players.Add\", (data: {id: number, name: string}) => {\n gameStore.addPlayer(data);\n});\nsocket.on(\"Username.Set\", (username: string) => {\n gameStore.setUsername(username);\n gameStore.setDM(username === decodeURIComponent(window.location.pathname.split(\"/\")[2]));\n});\nsocket.on(\"Client.Options.Set\", (options: ServerClient) => {\n gameStore.setGridColour({ colour: options.grid_colour, sync: false });\n gameStore.setFOWColour({ colour: options.fow_colour, sync: false });\n gameStore.setRulerColour({ colour: options.ruler_colour, sync: false });\n gameStore.setPanX(options.pan_x);\n gameStore.setPanY(options.pan_y);\n gameStore.setZoomDisplay(zoomDisplay(options.zoom_factor));\n // gameStore.setZoomDisplay(0.5);\n if (options.active_layer) layerManager.selectLayer(options.active_layer, false);\n if (layerManager.getGridLayer() !== undefined) layerManager.getGridLayer()!.invalidate();\n});\nsocket.on(\"Location.Set\", (data: Partial) => {\n if (data.name !== undefined) gameStore.setLocationName(data.name);\n if (data.unit_size !== undefined) gameStore.setUnitSize({ unitSize: data.unit_size, sync: false });\n if (data.use_grid !== undefined) gameStore.setUseGrid({ useGrid: data.use_grid, sync: false });\n if (data.full_fow !== undefined) gameStore.setFullFOW({ fullFOW: data.full_fow, sync: false });\n if (data.fow_opacity !== undefined) gameStore.setFOWOpacity({ fowOpacity: data.fow_opacity, sync: false });\n if (data.fow_los !== undefined) gameStore.setLineOfSight({ fowLOS: data.fow_los, sync: false });\n if (data.vision_min_range !== undefined) gameStore.setVisionRangeMin({ value: data.vision_min_range, sync: false });\n if (data.vision_max_range !== undefined) gameStore.setVisionRangeMax({ value: data.vision_max_range, sync: false });\n if (data.vision_mode !== undefined) {\n gameStore.setVisionMode({ mode: data.vision_mode, sync: false });\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n }\n});\nsocket.on(\"Position.Set\", (data: { x: number; y: number }) => {\n gameManager.setCenterPosition(new GlobalPoint(data.x, data.y));\n});\nsocket.on(\"Notes.Set\", (notes: Note[]) => {\n for (const note of notes) gameStore.newNote({ note, sync: false });\n});\nsocket.on(\"Asset.List.Set\", (assets: AssetList) => {\n gameStore.setAssets(assets);\n});\nsocket.on(\"Board.Set\", (locationInfo: BoardInfo) => {\n gameStore.clear();\n gameStore.setLocations(locationInfo.locations);\n document.getElementById(\"layers\")!.innerHTML = \"\";\n gameStore.resetLayerInfo();\n layerManager.reset();\n for (const layer of locationInfo.layers) createLayer(layer);\n // Force the correct opacity render on other layers.\n layerManager.selectLayer(layerManager.getLayer()!.name, false);\n EventBus.$emit(\"Initiative.Clear\");\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n gameStore.setBoardInitialized(true);\n});\nsocket.on(\"Gridsize.Set\", (gridSize: number) => {\n gameStore.setGridSize({ gridSize, sync: false });\n});\nsocket.on(\"Shape.Add\", (shape: ServerShape) => {\n gameManager.addShape(shape);\n});\nsocket.on(\"Shape.Remove\", (shape: ServerShape) => {\n if (!layerManager.UUIDMap.has(shape.uuid)) {\n console.log(`Attempted to remove an unknown shape`);\n return;\n }\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${shape.layer}`);\n return;\n }\n const layer = layerManager.getLayer(shape.layer)!;\n layer.removeShape(layerManager.UUIDMap.get(shape.uuid)!, false);\n layer.invalidate(false);\n});\nsocket.on(\"Shape.Order.Set\", (data: { shape: ServerShape; index: number }) => {\n if (!layerManager.UUIDMap.has(data.shape.uuid)) {\n console.log(`Attempted to move the shape order of an unknown shape`);\n return;\n }\n if (!layerManager.hasLayer(data.shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${data.shape.layer}`);\n return;\n }\n const shape = layerManager.UUIDMap.get(data.shape.uuid)!;\n const layer = layerManager.getLayer(shape.layer)!;\n layer.moveShapeOrder(shape, data.index, false);\n});\nsocket.on(\"Shape.Layer.Change\", (data: { uuid: string; layer: string }) => {\n const shape = layerManager.UUIDMap.get(data.uuid);\n if (shape === undefined) return;\n shape.moveLayer(data.layer, false);\n});\nsocket.on(\"Shape.Update\", (data: { shape: ServerShape; redraw: boolean; move: boolean, temporary: boolean }) => {\n gameManager.updateShape(data);\n});\nsocket.on(\"Temp.Clear\", (shapes: ServerShape[]) => {\n shapes.forEach(shape => {\n if (!layerManager.UUIDMap.has(shape.uuid)) {\n console.log(\"Attempted to remove an unknown temporary shape\");\n return;\n }\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${shape.layer}`);\n return;\n }\n const realShape = layerManager.UUIDMap.get(shape.uuid)!;\n layerManager.getLayer(shape.layer)!.removeShape(realShape, false);\n });\n});\nsocket.on(\"Labels.Set\", (labels: Label[]) => {\n for (const label of labels) gameStore.addLabel(label);\n});\nsocket.on(\"Label.Visibility.Set\", (data: { user: string; uuid: string; visible: boolean }) => {\n gameStore.setLabelVisibility(data);\n});\nsocket.on(\"Label.Add\", (data: Label) => {\n gameStore.addLabel(data);\n});\nsocket.on(\"Label.Delete\", (data: { user: string; uuid: string }) => {\n gameStore.deleteLabel(data);\n});\nsocket.on(\"Labels.Filter.Add\", (uuid: string) => {\n gameStore.labelFilters.push(uuid);\n layerManager.invalidate();\n})\nsocket.on(\"Labels.Filter.Remove\", (uuid: string) => {\n const idx = gameStore.labelFilters.indexOf(uuid);\n if (idx >= 0) {\n gameStore.labelFilters.splice(idx, 1);\n layerManager.invalidate();\n }\n})\nsocket.on(\"Labels.Filters.Set\", (filters: string[]) => {\n gameStore.setLabelFilters(filters);\n})\n"],"sourceRoot":""} \ No newline at end of file diff --git a/server/static/js/app.3ba691e3.js b/server/static/js/app.3ba691e3.js deleted file mode 100644 index 5decf155a..000000000 --- a/server/static/js/app.3ba691e3.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function t(t){for(var s,r,a=t[0],l=t[1],c=t[2],d=0,h=[];de.fillText(t.text,t.x,t.y)),e.restore()}contains(e){return!1}center(e){}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){}getMaxHeight(e){const t=this.getLines(e),i=30;return i*t.length}getMaxWidth(e){const t=this.getLines(e),i=t.map(t=>e.measureText(t.text).width);return Math.max(...i)}getLines(e){const t=this.text.split("\n"),i=[],s=e.canvas.width,n=30,o=0;let r=0;for(const a of t){let t="";const l=a.split(" ");for(const a of l){const l=t+a+" ",c=e.measureText(l),u=c.width;u>s?(e.fillText(t,o,r),i.push({text:t,x:o,y:r}),t=a+" ",r+=n):t=l}i.push({text:t,x:o,y:r}),r+=n}return i}}t.Text=r},"01be":function(e,t,i){"use strict";var s=i("919a"),n=i.n(s);n.a},"033f":function(e,t,i){"use strict";i.r(t);var s=i("da7f"),n=i("a68b");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("a83f");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"6c66d243",null);t["default"]=a.exports},"034f":function(e,t,i){"use strict";var s=i("64a9"),n=i.n(s);n.a},"0525":function(e,t,i){},"0584":function(e,t,i){"use strict";var s=i("de21"),n=i.n(s);n.a},"0634":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("c345a"),l=i("60a3");let c=class extends o.default{constructor(){super(...arguments),this.display=!1,this.left=0,this.top=0,this.transparent=!1}mounted(){this.transparent=0===this.$refs.chromePicker.val.rgba.a,this.setPosition()}open(){this.display||this.disabled||(this.setPosition(),this.display=!0,this.$nextTick(()=>this.$children[0].$el.focus()))}updateColor(e){this.transparent=0===e.rgba.a;const t=n.default(e.rgba).toRgbString();this.$emit("update:color",t),this.$emit("input",t)}closePicker(){this.display=!1,this.$emit("change",this.color)}setPosition(){const e=this.$el.getBoundingClientRect();e.right+224>window.innerWidth?this.left=e.left-224:this.left=e.right,e.bottom+242>window.innerHeight?this.top=e.top-242:this.top=e.bottom}};s.__decorate([l.Prop(String)],c.prototype,"color",void 0),s.__decorate([l.Prop(Boolean)],c.prototype,"disabled",void 0),c=s.__decorate([r.default({components:{"chrome-picker":a.Chrome}})],c),t.default=c},"07f5":function(e,t,i){"use strict";i.r(t);var s=i("69fb"),n=i("d588");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("561b"),i("e6c4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"3d0578ba",null);t["default"]=a.exports},"0a75":function(e,t,i){},"0bc6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("8055"));function o(e){t.socket.io.opts.query=`user=${e.params.creator}&room=${e.params.room}`,t.socket.connect()}t.socket=n.default(location.protocol+"//"+location.host+"/planarally",{autoConnect:!1}),t.createConnection=o},"0cf7":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("4aec")),a=s.__importDefault(i("a535")),l=s.__importDefault(i("cec2")),c=i("5338"),u=i("2d5b"),d=i("4a5b");let h=class extends n.default{constructor(){super(...arguments),this.path=[],this.draggingSelection=!1}get folders(){return u.assetStore.folders}get files(){return u.assetStore.files}get selected(){return u.assetStore.selected}get idMap(){return u.assetStore.idMap}get currentFolder(){return this.path.length?this.path[this.path.length-1]:u.assetStore.root}get parentFolder(){let e=this.path[this.path.length-2];return void 0===e&&(e=u.assetStore.root),e}get firstSelectedFile(){for(const e of u.assetStore.selected)if(u.assetStore.idMap.get(e).file_hash)return u.assetStore.idMap.get(e);return null}changeDirectory(e){e<0?this.path.pop():this.path.push(e),u.assetStore.clearSelected(),c.socket.emit("Folder.Get",this.currentFolder)}createDirectory(){const e=window.prompt("New folder name");null!==e&&c.socket.emit("Folder.Create",{name:e,parent:this.currentFolder})}moveInode(e,t){u.assetStore.files.includes(e)?u.assetStore.files.splice(u.assetStore.files.indexOf(e),1):u.assetStore.folders.splice(u.assetStore.folders.indexOf(e),1),u.assetStore.idMap.delete(e),c.socket.emit("Inode.Move",{inode:e,target:t})}select(e,t){if(e.shiftKey&&u.assetStore.selected.length>0){const e=[...u.assetStore.files,...u.assetStore.folders],i=e.indexOf(u.assetStore.selected[u.assetStore.selected.length-1]),s=e.indexOf(t);for(let t=i;t!==s;i0&&this.upload(e.dataTransfer.files,t);this.draggingSelection=!1}prepareUpload(){document.getElementById("files").click()}upload(e,t){const i=document.getElementById("files").files;if(void 0===e){if(!i)return;e=i}void 0===t&&(t=this.currentFolder);const s=1e5;for(const n of e){const e=d.uuidv4(),i=Math.ceil(n.size/s);for(let o=0;o{c.socket.emit("Asset.Upload",{name:n.name,directory:t,data:r.result,slice:o,totalSlices:i,uuid:e})}}}}};h=s.__decorate([o.default({components:{Prompt:l.default,ConfirmDialog:a.default,AssetContextMenu:r.default},beforeRouteEnter(e,t,i){c.socket.connect(),i()},beforeRouteLeave(e,t,i){c.socket.disconnect(),i()}})],h),t.default=h},"0ddd":function(e,t,i){"use strict";i.r(t);var s=i("8f54"),n=i("4bc3");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("9dd4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"6d718094",null);t["default"]=a.exports},1:function(e,t){},1077:function(e,t,i){"use strict";i.r(t);var s=i("f994"),n=i("1eee");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("3cd3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"bc30fc14",null);t["default"]=a.exports},1216:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("6f92"),n=i("92b1"),o=i("98ef"),r=i("4aee");function a(e,t){const i=s.layerManager.getLayer("draw");if(void 0===i)return;const o=i.ctx;o.lineJoin="round",o.lineJoin="round",o.beginPath(),o.strokeStyle=void 0===t?`rgb(${255*Math.random()}, ${255*Math.random()}, ${255*Math.random()})`:t,o.moveTo(n.g2lx(e[0][0]),n.g2ly(e[0][1]));for(const s of e)o.lineTo(n.g2lx(s[0]),n.g2ly(s[1]));o.closePath(),o.stroke()}function l(e,t){const i=s.layerManager.getLayer("draw");if(void 0===i)return;const n=i.ctx;n.lineJoin="round",n.lineJoin="round",n.beginPath(),n.strokeStyle=void 0===t?`rgb(${255*Math.random()}, ${255*Math.random()}, ${255*Math.random()})`:t,n.moveTo(e[0][0],e[0][1]);for(const s of e)n.lineTo(s[0],s[1]);n.closePath(),n.stroke()}function c(e,t){return t?e:n.g2lx(e)}function u(e,t){return t?e:n.g2ly(e)}t.drawPolygon=a,t.drawPolygonL=l;let d=0,h=0;function f(e,t,i,s,n){e.beginPath(),e.strokeStyle=s?"rgba(255, 0, 0, 0.30)":"rgba(0, 0, 0, 0.30)",e.moveTo(c(t[0],n),u(t[1],n)),e.lineTo(c(i[0],n),u(i[1],n)),e.closePath(),e.stroke()}function p(e,t=!0,i=!0,n=0){d=0,h=0;let a=0;const l=s.layerManager.getLayer("draw");if(void 0===l)return;const p=l.ctx;i&&p.clearRect(0,0,2e3,1e3),p.lineJoin="round",p.lineJoin="round";const g=new o.EdgeIterator(e);while(g.valid)g.next(),g.collect();g.collect();do{const e=g.edge.first.vertices[r.ccw(g.edge.second)].point,t=g.edge.first.vertices[r.cw(g.edge.second)].point;if(n>0){if(e[0]===-1/0||t[0]===-1/0){g.next();continue}h++,g.edge.first.constraints[g.edge.second]?(d++,2===n&&console.log(`Edge: (*) ${e} > ${t}`)):2===n&&console.log(`Edge: ${e} > ${t}`)}do{g.next(),g.collect()}while(g.valid)}while(null!==g.pos);for(const s of e.triangles){if(s.isInfinite())continue;a++;const e=[];p.fillStyle="red",void 0!==s.vertices[0]&&(e.push(s.vertices[0].point),p.beginPath(),p.arc(c(s.vertices[0].point[0],t),u(s.vertices[0].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),void 0!==s.vertices[1]&&(e.push(s.vertices[1].point),p.arc(c(s.vertices[1].point[0],t),u(s.vertices[1].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),void 0!==s.vertices[2]&&(e.push(s.vertices[2].point),p.arc(c(s.vertices[2].point[0],t),u(s.vertices[2].point[1],t),5,0,2*Math.PI),p.closePath(),p.fill()),2===n&&console.log("[T] ",...e,s.constraints),p.moveTo(c(s.vertices[0].point[0],t),u(s.vertices[0].point[1],t)),void 0!==s.vertices[0]&&void 0!==s.vertices[1]&&f(p,s.vertices[0].point,s.vertices[1].point,s.constraints[2],t),void 0!==s.vertices[1]&&void 0!==s.vertices[2]&&f(p,s.vertices[1].point,s.vertices[2].point,s.constraints[0],t),void 0!==s.vertices[2]&&void 0!==s.vertices[0]&&f(p,s.vertices[2].point,s.vertices[0].point,s.constraints[1],t)}n>0&&(console.log(`Edges: ${d}/${h}`),console.log(`Faces: ${a}`))}window.DP=a,window.DPL=l,window.DPT=p},1289:function(e,t,i){"use strict";i.r(t);var s=i("df64"),n=i("d677");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("8790");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"0bf2b7ba",null);t["default"]=a.exports},"12d3":function(e,t,i){"use strict";var s=i("a260"),n=i.n(s);n.a},1327:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importStar(i("66cb")),o=i("4a5b"),r=i("4709"),a=i("f10f"),l=i("92b1");class c extends r.Circle{constructor(e,t,i,s,n,o,r){super(e,t,n,o,r),this.type="circulartoken",this.text=i,this.font=s}asDict(){return Object.assign(this.getBaseDict(),{radius:this.r,text:this.text,font:this.font})}fromDict(e){super.fromDict(e),this.r=e.radius,this.text=e.text,this.font=e.font}draw(e){super.draw(e),e.font=this.font,e.save();const t=l.g2l(this.center());e.textAlign="center",e.textBaseline="middle";const i=o.calcFontScale(e,this.text,l.g2lz(this.r),l.g2lz(this.r)),s=0;e.transform(i,s,-s,i,t.x,t.y),e.fillStyle=n.mostReadable(this.fillColour,["#000","#fff"]).toHexString(),e.fillText(this.text,0,0),e.restore()}getInitiativeRepr(){return{uuid:this.uuid,visible:!a.gameStore.IS_DM,group:!1,source:""===this.name||"Unknown shape"===this.name?this.text:this.name,has_img:!1,effects:[],index:1/0}}}t.CircularToken=c},1625:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("b2ed"),r=i("0180"),a=i("f10f"),l=i("92b1");class c{constructor(){this.shown=!1;const e=new s.GlobalPoint(0,0);this.annotationText=new r.Text(e,"","bold 20px serif",0,"rgba(230, 230, 230, 1)"),this.annotationRect=new o.Rect(e,0,0,"rgba(0, 0, 0, 0.6)")}setActiveText(e){if(void 0===this.layer){if(!n.layerManager.hasLayer("draw"))return void console.warn("There is no draw layer to draw annotations on!");this.layer=n.layerManager.getLayer("draw"),this.layer.addShape(this.annotationRect,!1),this.layer.addShape(this.annotationText,!1)}this.shown=""!==e,this.annotationText.refPoint=l.l2g(new s.LocalPoint(this.layer.canvas.width/2,50)),this.annotationText.text=e;const t=this.shown?this.annotationText.getMaxWidth(this.layer.ctx)+10:0,i=this.shown?this.annotationText.getMaxHeight(this.layer.ctx)+10:0;this.annotationRect.refPoint=l.l2g(new s.LocalPoint(this.layer.canvas.width/2-t/2,30)),this.annotationRect.w=t/a.gameStore.zoomFactor,this.annotationRect.h=i/a.gameStore.zoomFactor,this.layer.invalidate(!0)}}t.AnnotationManager=c},"19f9":function(e,t,i){"use strict";i.r(t);var s=i("264b"),n=i("8cd4");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("314d");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"c7fe324c",null);t["default"]=a.exports},"1c76":function(e,t,i){"use strict";i.r(t);var s=i("2c88"),n=i("300e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("7f1e");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},"1dd6":function(e,t,i){"use strict";i.r(t);var s=i("5ae5"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"1eee":function(e,t,i){"use strict";i.r(t);var s=i("d30b"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"1fd5":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Label manager")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("div",{staticClass:"grid"},[i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Category"}},[e._v("Cat.")])]),i("div",{staticClass:"header name"},[e._v("Name")]),i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Visible"}},[e._v("Vis.")])]),i("div",{staticClass:"header"},[i("abbr",{attrs:{title:"Delete"}},[e._v("Del.")])]),i("div",{staticClass:"separator spanrow",staticStyle:{margin:"0 0 7px"}}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.search,expression:"search"}],ref:"search",staticClass:"spanrow",attrs:{type:"text",placeholder:"search"},domProps:{value:e.search},on:{input:function(t){t.target.composing||(e.search=t.target.value)}}})]),i("div",{staticClass:"grid scroll"},[e._l(e.categories,function(t){return[e._l(e.labels[t],function(t){return[i("div",{key:"row-"+t.uuid,staticClass:"row",on:{click:function(i){return e.selectLabel(t.uuid)}}},[t.category?[i("div",{key:"cat-"+t.uuid},[e._v(e._s(t.category))]),i("div",{key:"name-"+t.uuid,staticClass:"name"},[e._v(e._s(t.name))])]:e._e(),t.category?e._e():[i("div",{key:"cat-"+t.uuid}),i("div",{key:"name-"+t.uuid,staticClass:"name"},[e._v(e._s(t.name))])],i("div",{key:"visible-"+t.uuid,class:{"lower-opacity":!t.visible},style:{textAlign:"center"},on:{click:function(i){return i.stopPropagation(),e.toggleVisibility(t)}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{key:"delete-"+t.uuid,on:{click:function(i){return i.stopPropagation(),e.deleteLabel(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})])],2)]})]}),0===e.labels.length?[i("div",{attrs:{id:"no-labels"}},[e._v("No labels exist yet")])]:e._e()],2),i("div",{staticClass:"grid"},[i("div",{staticClass:"separator spanrow"}),i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.newCategory,expression:"newCategory",modifiers:{trim:!0}}],attrs:{type:"text"},domProps:{value:e.newCategory},on:{input:function(t){t.target.composing||(e.newCategory=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}}),i("input",{directives:[{name:"model",rawName:"v-model.trim",value:e.newName,expression:"newName",modifiers:{trim:!0}}],attrs:{type:"text"},domProps:{value:e.newName},on:{input:function(t){t.target.composing||(e.newName=t.target.value.trim())},blur:function(t){return e.$forceUpdate()}}}),i("button",{attrs:{id:"addLabelButton"},on:{click:function(t){return t.stopPropagation(),e.addLabel(t)}}},[e._v("Add")])])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"206a":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("6c30"),r=i("4709"),a=i("1327"),l=i("5e7c"),c=i("574e"),u=i("b2ed"),d=i("0180"),h=i("e4ea");function f(e){let t;const i=new s.GlobalPoint(e.x,e.y);if("rect"===e.type_){const s=e;t=new u.Rect(i,s.width,s.height,s.fill_colour,s.stroke_colour,s.uuid)}else if("circle"===e.type_){const s=e;t=new r.Circle(i,s.radius,s.fill_colour,s.stroke_colour,s.uuid)}else if("circulartoken"===e.type_){const s=e;t=new a.CircularToken(i,s.radius,s.text,s.font,s.fill_colour,s.stroke_colour,s.uuid)}else if("line"===e.type_){const n=e;t=new l.Line(i,new s.GlobalPoint(n.x2,n.y2),n.line_width,n.stroke_colour,n.uuid)}else if("multiline"===e.type_){const n=e;t=new c.MultiLine(i,n.points.map(e=>new s.GlobalPoint(e.x,e.y)),n.line_width,n.stroke_colour,n.uuid)}else if("polygon"===e.type_){const n=e;t=new h.Polygon(i,n.vertices.map(e=>new s.GlobalPoint(e.x,e.y)),n.fill_colour,n.stroke_colour,n.uuid)}else if("text"===e.type_){const s=e;t=new d.Text(i,s.text,s.font,s.angle,s.fill_colour,s.stroke_colour,s.uuid)}else{if("assetrect"!==e.type_)return;{const s=e,r=new Image(s.width,s.height);s.src.startsWith("http")?r.src=new URL(s.src).pathname:r.src=s.src,t=new o.Asset(r,i,s.width,s.height,s.uuid),r.onload=()=>{n.layerManager.getLayer(e.layer).invalidate(!1)}}}return t.fromDict(e),t}t.createShapeFromDict=f},"208e":function(e,t,i){"use strict";i.r(t);var s=i("27ae"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"223d":function(e,t,i){"use strict";var s=i("e756"),n=i.n(s);n.a},"22bd":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("SelectContext",{ref:"selectcontext"})},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2380:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,colour:"rgba(255, 255, 255, 0.8)",mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("DM Settings")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body",on:{click:e.handleClick}},[i("div",{attrs:{id:"categories"}},e._l(e.categories,function(t,s){return i("div",{key:t,staticClass:"category",class:{selected:e.selection===s},on:{click:function(t){e.selection=s}}},[e._v(e._s(t))])}),0),i("div",{directives:[{name:"show",rawName:"v-show",value:0===e.selection,expression:"selection === 0"}],staticClass:"panel"},[i("div",{staticClass:"spanrow header"},[e._v("Players")]),e._l(e.$store.state.game.players,function(t){return i("div",{key:t.id,staticClass:"row smallrow"},[i("div",[e._v(e._s(t.name))]),i("div",[i("div",{on:{click:function(i){return e.kickPlayer(t.id)}}},[e._v("Kick")])])])}),0===Object.values(e.$store.state.game.players).length?i("div",{staticClass:"row smallrow"},[i("div",{staticClass:"spanrow"},[e._v("There are no players yet, invite some using the link below!")])]):e._e(),i("div",{staticClass:"spanrow header"},[e._v("Invite code")]),i("div",{staticClass:"row"},[i("div",[e._v("Invitation URL:")]),e.showRefreshState?[i("InputCopyElement",{attrs:{value:e.refreshState}})]:[i("InputCopyElement",{attrs:{value:e.invitationUrl}})]],2),i("div",{staticClass:"row",on:{click:e.refreshInviteCode}},[i("div"),i("div",[i("button",[e._v("Refresh invitation code")])])]),i("div",{staticClass:"spanrow header"},[e._v("Danger Zone")]),i("div",{staticClass:"row"},[i("div",[e.locked?[e._v("Unlock")]:[e._v("Lock")],e._v(" Session "),i("i",[e._v("(DM access only)")])],2),i("div",[i("button",{staticClass:"danger",on:{click:e.toggleSessionLock}},[e.locked?[e._v("Unlock")]:[e._v("Lock")],e._v(" this Session")],2)])]),i("div",{staticClass:"row"},[i("div",[e._v("Remove Session")]),i("div",[i("button",{staticClass:"danger",on:{click:e.deleteSession}},[e._v("Delete this Session")])])])],2),i("div",{directives:[{name:"show",rawName:"v-show",value:1===e.selection,expression:"selection === 1"}],staticClass:"panel"},[i("div",{staticClass:"row"},[i("label",{attrs:{for:"useGridInput"}},[e._v("Use grid")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.useGrid,expression:"useGrid"}],attrs:{id:"useGridInput",type:"checkbox"},domProps:{checked:Array.isArray(e.useGrid)?e._i(e.useGrid,null)>-1:e.useGrid},on:{change:function(t){var i=e.useGrid,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.useGrid=i.concat([o])):r>-1&&(e.useGrid=i.slice(0,r).concat(i.slice(r+1)))}else e.useGrid=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"gridSizeInput"}},[e._v("Grid Size (in pixels):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.gridSize,expression:"gridSize",modifiers:{number:!0}}],attrs:{id:"gridSizeInput",type:"number",min:"0"},domProps:{value:e.gridSize},on:{input:function(t){t.target.composing||(e.gridSize=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"unitSizeInput"}},[e._v("Unit Size (in ft.):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.unitSize,expression:"unitSize",modifiers:{number:!0}}],attrs:{id:"unitSizeInput",type:"number"},domProps:{value:e.unitSize},on:{input:function(t){t.target.composing||(e.unitSize=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])])]),i("div",{directives:[{name:"show",rawName:"v-show",value:2===e.selection,expression:"selection === 2"}],staticClass:"panel"},[i("div",{staticClass:"spanrow header"},[e._v("Core")]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fakePlayerInput"}},[e._v("Fake player:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fakePlayer,expression:"fakePlayer"}],attrs:{id:"fakePlayerInput",type:"checkbox"},domProps:{checked:Array.isArray(e.fakePlayer)?e._i(e.fakePlayer,null)>-1:e.fakePlayer},on:{change:function(t){var i=e.fakePlayer,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fakePlayer=i.concat([o])):r>-1&&(e.fakePlayer=i.slice(0,r).concat(i.slice(r+1)))}else e.fakePlayer=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"useFOWInput"}},[e._v("Fill entire canvas with FOW:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fullFOW,expression:"fullFOW"}],attrs:{id:"useFOWInput",type:"checkbox"},domProps:{checked:Array.isArray(e.fullFOW)?e._i(e.fullFOW,null)>-1:e.fullFOW},on:{change:function(t){var i=e.fullFOW,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fullFOW=i.concat([o])):r>-1&&(e.fullFOW=i.slice(0,r).concat(i.slice(r+1)))}else e.fullFOW=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fowLOS"}},[e._v("Only show lights in LoS:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model",value:e.fowLOS,expression:"fowLOS"}],attrs:{id:"fowLOS",type:"checkbox"},domProps:{checked:Array.isArray(e.fowLOS)?e._i(e.fowLOS,null)>-1:e.fowLOS},on:{change:function(t){var i=e.fowLOS,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&(e.fowLOS=i.concat([o])):r>-1&&(e.fowLOS=i.slice(0,r).concat(i.slice(r+1)))}else e.fowLOS=n}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"fowOpacity"}},[e._v("FOW opacity:")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.number",value:e.fowOpacity,expression:"fowOpacity",modifiers:{number:!0}}],attrs:{id:"fowOpacity",type:"number",min:"0",max:"1",step:"0.1"},domProps:{value:e.fowOpacity},on:{input:function(t){t.target.composing||(e.fowOpacity=e._n(t.target.value))},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"spanrow header"},[e._v("Advanced")]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"visionMode"}},[e._v("Vision Mode:")]),i("div",[i("select",{attrs:{id:"visionMode"},on:{change:e.changeVisionMode}},[i("option",{domProps:{selected:"bvh"===e.$store.state.game.visionMode}},[e._v("BVH")]),i("option",{domProps:{selected:"triangle"===e.$store.state.game.visionMode}},[e._v("Triangle")])])])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"vmininp"}},[e._v("Minimal full vision (ft):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:e.visionRangeMin,expression:"visionRangeMin",modifiers:{lazy:!0,number:!0}}],attrs:{id:"vmininp",type:"number",min:"0"},domProps:{value:e.visionRangeMin},on:{change:function(t){e.visionRangeMin=e._n(t.target.value)},blur:function(t){return e.$forceUpdate()}}})])]),i("div",{staticClass:"row"},[i("label",{attrs:{for:"vmaxinp"}},[e._v("Maximal vision (ft):")]),i("div",[i("input",{directives:[{name:"model",rawName:"v-model.lazy.number",value:e.visionRangeMax,expression:"visionRangeMax",modifiers:{lazy:!0,number:!0}}],attrs:{id:"vmaxinp",type:"number",min:"0"},domProps:{value:e.visionRangeMax},on:{change:function(t){e.visionRangeMax=e._n(t.target.value)},blur:function(t){return e.$forceUpdate()}}})])])])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2469:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=i("4a5b"),r=i("0bc6"),a=i("f312"),l=i("8f0a"),c=i("6f92"),u=i("f10f"),d=i("92b1");class h{constructor(e,t,i,s){this.fillColour="#000",this.strokeColour="rgba(0,0,0,0)",this.name="Unknown shape",this.nameVisible=!0,this.trackers=[],this.auras=[],this.labels=[],this._owners=[],this.visionObstruction=!1,this.movementObstruction=!1,this.isToken=!1,this.showHighlight=!1,this.annotation="",this.globalCompositeOperation="source-over",this.options=new Map,this._refPoint=e,this.uuid=s||o.uuidv4(),void 0!==t&&(this.fillColour=t),void 0!==i&&(this.strokeColour=i)}get refPoint(){return this._refPoint}set refPoint(e){this._refPoint=e}visibleInCanvas(e){return!1}getPointIndex(e,t=0){for(const[i,s]of this.points.entries())if(Math.abs(e.x-s[0])<=t&&Math.abs(e.y-s[1])<=t)return i;return-1}getPointOrientation(e){const t=l.GlobalPoint.fromArray(this.points[(this.points.length+e-1)%this.points.length]),i=l.GlobalPoint.fromArray(this.points[e]),s=l.GlobalPoint.fromArray(this.points[(e+1)%this.points.length]),n=s.subtract(t),o=t.add(n.multiply(.5));return i.subtract(o).normalize()}invalidate(e){const t=c.layerManager.getLayer(this.layer);t&&t.invalidate(e)}checkVisionSources(e=!0){const t=this,i=u.gameStore.visionBlockers.indexOf(this.uuid);let s=!1;this.visionObstruction&&-1===i?(u.gameStore.visionBlockers.push(this.uuid),s=!0):!this.visionObstruction&&i>=0&&(u.gameStore.visionBlockers.splice(i,1),s=!0),s&&e&&u.gameStore.recalculateVision(),this.auras.forEach(e=>{const i=u.gameStore.visionSources,s=i.findIndex(t=>t.aura===e.uuid);e.visionSource&&-1===s?i.push({shape:t.uuid,aura:e.uuid}):!e.visionSource&&s>=0&&i.splice(s,1)});for(let n=u.gameStore.visionSources.length-1;n>=0;n--){const e=u.gameStore.visionSources[n];e.shape===t.uuid&&(t.auras.some(t=>t.uuid===e.aura&&t.visionSource)||u.gameStore.visionSources.splice(n,1))}}setMovementBlock(e,t=!0){this.movementObstruction=e||!1;const i=u.gameStore.movementblockers.indexOf(this.uuid);let s=!1;this.movementObstruction&&-1===i?(u.gameStore.movementblockers.push(this.uuid),s=!0):!this.movementObstruction&&i>=0&&(u.gameStore.movementblockers.splice(i,1),s=!0),s&&t&&u.gameStore.recalculateMovement()}setIsToken(e){if(this.isToken=e,this.ownedBy()){const e=u.gameStore.ownedtokens.indexOf(this.uuid);this.isToken&&-1===e?u.gameStore.ownedtokens.push(this.uuid):!this.isToken&&e>=0&&u.gameStore.ownedtokens.splice(e,1)}}getBaseDict(){return{type_:this.type,uuid:this.uuid,x:this.refPoint.x,y:this.refPoint.y,layer:this.layer,draw_operator:this.globalCompositeOperation,movement_obstruction:this.movementObstruction,vision_obstruction:this.visionObstruction,auras:a.aurasToServer(this.auras),trackers:this.trackers,labels:this.labels,owners:this._owners,fill_colour:this.fillColour,stroke_colour:this.strokeColour,name:this.name,name_visible:this.nameVisible,annotation:this.annotation,is_token:this.isToken,options:JSON.stringify([...this.options])}}fromDict(e){this.layer=e.layer,this.globalCompositeOperation=e.draw_operator,this.movementObstruction=e.movement_obstruction,this.visionObstruction=e.vision_obstruction,this.auras=a.aurasFromServer(e.auras),this.trackers=e.trackers,this.labels=e.labels,this._owners=e.owners,this.isToken=e.is_token,this.nameVisible=e.name_visible,e.annotation&&(this.annotation=e.annotation),e.name&&(this.name=e.name),e.options&&(this.options=new Map(JSON.parse(e.options)))}draw(e){if(void 0!==this.globalCompositeOperation?e.globalCompositeOperation=this.globalCompositeOperation:e.globalCompositeOperation="source-over",this.showHighlight){const t=this.getBoundingBox();e.strokeStyle="red",e.strokeRect(d.g2lx(t.topLeft.x)-5,d.g2ly(t.topLeft.y)-5,d.g2lz(t.w)+10,d.g2lz(t.h)+10)}}drawAuras(e){for(const i of this.auras){if(0===i.value&&0===i.dim)return;e.beginPath();const s=d.g2l(this.center()),o=d.g2lr(i.value+i.dim);if(0===i.dim)e.fillStyle=i.colour;else{const t=e.createRadialGradient(s.x,s.y,d.g2lr(i.value),s.x,s.y,d.g2lr(i.value+i.dim)),o=n.default(i.colour);e.fillStyle=t,t.addColorStop(0,i.colour),t.addColorStop(1,o.setAlpha(0).toRgbString())}if(i.visionSource&&void 0!==i.lastPath)try{e.fill(i.lastPath)}catch(t){e.arc(s.x,s.y,o,0,2*Math.PI),e.fill(),console.warn(t)}else e.arc(s.x,s.y,o,0,2*Math.PI),e.fill()}}getInitiativeRepr(){return{uuid:this.uuid,visible:!u.gameStore.IS_DM,group:!1,source:this.name,has_img:!1,effects:[],index:1/0}}moveLayer(e,t){const i=c.layerManager.getLayer(this.layer),s=c.layerManager.getLayer(e);void 0!==i&&void 0!==s&&(this.layer=e,i.shapes.splice(i.shapes.indexOf(this),1),s.shapes.push(this),i.invalidate(!0),s.invalidate(!1),t&&r.socket.emit("Shape.Layer.Change",{uuid:this.uuid,layer:e}))}get owners(){return Object.freeze(this._owners.slice())}ownedBy(e){return void 0===e&&(e=u.gameStore.username),u.gameStore.IS_DM||this._owners.includes(e)||u.gameStore.FAKE_PLAYER&&u.gameStore.activeTokens.includes(this.uuid)}addOwner(e){this._owners.includes(e)||this._owners.push(e)}updateOwner(e,t){const i=this._owners.findIndex(t=>t===e);i>=0?this._owners.splice(i,1,t):this.addOwner(t)}removeOwner(e){const t=this._owners.findIndex(t=>t===e);this._owners.splice(t,1)}}t.Shape=h},"255e":function(e,t,i){"use strict";i.r(t);var s=i("851c"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"264b":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"menuContainer"}},[i("div",{ref:"rm",style:{left:e.visible.settings?"200px":"0",top:e.visible.locations?"100px":"0"},attrs:{id:"radialmenu"}},[i("div",{staticClass:"rm-wrapper"},[i("div",{staticClass:"rm-toggler"},[i("ul",{staticClass:"rm-list",class:{"rm-list-dm":e.IS_DM}},[e.IS_DM?i("li",{staticClass:"rm-item",attrs:{id:"rm-locations"},on:{click:function(t){e.visible.locations=!e.visible.locations}}},[e._m(0)]):e._e(),i("li",{staticClass:"rm-item",attrs:{id:"rm-settings"},on:{click:function(t){e.visible.settings=!e.visible.settings}}},[e._m(1)])])]),e._m(2)])]),i("transition",{attrs:{name:"settings"},on:{enter:function(t){e.$refs.rm.style.transition="left 500ms"}}},[e.visible.settings?i("div",{ref:"settings",attrs:{id:"menu"},on:{click:e.settingsClick}},[i("div",{staticStyle:{width:"200px",height:"90%","overflow-y":"auto","overflow-x":"hidden"}},[e.IS_DM?[i("button",{staticClass:"menu-accordion"},[e._v("Assets")]),i("div",{staticClass:"menu-accordion-panel"},[i("a",{staticClass:"actionButton",attrs:{href:"/assets",target:"blank",title:"Open asset manager"}},[i("i",{staticClass:"fas fa-external-link-alt"})]),i("div",{staticClass:"directory",attrs:{id:"menu-tokens"}},[i("asset-node",{attrs:{asset:e.assets}}),e.assets?e._e():i("div",[e._v("No assets")])],1)]),i("button",{staticClass:"menu-accordion"},[e._v("Notes")]),i("div",{staticClass:"menu-accordion-panel"},[i("div",{staticClass:"menu-accordion-subpanel",attrs:{id:"menu-notes"}},[i("a",{staticClass:"actionButton",on:{click:e.createNote}},[i("i",{staticClass:"far fa-plus-square"})]),e._l(e.notes,function(t){return i("div",{key:t.uuid,staticStyle:{cursor:"pointer"},on:{click:function(i){return e.openNote(t)}}},[e._v(e._s(t.title||"[?]"))])}),e.notes.length?e._e():i("div",[e._v("No notes")])],2)]),i("button",{staticClass:"menu-accordion",on:{click:e.openDmSettings}},[e._v("DM Options")])]:e._e(),i("button",{staticClass:"menu-accordion"},[e._v("Client Options")]),i("div",{staticClass:"menu-accordion-panel"},[i("div",{staticClass:"menu-accordion-subpanel"},[i("label",{attrs:{for:"gridColour"}},[e._v("Grid Colour:")]),i("color-picker",{attrs:{id:"gridColour",color:e.gridColour},on:{"update:color":function(t){e.gridColour=t}}}),i("label",{attrs:{for:"fowColour"}},[e._v("FOW Colour:")]),i("color-picker",{attrs:{id:"fowColour",color:e.fowColour},on:{"update:color":function(t){e.fowColour=t}}}),i("label",{attrs:{for:"rulerColour"}},[e._v("Ruler Colour:")]),i("color-picker",{attrs:{id:"rulerColour",color:e.rulerColour},on:{"update:color":function(t){e.rulerColour=t}}})],1)])],2),i("router-link",{staticClass:"menu-accordion",staticStyle:{"text-decoration":"none",display:"inline-block",position:"absolute",bottom:"0"},attrs:{to:"/dashboard"}},[e._v("Exit")])],1):e._e()]),i("transition",{attrs:{name:"locations"},on:{enter:function(t){e.$refs.rm.style.transition="top 500ms"}}},[e.IS_DM&&e.visible.locations?i("div",{attrs:{id:"locations-menu"}},[i("div",[e._l(e.locations,function(t){return i("div",{key:t,on:{click:function(i){return e.changeLocation(t)}}},[e._v(e._s(t))])}),i("div",{on:{click:e.createLocation}},[i("i",{staticClass:"fas fa-plus"})])],2)]):e._e()]),i("img",{attrs:{id:"dragImage"}})],1)},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{attrs:{href:"#"}},[i("i",{staticClass:"far fa-compass"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("a",{attrs:{href:"#"}},[i("i",{staticClass:"fas fa-cog"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",{staticClass:"rm-topper"},[i("i",{staticClass:"icon-share-alt"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2686:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return null!==e.note?i("modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("span",{on:{click:function(t){return e.$refs.title.select()}}},[i("i",{staticClass:"fas fa-pencil-alt",staticStyle:{"font-size":"15px"}})]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.note.title,expression:"note.title"}],ref:"title",domProps:{value:e.note.title},on:{change:e.updateNote,input:function(t){t.target.composing||e.$set(e.note,"title",t.target.value)}}}),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}],null,!1,1320213373)},[i("div",{staticClass:"modal-body"},[i("textarea",{directives:[{name:"model",rawName:"v-model",value:e.note.text,expression:"note.text"}],ref:"textarea",style:{height:e.calcHeight()},domProps:{value:e.note.text},on:{change:e.updateNote,input:function(t){t.target.composing||e.$set(e.note,"text",t.target.value)}}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.removeNote}},[i("i",{staticClass:"far fa-trash-alt"}),e._v(" Remove\n ")])])]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},2756:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("496c")),r=s.__importDefault(i("ea6a")),a=i("4a5b"),l=i("0bc6"),c=i("8f0a"),u=i("6f92"),d=i("b2ed"),h=i("f10f"),f=i("2838"),p=i("92b1"),g=i("5a5c");var v;(function(e){e[e["Noop"]=0]="Noop",e[e["Resize"]=1]="Resize",e[e["Drag"]=2]="Drag",e[e["GroupSelect"]=3]="GroupSelect"})(v=t.SelectOperations||(t.SelectOperations={}));const m=new c.GlobalPoint(-1e3,-1e3);let y=class extends r.default{constructor(){super(...arguments),this.name="Select",this.showContextMenu=!1,this.active=!1,this.mode=v.Noop,this.resizePoint=0,this.deltaChanged=!1,this.dragRay=new c.Ray(new c.LocalPoint(0,0),new c.Vector(0,0)),this.selectionStartPoint=m,this.selectionHelper=new d.Rect(m,0,0)}created(){this.selectionHelper.globalCompositeOperation="source-over"}onMouseDown(e){const t=u.layerManager.getLayer();if(void 0===t)return void console.log("No active layer!");this.selectionHelper.owners.includes(h.gameStore.username)||this.selectionHelper.addOwner(h.gameStore.username);const i=g.getMouse(e),s=p.l2g(i);let n,o=!1;n=t.selection.length?t.shapes.concat(t.selection):t.shapes;for(let r=n.length-1;r>=0;r--){const e=n[r];if(this.resizePoint=e.getPointIndex(s,p.l2gz(3)),this.resizePoint>=0){t.selection=[e],a.getRef("selectionInfo").shape=e,this.mode=v.Resize,t.invalidate(!0),o=!0;break}if(e.contains(s)){const s=e;-1===t.selection.indexOf(s)&&(t.selection=[s],a.getRef("selectionInfo").shape=s),this.mode=v.Drag;const n=p.g2l(s.refPoint);this.dragRay=new c.Ray(n,i.subtract(n)),t.invalidate(!0),o=!0;break}}if(!o){this.mode=v.GroupSelect;for(const e of t.selection)a.getRef("selectionInfo").shape=e;this.selectionStartPoint=s,this.selectionHelper.refPoint=this.selectionStartPoint,this.selectionHelper.w=0,this.selectionHelper.h=0,t.selection=[this.selectionHelper],t.invalidate(!0)}this.active=!0}onMouseMove(e){const t=u.layerManager.getLayer();if(void 0===t)return void console.log("No active layer!");const i=g.getMouse(e),s=p.l2g(i);if(this.deltaChanged=!1,this.mode===v.GroupSelect){const e=s;this.selectionHelper.w=Math.abs(e.x-this.selectionStartPoint.x),this.selectionHelper.h=Math.abs(e.y-this.selectionStartPoint.y),this.selectionHelper.refPoint=new c.GlobalPoint(Math.min(this.selectionStartPoint.x,e.x),Math.min(this.selectionStartPoint.y,e.y)),t.invalidate(!0)}else if(t.selection.length){const n=p.g2l(t.selection[t.selection.length-1].refPoint),o=n.add(this.dragRay.direction);let r=i.subtract(o).multiply(1/h.gameStore.zoomFactor);const a=r;if(this.mode===v.Drag){if("tokens"===t.name&&(!e.shiftKey||!h.gameStore.IS_DM))for(const e of t.selection)e.ownedBy()&&e.uuid!==this.selectionHelper.uuid&&(r=f.calculateDelta(r,e),r!==a&&(this.deltaChanged=!0));for(const e of t.selection)e.ownedBy()&&(e.refPoint=e.refPoint.add(r),e!==this.selectionHelper&&(e.visionObstruction&&h.gameStore.recalculateVision(!0),l.socket.emit("Shape.Update",{shape:e.asDict(),redraw:!0,temporary:!0})));t.invalidate(!1)}else if(this.mode===v.Resize)for(const e of t.selection)e.ownedBy()&&(e.resize(this.resizePoint,i),e!==this.selectionHelper&&(e.visionObstruction&&h.gameStore.recalculateVision(!0),l.socket.emit("Shape.Update",{shape:e.asDict(),redraw:!0,temporary:!0})),t.invalidate(!1),this.updateCursor(t,s));else this.updateCursor(t,s)}else document.body.style.cursor="default"}onMouseUp(e){if(!this.active)return;if(void 0===u.layerManager.getLayer())return void console.log("No active layer!");const t=u.layerManager.getLayer();this.mode===v.GroupSelect?(t.clearSelection(),t.shapes.forEach(e=>{if(!e.ownedBy())return;if(e===this.selectionHelper)return;const i=e.getBoundingBox();e.ownedBy()&&this.selectionHelper.refPoint.x<=i.topRight.x&&this.selectionHelper.refPoint.x+this.selectionHelper.w>=i.topLeft.x&&this.selectionHelper.refPoint.y<=i.botLeft.y&&this.selectionHelper.refPoint.y+this.selectionHelper.h>=i.topLeft.y&&t.selection.push(e)}),t.selection.length>0&&t.selection.push(this.selectionHelper),t.invalidate(!0)):t.selection.length&&t.selection.forEach(i=>{if(i.ownedBy()){if(this.mode===v.Drag){if(this.dragRay.origin.x===p.g2lx(i.refPoint.x)&&this.dragRay.origin.y===p.g2ly(i.refPoint.y))return;!h.gameStore.useGrid||e.altKey||this.deltaChanged||i.snapToGrid(),i!==this.selectionHelper&&(i.visionObstruction&&h.gameStore.recalculateVision(),i.movementObstruction&&h.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:i.asDict(),redraw:!0,temporary:!1})),t.invalidate(!1)}this.mode===v.Resize&&(h.gameStore.useGrid&&!e.altKey&&i.resizeToGrid(),i!==this.selectionHelper&&(i.visionObstruction&&h.gameStore.recalculateVision(),i.movementObstruction&&h.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:i.asDict(),redraw:!0,temporary:!1})),t.invalidate(!1))}}),this.mode=v.Noop,this.active=!1}onContextMenu(e){if(void 0===u.layerManager.getLayer())return void console.log("No active layer!");const t=u.layerManager.getLayer(),i=g.getMouse(e),s=p.l2g(i);for(const n of t.selection)if(n.contains(s)&&n!==this.selectionHelper)return t.selection=[n],a.getRef("selectionInfo").shape=n,t.invalidate(!0),void this.$parent.$refs.shapecontext.open(e,n);this.$refs.selectcontext.open(e)}updateCursor(e,t){for(const i of e.selection){const e=i.getPointIndex(t,p.l2gz(3));if(e<0)document.body.style.cursor="default";else{let t=i.getPointOrientation(e).angle();t<0&&(t+=360);const s=22.5;(t>=315+s||t=135+s&&t<225-s)&&(document.body.style.cursor="ew-resize"),(t>=45+s&&t<135-s||t>=225+s&&t<315-s)&&(document.body.style.cursor="ns-resize"),(t>=s&&t<90-s||t>=180+s&&t<270-s)&&(document.body.style.cursor="nwse-resize"),(t>=90+s&&t<180-s||t>=270+s&&t<360-s)&&(document.body.style.cursor="nesw-resize")}}}};y=s.__decorate([n.default({components:{SelectContext:o.default}})],y),t.default=y},"27ae":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("2f62"),a=s.__importDefault(i("6c7c")),l=s.__importDefault(i("d65f")),c=i("4a5b"),u=i("0bc6"),d=i("af17"),h=i("f10f"),f=i("6f92");let p=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.categories=["Admin","Grid","Vision"],this.selection=0,this.showRefreshState=!1,this.refreshState="pending"}mounted(){d.EventBus.$on("DmSettings.Open",()=>{this.visible=!0}),d.EventBus.$on("DmSettings.RefreshedInviteCode",()=>{this.showRefreshState=!1})}beforeDestroy(){d.EventBus.$off("DmSettings.Open"),d.EventBus.$off("DmSettings.RefreshedInviteCode")}get invitationUrl(){return window.location.protocol+"//"+window.location.host+"/invite/"+h.gameStore.invitationCode}get locked(){return h.gameStore.isLocked}get useGrid(){return h.gameStore.useGrid}set useGrid(e){h.gameStore.setUseGrid({useGrid:e,sync:!0})}get unitSize(){return h.gameStore.unitSize}set unitSize(e){"number"===typeof e&&h.gameStore.setUnitSize({unitSize:e,sync:!0})}get gridSize(){return h.gameStore.gridSize}set gridSize(e){"number"===typeof e&&h.gameStore.setGridSize({gridSize:e,sync:!0})}get fakePlayer(){return h.gameStore.FAKE_PLAYER}set fakePlayer(e){h.gameStore.setFakePlayer(e)}get fullFOW(){return h.gameStore.fullFOW}set fullFOW(e){h.gameStore.setFullFOW({fullFOW:e,sync:!0})}get fowOpacity(){return h.gameStore.fowOpacity}set fowOpacity(e){"number"===typeof e&&h.gameStore.setFOWOpacity({fowOpacity:e,sync:!0})}get fowLOS(){return h.gameStore.fowLOS}set fowLOS(e){h.gameStore.setLineOfSight({fowLOS:e,sync:!0})}get visionRangeMin(){return h.gameStore.visionRangeMin}set visionRangeMin(e){"number"===typeof e&&h.gameStore.setVisionRangeMin({value:e,sync:!0})}get visionRangeMax(){return h.gameStore.visionRangeMax}set visionRangeMax(e){"number"===typeof e&&h.gameStore.setVisionRangeMax({value:e,sync:!0})}changeVisionMode(e){const t=e.target.value.toLowerCase();"bvh"!==t&&"triangle"!==t||(h.gameStore.setVisionMode({mode:t,sync:!0}),h.gameStore.recalculateVision(),h.gameStore.recalculateMovement(),f.layerManager.invalidate())}handleClick(e){const t=e.target.firstElementChild;t instanceof HTMLInputElement&&t.click()}refreshInviteCode(){u.socket.emit("Room.Info.InviteCode.Refresh"),this.refreshState="pending",this.showRefreshState=!0}kickPlayer(e){u.socket.emit("Room.Info.Players.Kick",e),h.gameStore.kickPlayer(e)}toggleSessionLock(){h.gameStore.setIsLocked({isLocked:!h.gameStore.isLocked,sync:!0})}deleteSession(){c.getRef("prompt").prompt(`ENTER ${h.gameStore.roomCreator}/${h.gameStore.roomName} TO CONFIRM SESSION REMOVAL.`,"DELETING SESSION").then(e=>{e===`${h.gameStore.roomCreator}/${h.gameStore.roomName}`&&(u.socket.emit("Room.Delete"),this.$router.push("/"))},()=>{})}};p=s.__decorate([o.default({components:{InputCopyElement:a.default,Modal:l.default},computed:Object.assign({},r.mapState("game",["invitationCode"]))})],p),t.default=p},2838:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6f92"),o=i("f10f"),r=i("d6be"),a=i("98ef"),l=i("4aee");function c(e,t,i){if(0===e.x&&0===e.y)return e;if("bvh"===o.gameStore.visionMode){void 0===i&&(i=[]);const r=t.getBoundingBox(),a=r.offset(e);let l=!1;for(const t of o.gameStore.movementblockers){if(i.includes(t))continue;const o=n.layerManager.UUIDMap.get(t),c=o.getBoundingBox();let u=c.intersectsWithInner(a);if(!u){const t=s.Ray.fromPoints(r.topLeft.add(e.normalize()),a.topLeft),i=t.direction.inverse(),n=[i.x<0,i.y<0];u=c.intersectP(t,i,n).hit}if(u){const n=c.center(),o=r.center(),a=o.subtract(n),u=new s.Vector(1,0),d=new s.Vector(0,1);let h=a.dot(u),f=a.dot(d);h>c.w/2&&(h=c.w/2),h<-c.w/2&&(h=-c.w/2),f>c.h/2&&(f=c.h/2),f<-c.h/2&&(f=-c.h/2);const p=n.add(u.multiply(h)).add(d.multiply(f));p.x===r.topLeft.x||p.x===r.topRight.x?e=new s.Vector(0,e.y):p.y===r.topLeft.y||p.y===r.botLeft.y?e=new s.Vector(e.x,0):p.xr.topRight.x?e=new s.Vector(p.x-r.topRight.x,e.y):p.yr.botLeft.y&&(e=new s.Vector(e.x,p.y-r.botLeft.y)),l=!0,i.push(t);break}}return l&&(e=c(e,t,i)),e}{const i=r.PA_CDT.movement.locate(t.center().asArray(),null).loc;for(const s of t.points){const t=r.PA_CDT.movement.locate(s,i),n=t.loc;null!==n&&(e=u(s,n,e))}return e}}function u(e,t,i,n=[]){const o=new s.GlobalPoint(e[0],e[1]),r=o.add(i).asArray();if(t.contains(r))return i;n.push(t);for(let c=0;c<3;c++){if(n.includes(t.neighbours[c]))continue;const d=t.vertices[l.cw(c)].point,h=t.vertices[l.ccw(c)].point,f=l.intersection(e,r,d,h);if(null===f)continue;if(!t.isConstrained(c))return u(e,t.neighbours[c],i,n);if(f[0]===o.x&&f[1]===o.y){l.orientation;const t=l.orientation(e,r,h);if(t===a.Sign.LEFT_TURN)continue;if(t===a.Sign.ZERO)continue}let p=new s.GlobalPoint(f[0],f[1]).subtract(o).multiply(.8);p.length()<1&&(p=new s.Vector(0,0)),p.length()!["__files"].includes(e)).sort(a.alphSort)}get files(){return this.asset.__files?this.asset.__files.concat().sort((e,t)=>e.name.toLowerCase()>t.name.toLowerCase()?1:-1):[]}toggle(e){for(let t=0;tthis.$children[0].$el.focus())}close(){this.visible=!1,this.shape=null}getLayers(){return c.layerManager.layers.filter(e=>e.selectable&&(u.gameStore.IS_DM||e.playerEditable))}getActiveLayer(){return c.layerManager.getLayer()}getInitiativeWord(){return null===this.shape?"":a.getRef("initiative").contains(this.shape.uuid)?"Show":"Add"}setLayer(e){null!==this.shape&&(this.shape.moveLayer(e,!0),this.close())}moveToBack(){if(null===this.shape)return;const e=this.getActiveLayer();e.moveShapeOrder(this.shape,0,!0),this.close()}moveToFront(){if(null===this.shape)return;const e=this.getActiveLayer();e.moveShapeOrder(this.shape,e.shapes.length-1,!0),this.close()}addInitiative(){if(null===this.shape)return;const e=a.getRef("initiative");e.contains(this.shape.uuid)||e.addInitiative(this.shape.getInitiativeRepr()),e.visible=!0,this.close()}openEditDialog(){l.EventBus.$emit("EditDialog.Open",this.shape),this.close()}};d=s.__decorate([o.default({components:{ContextMenu:r.default}})],d),t.default=d},"314d":function(e,t,i){"use strict";var s=i("4fce"),n=i.n(s);n.a},3411:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("60a3");let a=class extends n.default{constructor(){super(...arguments),this.borderColour="lightgray",this.popupString="",this.showPopup=!1}copy(){navigator.clipboard.writeText(this.value).then(()=>{this.popupString="Copied!",this.showPopup=!0},()=>{console.log("Could not copy to clipboard :("),this.popupString="Error!",this.showPopup=!0})}};s.__decorate([r.Prop()],a.prototype,"value",void 0),a=s.__decorate([o.default],a),t.default=a},3481:function(e,t,i){"use strict";i.r(t);var s=i("47e6"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},3752:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ContextMenu",{attrs:{visible:e.visible,left:e.left+"px",top:e.top+"px"},on:{close:e.close}},[i("li",{on:{click:e.rename}},[e._v("Rename")]),i("li",{on:{click:e.remove}},[e._v("Remove")])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"38c9":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("bab4"),n=i("f10f");class o extends s.Layer{invalidate(){this.valid=!1}draw(e){this.valid||this.drawGrid()}drawGrid(){const e=this.ctx;this.clear(),e.beginPath();const t=n.gameStore.gridSize;for(let i=0;ir.layerManager.UUIDMap.get(e))}toggle(e){this.selection.includes(e)?a.gameStore.removeActiveToken(e):a.gameStore.addActiveToken(e)}};l=s.__decorate([n.default],l),t.default=l},"3cd3":function(e,t,i){"use strict";var s=i("b0c0"),n=i.n(s);n.a},"3dfd":function(e,t,i){"use strict";i.r(t);var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"app"}},[i("router-view",{ref:"activeComponent"})],1)},n=[],o=(i("034f"),i("2877")),r={},a=Object(o["a"])(r,s,n,!1,null,null,null);t["default"]=a.exports},4185:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("bab4"),o=i("6f92"),r=i("d1ec"),a=i("4709"),l=i("f10f"),c=i("92b1"),u=i("5a5c"),d=i("cee3");class h extends n.Layer{constructor(e,t){super(e,t),this.isVisionLayer=!0,this.preFogShapes=[],this.virtualCanvas=document.createElement("canvas"),this.virtualCanvas.width=window.innerWidth,this.virtualCanvas.height=window.innerHeight,this.vCtx=this.virtualCanvas.getContext("2d")}addShape(e,t,i,s=!0){super.addShape(e,t,i,s),e.options.has("preFogShape")&&e.options.get("preFogShape")&&this.preFogShapes.push(e)}removeShape(e,t,i){if(e.options.has("preFogShape")&&e.options.get("preFogShape")){const t=this.preFogShapes.findIndex(t=>t.uuid===e.uuid);this.preFogShapes.splice(t,1)}super.removeShape(e,t,i)}draw(){if(!this.valid){const e=this.ctx;if(r.Settings.skipLightFOW)return e.clearRect(0,0,this.canvas.width,this.canvas.height),void(this.valid=!0);const t=e.globalCompositeOperation;e.clearRect(0,0,this.canvas.width,this.canvas.height),e.fillStyle="rgba(0, 0, 0, 1)";const i=o.layerManager.getLayer("draw").ctx;(r.Settings.drawAngleLines||r.Settings.drawFirstLightHit)&&i.clearRect(0,0,i.canvas.width,i.canvas.height),l.gameStore.fullFOW&&o.layerManager.hasLayer("tokens")&&o.layerManager.getLayer("tokens").shapes.forEach(t=>{if(!t.ownedBy()||!t.isToken)return;const i=t.getBoundingBox(),s=c.g2l(t.center()),n=.8*c.g2lz(i.w);e.beginPath(),e.arc(s.x,s.y,n,0,2*Math.PI);const o=e.createRadialGradient(s.x,s.y,n/2,s.x,s.y,n);o.addColorStop(0,"rgba(0, 0, 0, 1)"),o.addColorStop(1,"rgba(0, 0, 0, 0)"),e.fillStyle=o,e.fill()}),this.vCtx.clearRect(0,0,window.innerWidth,window.innerHeight);for(const n of l.gameStore.visionSources){const t=o.layerManager.UUIDMap.get(n.shape);if(void 0===t)continue;const u=t.auras.find(e=>e.uuid===n.aura);if(void 0===u)continue;const h=c.getUnitDistance(u.value+u.dim),f=t.center(),p=c.g2l(f),g=new a.Circle(f,h);if(g.visibleInCanvas(e.canvas))if("bvh"===l.gameStore.visionMode){let t=-1;const n=new Path2D;let o;n.moveTo(p.x,p.y);for(let a=0;a<2*Math.PI;a+=r.Settings.angleSteps/180*Math.PI){const d=new s.GlobalPoint(f.x+h*Math.cos(a),f.y+h*Math.sin(a));r.Settings.drawAngleLines&&(i.beginPath(),i.moveTo(c.g2lx(f.x),c.g2ly(f.y)),i.lineTo(c.g2lx(d.x),c.g2ly(d.y)),i.stroke());const g=s.Ray.fromPoints(f,d),v=l.gameStore.BV.intersect(g);if(0===a&&(o=v.hit?v.intersect:d),v.hit)-1!==t&&(n.arc(p.x,p.y,c.g2lr(u.value+u.dim),t,a),t=-1),n.lineTo(c.g2lx(v.intersect.x),c.g2ly(v.intersect.y));else if(-1===t){t=a;const i=c.g2l(d);e.lineTo(i.x,i.y)}}if(-1===t?n.lineTo(c.g2lx(o.x),c.g2ly(o.y)):n.arc(p.x,p.y,c.g2lr(u.value+u.dim),t,2*Math.PI),l.gameStore.fullFOW){if(u.dim>0){const t=e.createRadialGradient(p.x,p.y,c.g2lr(u.value),p.x,p.y,c.g2lr(u.value+u.dim));t.addColorStop(0,"rgba(0, 0, 0, 1)"),t.addColorStop(1,"rgba(0, 0, 0, 0)"),e.fillStyle=t}else e.fillStyle="rgba(0, 0, 0, 1)";e.fill(n)}u.lastPath=n}else{this.vCtx.globalCompositeOperation="source-over",this.vCtx.fillStyle="rgba(0, 0, 0, 1)";const t=d.computeVisibility(f,"vision");this.vCtx.beginPath(),this.vCtx.moveTo(c.g2lx(t[0][0]),c.g2ly(t[0][1]));for(const e of t)this.vCtx.lineTo(c.g2lx(e[0]),c.g2ly(e[1]));if(this.vCtx.closePath(),this.vCtx.fill(),u.dim>0){const e=this.vCtx.createRadialGradient(p.x,p.y,c.g2lr(u.value),p.x,p.y,c.g2lr(u.value+u.dim));e.addColorStop(0,"rgba(0, 0, 0, 1)"),e.addColorStop(1,"rgba(0, 0, 0, 0)"),this.vCtx.fillStyle=e}else this.vCtx.fillStyle="rgba(0, 0, 0, 1)";this.vCtx.globalCompositeOperation="source-in",this.vCtx.beginPath(),this.vCtx.arc(p.x,p.y,c.g2lr(u.value+u.dim),0,2*Math.PI),this.vCtx.fill(),e.drawImage(this.virtualCanvas,0,0)}}l.gameStore.fowLOS&&(e.globalCompositeOperation="source-in",e.drawImage(o.layerManager.getLayer("fow-players").canvas,0,0));for(const s of this.preFogShapes){if(!s.visibleInCanvas(this.canvas))continue;const t=s.globalCompositeOperation;l.gameStore.fullFOW||("source-over"===s.globalCompositeOperation?s.globalCompositeOperation="destination-out":"destination-out"===s.globalCompositeOperation&&(s.globalCompositeOperation="source-over")),s.draw(e),s.globalCompositeOperation=t}l.gameStore.fullFOW&&(e.globalCompositeOperation="source-out",e.fillStyle=u.getFogColour(),e.fillRect(0,0,e.canvas.width,e.canvas.height)),super.draw(!1),e.globalCompositeOperation=t}}}t.FOWLayer=h},4486:function(e,t,i){"use strict";i.r(t);var s=i("a097"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"45fb":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible,mask:!1},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[i("div",[e._v("Edit asset")]),i("div",{staticClass:"header-close",on:{click:function(t){e.visible=!1}}},[i("i",{staticClass:"far fa-window-close"})])])}}])},[i("div",{staticClass:"modal-body"},[i("div",{staticClass:"grid"},[i("label",{attrs:{for:"shapeselectiondialog-name"}},[e._v("Name")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.shape.name,expression:"shape.name"}],staticStyle:{"grid-column":"numerator / remove"},attrs:{type:"text",id:"shapeselectiondialog-name",disabled:!e.owned},domProps:{value:e.shape.name},on:{change:function(t){return e.updateShape(!1)},input:function(t){t.target.composing||e.$set(e.shape,"name",t.target.value)}}}),i("div",{style:{opacity:e.shape.nameVisible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(t){e.shape.nameVisible=!e.shape.nameVisible,e.updateShape(!1)}}},[i("i",{staticClass:"fas fa-eye"})]),i("label",{attrs:{for:"shapeselectiondialog-istoken"}},[e._v("Is a token")]),i("input",{staticClass:"styled-checkbox",staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-istoken",disabled:!e.owned},domProps:{checked:e.shape.isToken},on:{click:e.setToken}}),i("label",{attrs:{for:"shapeselectiondialog-visionblocker"}},[e._v("Blocks vision/light")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.shape.visionObstruction,expression:"shape.visionObstruction"}],staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-visionblocker",disabled:!e.owned},domProps:{checked:Array.isArray(e.shape.visionObstruction)?e._i(e.shape.visionObstruction,null)>-1:e.shape.visionObstruction},on:{change:[function(t){var i=e.shape.visionObstruction,s=t.target,n=!!s.checked;if(Array.isArray(i)){var o=null,r=e._i(i,o);s.checked?r<0&&e.$set(e.shape,"visionObstruction",i.concat([o])):r>-1&&e.$set(e.shape,"visionObstruction",i.slice(0,r).concat(i.slice(r+1)))}else e.$set(e.shape,"visionObstruction",n)},e.setVisionBlocker]}}),i("label",{attrs:{for:"shapeselectiondialog-moveblocker"}},[e._v("Blocks movement")]),i("input",{staticStyle:{"grid-column-start":"remove"},attrs:{type:"checkbox",id:"shapeselectiondialog-moveblocker",disabled:!e.owned},domProps:{checked:e.shape.movementObstruction},on:{click:e.setMovementBlocker}}),i("label",{attrs:{for:"shapeselectiondialog-strokecolour"}},[e._v("Border colour")]),i("color-picker",{staticStyle:{"grid-column-start":"remove"},attrs:{color:e.shape.strokeColour,disabled:!e.owned},on:{"update:color":function(t){return e.$set(e.shape,"strokeColour",t)},input:function(t){return e.updateShape(!0,!0)},change:function(t){return e.updateShape(!0)}}}),i("label",{attrs:{for:"shapeselectiondialog-fillcolour"}},[e._v("Fill colour")]),i("color-picker",{staticStyle:{"grid-column-start":"remove"},attrs:{color:e.shape.fillColour,disabled:!e.owned},on:{"update:color":function(t){return e.$set(e.shape,"fillColour",t)},input:function(t){return e.updateShape(!0,!0)},change:function(t){return e.updateShape(!0)}}}),i("div",{staticClass:"spanrow header"},[e._v("Access")]),e._l(e.shape.owners,function(t){return[i("input",{key:t,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t},on:{change:function(i){return e.updateOwner(i,t)}}}),""!==t?i("div",{key:"remove-"+t,style:{opacity:e.owned?1:.3,textAlign:"center",gridColumnStart:"remove"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeOwner(t)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Trackers")]),e._l(e.shape.trackers,function(t){return[i("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"tracker.name"}],key:"name-"+t.uuid,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t.name},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"name",i.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.value,expression:"tracker.value",modifiers:{number:!0}}],key:"value-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.value},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"value",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"fspan-"+t.uuid},[e._v("/")]),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.maxvalue,expression:"tracker.maxvalue",modifiers:{number:!0}}],key:"maxvalue-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.maxvalue},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"maxvalue",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"sspan-"+t.uuid}),i("div",{key:"visibility-"+t.uuid,style:{opacity:t.visible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){t.visible=!t.visible,e.updateShape(!1)}}},[i("i",{staticClass:"fas fa-eye"})]),i("span",{key:"tspan-"+t.uuid}),""!==t.name||0!==t.value?i("div",{key:"remove-"+t.uuid,style:{opacity:e.owned?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeTracker(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Auras")]),e._l(e.shape.auras,function(t){return[i("input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"aura.name"}],key:"name-"+t.uuid,staticStyle:{"grid-column-start":"name"},attrs:{type:"text",placeholder:"name",disabled:!e.owned},domProps:{value:t.name},on:{change:function(t){return e.updateShape(!1)},input:function(i){i.target.composing||e.$set(t,"name",i.target.value)}}}),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.value,expression:"aura.value",modifiers:{number:!0}}],key:"value-"+t.uuid,attrs:{type:"text",title:"Current value",disabled:!e.owned},domProps:{value:t.value},on:{change:function(t){return e.updateShape(!0)},input:function(i){i.target.composing||e.$set(t,"value",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("span",{key:"fspan-"+t.uuid},[e._v("/")]),i("input",{directives:[{name:"model",rawName:"v-model.number",value:t.dim,expression:"aura.dim",modifiers:{number:!0}}],key:"dimvalue-"+t.uuid,attrs:{type:"text",title:"Dim value",disabled:!e.owned},domProps:{value:t.dim},on:{change:function(t){return e.updateShape(!0)},input:function(i){i.target.composing||e.$set(t,"dim",e._n(i.target.value))},blur:function(t){return e.$forceUpdate()}}}),i("color-picker",{key:"colour-"+t.uuid,attrs:{color:t.colour,disabled:!e.owned},on:{"update:color":function(i){return e.$set(t,"colour",i)},input:function(i){return e.updateAuraColour(t,i)},change:function(t){return e.updateShape(!0)}}}),i("div",{key:"visibility-"+t.uuid,style:{opacity:t.visible?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){t.visible=!t.visible,e.updateShape(!0)}}},[i("i",{staticClass:"fas fa-eye"})]),i("div",{key:"visionsource-"+t.uuid,style:{opacity:t.visionSource?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.updateAuraVisionSource(t)}}},[i("i",{staticClass:"fas fa-lightbulb"})]),""!==t.name||0!==t.value?i("div",{key:"remove-"+t.uuid,style:{opacity:e.owned?1:.3,textAlign:"center"},attrs:{disabled:!e.owned},on:{click:function(i){return e.removeAura(t.uuid)}}},[i("i",{staticClass:"fas fa-trash-alt"})]):e._e()]}),i("div",{staticClass:"spanrow header"},[e._v("Labels")]),i("div",{staticClass:"spanrow",attrs:{id:"labels"}},[e._l(e.shape.labels,function(t){return i("div",{key:t.uuid,staticClass:"label"},[t.category?[i("div",{staticClass:"label-user"},[e._v(e._s(t.category))]),i("div",{staticClass:"label-main",on:{click:function(i){return e.removeLabel(t.uuid)}}},[e._v(e._s(t.name))])]:e._e(),t.category?e._e():[i("div",{staticClass:"label-main",on:{click:function(i){return e.removeLabel(t.uuid)}}},[e._v(e._s(t.name))])]],2)}),e.owned?i("div",{staticClass:"label",attrs:{id:"label-add"}},[i("div",{staticClass:"label-main",on:{click:e.openLabelManager}},[e._v("+")])]):e._e()],2),i("div",{staticClass:"spanrow header"},[e._v("Annotation")]),i("textarea",{staticClass:"spanrow",attrs:{disabled:!e.owned},domProps:{value:e.shape.annotation},on:{change:e.updateAnnotation}})],2)])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},4709:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("f10f"),a=i("2838"),l=i("92b1"),c=i("5a5c");class u extends o.Shape{constructor(e,t,i,s,n){super(e,i,s,n),this.type="circle",this.r=t||1}asDict(){return Object.assign(this.getBaseDict(),{radius:this.r})}fromDict(e){super.fromDict(e),this.r=e.radius}getBoundingBox(){return new n.BoundingRect(new s.GlobalPoint(this.refPoint.x-this.r,this.refPoint.y-this.r),2*this.r,2*this.r)}get points(){return this.getBoundingBox().points}draw(e){super.draw(e),e.beginPath(),"fog"===this.fillColour?e.fillStyle=c.getFogColour():e.fillStyle=this.fillColour;const t=l.g2l(this.refPoint);e.arc(t.x,t.y,l.g2lz(this.r),0,2*Math.PI),e.fill(),"rgba(0, 0, 0, 0)"!==this.strokeColour&&(e.beginPath(),e.lineWidth=l.g2lz(5),e.strokeStyle=this.strokeColour,e.arc(t.x,t.y,l.g2lz(this.r),0,2*Math.PI),e.stroke())}contains(e){return Math.pow(e.x-this.refPoint.x,2)+Math.pow(e.y-this.refPoint.y,2){const t=16*Math.random()|0,i="x"===e?t:3&t|8;return i.toString(16)})}function o(e){return e.charAt(0).toUpperCase()+e.slice(1)}function r(e,t){return e.toLowerCase()t(e)?i[1].push(e):i[0].push(e)),i}function u(e,t,i,s){const n=.2*Number(e.font.split("px")[0]),o=e.measureText(t).width;return Math.min(i/o,s/n)}function d(e){return encodeURIComponent(e).replace(/[!'()*]/g,e=>{return"%"+e.charCodeAt(0).toString(16)})}t.uuidv4=n,t.capitalize=o,t.alphSort=r,t.getHTMLFont=a,t.getHTMLTextWidth=l,t.partition=c,t.calcFontScale=u,t.fixedEncodeURIComponent=d;class h{constructor(){this.keys=[],this.values=[]}get length(){return this.keys.length}get(e){return this.values[this.keys.indexOf(e)]}getIndexValue(e){return this.values[e]}getIndexKey(e){return this.keys[e]}set(e,t){this.keys.push(e),this.values.push(t)}has(e){return this.indexOf(e)>=0}indexOf(e){return this.keys.indexOf(e)}remove(e){const t=this.indexOf(e);this.keys.splice(t,1),this.values.splice(t,1)}}function f(){return s.app.$children[0].$refs.activeComponent}function p(e){const t=s.app.$children[0].$refs.activeComponent;return t.$refs[e]}t.OrderedMap=h,t.getComponent=f,t.getRef=p},"4aec":function(e,t,i){"use strict";i.r(t);var s=i("3752"),n=i("f51a");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},"4aee":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("98ef");function n(e){return(e+2)%3}function o(e){return(e+1)%3}function r(e,t){const i=new s.EdgeCirculator(e,null);if(i.valid)do{const n=3-i.t.indexV(e)-i.ri,o=i.t.vertices[n];if(!o.infinite){if(o===t)return{includes:!0,vi:t,fr:i.t,i:i.ri};{const n=c(e.point,t.point,o.point);if(n===s.Sign.COLLINEAR&&a(e.point,o.point,t.point))return{includes:!0,vi:o,fr:i.t,i:i.ri}}}}while(i.next());return{includes:!1}}function a(e,t,i){let n,o;return l(0,e,i)===s.Sign.EQUAL?(n=l(1,e,t),o=l(1,t,i)):(n=l(0,e,t),o=l(0,t,i)),n===s.Sign.SMALLER&&o===s.Sign.SMALLER||n===s.Sign.LARGER&&o===s.Sign.LARGER}function l(e,t,i){return t[e]i[e]?s.Sign.LARGER:s.Sign.EQUAL}function c(e,t,i){const n=e[0],o=e[1],r=t[0],a=t[1],l=i[0],c=i[1],d=r-n,h=a-o,f=l-n,p=c-o,g=u(d,h,f,p);let v=Math.abs(d),m=Math.abs(h);const y=Math.abs(f),b=Math.abs(p);if(vm&&([v,m]=[m,v]),v<2e-162&&0===v)return s.Sign.ZERO;if(m<1e153){const e=Number.EPSILON*v*m;if(g>e)return s.Sign.POSITIVE;if(g<-e)return s.Sign.NEGATIVE}return s.Sign.ZERO}function u(e,t,i,s){return e*s-t*i}function d(e,t,i){return u(t[0]-e[0],t[1]-e[1],i[0]-e[0],i[1]-e[1])<0}function h(e,t,i){if(!e.isInfinite())return f(e.vertices[0].point,e.vertices[1].point,e.vertices[2].point,t,i);throw new Error("SSS")}function f(e,t,i,n,o){const r=m(e,t,i,n);if(r!==s.Sign.ON_ORIENTED_BOUNDARY||!o)return r;const a=[e,t,i,n];a.sort((e,t)=>e[0]-t[0]||e[1]-t[1]);for(const l of a.reverse()){if(l===n)return s.Sign.ON_NEGATIVE_SIDE;let o=c(e,t,n);if(l===i&&o!==s.Sign.COLLINEAR)return o;if(o=c(e,n,i),l===t&&o!==s.Sign.COLLINEAR)return o;if(o=c(n,t,i),l===e&&o!==s.Sign.COLLINEAR)return o}return s.Sign.ON_NEGATIVE_SIDE}function p(e,t){return e[0]===t[0]&&e[1]===t[1]}function g(e,t){return e[0]y&&([m,y]=[y,m]),m<1e-73&&0===m)return s.Sign.ON_ORIENTED_BOUNDARY;if(y<1e76){const e=Number.EPSILON*m*y*(y*y);if(v>e)return s.Sign.ON_POSITIVE_SIDE;if(v<-e)return s.Sign.ON_NEGATIVE_SIDE}return s.Sign.ZERO}function y(e,t,i,n){switch(c(e,t,i)){case s.Sign.LEFT_TURN:return c(i,n,t)!==s.Sign.RIGHT_TURN;case s.Sign.RIGHT_TURN:return c(i,n,t)!==s.Sign.LEFT_TURN;case s.Sign.COLLINEAR:return!0}}function b(e,t,i,n){switch(c(e,t,i)){case s.Sign.LEFT_TURN:return c(e,t,n)!==s.Sign.LEFT_TURN;case s.Sign.RIGHT_TURN:return c(e,t,n)!==s.Sign.RIGHT_TURN;case s.Sign.COLLINEAR:return!0}}function _(e,t,i,s){const n=x(e,t,i,s);switch(n.intersectionType){case w.POINT:return n.point;case w.NO_INTERSECTION:return null}throw new Error("sdfgighowen")}var w;function S(e,t){if(e[0]===t[0])return[1,0,-e[0]];if(e[1]===t[1])return[0,1,-e[1]];const i=t[0]-e[0],s=t[1]-e[1];return[-s,i,-i*e[1]+s*e[0]]}function x(e,t,i,s){if(!M(e,t,i,s))return{intersectionType:w.NO_INTERSECTION,point:null};const n=S(e,t),o=S(i,s),r=C(n,o);switch(r.intersectionType){case w.POINT:return r}throw new Error("gzseuihgpib")}function C(e,t){const i=e[0]*t[1]-t[0]*e[1],s=e[1]*t[2]-t[1]*e[2],n=t[0]*e[2]-e[0]*t[2];return{intersectionType:w.POINT,point:[s/i,n/i]}}function M(e,t,i,n){if(g(e,t)){if(g(i,n)){if(g(t,i)||g(n,e))return!1}else if(g(t,n)||g(i,e))return!1}else if(g(i,n)){if(g(e,i)||g(n,t))return!1}else if(g(e,n)||g(i,t))return!1;if(g(e,t))if(g(i,n))switch(v(e,i)){case s.Sign.SMALLER:switch(v(t,i)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(t,n)){case s.Sign.SMALLER:return y(e,t,i,n);case s.Sign.EQUAL:return!0;default:return b(e,t,i,n)}}case s.Sign.EQUAL:return!0;default:switch(v(n,e)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(n,t)){case s.Sign.SMALLER:return y(i,n,e,t);case s.Sign.EQUAL:return!0;default:return b(i,n,e,t)}}}else switch(v(e,n)){case s.Sign.SMALLER:switch(v(t,n)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(t,i)){case s.Sign.SMALLER:return y(e,t,n,i);case s.Sign.EQUAL:return!0;default:return b(e,t,n,i)}}case s.Sign.EQUAL:return!0;default:switch(v(i,e)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(i,t)){case s.Sign.SMALLER:return y(n,i,e,t);case s.Sign.EQUAL:return!0;default:return b(n,i,e,t)}}}else if(g(i,n))switch(v(t,i)){case s.Sign.SMALLER:switch(v(e,i)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(e,n)){case s.Sign.SMALLER:return y(t,e,i,n);case s.Sign.EQUAL:return!0;default:return b(t,e,i,n)}}case s.Sign.EQUAL:return!0;default:switch(v(n,t)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(n,e)){case s.Sign.SMALLER:return y(i,n,t,e);case s.Sign.EQUAL:return!0;default:return b(i,n,t,e)}}}else switch(v(t,n)){case s.Sign.SMALLER:switch(v(e,n)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(e,i)){case s.Sign.SMALLER:return y(t,e,n,i);case s.Sign.EQUAL:return!0;default:return b(t,e,n,i)}}case s.Sign.EQUAL:return!0;default:switch(v(i,t)){case s.Sign.SMALLER:return!1;case s.Sign.EQUAL:return!0;default:switch(v(i,e)){case s.Sign.SMALLER:return y(n,i,t,e);case s.Sign.EQUAL:return!0;default:return b(n,i,t,e)}}}}function k(e){if(e!==e)return e;if(e===-1/0)return-Number.MAX_VALUE;if(e===1/0)return 1/0;if(e===+Number.MAX_VALUE)return 1/0;let t=e*(e<0?1-Number.EPSILON/2:1+Number.EPSILON);t===e&&(t=Number.MIN_VALUE*Number.EPSILON>0?e+Number.MIN_VALUE*Number.EPSILON:e+Number.MIN_VALUE),t===1/0&&(t=+Number.MAX_VALUE);const i=e+(t-e)/2;ewindow.innerWidth-100&&(t=window.innerWidth-100),i<0&&(i=0),i>window.innerHeight-100&&(i=window.innerHeight-100),this.$refs.container.style.left=t+"px",this.$refs.container.style.top=i+"px",this.$refs.container.style.display="block"}dragOver(e){this.dragging&&(this.$refs.container.style.display="none")}};s.__decorate([r.Prop(Boolean)],a.prototype,"visible",void 0),s.__decorate([r.Prop({type:Boolean,default:!0})],a.prototype,"mask",void 0),s.__decorate([r.Prop({type:String,default:"white"})],a.prototype,"colour",void 0),a=s.__decorate([o.default],a),t.default=a},5338:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("8055")),o=i("2d5b");t.socket=n.default(location.protocol+"//"+location.host+"/pa_assetmgmt",{autoConnect:!1}),t.socket.on("connect",()=>{console.log("Connected")}),t.socket.on("disconnect",()=>{console.log("Disconnected")}),t.socket.on("redirect",e=>{console.log("redirecting"),window.location.href=e}),t.socket.on("Folder.Root.Set",e=>{o.assetStore.setRoot(e)}),t.socket.on("Folder.Set",e=>{if(o.assetStore.clear(),e.children)for(const t of e.children)o.assetStore.idMap.set(t.id,t),t.file_hash?o.assetStore.files.push(t.id):o.assetStore.folders.push(t.id)}),t.socket.on("Folder.Create",e=>{o.assetStore.folders.push(e.id),o.assetStore.idMap.set(e.id,e)}),t.socket.on("Asset.Upload.Finish",e=>{o.assetStore.idMap.set(e.id,e),o.assetStore.files.push(e.id)})},5394:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("1289")),r=s.__importDefault(i("ea6a")),a=i("0bc6"),l=i("6f92"),c=i("f10f");let u=class extends r.default{constructor(){super(...arguments),this.name="Filter",this.active=!1}get labels(){const e={"":[]};for(const t of Object.keys(c.gameStore.labels)){const i=c.gameStore.labels[t];i.category?(i.category in e||(e[i.category]=[]),e[i.category].push([i.uuid,i.name]),e[i.category].sort((e,t)=>e[1].localeCompare(t[1]))):e[""].push([i.uuid,i.name])}return e}get initalValues(){const e={};for(const t of Object.keys(this.labels))e[t]=c.gameStore.labelFilters.filter(e=>this.labels[t].map(e=>e[0]).includes(e));return e}get categories(){return Object.keys(this.labels).sort()}isFilter(e){return c.gameStore.labelFilters.includes(e)}toggleFilter(e){const t=c.gameStore.labelFilters.indexOf(e);t>=0?c.gameStore.labelFilters.splice(t,1):c.gameStore.labelFilters.push(e),l.layerManager.invalidate()}toggleUnlabeled(){c.gameStore.toggleUnlabeledFilter(),l.layerManager.invalidate()}updateSelection(e){if(e.title in this.labels){for(const[t,i]of this.labels[e.title]){const i=c.gameStore.labelFilters.indexOf(t),s=e.selection.includes(t);i>=0&&!s?(c.gameStore.labelFilters.splice(i,1),a.socket.emit("Labels.Filter.Remove",t)):i<0&&s&&(c.gameStore.labelFilters.push(t),a.socket.emit("Labels.Filter.Add",t))}l.layerManager.invalidate()}}};u=s.__decorate([n.default({components:{accordion:o.default}})],u),t.default=u},"53ec":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("60a3");let a=class extends n.default{constructor(){super(...arguments),this.selected=[],this.active=!1}mounted(){this.selected=this.initialValues,this.updateCategory()}toggleDisplay(e){this.active=!this.active}toggleCategory(){const e=this.$refs.overall;e.checked?this.selected=this.items.map(e=>e[0]):this.selected=[],this.$emit("selectionupdate",{title:this.title,selection:this.selected})}updateCategory(){const e=this.$refs.overall;0===this.selected.length?(e.checked=!1,e.indeterminate=!1):this.selected.length===this.items.length?(e.checked=!0,e.indeterminate=!1):(e.checked=!1,e.indeterminate=!0)}toggleSelection(e){const t=this.selected.indexOf(e);-1===t?this.selected.push(e):this.selected.splice(t,1),this.updateCategory(),this.$emit("selectionupdate",{title:this.title,selection:this.selected})}};s.__decorate([r.Prop(String)],a.prototype,"title",void 0),s.__decorate([r.Prop({default:!0,type:Boolean})],a.prototype,"showArrow",void 0),s.__decorate([r.Prop({default:()=>[]})],a.prototype,"items",void 0),s.__decorate([r.Prop({default:()=>[]})],a.prototype,"initialValues",void 0),a=s.__decorate([o.default],a),t.default=a},5459:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},e._l(e.tokens,function(t){return i("div",{key:t.uuid,staticClass:"token",class:{selected:e.selection.includes(t.uuid)},on:{click:function(i){return e.toggle(t.uuid)}}},[t.src?i("img",{attrs:{src:t.src,width:"30px",height:"30px"}}):e._e(),i("div",[e._v(e._s(t.name))])])}),0):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"54fb":function(e,t,i){"use strict";var s=i("c106"),n=i.n(s);n.a},"561b":function(e,t,i){"use strict";var s=i("a450"),n=i.n(s);n.a},"574e":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("92b1"),a=i("5a5c");class l extends o.Shape{constructor(e,t,i,s,n){super(e,"rgba(0, 0, 0, 0)",s||"#000",n),this.type="multiline",this._points=[],this._points=t||[],this.lineWidth=i||3}get refPoint(){return this._refPoint}set refPoint(e){const t=e.subtract(this._refPoint);this._refPoint=e;for(let i=0;i({x:e.x,y:e.y}))})}fromDict(e){super.fromDict(e),this._points=e.points.map(e=>new s.GlobalPoint(e.x,e.y))}get points(){return this._points.map(e=>[e.x,e.y])}getBoundingBox(){let e=this.refPoint.x,t=this.refPoint.x,i=this.refPoint.y,o=this.refPoint.y;for(const s of this._points)s.xt&&(t=s.x),s.yo&&(o=s.y);return new n.BoundingRect(new s.GlobalPoint(e,i),t-e,o-i)}draw(e){super.draw(e),e.beginPath(),e.lineCap="round",e.lineJoin="round",e.moveTo(r.g2lx(this.refPoint.x),r.g2ly(this.refPoint.y));for(const t of this._points)e.lineTo(r.g2lx(t.x),r.g2ly(t.y));"fog"===this.strokeColour?e.strokeStyle=a.getFogColour():e.strokeStyle=this.strokeColour,e.lineWidth=r.g2lz(this.lineWidth),e.stroke()}contains(e){return this.getBoundingBox().contains(e)}center(e){return this.getBoundingBox().center()}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this._refPoint=r.l2g(t):this._points[e-1]=r.l2g(t)}}t.MultiLine=l},"59d8":function(e,t,i){"use strict";i.r(t);var s=i("e5ca"),n=i("6f8d");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("a7b3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"639cd890",null);t["default"]=a.exports},"5a5c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("66cb")),o=i("8f0a"),r=i("f10f");function a(e){return new o.LocalPoint(e.pageX,e.pageY)}function l(e=!1){const t=n.default(r.gameStore.fowColour);return r.gameStore.IS_DM?t.setAlpha(e?1:r.gameStore.fowOpacity):t.setAlpha(1),t.toRgbString()}function c(e){return 1/(-5/3+28/15*Math.exp(1.83*e))}function u(e){return Math.log(15/28*(1/e+5/3))/1.83}t.getMouse=a,t.getFogColour=l,t.zoomValue=c,t.zoomDisplay=u},"5a81":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importStar(i("66cb")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("2f62"),l=s.__importDefault(i("3b36")),c=s.__importDefault(i("d65f")),u=i("4a5b"),d=i("8f0a"),h=i("6f92"),f=i("1327"),p=i("f10f"),g=i("92b1"),v=i("60a3");let m=class extends o.default{constructor(){super(...arguments),this.x=0,this.y=0,this.visible=!1,this.text="X",this.fillColour="rgba(255, 255, 255, 1)",this.borderColour="rgba(0, 0, 0, 1)"}mounted(){this.updatePreview()}onTextChange(e,t){this.updatePreview()}onFillChange(e,t){this.updatePreview()}onBorderChange(e,t){this.updatePreview()}open(e,t){this.visible=!0,this.x=e,this.y=t}submit(){const e=h.layerManager.getLayer();if(void 0===e)return;const t=new f.CircularToken(g.l2g(new d.LocalPoint(this.x,this.y)),g.getUnitDistance(p.gameStore.unitSize/2),this.text,"10px serif",this.fillColour,this.borderColour);t.addOwner(p.gameStore.username),e.addShape(t,!0),e.invalidate(!1),this.visible=!1}updatePreview(){const e=this.$refs.canvas.getContext("2d");e.clearRect(0,0,e.canvas.width,e.canvas.height),e.beginPath();const t={x:e.canvas.width/2,y:e.canvas.height/2},i=.9*Math.min(t.x,t.y);e.fillStyle=this.fillColour,e.arc(t.x,t.y,i,0,2*Math.PI),e.fill(),"rgba(0, 0, 0, 0)"!==this.borderColour&&(e.beginPath(),e.lineWidth=5,e.strokeStyle=this.borderColour,e.arc(t.x,t.y,i,0,2*Math.PI),e.stroke()),e.save(),e.textAlign="center",e.textBaseline="middle";const s=u.calcFontScale(e,this.text,i,i),o=0;e.transform(s,o,-o,s,t.x,t.y),e.fillStyle=n.mostReadable(this.fillColour,["#000","#fff"]).toHexString(),e.fillText(this.text,0,0),e.restore()}};s.__decorate([v.Watch("text")],m.prototype,"onTextChange",null),s.__decorate([v.Watch("fillColour")],m.prototype,"onFillChange",null),s.__decorate([v.Watch("borderColour")],m.prototype,"onBorderChange",null),m=s.__decorate([r.default({components:{Modal:c.default,"color-picker":l.default},computed:Object.assign({},a.mapState("game",["unitSize"]))})],m),t.default=m},"5ae5":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f")),a=i("4a5b"),l=i("f10f");let c=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.note=null}open(e){this.visible=!0,this.note=e}calcHeight(){if(this.$refs.textarea){const e=this.$refs.textarea;return e.style.height="auto",e.style.height=e.scrollHeight+"px",e.scrollHeight+"px"}return"100px"}updateNote(){this.note&&l.gameStore.updateNote({note:this.note,sync:!0})}removeNote(){a.getRef("confirm").open("Are you sure you wish to remove this?").then(e=>{e&&this.note&&(l.gameStore.removeNote({note:this.note,sync:!0}),this.visible=!1)},()=>{})}};c=s.__decorate([o.default({components:{Modal:r.default}})],c),t.default=c},"5b69":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=i("60a3"),r=s.__importDefault(i("3b36")),a=s.__importDefault(i("ea6a")),l=i("0bc6"),c=i("8f0a"),u=i("6f92"),d=i("4709"),h=i("5e7c"),f=i("574e"),p=i("e4ea"),g=i("b2ed"),v=i("f10f"),m=i("92b1"),y=i("5a5c");let b=class extends a.default{constructor(){super(...arguments),this.name="Draw",this.active=!1,this.startPoint=null,this.shape=null,this.brushHelper=null,this.ruler=null,this.fillColour="rgba(0, 0, 0, 1)",this.borderColour="rgba(255, 255, 255, 0)",this.shapeSelect="square",this.shapes=["square","circle","draw-polygon","paint-brush"],this.modeSelect="normal",this.modes=["normal","reveal","hide"],this.brushSize=m.getUnitDistance(v.gameStore.unitSize)}get helperSize(){return"paint-brush"===this.shapeSelect?this.brushSize/2:m.getUnitDistance(this.unitSize)/8}get IS_DM(){return v.gameStore.IS_DM}get unitSize(){return v.gameStore.unitSize}get useGrid(){return v.gameStore.useGrid}onFillChange(){this.brushHelper&&(this.brushHelper.fillColour=this.fillColour)}onModeUpdate(e,t){this.onModeChange(e,t)}setupBrush(){null!==this.brushHelper&&("reveal"===this.modeSelect||"hide"===this.modeSelect?(this.brushHelper.options.set("preFogShape",!0),this.brushHelper.options.set("skipDraw",!0),this.brushHelper.fillColour="rgba(0, 0, 0, 1)","reveal"===this.modeSelect?this.brushHelper.globalCompositeOperation="source-over":"hide"===this.modeSelect&&(this.brushHelper.globalCompositeOperation="destination-out")):(this.brushHelper.options.delete("preFogShape"),this.brushHelper.options.delete("skipDraw"),this.brushHelper.globalCompositeOperation="source-over",this.brushHelper.fillColour=this.fillColour))}onModeChange(e,t){if(null===this.brushHelper)return;const i=u.layerManager.getLayer("fow"),s=u.layerManager.getLayer();void 0!==i&&void 0!==s&&(this.setupBrush(),"normal"!==e&&"normal"===t?(s.removeShape(this.brushHelper,!1),i.addShape(this.brushHelper,!1)):"normal"===e&&"normal"!==t&&(s.addShape(this.brushHelper,!1),i.removeShape(this.brushHelper,!1)))}getLayer(){return"normal"===this.modeSelect?u.layerManager.getLayer():u.layerManager.getLayer("fow")}onMouseDown(e){const t=this.getLayer();if(void 0!==t){if(this.active)null!==this.shape&&this.shape instanceof p.Polygon&&this.shape._vertices.push(m.l2g(y.getMouse(e)));else{switch(this.startPoint=m.l2g(y.getMouse(e)),this.active=!0,this.shapeSelect){case"square":this.shape=new g.Rect(this.startPoint.clone(),0,0,this.fillColour,this.borderColour);break;case"circle":this.shape=new d.Circle(this.startPoint.clone(),this.helperSize,this.fillColour,this.borderColour);break;case"paint-brush":this.shape=new f.MultiLine(this.startPoint.clone(),[],this.brushSize),this.shape.fillColour=this.fillColour;break;case"draw-polygon":this.shape=new p.Polygon(this.startPoint.clone(),[],this.fillColour,this.borderColour);break;default:return}"normal"!==this.modeSelect&&(this.shape.options.set("preFogShape",!0),this.shape.options.set("skipDraw",!0),this.shape.fillColour="rgba(0, 0, 0, 1)"),"reveal"===this.modeSelect?this.shape.globalCompositeOperation="source-over":"hide"===this.modeSelect&&(this.shape.globalCompositeOperation="destination-out"),this.shape.addOwner(v.gameStore.username),"fow"===t.name&&"normal"===this.modeSelect&&(this.shape.visionObstruction=!0,this.shape.movementObstruction=!0),t.addShape(this.shape,!0,!1,!1),this.pushBrushBack()}if(null!==this.shape&&this.shape instanceof p.Polygon){const i=m.l2g(y.getMouse(e));null===this.ruler?(this.ruler=new h.Line(i,i,3,"black"),t.addShape(this.ruler,!1)):(this.ruler.refPoint=i,this.ruler.endPoint=i),this.shape.visionObstruction&&v.gameStore.recalculateVision(!0),t.invalidate(!1),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!0})}}else console.log("No active layer!")}onMouseMove(e){const t=m.l2g(y.getMouse(e)),i=this.getLayer();if(void 0!==i){if(null!==this.brushHelper&&(this.brushHelper.r=this.helperSize,this.brushHelper.refPoint=t,this.active||i.invalidate(!1)),this.active&&null!==this.startPoint&&null!==this.shape){switch(this.shapeSelect){case"square":this.shape.w=Math.abs(t.x-this.startPoint.x),this.shape.h=Math.abs(t.y-this.startPoint.y),this.shape.refPoint=new c.GlobalPoint(Math.min(this.startPoint.x,t.x),Math.min(this.startPoint.y,t.y));break;case"circle":this.shape.r=t.subtract(this.startPoint).length();break;case"paint-brush":this.shape._points.push(t);break;case"draw-polygon":this.ruler.endPoint=t;break}this.shape instanceof p.Polygon||(l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!0}),this.shape.visionObstruction&&v.gameStore.recalculateVision(!0)),i.invalidate(!1)}}else console.log("No active layer!")}onMouseUp(e){!this.active||null===this.shape||this.shape instanceof p.Polygon||(!e.altKey&&this.useGrid&&this.shape.resizeToGrid(),this.finaliseShape())}onContextMenu(e){if(!this.active||null===this.shape||!(this.shape instanceof p.Polygon))return;const t=this.getLayer();void 0!==t?(t.removeShape(this.ruler,!1),this.ruler=null,this.finaliseShape()):console.log("No active layer!")}finaliseShape(){null!==this.shape&&(this.shape.visionObstruction&&v.gameStore.recalculateVision(),this.shape.movementObstruction&&v.gameStore.recalculateMovement(),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:!0,temporary:!1}),this.active=!1)}onSelect(){const e=this.getLayer();void 0!==e&&(this.brushHelper=new d.Circle(new c.GlobalPoint(-1e3,-1e3),this.brushSize/2,this.fillColour),this.setupBrush(),e.addShape(this.brushHelper,!1))}onDeselect(){const e=this.getLayer();null!==this.brushHelper&&void 0!==e&&e.removeShape(this.brushHelper,!1),this.active&&void 0!==e&&null!==this.shape&&(e.removeShape(this.shape,!0,!1),this.shape=null,this.active=!1,e.invalidate(!1))}pushBrushBack(){const e=this.getLayer();void 0!==e?(null!==this.brushHelper&&e.removeShape(this.brushHelper,!1),this.brushHelper=new d.Circle(new c.GlobalPoint(-1e3,-1e3),this.brushSize/2,this.fillColour),this.setupBrush(),e.addShape(this.brushHelper,!1)):console.log("No active layer!")}};s.__decorate([o.Watch("fillColour")],b.prototype,"onFillChange",null),s.__decorate([o.Watch("modeSelect")],b.prototype,"onModeUpdate",null),b=s.__decorate([n.default({components:{"color-picker":r.default}})],b),t.default=b},"5e7c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("92b1");class a extends o.Shape{constructor(e,t,i,s,n){super(e,"rgba(0, 0, 0, 0)",s||"#000",n),this.type="line",this.endPoint=t,this.lineWidth=void 0===i?1:i}asDict(){return Object.assign(this.getBaseDict(),{x2:this.endPoint.x,y2:this.endPoint.y,line_width:this.lineWidth})}get points(){return[[this.refPoint.x,this.refPoint.y],[this.endPoint.x,this.endPoint.y]]}getBoundingBox(){return new n.BoundingRect(new s.GlobalPoint(Math.min(this.refPoint.x,this.endPoint.x),Math.min(this.refPoint.y,this.endPoint.y)),Math.abs(this.refPoint.x-this.endPoint.x),Math.abs(this.refPoint.y-this.endPoint.y))}draw(e){super.draw(e),e.strokeStyle=this.strokeColour,e.beginPath(),e.moveTo(r.g2lx(this.refPoint.x),r.g2ly(this.refPoint.y)),e.lineTo(r.g2lx(this.endPoint.x),r.g2ly(this.endPoint.y)),e.lineWidth=this.lineWidth,e.stroke()}contains(e){return!1}center(e){}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this.refPoint=r.l2g(t):this.endPoint=r.l2g(t)}}t.Line=a},"5ed5":function(e,t,i){},"5f86":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("8c4f"));o.default.use(r.default);const a=s.__importDefault(i("e914")),l=s.__importDefault(i("1077")),c=s.__importDefault(i("cad7")),u=s.__importDefault(i("47f7")),d=s.__importDefault(i("c6b4")),h=s.__importDefault(i("07f5")),f=s.__importDefault(i("ce87")),p=i("cc67");t.router=new r.default({mode:"history",base:"/",routes:[{path:"/",redirect:"/dashboard"},{path:"/_load",name:"load",component:u.default},{path:"/assets",component:a.default,meta:{auth:!0}},{path:"/auth",component:{template:""},children:[{path:"login",component:l.default},{path:"logout",component:c.default}]},{path:"/invite/:code",component:f.default,meta:{auth:!0}},{path:"/dashboard",component:d.default,meta:{auth:!0}},{path:"/game/:creator/:room",component:h.default,meta:{auth:!0}}]}),t.router.beforeEach((e,i,s)=>{p.coreStore.initialized||"/_load"===e.path?e.matched.some(e=>e.meta.auth)&&!p.coreStore.authenticated?s({path:"/auth/login",query:{redirect:e.path}}):s():(s({path:"/_load"}),n.default.get("/api/auth").then(i=>{i.data.auth&&(p.coreStore.setAuthenticated(!0),p.coreStore.setUsername(i.data.username)),p.coreStore.setInitialized(!0),t.router.push(e.path)}).catch(()=>{console.error("Authentication check could not be fulfilled.")}))})},"5fa9":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9"));let r=class extends n.default{constructor(){super(...arguments),this.name="",this.selected=!1,this.active=!1}get detailRight(){const e=this.$parent.$refs[this.name+"-selector"][0].getBoundingClientRect(),t=e.left+e.width/2;return`${window.innerWidth-Math.min(window.innerWidth-25,t+75)}px`}get detailArrow(){const e=this.$parent.$refs[this.name+"-selector"][0].getBoundingClientRect(),t=e.left+e.width/2,i=Math.min(window.innerWidth-25,t+75);return`${i-t-14}px`}created(){this.$parent.$on("mousedown",(e,t)=>{t===this.name&&this.onMouseDown(e)}),this.$parent.$on("mouseup",(e,t)=>{t===this.name&&this.onMouseUp(e)}),this.$parent.$on("mousemove",(e,t)=>{t===this.name&&this.onMouseMove(e)}),this.$parent.$on("contextmenu",(e,t)=>{t===this.name&&this.onContextMenu(e)}),this.$parent.$on("tools-select-change",(e,t)=>{t===this.name?(this.selected=!1,this.onDeselect()):e===this.name&&(this.selected=!0,this.onSelect())})}onSelect(){}onDeselect(){}onMouseDown(e){}onMouseUp(e){}onMouseMove(e){}onContextMenu(e){}};r=s.__decorate([o.default],r),t.default=r},6100:function(e,t,i){"use strict";i.r(t);var s=i("f974"),n=i("e94f");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("d75e");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b6e1f51c",null);t["default"]=a.exports},6465:function(e,t,i){"use strict";i.r(t);var s=i("5fa9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"64a9":function(e,t,i){},6542:function(e,t,i){},"676f":function(e,t,i){},"69fb":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"main"},on:{mouseleave:e.mouseleave,wheel:e.zoom}},[e.showUI?i("menu-bar"):e._e(),i("div",{attrs:{id:"board"}},[e.ready.manager?[i("tool-bar",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],ref:"tools"})]:e._e(),i("div",{attrs:{id:"layers"},on:{mousedown:e.mousedown,mouseup:e.mouseup,mousemove:e.mousemove,contextmenu:function(t){return t.preventDefault(),t.stopPropagation(),e.contextmenu(t)},dragover:function(e){e.preventDefault()},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.drop(t)}}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showUI&&e.layers.length>1,expression:"showUI && layers.length>1"}],attrs:{id:"layerselect"}},[i("ul",e._l(e.layers,function(t){return i("li",{key:t.name,class:{"layer-selected":t===e.selectedLayer},on:{mousedown:function(i){return e.selectLayer(t)}}},[i("a",{attrs:{href:"#"}},[e._v(e._s(t))])])}),0)])],2),i("selection-info",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],ref:"selectionInfo"}),i("initiative-dialog",{ref:"initiative",attrs:{id:"initiativedialog"}}),i("note-dialog",{ref:"note"}),i("label-dialog",{ref:"labels"}),e.IS_DM||e.FAKE_PLAYER?i("dm-settings",{ref:"dmsettings"}):e._e(),i("zoom-slider",{directives:[{name:"show",rawName:"v-show",value:e.showUI,expression:"showUI"}],attrs:{id:"zoomer",height:6,width:200,min:0,max:1,interval:.1,"dot-width":8,"dot-height":20,"tooltip-dir":"bottom",tooltip:"hover",formatter:e.zoomDisplay.toFixed(1),"slider-style":{"border-radius":"15%"},"bg-style":{"background-color":"#fff","box-shadow":"0.5px 0.5px 3px 1px rgba(0, 0, 0, .36)"},"process-style":{"background-color":"#fff"}},model:{value:e.zoomDisplay,callback:function(t){e.zoomDisplay=t},expression:"zoomDisplay"}}),i("prompt-dialog",{ref:"prompt"}),i("confirm-dialog",{ref:"confirm"})],1)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"6a95":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"input-copy"},on:{mouseleave:function(t){e.showPopup=!1}}},[i("input",{attrs:{type:"text",disabled:"disabled",id:"input-element"},domProps:{value:e.value}}),i("div",{directives:[{name:"show",rawName:"v-show",value:e.showPopup,expression:"showPopup"}],attrs:{id:"show-popup"}},[e._v(e._s(e.popupString))]),i("div",{attrs:{id:"copy-button"},on:{click:e.copy}},[i("i",{staticClass:"far fa-copy"})])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"6c30":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("c266"),n=i("f10f"),o=i("92b1");class r extends s.BaseRect{constructor(e,t,i,s,n){super(t,i,s,void 0,void 0,n),this.type="assetrect",this.src="",this.img=e}asDict(){return Object.assign(this.getBaseDict(),{src:this.src})}fromDict(e){super.fromDict(e),this.src=e.src}draw(e){super.draw(e);try{e.drawImage(this.img,o.g2lx(this.refPoint.x),o.g2ly(this.refPoint.y),o.g2lz(this.w),o.g2lz(this.h))}catch(t){console.warn(`Shape ${this.uuid} could not load the image ${this.src}`)}}getInitiativeRepr(){return{uuid:this.uuid,visible:!n.gameStore.IS_DM,group:!1,source:this.src,has_img:!0,effects:[],index:1/0}}}t.Asset=r},"6c7c":function(e,t,i){"use strict";i.r(t);var s=i("6a95"),n=i("9088");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("2900");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"20bfdb3e",null);t["default"]=a.exports},"6e4a":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("98ef"),n=i("4aee");class o{constructor(){this.tds=new s.TDS}insertConstraint(e,t){const i=this.insert(e),s=this.insert(t);i!==s&&this.insertConstraintV(i,s)}insertConstraintV(e,t){const i=[[e,t]];while(i.length>0){const e=i.pop(),t=n.edgeInfo(e[0],e[1]);if(t.includes){this.markConstraint(t.fr,t.i),t.vi!==e[1]&&i.push([t.vi,e[1]]);continue}const s=this.findIntersectedFaces(e[0],e[1]);s.found?s.vi!==e[0]&&s.vi!==e[1]?(i.push([e[0],s.vi]),i.push([s.vi,e[1]])):i.push(e):(this.triangulateHole(s.intersectedFaces,s.listAB,s.listBA),s.vi!==e[1]&&i.push([s.vi,e[1]]))}}triangulateHole(e,t,i){const s=[];this.triangulateHole2(e,t,i,s),this.propagatingFlipE(s)}triangulateHole2(e,t,i,s){if(t.length>0){this.triangulateHalfHole(t,s),this.triangulateHalfHole(i,s);const n=t[0][0],o=i[0][0];n.neighbours[2]=o,o.neighbours[2]=n,n.constraints[2]=!0,o.constraints[2]=!0;while(e.length>0)this.tds.deleteTriangle(e.shift())}}triangulateHalfHole(e,t){let i,o,r=0;const a=()=>e[r],l=()=>e[i],c=a()[0].vertices[n.ccw(a()[1])];let u,d,h,f,p,g;i=r,++i;do{d=a()[0],p=a()[1],null!==d.neighbours[p]&&(u=d.neighbours[p],f=n.cw(u.indexV(d.vertices[n.cw(p)])),d=u.neighbours[f],p=this.tds.mirrorIndex(u,f)),h=l()[0],g=l()[1],null!==h.neighbours[g]&&(u=h.neighbours[g],f=n.cw(u.indexV(h.vertices[n.cw(g)])),h=u.neighbours[f],g=this.tds.mirrorIndex(u,f));const v=d.vertices[n.ccw(p)],m=d.vertices[n.cw(p)],y=h.vertices[n.cw(g)],b=n.orientation(v.point,m.point,y.point);switch(b){case s.Sign.RIGHT_TURN:{const s=this.tds.createTriangle(v,y,m,null,null,null);t.push([s,2]),s.neighbours[1]=d,s.neighbours[0]=h,d.neighbours[p]=s,h.neighbours[g]=s,d.isConstrained(p)&&(s.constraints[1]=!0),h.isConstrained(g)&&(s.constraints[0]=!0),v.triangle=s,m.triangle=s,y.triangle=s,o=r+1,e.splice(r,0,[s,2]),e.splice(Math.max(o,i),1),e.splice(Math.min(o,i),1),i=r,v!==c?--r:++i;break}case s.Sign.LEFT_TURN:case s.Sign.COLLINEAR:++r,++i;break}}while(i0){t=r[0][0],a=r[0][1],l=t.neighbours[a],c=this.tds.mirrorIndex(t,a),u=[t,a],r.splice(r.findIndex(e=>e[0]===u[0]&&e[1]===u[1]),1),d[0]=[t,n.cw(a)],d[1]=[t,n.ccw(a)],d[2]=[l,n.cw(c)],d[3]=[l,n.ccw(c)];for(const e of d){const t=e[0],i=e[1];s=[t.neighbours[i],this.tds.mirrorIndex(t,i)],this.lessEdge(e,s)?r.splice(r.findIndex(t=>t[0]===e[0]&&t[1]===e[1]),1):r.splice(r.findIndex(e=>e[0]===s[0]&&e[1]===s[1]),1)}this.flip(t,a);for(const e of d){const t=e[0],i=e[1];this.isFlipable(t,i)&&(s=[t.neighbours[i],this.tds.mirrorIndex(t,i)],this.lessEdge(e,s)?r.push(e):r.push(s))}}}flip(e,t){const i=e.neighbours[t],s=this.tds.mirrorIndex(e,t),o=e.neighbours[n.cw(t)],r=this.tds.mirrorIndex(e,n.cw(t)),a=e.neighbours[n.ccw(t)],l=this.tds.mirrorIndex(e,n.ccw(t)),c=i.neighbours[n.cw(s)],u=this.tds.mirrorIndex(i,n.cw(s)),d=i.neighbours[n.ccw(s)],h=this.tds.mirrorIndex(i,n.ccw(s));this.tds.flip(e,t),e.constraints[e.indexT(i)]=!1,i.constraints[i.indexT(e)]=!1,o.neighbours[r].constraints[this.tds.mirrorIndex(o,r)]=o.constraints[r],a.neighbours[l].constraints[this.tds.mirrorIndex(a,l)]=a.constraints[l],c.neighbours[u].constraints[this.tds.mirrorIndex(c,u)]=c.constraints[u],d.neighbours[h].constraints[this.tds.mirrorIndex(d,h)]=d.constraints[h]}isFlipable(e,t,i=!0){const o=e.neighbours[t];return!e.isInfinite()&&!o.isInfinite()&&(!e.constraints[t]&&n.sideOfOrientedCircle(o,e.vertices[t].point,i)===s.Sign.ON_POSITIVE_SIDE)}insertb(e,t,i,o){let r,a,l=!1;i===s.LocateType.EDGE&&t.isConstrained(o)&&(l=!0,r=t.vertices[n.ccw(o)],a=t.vertices[n.cw(o)]);const c=this.insertc(e,t,i,o);return l?this.updateConstraintsIncident(c,r,a):i!==s.LocateType.VERTEX&&this.clearConstraintsIncident(c),2===this.tds.dimension&&this.updateConstraintsOpposite(c),c}updateConstraintsIncident(e,t,i){if(0!==this.tds.dimension)if(1===this.tds.dimension){const t=new s.EdgeCirculator(e,null);do{t.t.constraints[2]=!0}while(t.next())}else{const o=new s.FaceCirculator(e,null);do{const s=o.t.indexV(e),r=n.cw(s),a=n.ccw(s);o.t.vertices[r]===t||o.t.vertices[r]===i?(o.t.constraints[a]=!0,o.t.constraints[r]=!1):(o.t.constraints[a]=!1,o.t.constraints[r]=!0)}while(o.next())}}clearConstraintsIncident(e){const t=new s.EdgeCirculator(e,null);if(t.valid)do{const e=t.t,i=t.ri;e.constraints[i]=!1,2===this.tds.dimension&&(e.neighbours[i].constraints[this.tds.mirrorIndex(e,i)]=!1)}while(t.next())}insertc(e,t,i,n){if(1===this.tds.vertices.length)return this.insertFirst(e);if(2===this.tds.vertices.length)return i===s.LocateType.VERTEX?this.tds.finiteVertex:this.insertSecond(e);switch(i){case s.LocateType.VERTEX:return t.vertices[n];case s.LocateType.OUTSIDE_AFFINE_HULL:return this.insertOutsideAffineHull(e);case s.LocateType.OUTSIDE_CONVEX_HULL:return this.insertOutsideConvexHull(e,t);case s.LocateType.EDGE:return this.insertInEdge(e,t,n);case s.LocateType.FACE:return this.insertInFace(e,t)}throw new Error("qwe")}insertInEdge(e,t,i){const s=this.tds.insertInEdge(t,i);return s.point=e,s}insertInFace(e,t){const i=this.tds.insertInFace(t);return i.point=e,i}insertFirst(e){const t=this.tds.insertDimUp();return t.point=e,t}insertSecond(e){const t=this.tds.insertDimUp(this.tds._infinite,!0);return t.point=e,t}insertOutsideAffineHull(e){let t=!1;if(1===this.tds.dimension){const i=this.tds.finiteEdge.first,o=n.orientation(i.vertices[0].point,i.vertices[1].point,e);t=o===s.Sign.COUNTERCLOCKWISE}const i=this.tds.insertDimUp(this.tds._infinite,t);return i.point=e,i}insertOutsideConvexHull(e,t){let i;if(1===this.tds.dimension)throw new Error("sdfasdasd");return i=this.insertOutsideConvexHull2(e,t),i.point=e,i}insertOutsideConvexHull2(e,t){let i=t.indexV(this.tds._infinite);const o=[],r=[];let a=new s.FaceCirculator(this.tds._infinite,t),l=!1;while(!l){a.prev(),i=a.t.indexV(this.tds._infinite);const t=a.t.vertices[n.ccw(i)].point,r=a.t.vertices[n.cw(i)].point;n.orientation(e,t,r)===s.Sign.LEFT_TURN?o.push(a.t):l=!0}a=new s.FaceCirculator(this.tds._infinite,t),l=!1;while(!l){a.next(),i=a.t.indexV(this.tds._infinite);const t=a.t.vertices[n.ccw(i)].point,o=a.t.vertices[n.cw(i)].point;n.orientation(e,t,o)===s.Sign.LEFT_TURN?r.push(a.t):l=!0}const c=this.tds.insertInFace(t);let u;c.point=e;while(o.length>0)u=o[0],i=n.ccw(u.indexV(this.tds._infinite)),this.tds.flip(u,i),o.shift();while(r.length>0)u=r[0],i=n.cw(u.indexV(this.tds._infinite)),this.tds.flip(u,i),r.shift();a=new s.FaceCirculator(c,null);while(!a.t.isInfinite())a.next();return this.tds._infinite.triangle=a.t,c}locate(e,t){let i=0,o=0;if(this.tds.dimension<0)return i=s.LocateType.OUTSIDE_AFFINE_HULL,o=4,{loc:null,lt:i,li:o};if(0===this.tds.dimension)return i=n.xyEqual(e,this.tds.finiteVertex.triangle.vertices[0].point)?s.LocateType.VERTEX:s.LocateType.OUTSIDE_AFFINE_HULL,o=4,{loc:null,lt:i,li:o};if(1===this.tds.dimension)return this.marchLocate1D(e);if(null===t){const e=this.tds._infinite.triangle;t=e.neighbours[e.indexV(this.tds._infinite)]}else t.isInfinite()&&(t=t.neighbours[t.indexV(this.tds._infinite)]);return this.marchLocate2D(t,e)}marchLocate1D(e){const t=this.tds._infinite.triangle,i=t.indexV(this.tds._infinite),o=t.neighbours[i],r=n.orientation(o.vertices[0].point,o.vertices[1].point,e);if(r===s.Sign.RIGHT_TURN||r===s.Sign.LEFT_TURN)return{loc:new s.Triangle,lt:s.LocateType.OUTSIDE_AFFINE_HULL,li:4};const a=o.indexT(t);if(n.collinearBetween(e,o.vertices[1-a].point,o.vertices[a].point))return{loc:t,lt:s.LocateType.OUTSIDE_CONVEX_HULL,li:i};if(n.xyEqual(e,o.vertices[1-a].point))return{loc:o,lt:s.LocateType.VERTEX,li:1-a};throw new Error("sdfsdf")}marchLocate2D(e,t){let i,o,r=null,a=!0;while(1){if(e.isInfinite())return{loc:e,lt:s.LocateType.OUTSIDE_CONVEX_HULL,li:e.indexV(this.tds._infinite)};const l=0,c=e.vertices[0].point,u=e.vertices[1].point,d=e.vertices[2].point;let h,f,p;if(a){if(r=e,a=!1,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}}else if(l)if(e.neighbours[0]===r){if(r=e,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}f=s.Sign.POSITIVE}else if(e.neighbours[1]===r){if(r=e,f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}p=s.Sign.POSITIVE}else{if(r=e,p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}h=s.Sign.POSITIVE}else if(e.neighbours[0]===r){if(r=e,p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}if(h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}f=s.Sign.POSITIVE}else if(e.neighbours[1]===r){if(r=e,h=n.orientation(c,u,t),h===s.Sign.NEGATIVE){e=e.neighbours[2];continue}if(f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}p=s.Sign.POSITIVE}else{if(r=e,f=n.orientation(u,d,t),f===s.Sign.NEGATIVE){e=e.neighbours[0];continue}if(p=n.orientation(d,c,t),p===s.Sign.NEGATIVE){e=e.neighbours[1];continue}h=s.Sign.POSITIVE}const g=(h===s.Sign.COLLINEAR?1:0)+(f===s.Sign.COLLINEAR?1:0)+(p===s.Sign.COLLINEAR?1:0);switch(g){case 0:i=s.LocateType.FACE,o=4;break;case 1:i=s.LocateType.EDGE,o=h===s.Sign.COLLINEAR?2:f===s.Sign.COLLINEAR?0:1;break;case 2:i=s.LocateType.VERTEX,o=h!==s.Sign.COLLINEAR?2:f!==s.Sign.COLLINEAR?0:1;break}if(void 0===i||void 0===o)throw new Error("ert");return{loc:e,lt:i,li:o}}}iLocate(e,t){if(this.tds.dimension<2)return t;if(null===t){const e=this.tds._infinite.triangle;t=e.neighbours[e.indexV(this.tds._infinite)]}else t.isInfinite()&&(t=t.neighbours[t.indexV(this.tds._infinite)]);let i=null,s=t,o=!0,r=2500;while(1){if(!r--)return s;if(s.isInfinite())return s;const t=s.vertices[0].point,a=s.vertices[1].point,l=s.vertices[2].point;if(o){if(i=s,o=!1,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}if(n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}}else if(s.neighbours[0]===i){if(i=s,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}}else if(s.neighbours[1]===i){if(i=s,n.hasInexactNegativeOrientation(t,a,e)){s=s.neighbours[2];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}}else{if(i=s,n.hasInexactNegativeOrientation(l,t,e)){s=s.neighbours[1];continue}if(n.hasInexactNegativeOrientation(a,l,e)){s=s.neighbours[0];continue}}break}return s}}t.CDT=o},"6f8d":function(e,t,i){"use strict";i.r(t);var s=i("5b69"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"6f92":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("6c30"),o=i("f10f"),r=i("92b1");class a{constructor(){this.layers=[],this.width=window.innerWidth,this.height=window.innerHeight,this.UUIDMap=new Map,this.interval=30,this.drawLoop=()=>{for(let e=this.layers.length-1;e>=0;e--)this.layers[e].draw();requestAnimationFrame(this.drawLoop)},requestAnimationFrame(this.drawLoop)}reset(){this.layers=[],this.UUIDMap=new Map}setWidth(e){this.width=e;for(const t of this.layers)t.canvas.width=e,t.width=e}setHeight(e){this.height=e;for(const t of this.layers)t.canvas.height=e,t.height=e}addLayer(e){this.layers.push(e),(o.gameStore.IS_DM||e.playerEditable)&&e.selectable&&o.gameStore.addLayer(e.name)}hasLayer(e){return this.layers.some(t=>t.name===e)}getLayer(e){e=void 0===e?o.gameStore.selectedLayer:e;for(const t of this.layers)if(t.name===e)return t}selectLayer(e,t=!0){let i=!1;for(const s of this.layers)s.selectable&&(i&&"fow"!==s.name?s.ctx.globalAlpha=.3:s.ctx.globalAlpha=1,e===s.name&&(o.gameStore.selectLayer({name:e,sync:t}),i=!0),s.clearSelection(),s.invalidate(!0))}getGridLayer(){return this.getLayer("grid")}hasSelection(){const e=this.getSelection();return void 0!==e&&e.length>0}getSelection(){const e=this.getLayer();if(void 0!==e)return e.selection}invalidate(){for(let e=this.layers.length-1;e>=0;e--)this.layers[e].invalidate(!0)}invalidateLight(){for(let e=this.layers.length-1;e>=0;e--)this.layers[e].isVisionLayer&&this.layers[e].invalidate(!0)}dropAsset(e){const t=this.getLayer();if(void 0===t||null===e||null===e.dataTransfer)return;const i=document.createElement("img");i.src=e.dataTransfer.getData("text/plain");const a=new n.Asset(i,new s.GlobalPoint(r.l2gx(e.clientX),r.l2gy(e.clientY)),r.l2gz(i.width),r.l2gz(i.height));if(a.src=new URL(i.src).pathname,o.gameStore.useGrid){const e=o.gameStore.gridSize;a.refPoint=new s.GlobalPoint(Math.round(a.refPoint.x/e)*e,Math.round(a.refPoint.y/e)*e),a.w=Math.max(Math.round(a.w/e)*e,e),a.h=Math.max(Math.round(a.h/e)*e,e)}t.addShape(a,!0)}}t.layerManager=new a,window.lm=t.layerManager},7018:function(e,t,i){"use strict";i.r(t);var s=i("ebb9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},7420:function(e,t,i){"use strict";i.r(t);var s=i("d320"),n=i("778b");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("c969");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"73816298",null);t["default"]=a.exports},"76b3":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{constructor(e,t){this.children=[],this.nPrimitives=e,this.bbox=t}}t.BoundingNode=s;class n extends s{constructor(e,t,i){super(t,i),this.firstPrimOffset=e}}t.LeafNode=n;class o extends s{constructor(e,t,i){super(0,t.bbox.union(i.bbox)),this.dimension=e,this.children.push(t),this.children.push(i)}}t.InteriorNode=o},"778b":function(e,t,i){"use strict";i.r(t);var s=i("5a81"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"77a6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4a5b"),n=i("0bc6"),o=i("2b48"),r=i("af17"),a=i("8f0a"),l=i("6f92"),c=i("206a"),u=i("f10f"),d=i("2838");function h(e){if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement);else if("Delete"===e.key||"Del"===e.key||"Backspace"===e.key){if(void 0===l.layerManager.getLayer)return void console.log("No active layer selected for delete operation");const e=l.layerManager.getLayer();for(let t=e.selection.length-1;t>=0;t--){const i=e.selection[t];s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==i.uuid?(e.removeShape(i,!0,!1),r.EventBus.$emit("SelectionInfo.Shape.Set",null),r.EventBus.$emit("Initiative.Remove",i.uuid)):e.selection.splice(t,1)}}}function f(e){if(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)65===e.keyCode&&e.ctrlKey&&e.target.select();else if(e.keyCode>=37&&e.keyCode<=40){const t=Math.round(u.gameStore.gridSize);let i=t*(e.keyCode%2),r=t*(e.keyCode%2?0:1);if(l.layerManager.hasSelection()){const t=l.layerManager.getSelection();i*=e.keyCode<=38?-1:1,r*=e.keyCode<=38?-1:1;let o=new a.Vector(i,r);if(!e.shiftKey||!u.gameStore.IS_DM)for(const e of t)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==e.uuid&&(o=d.calculateDelta(o,e));for(const e of t)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==e.uuid&&(e.refPoint=e.refPoint.add(o),n.socket.emit("Shape.Position.Update",{shape:e.asDict(),redraw:!0,temporary:!1}));u.gameStore.recalculateVision(),l.layerManager.getLayer().invalidate(!1)}else u.gameStore.increasePanX(i*(e.keyCode<=38?1:-1)),u.gameStore.increasePanY(r*(e.keyCode<=38?1:-1)),l.layerManager.invalidate(),o.sendClientOptions()}else if(68===e.keyCode){const e=l.layerManager.getLayer();e&&(e.clearSelection(),e.invalidate(!0))}else if("u"===e.key&&e.ctrlKey)e.preventDefault(),e.stopPropagation(),u.gameStore.toggleUI();else if("c"===e.key&&e.ctrlKey){const e=l.layerManager.getLayer();if(!e)return;if(!e.selection)return;const t=[];for(const i of e.selection)s.getRef("tools").$refs.selectTool.selectionHelper.uuid!==i.uuid&&t.push(i.asDict());u.gameStore.setClipboard(t)}else if("v"===e.key&&e.ctrlKey){const e=l.layerManager.getLayer();if(!e)return;if(!u.gameStore.clipboard)return;e.selection=[];for(const t of u.gameStore.clipboard){t.x+=10,t.y+=10,t.uuid=s.uuidv4();const i=t.trackers;t.trackers=[];for(const e of i){const i=Object.assign({},e,{uuid:s.uuidv4()});t.trackers.push(i)}const n=t.auras;t.auras=[];for(const e of n){const i=Object.assign({},e,{uuid:s.uuidv4()});t.auras.push(i)}const o=c.createShapeFromDict(t);void 0!==o&&(e.addShape(o,!0),e.selection.push(o))}1===e.selection.length?r.EventBus.$emit("SelectionInfo.Shape.Set",e.selection[0]):r.EventBus.$emit("SelectionInfo.Shape.Set",null),e.invalidate(!1)}}t.onKeyUp=h,t.onKeyDown=f},"78c7":function(e,t,i){"use strict";var s=i("9227"),n=i.n(s);n.a},"7aaa":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("033f")),r=s.__importDefault(i("7420")),a=s.__importDefault(i("59d8")),l=s.__importDefault(i("bea6")),c=s.__importDefault(i("dec1")),u=s.__importDefault(i("4899")),d=s.__importDefault(i("c277")),h=s.__importDefault(i("9f58")),f=i("6f92"),p=i("9cb7"),g=i("f10f"),v=i("d5df"),m=i("92b1"),y=i("5a5c"),b=s.__importDefault(i("65d9"));let _=class extends n.default{constructor(){super(...arguments),this.currentTool="Select",this.tools=["Select","Pan","Draw","Ruler","Map","Filter","Vision"],this.dmTools=["Map"]}get IS_DM(){return g.gameStore.IS_DM}get currentToolComponent(){return`${this.currentTool.toLowerCase()}-tool`}get visibleTools(){return this.tools.filter(e=>!this.dmTools.includes(e)||this.IS_DM)}toolVisible(e){return"Filter"===e?Object.keys(g.gameStore.labels).length>0:"Vision"!==e||g.gameStore.ownedtokens.length>1}mousedown(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(1===e.button)t="Pan";else if(0!==e.button)return;this.$emit("mousedown",e,t)}mouseup(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(1===e.button)t="Pan";else if(0!==e.button)return;this.$emit("mouseup",e,t)}mousemove(e){if("CANVAS"!==e.target.tagName)return;let t=this.currentTool;if(0!==(4&e.buttons))t="Pan";else if((1&e.button)>1)return;this.$emit("mousemove",e,t);let i=!1;for(const s of g.gameStore.annotations)if(f.layerManager.UUIDMap.has(s)&&f.layerManager.hasLayer("draw")){const t=f.layerManager.UUIDMap.get(s);t.contains(m.l2g(y.getMouse(e)))&&(i=!0,p.gameManager.annotationManager.setActiveText(t.annotation))}!i&&p.gameManager.annotationManager.shown&&p.gameManager.annotationManager.setActiveText("")}mouseleave(e){0!==(1&e.buttons)&&this.$emit("mouseup",e,this.currentTool)}contextmenu(e){"CANVAS"===e.target.tagName&&2===e.button&&"CANVAS"===e.target.tagName&&this.$emit("contextmenu",e,this.currentTool)}};_=s.__decorate([b.default({components:{"select-tool":d.default,"pan-tool":u.default,"draw-tool":a.default,"ruler-tool":v.RulerTool,"map-tool":c.default,"filter-tool":l.default,"vision-tool":h.default,"shape-menu":o.default,"createtoken-dialog":r.default},watch:{currentTool(e,t){this.$emit("tools-select-change",e,t)}}})],_),t.default=_},"7ba5":function(e,t,i){"use strict";i.r(t);var s=i("fbdd"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"7e15":function(e,t,i){"use strict";i.r(t);var s=i("52a8"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"7eb7":function(e,t,i){"use strict";var s=i("cd76"),n=i.n(s);n.a},"7f1e":function(e,t,i){"use strict";var s=i("fe11"),n=i.n(s);n.a},"839d":function(e,t,i){},"851c":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f"));let a=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.question="",this.answer="",this.title="",this.resolve=e=>{},this.reject=()=>{}}submit(){this.resolve(this.answer),this.close()}close(){this.reject(),this.visible=!1,this.question="",this.answer="",this.title=""}prompt(e,t){return this.question=e,this.title=t,this.visible=!0,this.$nextTick(()=>{this.$refs.answer.focus()}),new Promise((e,t)=>{this.resolve=e,this.reject=t})}};a=s.__decorate([o.default({components:{Modal:r.default}})],a),t.default=a},8790:function(e,t,i){"use strict";var s=i("a912"),n=i.n(s);n.a},"88af":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[e._v(e._s(e.message))])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"8cd4":function(e,t,i){"use strict";i.r(t);var s=i("9587"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"8db6":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("92b1");class o{constructor(e,t,i){this.w=t,this.h=i,this.topLeft=e,this.topRight=new s.GlobalPoint(e.x+t,e.y),this.botRight=new s.GlobalPoint(e.x+t,e.y+i),this.botLeft=new s.GlobalPoint(e.x,e.y+i)}contains(e){return this.topLeft.x<=e.x&&this.topRight.x>=e.x&&this.topLeft.y<=e.y&&this.botLeft.y>=e.y}get points(){return 0===this.w||0===this.h?[[this.topLeft.x,this.topLeft.y]]:[[this.topLeft.x,this.topLeft.y],[this.botLeft.x,this.botLeft.y],[this.botRight.x,this.botRight.y],[this.topRight.x,this.topRight.y]]}offset(e){return new o(this.topLeft.add(e),this.w,this.h)}union(e){const t=Math.min(this.topLeft.x,e.topLeft.x),i=Math.max(this.topRight.x,e.topRight.x),n=Math.min(this.topLeft.y,e.topLeft.y),r=Math.max(this.botLeft.y,e.botLeft.y);return new o(new s.GlobalPoint(t,n),i-t,r-n)}getDiagCorner(e){return e?this.botRight:this.topLeft}intersectsWith(e){return!(e.topLeft.x>this.topRight.x||e.topRight.xthis.botLeft.y||e.botLeft.y=this.topRight.x||e.topRight.x<=this.topLeft.x||e.topLeft.y>=this.botLeft.y||e.botLeft.y<=this.topLeft.y)}intersectP(e,t,i){let s=t.x*(this.getDiagCorner(i[0]).x-e.origin.x),n=t.x*(this.getDiagCorner(!i[0]).x-e.origin.x);const o=t.y*(this.getDiagCorner(i[1]).y-e.origin.y),r=t.y*(this.getDiagCorner(!i[1]).y-e.origin.y);return s>r||o>n?{hit:!1,min:s,max:n}:(o>s&&(s=o),r0,min:s,max:n})}center(){return this.topLeft.add(new s.Vector(this.w/2,this.h/2))}getMaxExtent(){return this.w>this.h?0:1}visibleInCanvas(e){const t=!(n.g2lx(this.topLeft.x)>e.width||n.g2ly(this.topLeft.y)>e.height||n.g2lx(this.topRight.x)<0||n.g2ly(this.botRight.y)<0);return!!t}}t.BoundingRect=o},"8e60":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"formcontainer"}},[e.owned||e.joined?i("form",[i("fieldset",[i("legend",{staticClass:"legend"},[e._v("Your sessions")]),i("div",{staticClass:"input"},[e._l(e.owned,function(t,s){return i("router-link",{key:"o-"+s,attrs:{to:"/game/"+t[1]+"/"+t[0]}},[e._v(e._s(t[0]))])}),e._l(e.joined,function(t,s){return i("router-link",{key:"j-"+s,attrs:{to:"/game/"+t[1]+"/"+t[0]}},[e._v(e._s(t[1])+"/"+e._s(t[0]))])})],2),0===e.owned.length?i("div",{staticClass:"input"},[e._v("No active sessions")]):e._e()])]):e._e(),e._m(0),i("form",{on:{submit:function(t){return t.preventDefault(),e.createRoom(t)}}},[i("fieldset",[e.owned||e.joined?i("div",{staticClass:"input"},[e._v("Create a new session")]):i("legend",{staticClass:"legend"},[e._v("Create a session")]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.newSessionName,expression:"newSessionName"}],attrs:{type:"text",name:"room_name",placeholder:"Session Name"},domProps:{value:e.newSessionName},on:{input:function(t){t.target.composing||(e.newSessionName=t.target.value)}}}),e._m(1)]),e._m(2)])]),i("div",{attrs:{id:"account-options"}},[i("form",{on:{submit:function(e){e.preventDefault()}}},[i("router-link",{staticClass:"submit",attrs:{tag:"button",title:"Account Settings",to:"/account"}},[i("i",{staticClass:"fas fa-cog"})])],1),i("form",{on:{submit:function(e){e.preventDefault()}}},[i("router-link",{staticClass:"submit",attrs:{tag:"button",title:"Logout",to:"/auth/logout"}},[i("i",{staticClass:"fas fa-sign-out-alt"})])],1)])])},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("h4",[i("span",[e._v("OR")])])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fab fa-d-and-d"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"submit",attrs:{type:"submit",title:"Create"}},[i("i",{staticClass:"fas fa-arrow-right"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},"8f0a":function(e,t,i){"use strict";function s(e,t){const i=e.x-t.x,s=e.y-t.y;return Math.sqrt(i*i+s*s)}Object.defineProperty(t,"__esModule",{value:!0}),t.getPointDistance=s;class n{constructor(e,t){this.x=e,this.y=t}static fromArray(e){return new n(e[0],e[1])}add(e){return new n(this.x+e.x,this.y+e.y)}subtract(e){return new a(this.x-e.x,this.y-e.y)}clone(){return new n(this.x,this.y)}get(e){return 0===e?this.x:this.y}asArray(){return[this.x,this.y]}}t.Point=n;class o extends n{add(e){return super.add(e)}subtract(e){return super.subtract(e)}clone(){return super.clone()}static fromArray(e){return new o(e[0],e[1])}}t.GlobalPoint=o;class r extends n{add(e){return super.add(e)}subtract(e){return super.subtract(e)}clone(){return super.clone()}}t.LocalPoint=r;class a{constructor(e,t){this.x=e,this.y=t}dot(e){return this.x*e.x+this.y*e.y}inverse(){return new a(0===this.x?0:1/this.x,0===this.y?0:1/this.y)}length(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))}normalize(){const e=this.length();return new a(this.x/e,this.y/e)}reverse(){return new a(-this.x,-this.y)}multiply(e){return new a(this.x*e,this.y*e)}angle(){return 180*Math.atan2(this.y,this.x)/Math.PI}}t.Vector=a;class l{constructor(e,t,i){this.direction=t,this.origin=e,void 0===i&&(i=1/0),this.tMax=i}static fromPoints(e,t){const i=new a(t.x-e.x,t.y-e.y);let s;return s=Math.abs(i.x)>.01?(t.x-e.x)/i.x:(t.y-e.y)/i.y,new l(e,i,s)}get(e){return new n(this.origin.x+e*this.direction.x,this.origin.y+e*this.direction.y)}getDistance(e,t){return Math.sqrt(Math.pow(t-e,2)*(Math.pow(this.direction.x,2)+Math.pow(this.direction.y,2)))}getT(e,t){return e+Math.sqrt(Math.pow(t,2)/(Math.pow(this.direction.x,2)+Math.pow(this.direction.y,2)))}}t.Ray=l},"8f54":function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("ul",[e._l(e.folders,function(t){return i("li",{key:t,staticClass:"folder",on:{click:function(t){return t.stopPropagation(),e.toggle(t)}}},[e._v("\n "+e._s(t)+"\n "),i("asset-node",{attrs:{asset:e.asset[t]}})],1)}),e._l(e.files,function(t){return i("li",{key:t.name,staticClass:"file draggable token",attrs:{draggable:"true"},on:{mouseover:function(i){e.showImage=t.hash},mouseout:function(t){e.showImage=null},dragstart:function(i){return e.dragStart(i,"/static/assets/"+t.hash)}}},[e._v("\n "+e._s(t.name)+"\n "),e.showImage==t.hash?i("div",{staticClass:"preview"},[i("img",{staticClass:"asset-preview-image",attrs:{src:"/static/assets/"+t.hash}})]):e._e()])})],2)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},9088:function(e,t,i){"use strict";i.r(t);var s=i("3411"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"919a":function(e,t,i){},"91df":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("6f79"));i("fe80");const a=i("2ef0"),l=s.__importDefault(i("a535")),c=s.__importDefault(i("cec2")),u=s.__importDefault(i("f5fe")),d=s.__importDefault(i("f74c")),h=s.__importDefault(i("19f9")),f=s.__importDefault(i("f551")),p=s.__importDefault(i("f086")),g=s.__importDefault(i("6100")),v=i("0bc6"),m=i("77a6"),y=i("bb17"),b=i("6f92"),_=i("f10f"),w=i("92b1"),S=i("8f0a"),x=s.__importDefault(i("e0e8"));let C=class extends n.default{constructor(){super(...arguments),this.ready={manager:!1,tools:!1}}get showUI(){return _.gameStore.showUI}get IS_DM(){return _.gameStore.IS_DM}get FAKE_PLAYER(){return _.gameStore.FAKE_PLAYER}get layers(){return _.gameStore.layers}get selectedLayer(){return _.gameStore.selectedLayer}get zoomDisplay(){return _.gameStore.zoomDisplay}set zoomDisplay(e){_.gameStore.updateZoom({newZoomDisplay:e,zoomLocation:w.l2g(new S.LocalPoint(window.innerWidth/2,window.innerHeight/2))})}mounted(){window.addEventListener("resize",this.resizeWindow),window.addEventListener("keyup",m.onKeyUp),window.addEventListener("keydown",m.onKeyDown),this.ready.manager=!0}destroyed(){window.removeEventListener("resize",this.resizeWindow),window.removeEventListener("keyup",m.onKeyUp),window.removeEventListener("keydown",m.onKeyDown),this.ready.manager=!1}zoom(e){a.throttle(y.scrollZoom)(e)}resizeWindow(){b.layerManager.setWidth(window.innerWidth),b.layerManager.setHeight(window.innerHeight),b.layerManager.invalidate()}mousedown(e){this.$refs.tools.mousedown(e)}mouseup(e){this.$refs.tools.mouseup(e)}mousemove(e){this.$refs.tools.mousemove(e)}mouseleave(e){this.$refs.tools.mouseleave(e)}contextmenu(e){this.$refs.tools.contextmenu(e)}selectLayer(e){b.layerManager.selectLayer(e)}drop(e){if(null!==e&&null!==e.dataTransfer)if(e.dataTransfer.files.length>0)this.$refs.confirm.open("Uploading files should be done through the asset manager.","Ok","").then(()=>{},()=>{});else{if(""===e.dataTransfer.getData("text/plain"))return;b.layerManager.dropAsset(e)}}};C=s.__decorate([o.default({components:{"tool-bar":g.default,"selection-info":p.default,"prompt-dialog":c.default,"confirm-dialog":l.default,"menu-bar":h.default,"initiative-dialog":u.default,"zoom-slider":r.default,"note-dialog":f.default,"label-dialog":d.default,"dm-settings":x.default},beforeRouteEnter(e,t,i){v.createConnection(e),i()},beforeRouteLeave(e,t,i){v.socket.disconnect(),i()}})],C),t.default=C},9227:function(e,t,i){},"92b1":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("f10f");function o(e){const t=n.gameStore.zoomFactor,i=n.gameStore.panX,o=n.gameStore.panY;return new s.LocalPoint((e.x+i)*t,(e.y+o)*t)}function r(e){return o(new s.GlobalPoint(e,0)).x}function a(e){return o(new s.GlobalPoint(0,e)).y}function l(e){return e*n.gameStore.zoomFactor}function c(e){return e/n.gameStore.unitSize*n.gameStore.gridSize}function u(e){return l(c(e))}function d(e){const t=n.gameStore.zoomFactor,i=n.gameStore.panX,o=n.gameStore.panY;return e instanceof s.LocalPoint?new s.GlobalPoint(e.x/t-i,e.y/t-o):new s.Ray(d(e.origin),e.direction.multiply(1/t),e.tMax)}function h(e){return d(new s.LocalPoint(e,0)).x}function f(e){return d(new s.LocalPoint(0,e)).y}function p(e){return e/n.gameStore.zoomFactor}function g(e){return p(c(e))}t.g2l=o,t.g2lx=r,t.g2ly=a,t.g2lz=l,t.getUnitDistance=c,t.g2lr=u,t.l2g=d,t.l2gx=h,t.l2gy=f,t.l2gz=p,t.l2gr=g,window.g2lx=r,window.g2ly=a},9587:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=i("2f62"),a=s.__importDefault(i("3b36")),l=s.__importDefault(i("0ddd")),c=i("4a5b"),u=i("0bc6"),d=i("f10f"),h=i("af17");let f=class extends n.default{constructor(){super(...arguments),this.visible={settings:!1,locations:!1}}get IS_DM(){return d.gameStore.IS_DM||d.gameStore.FAKE_PLAYER}get gridColour(){return d.gameStore.gridColour}set gridColour(e){d.gameStore.setGridColour({colour:e,sync:!0})}get fowColour(){return d.gameStore.fowColour}set fowColour(e){d.gameStore.setFOWColour({colour:e,sync:!0})}get rulerColour(){return d.gameStore.rulerColour}set rulerColour(e){d.gameStore.setRulerColour({colour:e,sync:!0})}settingsClick(e){if(e.target.classList.contains("menu-accordion")){e.target.classList.toggle("menu-accordion-active");const t=e.target.nextElementSibling;null!==t&&(t.style.display=""===t.style.display?"block":"")}}changeLocation(e){u.socket.emit("Location.Change",e)}createLocation(){c.getRef("prompt").prompt("New location name:","Create new location").then(e=>{u.socket.emit("Location.New",e)},()=>{})}createNote(){const e={title:"New note",text:"",uuid:c.uuidv4()};d.gameStore.newNote({note:e,sync:!0}),this.openNote(e)}openNote(e){c.getRef("note").open(e)}openDmSettings(){h.EventBus.$emit("DmSettings.Open")}};f=s.__decorate([o.default({components:{"color-picker":a.default,"asset-node":l.default},computed:Object.assign({},r.mapState("game",["locations","assets","notes"]))})],f),t.default=f},"979e":function(e,t,i){"use strict";i.r(t);var s=i("0634"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},"98ef":function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4aee");let n;var o,r;function a(){return[t.INFINITE,t.INFINITE]}t.INFINITE=-Infinity,function(e){e[e["NEGATIVE"]=-1]="NEGATIVE",e[e["ZERO"]=0]="ZERO",e[e["POSITIVE"]=1]="POSITIVE",e[e["RIGHT_TURN"]=-1]="RIGHT_TURN",e[e["LEFT_TURN"]=1]="LEFT_TURN",e[e["SMALLER"]=-1]="SMALLER",e[e["EQUAL"]=0]="EQUAL",e[e["LARGER"]=1]="LARGER",e[e["CLOCKWISE"]=-1]="CLOCKWISE",e[e["COUNTERCLOCKWISE"]=1]="COUNTERCLOCKWISE",e[e["COLLINEAR"]=0]="COLLINEAR",e[e["COPLANAR"]=0]="COPLANAR",e[e["DEGENERATE"]=0]="DEGENERATE",e[e["ON_NEGATIVE_SIDE"]=-1]="ON_NEGATIVE_SIDE",e[e["ON_ORIENTED_BOUNDARY"]=0]="ON_ORIENTED_BOUNDARY",e[e["ON_POSITIVE_SIDE"]=1]="ON_POSITIVE_SIDE"}(o=t.Sign||(t.Sign={})),function(e){e[e["UNDEFINED"]=-1]="UNDEFINED",e[e["VERTEX_VERTEX"]=0]="VERTEX_VERTEX",e[e["VERTEX_EDGE"]=1]="VERTEX_EDGE",e[e["EDGE_VERTEX"]=2]="EDGE_VERTEX",e[e["EDGE_EDGE"]=3]="EDGE_EDGE"}(r||(r={}));class l{constructor(...e){this.vertices=[],this.neighbours=[null,null,null],this.constraints=[!1,!1,!1],this.uid=l._counter++,this.vertices=e}from(e){return this.vertices=e.vertices.slice(0,e.vertices.length),this.neighbours=e.neighbours.slice(0,e.neighbours.length),this.constraints=e.constraints.slice(0,e.constraints.length),this}get dimension(){return this.vertices.length-1}addVertex(e){void 0===e&&console.log("UNDEFINED HIERE"),this.vertices.push(e),e.triangle=this}isConstrained(e){return this.constraints[e]}reorient(){this.vertices=[this.vertices[1],this.vertices[0],this.vertices[2]].slice(0,this.vertices.length),this.neighbours=[this.neighbours[1],this.neighbours[0],this.neighbours[2]],this.constraints=[this.constraints[1],this.constraints[0],this.constraints[2]]}indexV(e){return this.vertices.indexOf(e)}indexT(e){return this.neighbours.indexOf(e)}isInfinite(e){return void 0===e?this.vertices.includes(n):this.vertices[s.ccw(e)].infinite||this.vertices[s.cw(e)].infinite}contains(e){const t=-this.vertices[1].point[1]*this.vertices[2].point[0]+this.vertices[0].point[1]*(-this.vertices[1].point[0]+this.vertices[2].point[0])+this.vertices[0].point[0]*(this.vertices[1].point[1]-this.vertices[2].point[1])+this.vertices[1].point[0]*this.vertices[2].point[1],i=t<0?-1:1,s=(this.vertices[0].point[1]*this.vertices[2].point[0]-this.vertices[0].point[0]*this.vertices[2].point[1]+(this.vertices[2].point[1]-this.vertices[0].point[1])*e[0]+(this.vertices[0].point[0]-this.vertices[2].point[0])*e[1])*i;if(s<0)return!1;const n=(this.vertices[0].point[0]*this.vertices[1].point[1]-this.vertices[0].point[1]*this.vertices[1].point[0]+(this.vertices[0].point[1]-this.vertices[1].point[1])*e[0]+(this.vertices[1].point[0]-this.vertices[0].point[0])*e[1])*i;return n>0&&s+nt!==e)}setAdjacency(e,t,i,s){e.neighbours[t]=i,i.neighbours[s]=e}get finiteVertex(){return this.vertices[1]}get infiniteVertex(){const e=new c(a());return e.infinite=!0,e}get finiteEdge(){if(this.dimension<1)throw new Error("aspo");const e=new d(this);while(e.valid)e.next();return e.collect()}insertDimUp(e=new c,t=!0){const i=this.createVertex();let s,n;switch(this.dimension++,this.dimension){case 0:s=this.triangles[0],n=new l(i),this.triangles.push(n),this.setAdjacency(s,0,n,0),i.triangle=n;break;case 1:case 2:{const o=[],r=this.triangles.slice(0,this.triangles.length);for(const t of r){const s=(new l).from(t);this.triangles.push(s),t.vertices[this.dimension]=i,s.vertices[this.dimension]=e,this.setAdjacency(t,this.dimension,s,this.dimension),t.vertices.includes(e)&&o.push(s)}for(const e of r){const t=e.neighbours[this.dimension];for(let i=0;ie.center.center().get(r)0){if(i=!0,s=e.tMax=d.min,n=d.max,0===o||t)break;r=a[--o]}else c[u.dimension]?(a[o++]=r+1,r=u.secondChildOffset):(a[o++]=u.secondChildOffset,r++);else{if(0===o)break;r=a[--o]}}return{hit:i,intersect:e.get(s),tMin:s,tMax:n}}compact(){this.offset=0,null!==this.root&&this.flatten(this.root)}flatten(e){const t=this.offset,i=this.offset++;if(0===e.nPrimitives){this.flatten(e.children[0]);const i=this.flatten(e.children[1]);this.nodes[t]={bbox:e.bbox,dimension:e.dimension,nPrimitives:0,secondChildOffset:i}}else this.nodes[t]={bbox:e.bbox,primitivesOffset:e.firstPrimOffset,nPrimitives:e.nPrimitives};return i}createLeaf(e,t,i,s){const n=this.orderedPrims.length;for(let o=e;o{i(t=>{t.owned=e.data.owned,t.joined=e.data.joined})}).catch(e=>{i(t=>{t.error=e.message})})}createRoom(e){n.default.post("/api/rooms",{name:this.newSessionName}).then(e=>{this.$router.push(`/game/${a.coreStore.username}/${this.newSessionName}`)}).catch(e=>{this.error=e.message})}};l=s.__decorate([r.default],l),t.default=l},a535:function(e,t,i){"use strict";i.r(t);var s=i("e06e"),n=i("f30c");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("223d");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"1883e207",null);t["default"]=a.exports},a68b:function(e,t,i){"use strict";i.r(t);var s=i("308b"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},a7b3:function(e,t,i){"use strict";var s=i("6542"),n=i.n(s);n.a},a83f:function(e,t,i){"use strict";var s=i("0525"),n=i.n(s);n.a},a912:function(e,t,i){},aa69:function(e,t,i){"use strict";i.r(t);var s=i("0cf7"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},af17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026"));t.EventBus=new n.default},b0ac:function(e,t,i){"use strict";i.r(t);var s=i("a474"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b0c0:function(e,t,i){},b2ed:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("c266"),n=i("f10f"),o=i("92b1"),r=i("5a5c");class a extends s.BaseRect{constructor(e,t,i,s,n,o){super(e,t,i,s,n,o),this.type="rect"}asDict(){return super.getBaseDict()}draw(e){super.draw(e),"fog"===this.fillColour?e.fillStyle=r.getFogColour():e.fillStyle=this.fillColour;const t=n.gameStore.zoomFactor,i=o.g2l(this.refPoint);e.fillRect(i.x,i.y,this.w*t,this.h*t),"rgba(0, 0, 0, 0)"!==this.strokeColour&&(e.strokeStyle=this.strokeColour,e.lineWidth=5,e.strokeRect(i.x,i.y,this.w*t,this.h*t))}}t.Rect=a},b599:function(e,t,i){},b6bc:function(e,t,i){"use strict";i.r(t);var s=i("5394"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b809:function(e,t,i){"use strict";i.r(t);var s=i("ca56"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},b906:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("bab4"),o=i("6f92"),r=i("d1ec"),a=i("f10f"),l=i("92b1"),c=i("cee3");class u extends n.Layer{constructor(){super(...arguments),this.isVisionLayer=!0}draw(){if(!this.valid){const t=this.ctx;if(!a.gameStore.fowLOS||r.Settings.skipPlayerFOW)return t.clearRect(0,0,this.canvas.width,this.canvas.height),void(this.valid=!0);t.clearRect(0,0,this.canvas.width,this.canvas.height);const i=t.globalCompositeOperation;t.fillStyle="rgba(0, 0, 0, 1)",a.gameStore.IS_DM||super.draw(!a.gameStore.fullFOW);const n=t.canvas.width+t.canvas.height;for(const u of a.gameStore.activeTokens){const i=o.layerManager.UUIDMap.get(u);if(void 0===i)continue;const d=i.center(),h=l.g2l(d);if("bvh"===a.gameStore.visionMode){t.beginPath();let e=-1;for(let i=0;i<2*Math.PI;i+=r.Settings.angleSteps/2/180*Math.PI){const o=Math.cos(i),r=Math.sin(i),c=new s.Ray(d,new s.Vector(o,r)),u=a.gameStore.BV.intersect(c);u.hit?(-1!==e&&(t.arc(h.x,h.y,n,e,i),e=-1),t.lineTo(l.g2lx(u.intersect.x),l.g2ly(u.intersect.y))):-1===e&&(t.lineTo(h.x+n*o,h.y+n*r),e=i)}-1!==e?t.arc(h.x,h.y,n,e,2*Math.PI):t.closePath(),t.fill()}else{{const e=t.createRadialGradient(h.x,h.y,l.g2lr(a.gameStore.visionRangeMin),h.x,h.y,l.g2lr(a.gameStore.visionRangeMax));e.addColorStop(0,"rgba(0, 0, 0, 1)"),e.addColorStop(1,"rgba(0, 0, 0, 0)"),t.fillStyle=e}try{const s=c.computeVisibility(i.center(),"vision");t.beginPath(),t.moveTo(l.g2lx(s[0][0]),l.g2ly(s[0][1]));for(const e of s)t.lineTo(l.g2lx(e[0]),l.g2ly(e[1]));t.closePath(),t.fill()}catch(e){}}}a.gameStore.IS_DM&&super.draw(!a.gameStore.fullFOW),t.globalCompositeOperation=i}}}t.FOWPlayersLayer=u},bab4:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("0bc6"),n=i("af17"),o=i("6f92"),r=i("206a"),a=i("f10f"),l=i("92b1");class c{constructor(e,t){this.selectable=!1,this.playerEditable=!1,this.isVisionLayer=!1,this.valid=!1,this.shapes=[],this.selection=[],this.selectionColor="#CC0000",this.selectionWidth=2,this.canvas=e,this.name=t,this.width=e.width,this.height=e.height,this.ctx=e.getContext("2d")}invalidate(e){this.valid=!1,e||o.layerManager.invalidateLight()}addShape(e,t,i,n=!0){void 0===i&&(i=!1),e.layer=this.name,this.shapes.push(e),o.layerManager.UUIDMap.set(e.uuid,e),e.checkVisionSources(n),e.setMovementBlock(e.movementObstruction,n),e.ownedBy(a.gameStore.username)&&e.isToken&&a.gameStore.ownedtokens.push(e.uuid),e.annotation.length&&a.gameStore.annotations.push(e.uuid),t&&s.socket.emit("Shape.Add",{shape:e.asDict(),temporary:i}),n&&this.invalidate(!t)}setShapes(e){for(const t of e){const e=r.createShapeFromDict(t);if(void 0===e)return void console.log(`Shape with unknown type ${t.type_} could not be added`);this.addShape(e,!1,!1,!1)}this.clearSelection(),this.invalidate(!1)}removeShape(e,t,i){void 0===i&&(i=!1),this.shapes.splice(this.shapes.indexOf(e),1),t&&s.socket.emit("Shape.Remove",{shape:e.asDict(),temporary:i});const n=a.gameStore.visionSources.findIndex(t=>t.shape===e.uuid),r=a.gameStore.visionBlockers.findIndex(t=>t===e.uuid),l=a.gameStore.movementblockers.findIndex(t=>t===e.uuid),c=a.gameStore.annotations.findIndex(t=>t===e.uuid);n>=0&&a.gameStore.visionSources.splice(n,1),r>=0&&a.gameStore.visionBlockers.splice(r,1),l>=0&&a.gameStore.movementblockers.splice(l,1),c>=0&&a.gameStore.annotations.splice(c,1);const u=a.gameStore.annotations.indexOf(e.uuid);u>=0&&a.gameStore.annotations.splice(u,1);const d=a.gameStore.ownedtokens.indexOf(e.uuid);d>=0&&a.gameStore.ownedtokens.splice(d,1),o.layerManager.UUIDMap.delete(e.uuid);const h=this.selection.indexOf(e);h>=0&&this.selection.splice(h,1),r>=0&&a.gameStore.recalculateVision(),l>=0&&a.gameStore.recalculateMovement(),this.invalidate(!t)}clear(){this.ctx.clearRect(0,0,this.width,this.height)}clearSelection(){this.selection=[],n.EventBus.$emit("SelectionInfo.Shape.Set",null)}draw(e){if(!this.valid){const t=this.ctx,i=t.globalCompositeOperation;e=void 0===e||e,e&&this.clear();const s=this;if(this.shapes.forEach(e=>{e.options.has("skipDraw")&&e.options.get("skipDraw")||void 0!==o.layerManager.getLayer()&&e.visibleInCanvas(s.canvas)&&("fow"===s.name&&e.visionObstruction&&o.layerManager.getLayer().name!==s.name||e.drawAuras(t))}),this.shapes.forEach(e=>{e.options.has("skipDraw")&&e.options.get("skipDraw")||0===e.labels.length&&a.gameStore.filterNoLabel||e.labels.length&&a.gameStore.labelFilters.length&&!e.labels.some(e=>a.gameStore.labelFilters.includes(e.uuid))||void 0!==o.layerManager.getLayer()&&e.visibleInCanvas(s.canvas)&&("fow"===s.name&&e.visionObstruction&&o.layerManager.getLayer().name!==s.name||e.draw(t))}),null!=this.selection){t.fillStyle=this.selectionColor,t.strokeStyle=this.selectionColor,t.lineWidth=this.selectionWidth;const e=a.gameStore.zoomFactor;this.selection.forEach(i=>{t.globalCompositeOperation=i.globalCompositeOperation;const s=i.getBoundingBox();t.strokeRect(l.g2lx(s.topLeft.x),l.g2ly(s.topLeft.y),s.w*e,s.h*e);for(const e of i.points)t.beginPath(),t.arc(l.g2lx(e[0]),l.g2ly(e[1]),3,0,2*Math.PI),t.fill();t.beginPath(),t.moveTo(l.g2lx(i.points[0][0]),l.g2ly(i.points[0][1]));for(let e=1;e<=i.points.length;e++){const s=i.points[e%i.points.length];t.lineTo(l.g2lx(s[0]),l.g2ly(s[1]))}t.stroke()})}t.globalCompositeOperation=i,this.valid=!0}}moveShapeOrder(e,t,i){const n=this.shapes.indexOf(e);n!==t&&(this.shapes.splice(n,1),this.shapes.splice(t,0,e),i&&s.socket.emit("Shape.Order.Set",{shape:e.asDict(),index:t}),this.invalidate(!0))}}t.Layer=c},bb17:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("f10f"),n=i("92b1"),o=i("5a5c");function r(e){if(!e.target||!e.target.tagName||"CANVAS"!==e.target.tagName)return;let t;t=-1*Math.sign(e.deltaY),s.gameStore.updateZoom({newZoomDisplay:s.gameStore.zoomDisplay-.1*t,zoomLocation:n.l2g(o.getMouse(e))})}t.scrollZoom=r},bea6:function(e,t,i){"use strict";i.r(t);var s=i("e8bb"),n=i("b6bc");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("e3f5"),i("99ea");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"dca395d6",null);t["default"]=a.exports},c106:function(e,t,i){},c159:function(e,t,i){},c266:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("8db6"),o=i("2469"),r=i("f10f"),a=i("2838"),l=i("92b1");class c extends o.Shape{constructor(e,t,i,s,n,o){super(e,s,n,o),this.w=t,this.h=i}getBaseDict(){return Object.assign(super.getBaseDict(),{width:this.w,height:this.h})}getBoundingBox(){return new n.BoundingRect(this.refPoint,this.w,this.h)}get points(){if(0===this.w||0===this.h)return[[this.refPoint.x,this.refPoint.y]];const e=this.refPoint.add(new s.Vector(0,this.h)),t=this.refPoint.add(new s.Vector(this.w,this.h)),i=this.refPoint.add(new s.Vector(this.w,0));return[[this.refPoint.x,this.refPoint.y],[e.x,e.y],[t.x,t.y],[i.x,i.y]]}contains(e){return this.refPoint.x<=e.x&&this.refPoint.x+this.w>=e.x&&this.refPoint.y<=e.y&&this.refPoint.y+this.h>=e.y}center(e){if(void 0===e)return this.refPoint.add(new s.Vector(this.w/2,this.h/2));this.refPoint=new s.GlobalPoint(e.x-this.w/2,e.y-this.h/2)}visibleInCanvas(e){if(super.visibleInCanvas(e))return!0;const t=!(l.g2lx(this.refPoint.x)>e.width||l.g2ly(this.refPoint.y)>e.height||l.g2lx(this.refPoint.x+this.w)<0||l.g2ly(this.refPoint.y+this.h)<0);return!!t}snapToGrid(){const e=r.gameStore.gridSize,t=this.center(),i=t.x,n=t.y;let o,l;o=this.w/e%2===0?Math.round(i/e)*e-this.w/2:(Math.round((i+e/2)/e)-.5)*e-this.w/2,l=this.h/e%2===0?Math.round(n/e)*e-this.h/2:(Math.round((n+e/2)/e)-.5)*e-this.h/2;const c=a.calculateDelta(new s.Vector(o-this.refPoint.x,l-this.refPoint.y),this);this.refPoint=this.refPoint.add(c),this.invalidate(!1)}resizeToGrid(){const e=r.gameStore.gridSize;this.refPoint=new s.GlobalPoint(Math.round(this.refPoint.x/e)*e,Math.round(this.refPoint.y/e)*e),this.w=Math.max(Math.round(this.w/e)*e,e),this.h=Math.max(Math.round(this.h/e)*e,e),this.invalidate(!1)}resize(e,t){const i=r.gameStore.zoomFactor;switch(e){case 0:this.w=l.g2lx(this.refPoint.x)+this.w*i-t.x,this.h=l.g2ly(this.refPoint.y)+this.h*i-t.y,this.refPoint=l.l2g(t);break;case 1:this.w=l.g2lx(this.refPoint.x)+this.w*i-t.x,this.h=t.y-l.g2ly(this.refPoint.y),this.refPoint=new s.GlobalPoint(l.l2gx(t.x),this.refPoint.y);break;case 2:this.w=t.x-l.g2lx(this.refPoint.x),this.h=t.y-l.g2ly(this.refPoint.y);break;case 3:this.w=t.x-l.g2lx(this.refPoint.x),this.h=l.g2ly(this.refPoint.y)+this.h*i-t.y,this.refPoint=new s.GlobalPoint(this.refPoint.x,l.l2gy(t.y));break}this.w/=i,this.h/=i,this.w<0&&(this.refPoint=this.refPoint.add(new s.Vector(this.w,0)),this.w=Math.abs(this.w)),this.h<0&&(this.refPoint=this.refPoint.add(new s.Vector(0,this.h)),this.h=Math.abs(this.h))}}t.BaseRect=c},c277:function(e,t,i){"use strict";i.r(t);var s=i("22bd"),n=i("e27a");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},c31c:function(e,t,i){},c5ff:function(e,t,i){},c6b4:function(e,t,i){"use strict";i.r(t);var s=i("8e60"),n=i("b0ac");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("d767");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"61eb1455",null);t["default"]=a.exports},c969:function(e,t,i){"use strict";var s=i("3a20"),n=i.n(s);n.a},c9a2:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"AssetManager"}},[i("div",{attrs:{id:"titlebar"}},[e._v("Asset Manager")]),i("div",{attrs:{id:"main"}},[i("div",{attrs:{id:"assets"},on:{dragover:function(t){return t.preventDefault(),e.moveDrag(t)},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.stopDrag(t,e.currentFolder)}}},[i("div",{attrs:{id:"breadcrumbs"}},[i("div",[e._v("/")]),e._l(e.path,function(t){return i("div",{key:t},[e._v(e._s(e.idMap.get(t).name))])})],2),i("div",{attrs:{id:"actionbar"}},[i("input",{attrs:{id:"files",type:"file",multiple:"",hidden:""},on:{change:function(t){return e.upload()}}}),i("div",{attrs:{title:"Create folder"},on:{click:e.createDirectory}},[i("i",{staticClass:"fas fa-plus-square"})]),i("div",{attrs:{title:"Upload files"},on:{click:e.prepareUpload}},[i("i",{staticClass:"fas fa-upload"})])]),i("div",{attrs:{id:"explorer"}},[e.path.length?i("div",{staticClass:"inode folder",on:{dblclick:function(t){return e.changeDirectory(-1)},dragover:function(t){return t.preventDefault(),e.moveDrag(t)},dragleave:function(t){return t.preventDefault(),e.leaveDrag(t)},drop:function(t){return t.preventDefault(),t.stopPropagation(),e.stopDrag(t,e.parentFolder)}}},[i("i",{staticClass:"fas fa-folder",staticStyle:{"font-size":"50px"}}),i("div",{staticClass:"title"},[e._v("..")])]):e._e(),e._l(e.folders,function(t){return i("div",{key:t,staticClass:"inode folder",class:{"inode-selected":e.selected.includes(t)},attrs:{draggable:"true"},on:{click:function(i){return e.select(i,t)},dblclick:function(i){return e.changeDirectory(t)},contextmenu:function(i){return i.preventDefault(),e.$refs.cm.open(i,t)},dragstart:function(i){return e.startDrag(i,t)},dragover:function(t){return t.preventDefault(),e.moveDrag(t)},dragleave:function(t){return t.preventDefault(),e.leaveDrag(t)},drop:function(i){return i.preventDefault(),i.stopPropagation(),e.stopDrag(i,t)}}},[i("i",{staticClass:"fas fa-folder",staticStyle:{"font-size":"50px"}}),i("div",{staticClass:"title"},[e._v(e._s(e.idMap.get(t).name))])])}),e._l(e.files,function(t){return i("div",{key:t,staticClass:"inode file",class:{"inode-selected":e.selected.includes(t)},attrs:{draggable:"true"},on:{click:function(i){return e.select(i,t)},contextmenu:function(i){return i.preventDefault(),e.$refs.cm.open(i,t)},dragstart:function(i){return e.startDrag(i,t)}}},[i("img",{attrs:{src:"/static/assets/"+e.idMap.get(t).file_hash,width:"50"}}),i("div",{staticClass:"title"},[e._v(e._s(e.idMap.get(t).name))])])})],2)]),e.firstSelectedFile?i("div",{attrs:{id:"asset-details"}},[i("div",{attrs:{id:"asset-detail-title"}},[e._v(e._s(e.firstSelectedFile.name))]),i("img",{attrs:{src:"/static/assets/"+e.firstSelectedFile.file_hash}})]):e._e()]),i("AssetContextMenu",{ref:"cm"}),i("Prompt",{ref:"prompt"}),i("ConfirmDialog",{ref:"confirm"})],1)},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},ca56:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("1c76")),a=i("0bc6"),l=i("af17"),c=i("f10f"),u=i("92b1");let d=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.x=0,this.y=0}get IS_DM(){return c.gameStore.IS_DM}open(e){this.visible=!0,this.x=e.pageX,this.y=e.pageY,this.$nextTick(()=>this.$children[0].$el.focus())}close(){this.visible=!1}bringPlayers(){c.gameStore.IS_DM&&(a.socket.emit("Players.Bring",{x:u.l2gx(this.x),y:u.l2gy(this.y)}),this.close())}createToken(){this.$parent.$parent.$refs.createtokendialog.open(this.x,this.y),this.close()}showInitiative(){l.EventBus.$emit("Initiative.Show"),this.close()}};d=s.__decorate([o.default({components:{ContextMenu:r.default}})],d),t.default=d},cad7:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("cc67");r.default.registerHooks(["beforeRouteEnter"]);let l=class extends o.default{beforeRouteEnter(e,t,i){n.default.post("/api/logout").then(()=>{a.coreStore.setAuthenticated(!1),a.coreStore.setUsername(""),i({path:"/auth/login"})})}};l=s.__decorate([r.default({})],l),t.default=l},cc67:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=i("6fc5"),o=i("3a0b");let r=class extends n.VuexModule{constructor(){super(...arguments),this.authenticated=!1,this.initialized=!1,this.username=""}setAuthenticated(e){this.authenticated=e}setInitialized(e){this.initialized=e}setUsername(e){this.username=e}};s.__decorate([n.Mutation],r.prototype,"setAuthenticated",null),s.__decorate([n.Mutation],r.prototype,"setInitialized",null),s.__decorate([n.Mutation],r.prototype,"setUsername",null),r=s.__decorate([n.Module({dynamic:!0,store:o.rootStore,name:"core"})],r),t.coreStore=n.getModule(r)},cd49:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("3dfd")),r=i("5f86"),a=i("3a0b");n.default.config.productionTip=!1,n.default.config.devtools=!0,n.default.config.performance=!0,t.app=new n.default({router:r.router,store:a.rootStore,render:e=>e(o.default)}).$mount("#app"),window.app=t.app},cd76:function(e,t,i){},cde6:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9"));let r=class extends n.default{};r=s.__decorate([o.default({props:["visible","left","top"]})],r),t.default=r},ce4c:function(e,t,i){},ce87:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9"));let a=class extends o.default{beforeRouteEnter(e,t,i){n.default.post("/api/invite",{code:e.params.code}).then(e=>{i({path:e.data.sessionUrl})}).catch(e=>{console.error("Invitation code could not be redeemed"),i({path:"/dashboard"})})}};a=s.__decorate([r.default({template:""})],a),t.default=a},cec2:function(e,t,i){"use strict";i.r(t);var s=i("eb57"),n=i("255e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("0584");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"0602c2e6",null);t["default"]=a.exports},cee3:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("f10f"),n=i("1216"),o=i("d6be"),r=i("98ef"),a=i("4aee");function l(e,t,i){void 0===i&&(i=s.gameStore.drawTEContour);const r=[e.x,e.y],a=[],l=o.PA_CDT[t].locate(r,null).loc;return null===l?(console.error("Triangle not found"),[]):(a.push(l.vertices[1].point),l.isConstrained(0)||c(r,l.vertices[2].point,l.vertices[1].point,l,0,a),a.push(l.vertices[2].point),l.isConstrained(1)||c(r,l.vertices[0].point,l.vertices[2].point,l,1,a),a.push(l.vertices[0].point),l.isConstrained(2)||c(r,l.vertices[1].point,l.vertices[0].point,l,2,a),i&&n.drawPolygon(a,"red"),a)}function c(e,t,i,s,n,o){const l=s.neighbours[n],d=l.indexT(s),h=a.ccw(d),f=a.cw(d),p=l.vertices[d],g=l.vertices[f],v=l.vertices[h],m=[l,h],y=[l,f],b=a.orientation(e,i,p.point),_=a.orientation(e,t,p.point);if(b===r.Sign.COUNTERCLOCKWISE)if(m[0].isConstrained(m[1]))i!==g.point&&o.push(u(e,i,p.point,g.point)),_===r.Sign.COUNTERCLOCKWISE&&o.push(u(e,t,p.point,g.point));else{if(_===r.Sign.COUNTERCLOCKWISE)return c(e,t,i,l,h,o);c(e,p.point,i,l,h,o)}if(b!==r.Sign.CLOCKWISE&&_!==r.Sign.COUNTERCLOCKWISE&&o.push(p.point),_===r.Sign.CLOCKWISE)return y[0].isConstrained(y[1])?(b===r.Sign.CLOCKWISE&&o.push(u(e,i,p.point,v.point)),void(t!==v.point&&o.push(u(e,t,p.point,v.point)))):b===r.Sign.CLOCKWISE?c(e,t,i,l,f,o):c(e,t,p.point,l,f,o)}function u(e,t,i,s){const n=(s[1]-i[1])*(t[0]-e[0])-(s[0]-i[0])*(t[1]-e[1]),o=((s[0]-i[0])*(e[1]-i[1])-(s[1]-i[1])*(e[0]-i[0]))/n,r=e[0]+o*(t[0]-e[0]),a=e[1]+o*(t[1]-e[1]);return[r,a]}t.computeVisibility=l},cf8f:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",[e._v("#X")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.xCount,expression:"xCount"}],attrs:{type:"text"},domProps:{value:e.xCount},on:{input:function(t){t.target.composing||(e.xCount=t.target.value)}}}),i("div",[e._v("#Y")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.yCount,expression:"yCount"}],attrs:{type:"text"},domProps:{value:e.yCount},on:{input:function(t){t.target.composing||(e.yCount=t.target.value)}}})]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d065:function(e,t,i){"use strict";i.r(t);var s=i("45fb"),n=i("f8b3");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("514b");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"23de098e",null);t["default"]=a.exports},d19a:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"modal"}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"mask",class:{"modal-mask":e.mask,"dialog-mask":!e.mask},on:{click:e.close,dragover:function(t){return t.preventDefault(),e.dragOver(t)}}},[i("div",{ref:"container",staticClass:"modal-container",style:{"background-color":e.colour},on:{click:function(e){e.stopPropagation()}}},[e._t("header",null,{dragStart:e.dragStart,dragEnd:e.dragEnd}),e._t("default")],2)])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d1ec:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});class s{}s.angleSteps=4,s.drawAngleLines=!1,s.drawFirstLightHit=!1,s.skipPlayerFOW=!1,s.skipLightFOW=!1,s.tempFill="fog",t.Settings=s},d30b:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("bc3a")),o=s.__importDefault(i("a026")),r=s.__importDefault(i("65d9")),a=i("cc67");let l=class extends o.default{constructor(){super(...arguments),this.username="",this.password="",this.error=""}login(){n.default.post("/api/login",{username:this.username,password:this.password}).then(e=>{a.coreStore.setUsername(this.username),a.coreStore.setAuthenticated(!0),this.$router.push(this.$route.query.redirect||"/")}).catch(e=>{e.response?this.error=e.response.statusText:this.error="Unknown error occured"})}register(){n.default.post("/api/register",{username:this.username,password:this.password}).then(e=>{a.coreStore.setUsername(this.username),a.coreStore.setAuthenticated(!0),this.$router.push(this.$route.query.redirect||"/")}).catch(e=>{e.response?this.error=e.response.statusText:this.error="Unknown error occured"})}focusin(e){if(e.target&&e.target.nextElementSibling){const t=e.target.nextElementSibling;t.style.opacity="0"}}focusout(e){if(e.target&&e.target.nextElementSibling){const t=e.target.nextElementSibling;t.style.opacity="1"}}};l=s.__decorate([r.default],l),t.default=l},d320:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible},on:{close:function(t){e.visible=!1}},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v("Create basic token")])}}])},[i("div",{staticClass:"modal-body"},[i("label",{attrs:{for:"createtokendialog-text"}},[e._v("Text")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.text,expression:"text"}],attrs:{type:"text",id:"createtokendialog-name"},domProps:{value:e.text},on:{input:function(t){t.target.composing||(e.text=t.target.value)}}}),i("label",[e._v("Colours")]),i("div",{staticClass:"colours"},[i("span",[e._v("Fill:")]),i("color-picker",{attrs:{color:e.fillColour},on:{"update:color":function(t){e.fillColour=t}}}),i("span",[e._v("Border:")]),i("color-picker",{attrs:{color:e.borderColour},on:{"update:color":function(t){e.borderColour=t}}})],1),i("canvas",{ref:"canvas",attrs:{width:"100px",height:"100px"}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.submit}},[e._v("Submit")])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d323:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div")},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},d588:function(e,t,i){"use strict";i.r(t);var s=i("91df"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},d5df:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("65d9")),o=s.__importDefault(i("ea6a")),r=i("0bc6"),a=i("8f0a"),l=i("6f92"),c=i("5e7c"),u=i("0180"),d=i("f10f"),h=i("92b1"),f=i("5a5c");let p=class extends o.default{constructor(){super(...arguments),this.name="Ruler",this.active=!1,this.startPoint=null,this.ruler=null,this.text=null}onMouseDown(e){const t=l.layerManager.getLayer("draw");void 0!==t?(this.active=!0,this.startPoint=h.l2g(f.getMouse(e)),this.ruler=new c.Line(this.startPoint,this.startPoint,3,d.gameStore.rulerColour),this.text=new u.Text(this.startPoint.clone(),"","bold 20px serif"),this.ruler.addOwner(d.gameStore.username),this.text.addOwner(d.gameStore.username),t.addShape(this.ruler,!0,!0),t.addShape(this.text,!0,!0)):console.log("No draw layer!")}onMouseMove(e){if(!this.active||null===this.ruler||null===this.startPoint||null===this.text)return;const t=l.layerManager.getLayer("draw");if(void 0===t)return void console.log("No draw layer!");const i=h.l2g(f.getMouse(e));this.ruler.endPoint=i,r.socket.emit("Shape.Update",{shape:this.ruler.asDict(),redraw:!0,temporary:!0});const s=Math.sign(i.x-this.startPoint.x)*Math.sign(i.y-this.startPoint.y),n=Math.abs(i.x-this.startPoint.x),o=Math.abs(i.y-this.startPoint.y),c=Math.round(Math.sqrt(Math.pow(n,2)+Math.pow(o,2))*d.gameStore.unitSize/d.gameStore.gridSize)+" ft",u=Math.atan2(s*o,n),p=Math.min(this.startPoint.x,i.x)+n/2,g=Math.min(this.startPoint.y,i.y)+o/2;this.text.refPoint=new a.GlobalPoint(p,g),this.text.text=c,this.text.angle=u,r.socket.emit("Shape.Update",{shape:this.text.asDict(),redraw:!0,temporary:!0}),t.invalidate(!0)}onMouseUp(e){if(!this.active||null===this.ruler||null===this.startPoint||null===this.text)return;const t=l.layerManager.getLayer("draw");void 0!==t?(this.active=!1,t.removeShape(this.ruler,!0,!0),t.removeShape(this.text,!0,!0),t.invalidate(!0),this.ruler=this.startPoint=this.text=null):console.log("No active layer!")}};p=s.__decorate([n.default],p),t.RulerTool=p},d65f:function(e,t,i){"use strict";i.r(t);var s=i("d19a"),n=i("7e15");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("9e35");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"c2851f0e",null);t["default"]=a.exports},d677:function(e,t,i){"use strict";i.r(t);var s=i("53ec"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},d6be:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("6f92"),n=i("f10f"),o=i("6e4a");function r(e,i=!1){const r=new o.CDT;let a;a="vision"===e?n.gameStore.visionBlockers:n.gameStore.movementblockers;for(const t of a){const e=s.layerManager.UUIDMap.get(t);if(!i||e.visibleInCanvas(s.layerManager.getLayer().canvas))for(let t=0;t{this.shape=e,this.visible=!0}),d.EventBus.$on("EditDialog.AddLabel",e=>{this.visible&&(this.shape.labels.push(f.gameStore.labels[e]),this.updateShape(!0))})}beforeDestroy(){d.EventBus.$off("EditDialog.Open"),d.EventBus.$off("EditDialog.AddLabel")}updated(){this.addEmpty()}addEmpty(){""!==this.shape.owners[this.shape.owners.length-1]&&this.shape.addOwner(""),this.shape.trackers.length&&""===this.shape.trackers[this.shape.trackers.length-1].name&&0===this.shape.trackers[this.shape.trackers.length-1].value||this.shape.trackers.push({uuid:c.uuidv4(),name:"",value:0,maxvalue:0,visible:!1}),this.shape.auras.length&&""===this.shape.auras[this.shape.auras.length-1].name&&0===this.shape.auras[this.shape.auras.length-1].value||this.shape.auras.push({uuid:c.uuidv4(),name:"",value:0,dim:0,visionSource:!1,colour:"rgba(0,0,0,0)",visible:!1})}updateShape(e,t=!1){this.owned&&(u.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:e,temporary:t}),e&&h.layerManager.invalidate(),this.addEmpty())}setToken(e){this.owned&&(this.shape.setIsToken(e.target.checked),this.updateShape(!0))}setVisionBlocker(e){this.owned&&(this.shape.checkVisionSources(),this.updateShape(!0))}setMovementBlocker(e){this.owned&&(this.shape.setMovementBlock(e.target.checked),this.updateShape(!1))}updateAnnotation(e){if(!this.owned)return;const t=""!==this.shape.annotation;this.shape.annotation=e.target.value,""===this.shape.annotation||t?""===this.shape.annotation&&t&&(f.gameStore.annotations.splice(f.gameStore.annotations.findIndex(e=>e===this.shape.uuid)),h.layerManager.hasLayer("draw")&&h.layerManager.getLayer("draw").invalidate(!0)):(f.gameStore.annotations.push(this.shape.uuid),h.layerManager.hasLayer("draw")&&h.layerManager.getLayer("draw").invalidate(!0)),this.updateShape(!1)}updateOwner(e,t){this.owned&&(this.shape.updateOwner(t,e.target.value),this.updateShape(f.gameStore.fowLOS))}removeOwner(e){this.owned&&(this.shape.removeOwner(e),this.updateShape(f.gameStore.fowLOS))}removeTracker(e){this.owned&&(this.shape.trackers=this.shape.trackers.filter(t=>t.uuid!==e),this.updateShape(!1))}removeAura(e){this.owned&&(this.shape.auras=this.shape.auras.filter(t=>t.uuid!==e),this.shape.checkVisionSources(),this.updateShape(!0))}updateAuraVisionSource(e){if(!this.owned)return;e.visionSource=!e.visionSource;const t=f.gameStore.visionSources.findIndex(t=>t.aura===e.uuid);e.visionSource&&-1===t?f.gameStore.visionSources.push({shape:this.shape.uuid,aura:e.uuid}):!e.visionSource&&t>=0&&f.gameStore.visionSources.splice(t,1),this.updateShape(!0)}updateAuraColour(e,t){if(!this.owned)return;const i=h.layerManager.getLayer(this.shape.layer);void 0!==i&&i.invalidate(!e.visionSource)}openLabelManager(){d.EventBus.$emit("LabelManager.Open")}removeLabel(e){this.owned&&(this.shape.labels=this.shape.labels.filter(t=>t.uuid!==e),this.updateShape(!0))}};s.__decorate([r.Prop()],p.prototype,"shape",void 0),p=s.__decorate([o.default({components:{Modal:l.default,"color-picker":a.default}})],p),t.default=p},da7f:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return void 0!==e.getActiveLayer()?i("ContextMenu",{attrs:{visible:e.visible,left:e.x+"px",top:e.y+"px"},on:{close:e.close}},[e.getLayers().length>1?i("li",[e._v("Layer\n "),i("ul",e._l(e.getLayers(),function(t){return i("li",{key:t.name,style:[e.getActiveLayer().name===t.name?{"background-color":"#82c8a0"}:{}],on:{click:function(i){return e.setLayer(t.name)}}},[e._v(e._s(t.name))])}),0)]):e._e(),i("li",{on:{click:e.moveToBack}},[e._v("Move to back")]),i("li",{on:{click:e.moveToFront}},[e._v("Move to front")]),i("li",{on:{click:e.addInitiative}},[e._v(e._s(e.getInitiativeWord())+" initiative")]),i("li",{on:{click:e.openEditDialog}},[e._v("Show properties")])]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},dc37:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f"));let a=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.yes="Yes",this.no="No",this.title="",this.resolve=e=>{},this.reject=()=>{}}confirm(){this.resolve(!0),this.close()}deny(){this.resolve(!1),this.close()}close(){this.reject(),this.visible=!1,this.title=""}open(e,t="yes",i="no"){return this.yes=t,this.no=i,this.title=e,this.visible=!0,this.$nextTick(()=>{this.$refs.confirm.focus()}),new Promise((e,t)=>{this.resolve=e,this.reject=t})}};a=s.__decorate([o.default({components:{Modal:r.default}})],a),t.default=a},dcb4:function(e,t,i){"use strict";var s=i("ce4c"),n=i.n(s);n.a},de21:function(e,t,i){},dec1:function(e,t,i){"use strict";i.r(t);var s=i("cf8f"),n=i("3481");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},df64:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"accordion"},[i("div",{attrs:{id:"header"},on:{click:function(t){return t.preventDefault(),e.toggleDisplay(t)}}},[i("input",{ref:"overall",attrs:{type:"checkbox"},on:{click:function(t){return t.stopPropagation(),e.toggleCategory(t)}}}),i("strong",[e._v(e._s(e.title))]),e.showArrow?[i("span",{directives:[{name:"show",rawName:"v-show",value:e.showArrow&&!e.active,expression:"showArrow && !active"}],staticClass:"down-Arrow"},[e._v("▼")]),i("span",{directives:[{name:"show",rawName:"v-show",value:e.showArrow&&e.active,expression:"showArrow && active"}],staticClass:"up-Arrow"},[e._v("▲")])]:e._e()],2),i("div",{directives:[{name:"show",rawName:"v-show",value:e.active,expression:"active"}],attrs:{id:"body"}},e._l(e.items,function(t){return i("div",{key:t[0],staticClass:"item",on:{click:function(i){return e.toggleSelection(t[0])}}},[i("input",{attrs:{type:"checkbox"},domProps:{checked:e.selected.includes(t[0])},on:{click:function(e){e.preventDefault()}}}),e._v(" "+e._s(t[1])+"\n ")])}),0)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e06e:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("modal",{attrs:{visible:e.visible},on:{close:e.close},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v(e._s(e.title))])}}])},[i("div",{staticClass:"modal-body"},[i("button",{ref:"confirm",on:{click:e.confirm}},[e._v(e._s(e.yes))]),e.no?i("button",{on:{click:e.deny}},[e._v(e._s(e.no))]):e._e()])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e0e8:function(e,t,i){"use strict";i.r(t);var s=i("2380"),n=i("208e");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("dcb4");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"b908e87c",null);t["default"]=a.exports},e0e9:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("1c76")),a=i("5338"),l=i("2d5b"),c=i("4a5b");let u=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.left=0,this.top=0}open(e,t){l.assetStore.selected.includes(t)||c.getComponent().select(e,t),this.visible=!0,this.left=e.pageX,this.top=e.pageY,this.$nextTick(()=>{this.$children[0].$el.focus()})}close(){this.visible=!1}rename(){if(1!==l.assetStore.selected.length)return;const e=l.assetStore.idMap.get(l.assetStore.selected[0]);c.getRef("prompt").prompt("New name:",`Renaming ${e.name}`).then(t=>{a.socket.emit("Asset.Rename",{asset:e.id,name:t}),e.name=t,c.getComponent().$forceUpdate()},()=>{}),this.close()}remove(){0!==l.assetStore.selected.length&&(c.getRef("confirm").open("Are you sure you wish to remove this?").then(e=>{if(e){for(const e of l.assetStore.selected)a.socket.emit("Asset.Remove",e),l.assetStore.files.includes(e)?l.assetStore.files.splice(l.assetStore.files.indexOf(e),1):l.assetStore.folders.splice(l.assetStore.folders.indexOf(e),1);l.assetStore.clearSelected()}},()=>{}),this.close())}};u=s.__decorate([o.default({components:{ContextMenu:r.default}})],u),t.default=u},e27a:function(e,t,i){"use strict";i.r(t);var s=i("2756"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},e3f5:function(e,t,i){"use strict";var s=i("a126"),n=i.n(s);n.a},e4b0:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d65f")),a=i("4a5b"),l=i("0bc6"),c=i("af17"),u=i("f10f");let d=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.newCategory="",this.newName="",this.search=""}mounted(){c.EventBus.$on("LabelManager.Open",()=>{this.visible=!0,this.newCategory="",this.newName="",this.$nextTick(()=>this.$refs.search.focus())})}beforeDestroy(){c.EventBus.$off("LabelManager.Open")}get labels(){const e={"":[]};for(const t of Object.keys(u.gameStore.labels)){const i=u.gameStore.labels[t];this.search.length&&`${i.category.toLowerCase()}${i.name.toLowerCase()}`.search(this.search.toLowerCase())<0||i.user===u.gameStore.username&&(i.category?(i.category in e||(e[i.category]=[]),e[i.category].push(i),e[i.category].sort((e,t)=>e.name.localeCompare(t.name))):e[""].push(i))}return e}get categories(){return Object.keys(this.labels).sort()}selectLabel(e){c.EventBus.$emit("EditDialog.AddLabel",e),this.visible=!1}toggleVisibility(e){e.visible=!e.visible,l.socket.emit("Label.Visibility.Set",{uuid:e.uuid,visible:e.visible})}addLabel(){if(""===this.newName)return;const e={uuid:a.uuidv4(),category:this.newCategory,name:this.newName,visible:!1,user:u.gameStore.username};u.gameStore.addLabel(e),l.socket.emit("Label.Add",e),this.newCategory="",this.newName=""}deleteLabel(e){u.gameStore.deleteLabel({uuid:e,user:u.gameStore.username}),l.socket.emit("Label.Delete",e)}};d=s.__decorate([o.default({components:{Modal:r.default}})],d),t.default=d},e4ea:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("8f0a"),n=i("92b1"),o=i("5a5c"),r=i("8db6"),a=i("2469");class l extends a.Shape{constructor(e,t=[],i,s,n){super(e,i,s,n),this.type="polygon",this._vertices=[],this._vertices=t}get refPoint(){return this._refPoint}set refPoint(e){const t=e.subtract(this._refPoint);this._refPoint=e;for(let i=0;i({x:e.x,y:e.y}))})}fromDict(e){super.fromDict(e),this._vertices=e.vertices.map(e=>new s.GlobalPoint(e.x,e.y))}get points(){return this.vertices.map(e=>[e.x,e.y])}draw(e){super.draw(e),e.lineCap="round",e.lineJoin="round","fog"===this.strokeColour?e.strokeStyle=o.getFogColour():2===this.vertices.length?e.strokeStyle=this.fillColour:e.strokeStyle=this.strokeColour,"fog"===this.fillColour?e.fillStyle=o.getFogColour():e.fillStyle=this.fillColour,e.lineWidth=n.g2lz(2),e.beginPath(),e.moveTo(n.g2lx(this.vertices[0].x),n.g2ly(this.vertices[0].y));for(let t=1;t<=this.vertices.length;t++){const i=this.vertices[t%this.vertices.length];e.lineTo(n.g2lx(i.x),n.g2ly(i.y))}e.fill(),e.stroke()}contains(e){return this.getBoundingBox().contains(e)}center(e){return this.getBoundingBox().center()}visibleInCanvas(e){return this.getBoundingBox().visibleInCanvas(e)}snapToGrid(){}resizeToGrid(){}resize(e,t){0===e?this._refPoint=n.l2g(t):this._vertices[e-1]=n.l2g(t)}getBoundingBox(){let e=this.refPoint.x,t=this.refPoint.x,i=this.refPoint.y,n=this.refPoint.y;for(const s of this._vertices)s.xt&&(t=s.x),s.yn&&(n=s.y);return new r.BoundingRect(new s.GlobalPoint(e,i),t-e,n-i)}}t.Polygon=l},e5ca:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",{directives:[{name:"show",rawName:"v-show",value:e.IS_DM,expression:"IS_DM"}]},[e._v("Mode")]),i("div",{directives:[{name:"show",rawName:"v-show",value:e.IS_DM,expression:"IS_DM"}],staticClass:"selectgroup"},e._l(e.modes,function(t){return i("div",{key:t,staticClass:"option",class:{"option-selected":e.modeSelect===t},on:{click:function(i){e.modeSelect=t}}},[e._v(e._s(t))])}),0),i("div",[e._v("Shape")]),i("div",{staticClass:"selectgroup"},e._l(e.shapes,function(t){return i("div",{key:t,staticClass:"option",class:{"option-selected":e.shapeSelect===t},on:{click:function(i){e.shapeSelect=t}}},[i("i",{staticClass:"fas",class:"fa-"+t})])}),0),i("div",[e._v("Colours")]),i("div",{staticClass:"selectgroup"},[i("color-picker",{staticClass:"option",attrs:{color:e.fillColour},on:{"update:color":function(t){e.fillColour=t}}}),i("color-picker",{staticClass:"option",attrs:{color:e.borderColour},on:{"update:color":function(t){e.borderColour=t}}})],1),i("div",{directives:[{name:"show",rawName:"v-show",value:"paint-brush"===e.shapeSelect,expression:"shapeSelect === 'paint-brush'"}]},[e._v("Brush size")]),i("input",{directives:[{name:"model",rawName:"v-model",value:e.brushSize,expression:"brushSize"},{name:"show",rawName:"v-show",value:"paint-brush"===e.shapeSelect,expression:"shapeSelect === 'paint-brush'"}],staticStyle:{"max-width":"100px"},attrs:{type:"text"},domProps:{value:e.brushSize},on:{input:function(t){t.target.composing||(e.brushSize=t.target.value)}}})]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e6c4:function(e,t,i){"use strict";var s=i("839d"),n=i.n(s);n.a},e756:function(e,t,i){},e8bb:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.selected?i("div",{staticClass:"tool-detail",style:{"--detailRight":e.detailRight,"--detailArrow":e.detailArrow}},[i("div",{attrs:{id:"accordion-container"}},e._l(e.categories,function(t){return i("accordion",{key:t,attrs:{title:""===t?"no category":t,showArrow:!1,items:e.labels[t],initialValues:e.initalValues[t]},on:{selectionupdate:e.updateSelection}})}),1)]):e._e()},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},e914:function(e,t,i){"use strict";i.r(t);var s=i("c9a2"),n=i("aa69");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("78c7");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},e94f:function(e,t,i){"use strict";i.r(t);var s=i("7aaa"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},ea6a:function(e,t,i){"use strict";i.r(t);var s=i("d323"),n=i("6465");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("12d3");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,null,null);t["default"]=a.exports},ea7c:function(e,t,i){"use strict";var s=i("2dad"),n=i.n(s);n.a},eb57:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("Modal",{attrs:{visible:e.visible},on:{close:e.close},scopedSlots:e._u([{key:"header",fn:function(t){return i("div",{staticClass:"modal-header",attrs:{draggable:"true"},on:{dragstart:t.dragStart,dragend:t.dragEnd}},[e._v(e._s(e.title))])}}])},[i("div",{staticClass:"modal-body"},[e._v("\n "+e._s(e.question)+"\n "),i("input",{directives:[{name:"model",rawName:"v-model",value:e.answer,expression:"answer"}],ref:"answer",attrs:{type:"text"},domProps:{value:e.answer},on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.submit(t)},input:function(t){t.target.composing||(e.answer=t.target.value)}}})]),i("div",{staticClass:"modal-footer"},[i("button",{on:{click:e.submit}},[e._v("Submit")])])])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},ebb9:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("310e"));n.default.component("draggable",r.default);const a=s.__importDefault(i("d65f")),l=i("4a5b"),c=i("0bc6"),u=i("af17"),d=i("6f92"),h=i("f10f"),f=i("9cb7");let p=class extends n.default{constructor(){super(...arguments),this.visible=!1,this.data=[],this.currentActor=null,this.roundCounter=0,this.visionLock=!1,this.cameraLock=!1,this._activeTokens=[]}mounted(){u.EventBus.$on("Initiative.Clear",this.clear),u.EventBus.$on("Initiative.Remove",e=>this.removeInitiative(e)),u.EventBus.$on("Initiative.Show",()=>this.visible=!0),c.socket.on("Initiative.Set",e=>{this.data=e}),c.socket.on("Initiative.Turn.Set",e=>this.setTurn(e)),c.socket.on("Initiative.Turn.Update",e=>this.updateTurn(e,!1)),c.socket.on("Initiative.Round.Update",e=>this.setRound(e,!1)),c.socket.on("Initiative.Effect.New",e=>{const t=this.getActor(e.actor);void 0!==t&&this.createEffect(t,e.effect,!1)}),c.socket.on("Initiative.Effect.Update",e=>this.updateEffect(e.actor,e.effect,!1))}beforeDestroy(){u.EventBus.$off("Initiative.Clear"),u.EventBus.$off("Initiative.Remove"),u.EventBus.$off("Initiative.Show")}clear(){this.data=[],this.currentActor=null}getActor(e){return this.data.find(t=>t.uuid===e)}contains(e){return this.data.some(t=>t.uuid===e)}owns(e){if(h.gameStore.IS_DM)return!0;const t=d.layerManager.UUIDMap.get(e.uuid);return void 0!==t&&t.owners.includes(h.gameStore.username)}getDefaultEffect(){return{uuid:l.uuidv4(),name:"New Effect",turns:10}}fakeSetData(e){e.setData("Hack","")}syncInitiative(e){c.socket.emit("Initiative.Update",e)}addInitiative(e){const t=this.data.findIndex(t=>t.uuid===e.uuid);t>=0||(void 0===e.initiative&&(e.initiative=0),this.syncInitiative(e))}removeInitiative(e){const t=this.data.findIndex(t=>t.uuid===e);if(t<0||this.data[t].group)return;this.syncInitiative({uuid:e});const i=d.layerManager.UUIDMap.get(e);void 0!==i&&i.showHighlight&&(i.showHighlight=!1,d.layerManager.getLayer(i.layer).invalidate(!0))}updateOrder(){h.gameStore.IS_DM&&c.socket.emit("Initiative.Set",this.data.map(e=>e.uuid))}updateTurn(e,t){if(!h.gameStore.IS_DM&&t)return;this.currentActor=e;const i=this.data.find(t=>t.uuid===e);if(void 0!==i){if(i.effects)for(let e=i.effects.length-1;e>=0;e--)i.effects[e].turns<=0?i.effects.splice(e,1):i.effects[e].turns--;if(this.visionLock&&(null!==e&&h.gameStore.ownedtokens.includes(e)?h.gameStore.setActiveTokens([e]):h.gameStore.setActiveTokens([])),this.cameraLock&&null!==e){const t=d.layerManager.UUIDMap.get(e);void 0!==t&&t.ownedBy()&&f.gameManager.setCenterPosition(t.center())}t&&c.socket.emit("Initiative.Turn.Update",e)}}setRound(e,t){!h.gameStore.IS_DM&&t||(this.roundCounter=e,t&&c.socket.emit("Initiative.Round.Update",e))}setTurn(e){this.currentActor=e}nextTurn(){if(!h.gameStore.IS_DM)return;const e=this.data,t=e[(e.findIndex(e=>e.uuid===this.currentActor)+1)%e.length];this.data[0].uuid===t.uuid&&this.setRound(this.roundCounter+1,!0),this.updateTurn(t.uuid,!0)}toggleHighlight(e,t){const i=d.layerManager.UUIDMap.get(e.uuid);void 0!==i&&(i.showHighlight=t,d.layerManager.getLayer(i.layer).invalidate(!0))}toggleOption(e,t){this.owns(e)&&(e[t]=!e[t],this.syncInitiative(e))}createEffect(e,t,i){this.owns(e)&&(e.effects.push(t),i&&c.socket.emit("Initiative.Effect.New",{actor:e.uuid,effect:t}))}syncEffect(e,t){this.owns(e)&&c.socket.emit("Initiative.Effect.Update",{actor:e.uuid,effect:t})}updateEffect(e,t,i){const s=this.data.find(t=>t.uuid===e);if(void 0===s)return;const n=s.effects.findIndex(e=>e.uuid===t.uuid);void 0!==n&&(s.effects[n]=t,i?this.syncEffect(s,t):this.$forceUpdate())}toggleVisionLock(){this.visionLock=!this.visionLock,this.visionLock?(this._activeTokens=[...h.gameStore._activeTokens],null!==this.currentActor&&h.gameStore.ownedtokens.includes(this.currentActor)&&h.gameStore.setActiveTokens([this.currentActor])):h.gameStore.setActiveTokens(this._activeTokens)}};p=s.__decorate([o.default({components:{Modal:a.default,draggable:r.default}})],p),t.default=p},ee96:function(e,t,i){},f086:function(e,t,i){"use strict";i.r(t);var s=i("a112"),n=i("7ba5");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("01be");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"674cf937",null);t["default"]=a.exports},f10f:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=i("6fc5"),r=i("0bc6"),a=i("2b48"),l=i("6f92"),c=i("92b1"),u=i("5a5c"),d=i("99e3"),h=i("d6be"),f=i("3a0b");let p=class extends o.VuexModule{constructor(){super(...arguments),this.layers=[],this.selectedLayerIndex=-1,this.boardInitialized=!1,this.locations=[],this.assets={},this.notes=[],this.IS_DM=!1,this.FAKE_PLAYER=!1,this.isLocked=!1,this.gridSize=50,this.username="",this.roomName="",this.roomCreator="",this.invitationCode="",this.players=[],this.gridColour="rgba(0, 0, 0, 1)",this.fowColour="rgba(0, 0, 0, 1)",this.rulerColour="rgba(255, 0, 0, 1)",this.panX=0,this.panY=0,this.zoomDisplay=.5,this.unitSize=5,this.useGrid=!0,this.fullFOW=!1,this.fowOpacity=.3,this.fowLOS=!1,this.locationName="",this.visionSources=[],this.visionBlockers=[],this.annotations=[],this.movementblockers=[],this.ownedtokens=[],this._activeTokens=[],this.BV=Object.freeze(new d.BoundingVolume([])),this.visionMode="bvh",this.drawTEContour=!1,this.visionRangeMin=1640,this.visionRangeMax=3281,this.clipboard=[],this.labels={},this.filterNoLabel=!1,this.labelFilters=[],this.showUI=!0}get selectedLayer(){return this.layers[this.selectedLayerIndex]}get zoomFactor(){return u.zoomValue(this.zoomDisplay)}get activeTokens(){return 0===this._activeTokens.length?this.ownedtokens:this._activeTokens}setFakePlayer(e){this.FAKE_PLAYER=e,this.IS_DM=!e,l.layerManager.invalidate()}setZoomDisplay(e){e!==this.zoomDisplay&&(e<0&&(e=0),e>1&&(e=1),this.zoomDisplay=e,l.layerManager.invalidate())}setVisionMode(e){this.visionMode=e.mode,e.sync&&r.socket.emit("Location.Options.Set",{vision_mode:e.mode})}setBoardInitialized(e){this.boardInitialized=e}toggleUnlabeledFilter(){this.filterNoLabel=!this.filterNoLabel}addLabel(e){n.default.set(this.labels,e.uuid,e)}setLabelFilters(e){this.labelFilters=e}setLabelVisibility(e){e.uuid in this.labels&&(this.labels[e.uuid].visible=e.visible)}deleteLabel(e){if(!(e.uuid in this.labels))return;const t=this.labels[e.uuid],i=new Set;for(const s of l.layerManager.UUIDMap.values()){const e=s.labels.indexOf(t);e>=0&&(s.labels.splice(e,1),i.add(s.layer))}for(const s of i)l.layerManager.getLayer(s).invalidate(!1);n.default.delete(this.labels,e.uuid)}setDM(e){this.IS_DM=e}setUsername(e){this.username=e}setRoomName(e){this.roomName=e}setRoomCreator(e){this.roomCreator=e}setInvitationCode(e){this.invitationCode=e}addLayer(e){this.layers.push(e),-1===this.selectedLayerIndex&&(this.selectedLayerIndex=this.layers.indexOf(e))}selectLayer(e){const t=this.layers.indexOf(e.name);t>=0&&(this.selectedLayerIndex=t),e.sync&&r.socket.emit("Client.ActiveLayer.Set",e.name)}newNote(e){this.notes.push(e.note),e.sync&&r.socket.emit("Note.New",e.note)}setAssets(e){this.assets=e}setLocations(e){this.locations=e}resetLayerInfo(){this.layers=[],this.selectedLayerIndex=-1}recalculateVision(e=!1){this.boardInitialized&&("triangle"===this.visionMode?h.triangulate("vision",e):this.BV=Object.freeze(new d.BoundingVolume(this.visionBlockers)))}recalculateMovement(e=!1){this.boardInitialized&&"triangle"===this.visionMode&&h.triangulate("movement",e)}updateZoom(e){if(e.newZoomDisplay===this.zoomDisplay)return;e.newZoomDisplay<0&&(e.newZoomDisplay=0),e.newZoomDisplay>1&&(e.newZoomDisplay=1);const t=c.g2l(e.zoomLocation);this.zoomDisplay=e.newZoomDisplay;const i=c.l2g(t),s=i.subtract(e.zoomLocation);this.panX+=s.x,this.panY+=s.y,l.layerManager.invalidate(),a.sendClientOptions()}setGridColour(e){this.gridColour=e.colour,l.layerManager.getGridLayer().drawGrid(),e.sync&&r.socket.emit("Client.Options.Set",{gridColour:e.colour})}setFOWColour(e){this.fowColour=e.colour,l.layerManager.invalidate(),e.sync&&r.socket.emit("Client.Options.Set",{fowColour:e.colour})}setRulerColour(e){this.rulerColour=e.colour,e.sync&&r.socket.emit("Client.Options.Set",{rulerColour:e.colour})}setPanX(e){this.panX=e}setPanY(e){this.panY=e}increasePanX(e){this.panX+=e}increasePanY(e){this.panY+=e}setUnitSize(e){this.unitSize!==e.unitSize&&e.unitSize>0&&e.unitSize<1/0&&(this.unitSize=e.unitSize,l.layerManager.invalidate(),e.sync&&r.socket.emit("Location.Options.Set",{unit_size:e.unitSize}))}setUseGrid(e){if(this.useGrid!==e.useGrid){this.useGrid=e.useGrid;const t=l.layerManager.getGridLayer();e.useGrid?t.canvas.style.display="block":t.canvas.style.display="none",e.sync&&r.socket.emit("Location.Options.Set",{use_grid:e.useGrid})}}setGridSize(e){if(this.gridSize!==e.gridSize&&e.gridSize>0){this.gridSize=e.gridSize;const t=l.layerManager.getGridLayer();void 0!==t&&t.drawGrid(),e.sync&&r.socket.emit("Gridsize.Set",e.gridSize)}}setVisionRangeMin(e){this.visionRangeMin=e.value,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{vision_min_range:e.value})}setVisionRangeMax(e){this.visionRangeMax=Math.max(e.value,this.visionRangeMin),l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{vision_max_range:this.visionRangeMax})}setFullFOW(e){this.fullFOW!==e.fullFOW&&(this.fullFOW=e.fullFOW,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{full_fow:e.fullFOW}))}setFOWOpacity(e){this.fowOpacity=e.fowOpacity,l.layerManager.invalidateLight(),e.sync&&r.socket.emit("Location.Options.Set",{fow_opacity:e.fowOpacity})}setLineOfSight(e){this.fowLOS!==e.fowLOS&&(this.fowLOS=e.fowLOS,l.layerManager.invalidate(),e.sync&&r.socket.emit("Location.Options.Set",{fow_los:e.fowLOS}))}setLocationName(e){this.locationName=e}updateNote(e){const t=this.notes.find(t=>t.uuid===e.note.uuid);void 0!==t&&(t.title=e.note.title,t.text=e.note.text,e.sync&&r.socket.emit("Note.Update",t))}removeNote(e){this.notes=this.notes.filter(t=>t.uuid!==e.note.uuid),e.sync&&r.socket.emit("Note.Remove",e.note.uuid)}toggleUI(){this.showUI=!this.showUI}setClipboard(e){this.clipboard=e}setActiveTokens(e){this._activeTokens=e,l.layerManager.invalidateLight()}addActiveToken(e){this._activeTokens.push(e),l.layerManager.invalidateLight()}removeActiveToken(e){0===this._activeTokens.length&&(this._activeTokens=[...this.ownedtokens]),this._activeTokens.splice(this._activeTokens.indexOf(e),1),l.layerManager.invalidateLight()}setPlayers(e){this.players=e}addPlayer(e){this.players.push(e)}kickPlayer(e){this.players=this.players.filter(t=>t.id!==e)}setIsLocked(e){this.isLocked=e.isLocked,e.sync&&r.socket.emit("Room.Info.Set.Locked",this.isLocked)}clear(){this.context.state.visionSources=[],this.context.state.visionBlockers=[],this.context.state.ownedtokens=[],this.context.state.annotations=[],this.context.state.movementblockers=[],this.context.state.notes=[],this.context.commit("recalculateVision"),this.context.commit("recalculateMovement")}};s.__decorate([o.Mutation],p.prototype,"setFakePlayer",null),s.__decorate([o.Mutation],p.prototype,"setZoomDisplay",null),s.__decorate([o.Mutation],p.prototype,"setVisionMode",null),s.__decorate([o.Mutation],p.prototype,"setBoardInitialized",null),s.__decorate([o.Mutation],p.prototype,"toggleUnlabeledFilter",null),s.__decorate([o.Mutation],p.prototype,"addLabel",null),s.__decorate([o.Mutation],p.prototype,"setLabelFilters",null),s.__decorate([o.Mutation],p.prototype,"setLabelVisibility",null),s.__decorate([o.Mutation],p.prototype,"deleteLabel",null),s.__decorate([o.Mutation],p.prototype,"setDM",null),s.__decorate([o.Mutation],p.prototype,"setUsername",null),s.__decorate([o.Mutation],p.prototype,"setRoomName",null),s.__decorate([o.Mutation],p.prototype,"setRoomCreator",null),s.__decorate([o.Mutation],p.prototype,"setInvitationCode",null),s.__decorate([o.Mutation],p.prototype,"addLayer",null),s.__decorate([o.Mutation],p.prototype,"selectLayer",null),s.__decorate([o.Mutation],p.prototype,"newNote",null),s.__decorate([o.Mutation],p.prototype,"setAssets",null),s.__decorate([o.Mutation],p.prototype,"setLocations",null),s.__decorate([o.Mutation],p.prototype,"resetLayerInfo",null),s.__decorate([o.Mutation],p.prototype,"recalculateVision",null),s.__decorate([o.Mutation],p.prototype,"recalculateMovement",null),s.__decorate([o.Mutation],p.prototype,"updateZoom",null),s.__decorate([o.Mutation],p.prototype,"setGridColour",null),s.__decorate([o.Mutation],p.prototype,"setFOWColour",null),s.__decorate([o.Mutation],p.prototype,"setRulerColour",null),s.__decorate([o.Mutation],p.prototype,"setPanX",null),s.__decorate([o.Mutation],p.prototype,"setPanY",null),s.__decorate([o.Mutation],p.prototype,"increasePanX",null),s.__decorate([o.Mutation],p.prototype,"increasePanY",null),s.__decorate([o.Mutation],p.prototype,"setUnitSize",null),s.__decorate([o.Mutation],p.prototype,"setUseGrid",null),s.__decorate([o.Mutation],p.prototype,"setGridSize",null),s.__decorate([o.Mutation],p.prototype,"setVisionRangeMin",null),s.__decorate([o.Mutation],p.prototype,"setVisionRangeMax",null),s.__decorate([o.Mutation],p.prototype,"setFullFOW",null),s.__decorate([o.Mutation],p.prototype,"setFOWOpacity",null),s.__decorate([o.Mutation],p.prototype,"setLineOfSight",null),s.__decorate([o.Mutation],p.prototype,"setLocationName",null),s.__decorate([o.Mutation],p.prototype,"updateNote",null),s.__decorate([o.Mutation],p.prototype,"removeNote",null),s.__decorate([o.Mutation],p.prototype,"toggleUI",null),s.__decorate([o.Mutation],p.prototype,"setClipboard",null),s.__decorate([o.Mutation],p.prototype,"setActiveTokens",null),s.__decorate([o.Mutation],p.prototype,"addActiveToken",null),s.__decorate([o.Mutation],p.prototype,"removeActiveToken",null),s.__decorate([o.Mutation],p.prototype,"setPlayers",null),s.__decorate([o.Mutation],p.prototype,"addPlayer",null),s.__decorate([o.Mutation],p.prototype,"kickPlayer",null),s.__decorate([o.Mutation],p.prototype,"setIsLocked",null),s.__decorate([o.Action],p.prototype,"clear",null),p=s.__decorate([o.Module({dynamic:!0,store:f.rootStore,name:"game",namespaced:!0})],p),t.gameStore=o.getModule(p)},f30c:function(e,t,i){"use strict";i.r(t);var s=i("dc37"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f312:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aurasFromServer=e=>{const t=[];for(const i of e)t.push({uuid:i.uuid,visionSource:i.vision_source,visible:i.visible,name:i.name,value:i.value,dim:i.dim,colour:i.colour});return t},t.aurasToServer=e=>{const t=[];for(const i of e)t.push({uuid:i.uuid,vision_source:i.visionSource,visible:i.visible,name:i.name,value:i.value,dim:i.dim,colour:i.colour});return t}},f51a:function(e,t,i){"use strict";i.r(t);var s=i("e0e9"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f551:function(e,t,i){"use strict";i.r(t);var s=i("2686"),n=i("1dd6");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("28b6");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"7a3669fd",null);t["default"]=a.exports},f5fe:function(e,t,i){"use strict";i.r(t);var s=i("a014"),n=i("7018");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("ea7c");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"07fc8ff2",null);t["default"]=a.exports},f692:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("4185"),n=i("b906"),o=i("38c9"),r=i("bab4"),a=i("6f92"),l=i("f10f");function c(e){const t=document.createElement("canvas");let i;t.style.zIndex=a.layerManager.layers.length.toString(),t.width=window.innerWidth,t.height=window.innerHeight,i="grid"===e.type_?new o.GridLayer(t,e.name):"fow"===e.type_?new s.FOWLayer(t,e.name):"fow-players"===e.type_?new n.FOWPlayersLayer(t,e.name):new r.Layer(t,e.name),i.selectable=e.selectable,i.playerEditable=e.player_editable,a.layerManager.addLayer(i);const c=document.getElementById("layers");null!==c?("fow-players"!==e.name&&c.appendChild(t),"grid"===e.type_&&e.size&&l.gameStore.setGridSize({gridSize:e.size,sync:!1}),i.setShapes(e.shapes)):console.warn("Layers div is missing, this will prevent the main game board from loading!")}t.createLayer=c},f74c:function(e,t,i){"use strict";i.r(t);var s=i("1fd5"),n=i("29a2");for(var o in n)"default"!==o&&function(e){i.d(t,e,function(){return n[e]})}(o);i("7eb7");var r=i("2877"),a=Object(r["a"])(n["default"],s["a"],s["b"],!1,null,"e477c214",null);t["default"]=a.exports},f8b3:function(e,t,i){"use strict";i.r(t);var s=i("d8ee"),n=i.n(s);for(var o in s)"default"!==o&&function(e){i.d(t,e,function(){return s[e]})}(o);t["default"]=n.a},f974:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",[i("div",{attrs:{id:"toolselect"}},[i("ul",e._l(e.visibleTools,function(t){return i("li",{directives:[{name:"show",rawName:"v-show",value:e.toolVisible(t),expression:"toolVisible(tool)"}],key:t,ref:t+"-selector",refInFor:!0,class:{"tool-selected":e.currentTool===t},on:{mousedown:function(i){e.currentTool=t}}},[i("a",{attrs:{href:"#"}},[e._v(e._s(t))])])}),0)]),i("div",[[i("select-tool",{directives:[{name:"show",rawName:"v-show",value:"Select"===e.currentTool,expression:"currentTool === 'Select'"}],ref:"selectTool"}),i("pan-tool",{directives:[{name:"show",rawName:"v-show",value:"Pan"===e.currentTool,expression:"currentTool === 'Pan'"}]}),i("keep-alive",[i("draw-tool",{directives:[{name:"show",rawName:"v-show",value:"Draw"===e.currentTool,expression:"currentTool === 'Draw'"}]})],1),i("ruler-tool",{directives:[{name:"show",rawName:"v-show",value:"Ruler"===e.currentTool,expression:"currentTool === 'Ruler'"}]}),i("map-tool",{directives:[{name:"show",rawName:"v-show",value:"Map"===e.currentTool,expression:"currentTool === 'Map'"}]}),i("filter-tool",{directives:[{name:"show",rawName:"v-show",value:"Filter"===e.currentTool,expression:"currentTool === 'Filter'"}]}),i("vision-tool",{directives:[{name:"show",rawName:"v-show",value:"Vision"===e.currentTool,expression:"currentTool === 'Vision'"}]}),i("shape-menu",{ref:"shapecontext"}),i("createtoken-dialog",{ref:"createtokendialog"})]],2)])},n=[];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},f994:function(e,t,i){"use strict";var s=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("form",{on:{focusin:e.focusin,focusout:e.focusout,submit:function(t){return t.preventDefault(),e.login(t)}}},[i("fieldset",[i("legend",{staticClass:"legend"},[e._v("PlanarAlly")]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],attrs:{type:"text",name:"username",placeholder:"Username",autocomplete:"username",required:""},domProps:{value:e.username},on:{input:function(t){t.target.composing||(e.username=t.target.value)}}}),e._m(0)]),i("div",{staticClass:"input"},[i("input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],attrs:{type:"password",name:"password",placeholder:"Password",autocomplete:"current-password",required:""},domProps:{value:e.password},on:{input:function(t){t.target.composing||(e.password=t.target.value)}}}),e._m(1)]),i("div",{staticStyle:{display:"flex"}},[i("button",{staticStyle:{visibility:"hidden",display:"none"},attrs:{type:"submit",name:"login"}}),i("button",{staticClass:"submit",attrs:{type:"button",name:"register",title:"Register"},on:{click:e.register}},[i("i",{staticClass:"fas fa-plus"})]),e._m(2)])]),e.error?i("div",{staticClass:"feedback"},[i("p",{staticClass:"error"},[i("strong",[e._v("Error:")]),e._v("\n "+e._s(e.error)+"\n ")])]):e._e()])},n=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fas fa-user-circle"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("span",[i("i",{staticClass:"fas fa-lock"})])},function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("button",{staticClass:"submit",attrs:{type:"submit",name:"login",title:"Login"}},[i("i",{staticClass:"fas fa-arrow-right"})])}];i.d(t,"a",function(){return s}),i.d(t,"b",function(){return n})},fbdd:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("9ab4"),n=s.__importDefault(i("a026")),o=s.__importDefault(i("65d9")),r=s.__importDefault(i("d065")),a=i("4a5b"),l=i("0bc6"),c=i("af17"),u=i("6f92");let d=class extends n.default{constructor(){super(...arguments),this.shape=null}mounted(){c.EventBus.$on("SelectionInfo.Shape.Set",e=>{this.shape=e})}beforeDestroy(){c.EventBus.$off("SelectionInfo.Shape.Set")}openEditDialog(){this.$refs.editDialog.visible=!0}changeValue(e,t){null!==this.shape&&a.getRef("prompt").prompt(`New ${e.name} value:`,`Updating ${e.name}`).then(i=>{if(null===this.shape)return;const s=e.value;"+"===i[0]||"-"===i[0]?e.value+=parseInt(i,10):e.value=parseInt(i,10),isNaN(e.value)&&(e.value=s),l.socket.emit("Shape.Update",{shape:this.shape.asDict(),redraw:t,temporary:!1}),t&&u.layerManager.invalidate()},()=>{})}};d=s.__decorate([o.default({components:{"edit-dialog":r.default}})],d),t.default=d},fcac:function(e,t,i){},fe11:function(e,t,i){},fe80:function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i("0bc6"),n=i("af17"),o=i("8f0a"),r=i("6f92"),a=i("f692"),l=i("9cb7"),c=i("f10f"),u=i("5f86"),d=i("5a5c");s.socket.on("connect",()=>{console.log("Connected")}),s.socket.on("disconnect",()=>{console.log("Disconnected")}),s.socket.on("connect_error",e=>{console.error("Could not connect to game session."),u.router.push("/dashboard")}),s.socket.on("error",e=>{console.error("Game session does not exist."),u.router.push("/dashboard")}),s.socket.on("redirect",e=>{console.log("redirecting"),u.router.push(e)}),s.socket.on("Room.Info.Set",e=>{c.gameStore.setRoomName(e.name),c.gameStore.setRoomCreator(e.creator),c.gameStore.setInvitationCode(e.invitationCode),c.gameStore.setIsLocked({isLocked:e.isLocked,sync:!1}),c.gameStore.setPlayers(e.players)}),s.socket.on("Room.Info.InvitationCode.Set",e=>{c.gameStore.setInvitationCode(e),n.EventBus.$emit("DmSettings.RefreshedInviteCode")}),s.socket.on("Room.Info.Players.Add",e=>{c.gameStore.addPlayer(e)}),s.socket.on("Username.Set",e=>{c.gameStore.setUsername(e),c.gameStore.setDM(e===window.location.pathname.split("/")[2])}),s.socket.on("Client.Options.Set",e=>{c.gameStore.setGridColour({colour:e.grid_colour,sync:!1}),c.gameStore.setFOWColour({colour:e.fow_colour,sync:!1}),c.gameStore.setRulerColour({colour:e.ruler_colour,sync:!1}),c.gameStore.setPanX(e.pan_x),c.gameStore.setPanY(e.pan_y),c.gameStore.setZoomDisplay(d.zoomDisplay(e.zoom_factor)),e.active_layer&&r.layerManager.selectLayer(e.active_layer,!1),void 0!==r.layerManager.getGridLayer()&&r.layerManager.getGridLayer().invalidate()}),s.socket.on("Location.Set",e=>{void 0!==e.name&&c.gameStore.setLocationName(e.name),void 0!==e.unit_size&&c.gameStore.setUnitSize({unitSize:e.unit_size,sync:!1}),void 0!==e.use_grid&&c.gameStore.setUseGrid({useGrid:e.use_grid,sync:!1}),void 0!==e.full_fow&&c.gameStore.setFullFOW({fullFOW:e.full_fow,sync:!1}),void 0!==e.fow_opacity&&c.gameStore.setFOWOpacity({fowOpacity:e.fow_opacity,sync:!1}),void 0!==e.fow_los&&c.gameStore.setLineOfSight({fowLOS:e.fow_los,sync:!1}),void 0!==e.vision_min_range&&c.gameStore.setVisionRangeMin({value:e.vision_min_range,sync:!1}),void 0!==e.vision_max_range&&c.gameStore.setVisionRangeMax({value:e.vision_max_range,sync:!1}),void 0!==e.vision_mode&&(c.gameStore.setVisionMode({mode:e.vision_mode,sync:!1}),c.gameStore.recalculateVision(),c.gameStore.recalculateMovement())}),s.socket.on("Position.Set",e=>{l.gameManager.setCenterPosition(new o.GlobalPoint(e.x,e.y))}),s.socket.on("Notes.Set",e=>{for(const t of e)c.gameStore.newNote({note:t,sync:!1})}),s.socket.on("Asset.List.Set",e=>{c.gameStore.setAssets(e)}),s.socket.on("Board.Set",e=>{c.gameStore.clear(),c.gameStore.setLocations(e.locations),document.getElementById("layers").innerHTML="",c.gameStore.resetLayerInfo(),r.layerManager.reset();for(const t of e.layers)a.createLayer(t);r.layerManager.selectLayer(r.layerManager.getLayer().name,!1),n.EventBus.$emit("Initiative.Clear"),c.gameStore.recalculateVision(),c.gameStore.recalculateMovement(),c.gameStore.setBoardInitialized(!0)}),s.socket.on("Gridsize.Set",e=>{c.gameStore.setGridSize({gridSize:e,sync:!1})}),s.socket.on("Shape.Add",e=>{l.gameManager.addShape(e)}),s.socket.on("Shape.Remove",e=>{if(!r.layerManager.UUIDMap.has(e.uuid))return void console.log("Attempted to remove an unknown shape");if(!r.layerManager.hasLayer(e.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.layer}`);const t=r.layerManager.getLayer(e.layer);t.removeShape(r.layerManager.UUIDMap.get(e.uuid),!1),t.invalidate(!1)}),s.socket.on("Shape.Order.Set",e=>{if(!r.layerManager.UUIDMap.has(e.shape.uuid))return void console.log("Attempted to move the shape order of an unknown shape");if(!r.layerManager.hasLayer(e.shape.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.shape.layer}`);const t=r.layerManager.UUIDMap.get(e.shape.uuid),i=r.layerManager.getLayer(t.layer);i.moveShapeOrder(t,e.index,!1)}),s.socket.on("Shape.Layer.Change",e=>{const t=r.layerManager.UUIDMap.get(e.uuid);void 0!==t&&t.moveLayer(e.layer,!1)}),s.socket.on("Shape.Update",e=>{l.gameManager.updateShape(e)}),s.socket.on("Temp.Clear",e=>{e.forEach(e=>{if(!r.layerManager.UUIDMap.has(e.uuid))return void console.log("Attempted to remove an unknown temporary shape");if(!r.layerManager.hasLayer(e.layer))return void console.log(`Attempted to remove shape from an unknown layer ${e.layer}`);const t=r.layerManager.UUIDMap.get(e.uuid);r.layerManager.getLayer(e.layer).removeShape(t,!1)})}),s.socket.on("Labels.Set",e=>{for(const t of e)c.gameStore.addLabel(t)}),s.socket.on("Label.Visibility.Set",e=>{c.gameStore.setLabelVisibility(e)}),s.socket.on("Label.Add",e=>{c.gameStore.addLabel(e)}),s.socket.on("Label.Delete",e=>{c.gameStore.deleteLabel(e)}),s.socket.on("Labels.Filter.Add",e=>{c.gameStore.labelFilters.push(e),r.layerManager.invalidate()}),s.socket.on("Labels.Filter.Remove",e=>{const t=c.gameStore.labelFilters.indexOf(e);t>=0&&(c.gameStore.labelFilters.splice(t,1),r.layerManager.invalidate())}),s.socket.on("Labels.Filters.Set",e=>{c.gameStore.setLabelFilters(e)})}}); -//# sourceMappingURL=app.3ba691e3.js.map \ No newline at end of file diff --git a/server/static/js/app.3ba691e3.js.map b/server/static/js/app.3ba691e3.js.map deleted file mode 100644 index ecd87e42b..000000000 --- a/server/static/js/app.3ba691e3.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/game/shapes/text.ts","webpack:///./src/game/ui/selection/selection_info.vue?cd1b","webpack:///./src/game/ui/selection/shapecontext.vue","webpack:///./src/App.vue?5b85","webpack:///./src/core/components/modals/prompt.vue?d33d","webpack:///./src/core/components/colorpicker.vue?4d88","webpack:///./src/game/game.vue","webpack:///./src/game/api/socket.ts","webpack:///./src/assetManager/manager.vue?5633","webpack:///./src/game/ui/menu/asset_node.vue","webpack:///./src/auth/login.vue","webpack:///./src/game/visibility/te/draw.ts","webpack:///./src/core/components/accordion.vue","webpack:///./src/game/ui/tools/tool.vue?5b17","webpack:///./src/game/shapes/circulartoken.ts","webpack:///./src/game/ui/annotation.ts","webpack:///./src/game/ui/menu/menu.vue","webpack:///./src/core/components/contextmenu.vue","webpack:///./src/game/ui/note.vue?49b7","webpack:///./src/auth/login.vue?c159","webpack:///./src/game/ui/labels.vue?7431","webpack:///./src/game/ui/labels.vue?1ecb","webpack:///./src/game/shapes/utils.ts","webpack:///./src/game/ui/dmsettings.vue?f205","webpack:///./src/core/components/modals/confirm.vue?e6fb","webpack:///./src/game/ui/tools/select.vue?bf1f","webpack:///./src/game/ui/tools/select.vue?29b9","webpack:///./src/game/ui/dmsettings.vue?6fd0","webpack:///./src/game/ui/dmsettings.vue?814f","webpack:///./src/game/shapes/shape.ts","webpack:///./src/core/components/modals/prompt.vue?d457","webpack:///./src/game/ui/menu/menu.vue?93b3","webpack:///./src/game/ui/menu/menu.vue?44af","webpack:///./src/game/ui/note.vue?07e2","webpack:///./src/game/ui/note.vue?23aa","webpack:///./src/game/ui/tools/select.vue?49f9","webpack:///./src/game/ui/dmsettings.vue?fed3","webpack:///./src/game/ui/tools/utils.ts","webpack:///./src/game/ui/note.vue?a508","webpack:///./src/core/components/inputCopy.vue?4a5e","webpack:///./src/game/ui/labels.vue?15af","webpack:///./src/game/ui/tools/vision.vue?4f0c","webpack:///./src/game/api/utils.ts","webpack:///./src/game/ui/menu/asset_node.vue?f519","webpack:///./src/core/components/colorpicker.vue?893c","webpack:///./src/core/components/contextmenu.vue?98ca","webpack:///./src/core/components/contextmenu.vue?7efa","webpack:///./src/assetManager/store.ts","webpack:///./src/core/components/contextmenu.vue?50e1","webpack:///./src/game/ui/selection/shapecontext.vue?1cf6","webpack:///./src/game/ui/menu/menu.vue?b354","webpack:///./src/core/components/inputCopy.vue?f87b","webpack:///./src/game/ui/tools/map.vue?284a","webpack:///./src/assetManager/contextMenu.vue?7572","webpack:///./src/assetManager/contextMenu.vue?bce4","webpack:///./src/game/layers/grid.ts","webpack:///./src/core/components/colorpicker.vue?ec60","webpack:///./src/core/components/colorpicker.vue?7374","webpack:///./src/store.ts","webpack:///./src/core/components/colorpicker.vue","webpack:///./src/game/ui/tools/vision.vue?48bb","webpack:///./src/auth/login.vue?3521","webpack:///./src/App.vue?fbef","webpack:///./src/App.vue","webpack:///./src/game/layers/fow.ts","webpack:///./src/core/components/load.vue?18c2","webpack:///./src/game/ui/selection/edit_dialog.vue?37d7","webpack:///./src/game/ui/selection/edit_dialog.vue?6334","webpack:///./src/game/shapes/circle.ts","webpack:///./src/game/ui/tools/map.vue?a3ab","webpack:///./src/core/components/load.vue","webpack:///./src/game/ui/tools/pan.ts","webpack:///./src/game/ui/tools/selectcontext.vue","webpack:///./src/core/utils.ts","webpack:///./src/assetManager/contextMenu.vue","webpack:///./src/game/visibility/te/triag.ts","webpack:///./src/game/ui/menu/asset_node.vue?1f27","webpack:///./src/game/ui/tools/selectcontext.vue?ddec","webpack:///./src/game/ui/tools/selectcontext.vue?3109","webpack:///./src/game/ui/tools/vision.vue?d25b","webpack:///./src/game/ui/selection/edit_dialog.vue?1206","webpack:///./src/core/components/modals/modal.vue?44ae","webpack:///./src/assetManager/socket.ts","webpack:///./src/game/ui/tools/filter.vue?ee60","webpack:///./src/core/components/accordion.vue?3e09","webpack:///./src/game/ui/tools/vision.vue?4389","webpack:///./src/game/ui/tools/vision.vue?9b57","webpack:///./src/game/ui/tools/selectcontext.vue?6c84","webpack:///./src/game/game.vue?5550","webpack:///./src/game/shapes/multiline.ts","webpack:///./src/game/ui/tools/draw.vue","webpack:///./src/game/utils.ts","webpack:///./src/game/ui/tools/createtoken_modal.vue?d0df","webpack:///./src/game/ui/note.vue?f9bd","webpack:///./src/game/ui/tools/draw.vue?b96d","webpack:///./src/game/shapes/line.ts","webpack:///./src/router.ts","webpack:///./src/game/ui/tools/tool.vue?d136","webpack:///./src/game/ui/tools/tools.vue","webpack:///./src/game/ui/tools/tool.vue?8ce3","webpack:///./src/game/game.vue?8424","webpack:///./src/game/game.vue?5780","webpack:///./src/core/components/inputCopy.vue?fac9","webpack:///./src/core/components/inputCopy.vue?0a6a","webpack:///./src/game/shapes/asset.ts","webpack:///./src/core/components/inputCopy.vue","webpack:///./src/game/visibility/te/cdt.ts","webpack:///./src/game/ui/tools/draw.vue?1261","webpack:///./src/game/layers/manager.ts","webpack:///./src/game/ui/initiative.vue?c7e1","webpack:///./src/game/ui/tools/createtoken_modal.vue","webpack:///./src/game/visibility/bvh/node.ts","webpack:///./src/game/ui/tools/createtoken_modal.vue?f918","webpack:///./src/game/events/keyboard.ts","webpack:///./src/assetManager/manager.vue?433f","webpack:///./src/game/ui/tools/tools.vue?25b2","webpack:///./src/game/ui/selection/selection_info.vue?2310","webpack:///./src/core/components/modals/modal.vue?09d2","webpack:///./src/game/ui/labels.vue?e465","webpack:///./src/core/components/contextmenu.vue?a0a2","webpack:///./src/core/components/modals/prompt.vue?4e1b","webpack:///./src/core/components/accordion.vue?3d26","webpack:///./src/core/components/load.vue?55c2","webpack:///./src/core/components/load.vue?0f87","webpack:///./src/game/ui/menu/menu.vue?8b23","webpack:///./src/game/shapes/boundingrect.ts","webpack:///./src/dashboard/main.vue?3f3b","webpack:///./src/dashboard/main.vue?94d1","webpack:///./src/game/geom.ts","webpack:///./src/game/ui/menu/asset_node.vue?edd5","webpack:///./src/game/ui/menu/asset_node.vue?3fe9","webpack:///./src/core/components/inputCopy.vue?946f","webpack:///./src/game/game.vue?5592","webpack:///./src/game/units.ts","webpack:///./src/game/ui/menu/menu.vue?ae57","webpack:///./src/core/components/colorpicker.vue?1682","webpack:///./src/game/visibility/te/tds.ts","webpack:///./src/game/visibility/bvh/bvh.ts","webpack:///./src/game/ui/tools/filter.vue?1da1","webpack:///./src/game/manager.ts","webpack:///./src/game/ui/menu/asset_node.vue?0d0e","webpack:///./src/core/components/modals/modal.vue?9335","webpack:///./src/game/ui/tools/vision.vue","webpack:///./src/game/ui/initiative.vue?4f75","webpack:///./src/game/ui/initiative.vue?3968","webpack:///./src/core/components/load.vue?8cd0","webpack:///./src/game/ui/selection/selection_info.vue?d49d","webpack:///./src/game/ui/selection/selection_info.vue?4f48","webpack:///./src/dashboard/main.vue?3f72","webpack:///./src/core/components/modals/confirm.vue","webpack:///./src/game/ui/selection/shapecontext.vue?aac0","webpack:///./src/game/ui/tools/draw.vue?60f4","webpack:///./src/game/ui/selection/shapecontext.vue?c203","webpack:///./src/assetManager/manager.vue?a11e","webpack:///./src/game/event-bus.ts","webpack:///./src/dashboard/main.vue?d5a9","webpack:///./src/game/shapes/rect.ts","webpack:///./src/game/ui/tools/filter.vue?b0f4","webpack:///./src/game/ui/tools/selectcontext.vue?6f66","webpack:///./src/game/layers/fowplayers.ts","webpack:///./src/game/layers/layer.ts","webpack:///./src/game/events/mouse.ts","webpack:///./src/game/ui/tools/filter.vue","webpack:///./src/game/shapes/baserect.ts","webpack:///./src/game/ui/tools/select.vue","webpack:///./src/dashboard/main.vue","webpack:///./src/game/ui/tools/createtoken_modal.vue?6f0b","webpack:///./src/assetManager/manager.vue?4d34","webpack:///./src/assetManager/manager.vue?a045","webpack:///./src/game/ui/tools/selectcontext.vue?d61f","webpack:///./src/auth/logout.ts","webpack:///./src/core/store.ts","webpack:///./src/main.ts","webpack:///./src/core/components/contextmenu.vue?f402","webpack:///./src/invitation/invitation.ts","webpack:///./src/core/components/modals/prompt.vue","webpack:///./src/game/visibility/te/te.ts","webpack:///./src/game/ui/tools/map.vue?272d","webpack:///./src/game/ui/tools/map.vue?7f60","webpack:///./src/game/ui/selection/edit_dialog.vue","webpack:///./src/core/components/modals/modal.vue?6b25","webpack:///./src/core/components/modals/modal.vue?12fd","webpack:///./src/game/settings.ts","webpack:///./src/auth/login.vue?283c","webpack:///./src/game/ui/tools/createtoken_modal.vue?432c","webpack:///./src/game/ui/tools/createtoken_modal.vue?5fcc","webpack:///./src/game/ui/tools/tool.vue?940c","webpack:///./src/game/ui/tools/tool.vue?f5ba","webpack:///./src/game/game.vue?d01c","webpack:///./src/game/ui/tools/ruler.ts","webpack:///./src/core/components/modals/modal.vue","webpack:///./src/core/components/accordion.vue?4b34","webpack:///./src/game/visibility/te/pa.ts","webpack:///./src/game/ui/tools/tools.vue?4580","webpack:///./src/dashboard/main.vue?1359","webpack:///./src/game/ui/selection/edit_dialog.vue?9a84","webpack:///./src/game/ui/selection/shapecontext.vue?2b61","webpack:///./src/game/ui/selection/shapecontext.vue?9807","webpack:///./src/core/components/modals/confirm.vue?f9ee","webpack:///./src/game/ui/dmsettings.vue?7896","webpack:///./src/game/ui/tools/map.vue","webpack:///./src/core/components/accordion.vue?8b79","webpack:///./src/core/components/accordion.vue?6229","webpack:///./src/core/components/modals/confirm.vue?05b2","webpack:///./src/core/components/modals/confirm.vue?be48","webpack:///./src/game/ui/dmsettings.vue","webpack:///./src/assetManager/contextMenu.vue?1b1b","webpack:///./src/game/ui/tools/select.vue?b7fd","webpack:///./src/game/ui/tools/filter.vue?6447","webpack:///./src/game/ui/labels.vue?8d8f","webpack:///./src/game/shapes/polygon.ts","webpack:///./src/game/ui/tools/draw.vue?5a94","webpack:///./src/game/ui/tools/draw.vue?03b4","webpack:///./src/game/game.vue?4949","webpack:///./src/game/ui/tools/filter.vue?e935","webpack:///./src/game/ui/tools/filter.vue?fa63","webpack:///./src/assetManager/manager.vue","webpack:///./src/game/ui/tools/tools.vue?fa4a","webpack:///./src/game/ui/tools/tool.vue","webpack:///./src/game/ui/initiative.vue?4ce1","webpack:///./src/core/components/modals/prompt.vue?75bb","webpack:///./src/core/components/modals/prompt.vue?36e2","webpack:///./src/game/ui/initiative.vue?36c8","webpack:///./src/game/ui/selection/selection_info.vue","webpack:///./src/game/store.ts","webpack:///./src/core/components/modals/confirm.vue?a22f","webpack:///./src/game/comm/conversion/aura.ts","webpack:///./src/assetManager/contextMenu.vue?1e9a","webpack:///./src/game/ui/note.vue","webpack:///./src/game/ui/initiative.vue","webpack:///./src/game/layers/utils.ts","webpack:///./src/game/ui/labels.vue","webpack:///./src/game/ui/selection/edit_dialog.vue?3800","webpack:///./src/game/ui/tools/tools.vue?9477","webpack:///./src/game/ui/tools/tools.vue?c2f7","webpack:///./src/auth/login.vue?3574","webpack:///./src/auth/login.vue?8f9e","webpack:///./src/game/ui/selection/selection_info.vue?5d62","webpack:///./src/game/api/events.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","app","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","boundingrect_1","shape_1","units_1","Text","Shape","[object Object]","position","text","font","angle","fillColour","strokeColour","uuid","super","this","type","assign","getBaseDict","points","refPoint","x","y","BoundingRect","ctx","draw","fillStyle","save","dest","g2l","translate","rotate","textAlign","getLines","map","line","fillText","restore","point","centerPoint","canvas","getBoundingBox","visibleInCanvas","resizePoint","lines","lineHeight","widths","measureText","width","Math","max","split","allLines","maxWidth","targetLine","words","word","testLine","metrics","testWidth","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_style_index_0_id_674cf937_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_style_index_0_id_674cf937_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","__webpack_exports__","_shapecontext_vue_vue_type_template_id_6c66d243_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","__WEBPACK_IMPORT_KEY__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__","component","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_style_index_0_id_0602c2e6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_style_index_0_id_0602c2e6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tinycolor2_1","tslib_1","__importDefault","vue_1","vue_class_component_1","vue_color_1","vue_property_decorator_1","ColorPicker","default","display","left","top","transparent","$refs","chromePicker","val","rgba","a","setPosition","disabled","$nextTick","$children","$el","focus","newColor","toRgbString","$emit","color","rect","getBoundingClientRect","right","innerWidth","bottom","innerHeight","__decorate","Prop","String","Boolean","components","chrome-picker","Chrome","_game_vue_vue_type_template_id_3d0578ba_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__","socket_io_client_1","createConnection","route","socket","io","opts","query","params","creator","room","connect","location","protocol","host","autoConnect","contextMenu_vue_1","confirm_vue_1","prompt_vue_1","socket_1","store_1","utils_1","AssetManager","path","draggingSelection","folders","assetStore","files","selected","idMap","currentFolder","root","parentFolder","parent","undefined","firstSelectedFile","sel","file_hash","nextFolder","pop","clearSelected","emit","prompt","inode","target","includes","indexOf","delete","event","shiftKey","inodes","start","end","ctrlKey","file","dataTransfer","setData","dropEffect","classList","contains","add","remove","moveInode","upload","document","getElementById","click","fls","CHUNK_SIZE","uuidv4","slices","ceil","size","fr","FileReader","readAsArrayBuffer","min","onload","e","directory","totalSlices","Prompt","ConfirmDialog","AssetContextMenu","to","from","next","disconnect","_asset_node_vue_vue_type_template_id_6d718094_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_login_vue_vue_type_template_id_bc30fc14_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","manager_1","tds_1","triag_1","drawPolygon","polygon","colour","dl","layerManager","getLayer","lineJoin","beginPath","strokeStyle","random","moveTo","g2lx","g2ly","lineTo","closePath","stroke","drawPolygonL","xx","local","yy","I","J","drl","constrained","drawPolygonT","tds","clear","logs","T","clearRect","ei","EdgeIterator","valid","collect","fromP","edge","first","vertices","ccw","second","toP","cw","Infinity","constraints","console","log","pos","triangles","isInfinite","po","arc","PI","fill","DP","DPL","DPT","_accordion_vue_vue_type_template_id_0bf2b7ba_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tinycolor","__importStar","circle_1","CircularToken","Circle","center","radius","fromDict","textBaseline","xs","calcFontScale","g2lz","ys","transform","mostReadable","toHexString","visible","gameStore","IS_DM","group","source","has_img","effects","index","geom_1","rect_1","text_1","AnnotationManager","shown","origin","GlobalPoint","annotationText","annotationRect","Rect","layer","hasLayer","warn","addShape","l2g","LocalPoint","getMaxWidth","height","getMaxHeight","w","zoomFactor","h","invalidate","_menu_vue_vue_type_template_id_c7fe324c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_contextmenu_vue_vue_type_template_id_256dde9c___WEBPACK_IMPORTED_MODULE_0__","_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","render","_vm","_h","$createElement","_c","_self","attrs","mask","on","close","$event","scopedSlots","_u","fn","staticClass","draggable","dragstart","dragStart","dragend","dragEnd","_v","title","staticStyle","margin","directives","rawName","expression","ref","placeholder","domProps","input","composing","search","_l","category","labels","label","selectLabel","_s","_e","class","lower-opacity","style","stopPropagation","toggleVisibility","deleteLabel","id","modifiers","trim","newCategory","blur","$forceUpdate","newName","addLabel","staticRenderFns","asset_1","circulartoken_1","line_1","multiline_1","polygon_1","createShapeFromDict","shape","sh","type_","fill_colour","stroke_colour","circ","token","Line","x2","y2","line_width","multiline","MultiLine","Polygon","v","asset","img","Image","src","startsWith","URL","pathname","Asset","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_style_index_0_id_1883e207_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_style_index_0_id_1883e207_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","handleClick","selection","$store","state","game","player","kickPlayer","values","players","refreshState","invitationUrl","refreshInviteCode","toggleSessionLock","deleteSession","for","checked","Array","isArray","useGrid","_i","change","$$a","$$el","$$c","$$v","$$i","concat","number","gridSize","_n","unitSize","fakePlayer","fullFOW","fowLOS","step","fowOpacity","changeVisionMode","visionMode","lazy","visionRangeMin","visionRangeMax","aura_1","nameVisible","trackers","auras","_owners","visionObstruction","movementObstruction","isToken","showHighlight","annotation","globalCompositeOperation","options","Map","_refPoint","delta","idx","entries","abs","prev","fromArray","vec","subtract","mid","multiply","normalize","skipLightUpdate","recalculate","self","obstructionIndex","visionBlockers","update","recalculateVision","forEach","au","ls","visionSources","findIndex","aura","visionSource","some","blocksMovement","movementblockers","recalculateMovement","ownedBy","ownedtokens","draw_operator","movement_obstruction","vision_obstruction","aurasToServer","owners","name_visible","is_token","JSON","stringify","aurasFromServer","parse","bbox","strokeRect","topLeft","dim","loc","innerRange","g2lr","gradient","createRadialGradient","tc","addColorStop","setAlpha","lastPath","sync","oldLayer","newLayer","shapes","freeze","username","FAKE_PLAYER","activeTokens","owner","oldValue","newValue","ownerIndex","addOwner","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","settings","locations","rm-list-dm","_m","enter","rm","transition","settingsClick","overflow-y","overflow-x","href","assets","createNote","note","cursor","openNote","notes","openDmSettings","gridColour","update:color","fowColour","rulerColour","text-decoration","changeLocation","createLocation","select","font-size","updateNote","$set","calcHeight","removeNote","selectcontext_vue_1","tool_vue_1","utils_2","utils_3","SelectOperations","SelectTool","showContextMenu","active","Noop","deltaChanged","dragRay","Ray","Vector","selectionStartPoint","selectionHelper","mouse","getMouse","globalMouse","selectionStack","hit","getPointIndex","l2gz","getRef","Resize","Drag","localRefPoint","GroupSelect","endPoint","og","direction","ogDelta","calculateDelta","asDict","redraw","temporary","resize","updateCursor","body","clearSelection","topRight","botLeft","altKey","snapToGrid","resizeToGrid","$parent","shapecontext","open","selectcontext","getPointOrientation","SelectContext","vuex_1","inputCopy_vue_1","modal_vue_1","event_bus_1","DmSettings","categories","showRefreshState","EventBus","$on","$off","invitationCode","locked","isLocked","setUseGrid","setUnitSize","setGridSize","setFakePlayer","setFullFOW","setFOWOpacity","setLineOfSight","setVisionRangeMin","setVisionRangeMax","toLowerCase","setVisionMode","child","firstElementChild","HTMLInputElement","setIsLocked","roomCreator","roomName","then","$router","InputCopyElement","Modal","computed","mapState","pa_1","done","ogSelBBox","newSelBBox","offset","refine","movementBlocker","blocker","UUIDMap","blockerBBox","found","intersectsWithInner","ray","fromPoints","invDir","inverse","dirIsNegative","intersectP","bCenter","sCenter","ux","uy","dx","dot","dy","centerTriangle","PA_CDT","movement","locate","asArray","lt","triangle","checkTriangle","skip","endpoint","neighbours","_cw","_ccw","ix","intersection","isConstrained","orientation","Sign","LEFT_TURN","ZERO","newDelta","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_style_index_0_id_7a3669fd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_note_vue_vue_type_style_index_0_id_7a3669fd_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_style_index_0_id_20bfdb3e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_style_index_0_id_20bfdb3e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","sendClientOptions","locationOptions","panX","panY","AssetNode","showImage","keys","filter","el","sort","alphSort","__files","b","children","imageSource","querySelector","setDragImage","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_style_index_0_id_f8744d60_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_style_index_0_id_f8744d60_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","tabindex","_t","vuex_module_decorators_1","AssetStore","VuexModule","Mutation","Module","dynamic","store","rootStore","namespaced","getModule","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","contextmenu_vue_1","ShapeContext","activeLayer","pageX","pageY","layers","selectable","playerEditable","moveLayer","getActiveLayer","moveShapeOrder","initiative","addInitiative","getInitiativeRepr","ContextMenu","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_style_index_0_id_c7fe324c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_style_index_0_id_c7fe324c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","borderColour","popupString","showPopup","navigator","clipboard","writeText","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","rename","layer_1","GridLayer","Layer","doClear","drawGrid","gs","lineWidth","currentTarget","closePicker","z-index","updateColor","use","Store","_colorpicker_vue_vue_type_template_id_f8744d60_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","VisionTool","tokens","removeActiveToken","addActiveToken","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_bc30fc14_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_style_index_0_id_bc30fc14_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","script","componentNormalizer","settings_1","te_1","FOWLayer","isVisionLayer","preFogShapes","virtualCanvas","createElement","vCtx","getContext","has","removeShape","Settings","skipLightFOW","originalOperation","dctx","drawAngleLines","drawFirstLightHit","bb","lcenter","alm","light","find","auraLength","getUnitDistance","auraCircle","lastArcAngle","Path2D","firstPoint","angleSteps","anglePoint","cos","sin","lightRay","hitResult","BV","intersect","computeVisibility","drawImage","preShape","ogComposite","getFogColour","fillRect","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","grid-column","owned","updateShape","opacity","grid-column-start","setToken","setVisionBlocker","setMovementBlocker","updateOwner","gridColumnStart","removeOwner","tracker","removeTracker","updateAuraColour","updateAuraVisionSource","removeAura","removeLabel","openLabelManager","updateAnnotation","pow","targetX","targetY","round","diff","sqrt","baserect_1","MapTool","xCount","yCount","startPoint","clone","BaseRect","_load_vue_vue_type_template_id_ff095222___WEBPACK_IMPORTED_MODULE_0__","_load_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__","PanTool","panStart","distance","increasePanX","increasePanY","_selectcontext_vue_vue_type_template_id_2e7d4582_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","main_1","replace","toString","capitalize","charAt","toUpperCase","getHTMLFont","element","parentElement","getComputedStyle","getPropertyValue","getHTMLTextWidth","fakeElement","appendChild","partition","arr","predicate","ret","Number","fontWidth","fixedEncodeURIComponent","str","encodeURIComponent","charCodeAt","OrderedMap","getComponent","activeComponent","_contextMenu_vue_vue_type_template_id_dbbd4d08___WEBPACK_IMPORTED_MODULE_0__","_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","edgeInfo","va","vb","ec","EdgeCirculator","indv","indexV","ri","infinite","vi","orient","COLLINEAR","collinearBetween","q","cPQ","cQR","compare","EQUAL","SMALLER","LARGER","px","py","qx","qy","rx","ry","pqx","pqy","prx","pry","det","determinant","maxX","maxY","aprX","aprY","eps","EPSILON","POSITIVE","NEGATIVE","a00","a01","a10","a11","hasInexactNegativeOrientation","sideOfOrientedCircle","perturb","sideOfOrientedCircleP","Error","p0","p1","p2","os","getOrientedSide","ON_ORIENTED_BOUNDARY","reverse","ON_NEGATIVE_SIDE","xyEqual","xySmaller","xyCompare","qpx","qpy","rpx","rpy","tpx","tpy","tqx","tqy","rqx","rqy","maxx","maxy","arpx","arpy","atqx","atqy","atpx","atpy","arqx","arqy","ON_POSITIVE_SIDE","segSegDoIntersectCrossing","p3","p4","RIGHT_TURN","segSegDoIntersectContained","pa","pb","pc","pd","getIntersectionType","intersectionType","IntersectionType","POINT","NO_INTERSECTION","getLine","doIntersect","l1","l2","info","getIntersectionTypeLine","la","lb","denom","nom1","nom2","A1","A2","B1","B2","nextUp","MAX_VALUE","MIN_VALUE","ulp","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","bringPlayers","createToken","showInitiative","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_style_index_0_id_46baf892_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_vision_vue_vue_type_style_index_0_id_46baf892_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_style_index_0_id_23de098e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_style_index_0_id_23de098e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","positioned","offsetX","offsetY","screenX","screenY","dragging","updatePosition","container","offsetWidth","offsetHeight","clientX","clientY","parseInt","destination","setRoot","folder","set","accordion_vue_1","FilterTool","cat","","localeCompare","initalValues","labelFilters","f","toggleUnlabeledFilter","_","accordion","Accordion","initialValues","updateCategory","overall","items","indeterminate","item","--detailRight","detailRight","--detailArrow","detailArrow","toggle","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_style_index_0_id_2e7d4582_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_style_index_0_id_2e7d4582_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_points","minx","miny","lineCap","_draw_vue_vue_type_template_id_639cd890_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","opposite","zoomValue","exp","zoomDisplay","colorpicker_vue_1","CreateTokenModal","updatePreview","Watch","color-picker","NoteDialog","textarea","scrollHeight","DrawTool","brushHelper","ruler","shapeSelect","modeSelect","modes","brushSize","helperSize","onModeChange","fowLayer","normalLayer","setupBrush","_vertices","pushBrushBack","lastPoint","finaliseShape","axios_1","vue_router_1","manager_vue_1","login_vue_1","logout_1","load_vue_1","main_vue_1","game_vue_1","invitation_1","router","base","routes","redirect","meta","auth","template","beforeEach","coreStore","initialized","matched","record","authenticated","response","setAuthenticated","setUsername","setInitialized","catch","error","Tool","tool","onMouseDown","onMouseUp","onMouseMove","onContextMenu","onDeselect","onSelect","_tools_vue_vue_type_template_id_b6e1f51c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","mouseleave","wheel","zoom","ready","mousedown","mouseup","mousemove","contextmenu","preventDefault","dragover","drop","showUI","layer-selected","selectedLayer","selectLayer","interval","dot-width","dot-height","tooltip-dir","tooltip","formatter","toFixed","slider-style","border-radius","bg-style","background-color","box-shadow","process-style","model","callback","copy","topleft","_inputCopy_vue_vue_type_template_id_20bfdb3e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","CDT","TDS","insert","insertConstraintV","stack","markConstraint","intersectionInfo","findIntersectedFaces","triangulateHole","intersectedFaces","listAB","listBA","edges","triangulateHole2","propagatingFlipE","triangulateHalfHole","fl","deleteTriangle","conflictBoundaries","iN","iT","iC","current","n1","n2","ind","ind1","ind2","mirrorIndex","v0","v1","v2","newlf","createTriangle","vaa","vbb","aa","lfc","LineFaceCirculator","lf","rf","indexT","unshift","previousFace","currentVertex","i1","i2","vcc","vdd","pi","BoundingBox","dilate","overlaps","removeConstrainedEdge","dimension","indf","locateInfo","iLocate","insertb","li","flipAround","propagatingFlip","depth","isFlipable","maxDepth","ni","flip","e1","e2","uid","eni","eI","edgeSet","lessEdge","indn","ed","tt","ii","u","t1","t2","t3","i3","t4","i4","insertInConstrainedEdge","LocateType","EDGE","insertc","updateConstraintsIncident","VERTEX","clearConstraintsIncident","updateConstraintsOpposite","c1","c2","fc","FaceCirculator","cwi","ccwi","insertFirst","finiteVertex","insertSecond","OUTSIDE_AFFINE_HULL","insertOutsideAffineHull","OUTSIDE_CONVEX_HULL","insertOutsideConvexHull","insertInEdge","FACE","insertInFace","insertDimUp","_infinite","conform","finiteEdge","COUNTERCLOCKWISE","insertOutsideConvexHull2","ccwlist","cwlist","th","marchLocate1D","marchLocate2D","ff","iv","pqt","Triangle","leftFirst","o0","o1","o2","sum","nTurns","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","LayerManager","drawLoop","requestAnimationFrame","addLayer","globalAlpha","getSelection","image","getData","l2gx","l2gy","lm","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_createtoken_modal_vue_vue_type_template_id_73816298_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","BoundingNode","nPrimitives","LeafNode","firstPrimOffset","InteriorNode","union","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","utils_4","onKeyUp","HTMLTextAreaElement","selectTool","onKeyDown","keyCode","hasSelection","toggleUI","setClipboard","clip","oldTrackers","newTracker","oldAuras","newAura","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","shapecontext_vue_1","createtoken_modal_vue_1","draw_vue_1","filter_vue_1","map_vue_1","pan_1","select_vue_1","vision_vue_1","manager_2","ruler_1","Tools","currentTool","tools","dmTools","currentToolComponent","visibleTools","tagName","targetTool","button","buttons","annotations","gameManager","annotationManager","setActiveText","select-tool","pan-tool","draw-tool","ruler-tool","RulerTool","map-tool","filter-tool","vision-tool","shape-menu","createtoken-dialog","watch","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_style_index_0_id_e477c214_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_labels_vue_vue_type_style_index_0_id_e477c214_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextmenu_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","question","answer","resolve","reject","Promise","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_style_index_0_id_0bf2b7ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_style_index_0_id_0bf2b7ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","message","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_menu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","botRight","vector","other","xmin","xmax","ymin","ymax","botright","dirIsNeg","txmin","getDiagCorner","txmax","tymin","tymax","tMax","coreVisible","joined","submit","createRoom","newSessionName","tag","getPointDistance","Point","scale","atan2","maxT","mouseover","hash","mouseout","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_inputCopy_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","vue_slider_component_1","lodash_1","initiative_vue_1","labels_vue_1","menu_vue_1","note_vue_1","selection_info_vue_1","tools_vue_1","keyboard_1","mouse_1","dmsettings_vue_1","Game","manager","updateZoom","newZoomDisplay","zoomLocation","addEventListener","resizeWindow","removeEventListener","throttle","scrollZoom","setWidth","setHeight","confirm","dropAsset","tool-bar","selection-info","prompt-dialog","confirm-dialog","menu-bar","initiative-dialog","zoom-slider","note-dialog","label-dialog","dm-settings","obj","z","l2gr","asset_node_vue_1","MenuBar","setGridColour","setFOWColour","setRulerColour","nextElementSibling","newNote","asset-node","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_colorpicker_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_INFINITE_VERTEX","LineFaceState","newPoint","INFINITE","_counter","vertex","A","sign","Vertex","_point","_ri","Edge","_es","associatedEdge","increment","tr","dir","UNDEFINED","_tr","ic","vt","vr","pqr","VERTEX_VERTEX","VERTEX_EDGE","EDGE_VERTEX","EDGE_EDGE","createVertex","addVertex","infiniteVertex","n0","trig","t0","i0","setAdjacency","deleteList","neighbour","lfit","reorient","vCW","vCCW","tri","bl","bli","vv","g","x1","y1","dist","node_1","BoundingVolume","totalNodes","buildData","orderedPrims","nodes","recursiveBuild","compact","node","createLeaf","centroidBbox","getMaxExtent","pMid","partitionedData","flattened","stopOnFirstHit","tMin","todoOffset","nodeNum","todo","secondChildOffset","flatten","myOffset","secondOffset","primitivesOffset","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_1_id_dca395d6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_1_id_dca395d6_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","annotation_1","GameManager","selectedTool","oldShape","redrawInitiative","checkVisionSources","setMovementBlock","setIsToken","localPos","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_style_index_0_id_6d718094_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_asset_node_vue_vue_type_style_index_0_id_6d718094_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_id_c2851f0e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_modal_vue_vue_type_style_index_0_id_c2851f0e_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_vision_vue_vue_type_template_id_46baf892_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_vision_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","fakeSetData","updateOrder","actor","flex-direction","align-items","initiative-selected","currentActor","mouseenter","toggleHighlight","notAllowed","owns","syncInitiative","createEffect","getDefaultEffect","toggleOption","removeInitiative","effect","updateEffect","turns","roundCounter","visionLock","toggleVisionLock","cameraLock","setRound","updateTurn","nextTurn","LoadComponent","openEditDialog","changeValue","maxvalue","registerHooks","Dashboard","vm","err","post","_confirm_vue_vue_type_template_id_1883e207_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_style_index_0_id_639cd890_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_draw_vue_vue_type_style_index_0_id_639cd890_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_style_index_0_id_6c66d243_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_shapecontext_vue_vue_type_style_index_0_id_6c66d243_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_selectcontext_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","FOWPlayersLayer","skipPlayerFOW","maxLength","tokenId","_a","selectionColor","selectionWidth","invalidateLight","serverShape","lsI","lbI","mbI","anI","annotationIndex","ownedIndex","ogOP","drawAuras","filterNoLabel","destinationIndex","oldIdx","deltaY","_filter_vue_vue_type_template_id_dca395d6_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_filter_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","topright","botleft","mx","my","_select_vue_vue_type_template_id_048b3482___WEBPACK_IMPORTED_MODULE_0__","_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_main_vue_vue_type_template_id_61eb1455_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_main_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_style_index_0_id_73816298_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_createtoken_modal_vue_vue_type_style_index_0_id_73816298_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","moveDrag","stopDrag","multiple","hidden","createDirectory","prepareUpload","dblclick","changeDirectory","dragleave","leaveDrag","inode-selected","cm","startDrag","createtokendialog","Logout","CoreStore","init","App_vue_1","router_1","config","productionTip","devtools","performance","$mount","props","Initiative","code","sessionUrl","_prompt_vue_vue_type_template_id_0602c2e6_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_prompt_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","draw_1","drawt","drawTEContour","Q","rawOutput","expandEdge","fh","nfh","nIndex","rIndex","lIndex","nvh","rvh","lvh","re","le","ro","lo","raySegIntersection","CLOCKWISE","denominator","ua","_edit_dialog_vue_vue_type_template_id_23de098e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","modal-mask","dialog-mask","dragOver","tempFill","Login","password","$route","statusText","span","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","diffsign","xdiff","ydiff","xmid","ymid","_modal_vue_vue_type_template_id_c2851f0e_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_modal_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_accordion_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","cdt_1","triangulate","partial","cdt","insertConstraint","vision","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_style_index_0_id_b6e1f51c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_style_index_0_id_b6e1f51c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_style_index_0_id_61eb1455_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_main_vue_vue_type_style_index_0_id_61eb1455_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","EditDialog","addEmpty","hadAnnotation","an","getLayers","setLayer","moveToBack","moveToFront","getInitiativeWord","yes","no","ok","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_style_index_0_id_b908e87c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_dmsettings_vue_vue_type_style_index_0_id_b908e87c_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","_map_vue_vue_type_template_id_2104f147___WEBPACK_IMPORTED_MODULE_0__","_map_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","toggleDisplay","toggleCategory","showArrow","toggleSelection","deny","_dmsettings_vue_vue_type_template_id_b908e87c_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_dmsettings_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_select_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_filter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","LabelManager","user","option-selected","max-width","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_1_id_3d0578ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_game_vue_vue_type_style_index_1_id_3d0578ba_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","selectionupdate","updateSelection","_manager_vue_vue_type_template_id_5b0def98___WEBPACK_IMPORTED_MODULE_0__","_manager_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tools_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_tool_vue_vue_type_template_id_1e034b42___WEBPACK_IMPORTED_MODULE_0__","_tool_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_style_index_0_id_07fc8ff2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_initiative_vue_vue_type_style_index_0_id_07fc8ff2_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","keyup","_k","vuedraggable_1","_activeTokens","setTurn","getActor","actorId","setActiveTokens","setCenterPosition","order","show","option","effectIndex","syncEffect","_selection_info_vue_vue_type_template_id_674cf937_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_selection_info_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","bvh_1","GameStore","selectedLayerIndex","boardInitialized","locationName","vision_mode","filters","updatedLayers","Set","isDM","oldLoc","newLoc","getGridLayer","increase","unit_size","gridLayer","use_grid","vision_min_range","vision_max_range","full_fow","fow_opacity","fow_los","actualNote","playerId","context","commit","Action","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_confirm_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","vision_source","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contextMenu_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","_note_vue_vue_type_template_id_7a3669fd_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_note_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_initiative_vue_vue_type_template_id_07fc8ff2_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_initiative_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","fow_1","fowplayers_1","grid_1","createLayer","layerInfo","zIndex","player_editable","setShapes","_labels_vue_vue_type_template_id_e477c214_scoped_true___WEBPACK_IMPORTED_MODULE_0__","_labels_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_1__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0__","_node_modules_cache_loader_dist_cjs_js_ref_12_0_node_modules_thread_loader_dist_cjs_js_node_modules_ts_loader_index_js_ref_12_2_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_edit_dialog_vue_vue_type_script_lang_ts___WEBPACK_IMPORTED_MODULE_0___default","toolVisible","refInFor","tool-selected","focusin","focusout","login","autocomplete","required","visibility","register","edit_dialog_vue_1","SelectionInfo","editDialog","ogValue","isNaN","edit-dialog","setRoomName","setRoomCreator","setInvitationCode","setPlayers","addPlayer","setDM","grid_colour","fow_colour","ruler_colour","setPanX","pan_x","setPanY","pan_y","setZoomDisplay","zoom_factor","active_layer","setLocationName","setAssets","locationInfo","setLocations","innerHTML","resetLayerInfo","reset","setBoardInitialized","realShape","setLabelVisibility","setLabelFilters"],"mappings":"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","file":"static/js/app.3ba691e3.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2l } from \"@/game/units\";\n\nexport class Text extends Shape {\n type = \"text\";\n text: string;\n font: string;\n angle: number;\n constructor(\n position: GlobalPoint,\n text: string,\n font: string,\n angle?: number,\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(position, fillColour, strokeColour, uuid);\n this.text = text;\n this.font = font;\n this.angle = angle || 0;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n text: this.text,\n font: this.font,\n angle: this.angle,\n });\n }\n get points() {\n return [[this.refPoint.x, this.refPoint.y]];\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(this.refPoint, 5, 5); // TODO: fix this bounding box\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.font = this.font;\n ctx.fillStyle = this.fillColour;\n ctx.save();\n const dest = g2l(this.refPoint);\n ctx.translate(dest.x, dest.y);\n ctx.rotate(this.angle);\n ctx.textAlign = \"center\";\n this.getLines(ctx).map(line => ctx.fillText(line.text, line.x, line.y));\n ctx.restore();\n }\n contains(point: GlobalPoint): boolean {\n return false; // TODO\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {} // TODO\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {}\n\n getMaxHeight(ctx: CanvasRenderingContext2D) {\n const lines = this.getLines(ctx);\n const lineHeight = 30;\n return lineHeight * lines.length;\n }\n\n getMaxWidth(ctx: CanvasRenderingContext2D) {\n const lines = this.getLines(ctx);\n const widths = lines.map(line => ctx.measureText(line.text).width);\n return Math.max(...widths);\n }\n\n private getLines(ctx: CanvasRenderingContext2D) {\n const lines = this.text.split(\"\\n\");\n const allLines: { text: string; x: number; y: number }[] = [];\n const maxWidth = ctx.canvas.width;\n const lineHeight = 30;\n const x = 0; // this.refPoint.x;\n let y = 0; // this.refPoint.y;\n\n for (const line of lines) {\n let targetLine = \"\";\n const words = line.split(\" \");\n for (const word of words) {\n const testLine = targetLine + word + \" \";\n const metrics = ctx.measureText(testLine);\n const testWidth = metrics.width;\n if (testWidth > maxWidth) {\n ctx.fillText(targetLine, x, y);\n allLines.push({ text: targetLine, x, y });\n targetLine = word + \" \";\n y += lineHeight;\n } else {\n targetLine = testLine;\n }\n }\n allLines.push({ text: targetLine, x, y });\n y += lineHeight;\n }\n return allLines;\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=style&index=0&id=674cf937&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=style&index=0&id=674cf937&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./shapecontext.vue?vue&type=template&id=6c66d243&scoped=true&\"\nimport script from \"./shapecontext.vue?vue&type=script&lang=ts&\"\nexport * from \"./shapecontext.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6c66d243\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport tinycolor from \"tinycolor2\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Chrome } from \"vue-color\";\nimport { Prop } from \"vue-property-decorator\";\n\n@Component({\n components: {\n \"chrome-picker\": Chrome,\n },\n})\nexport default class ColorPicker extends Vue {\n @Prop(String) color!: string;\n @Prop(Boolean) disabled!: boolean;\n\n display = false;\n left = 0;\n top = 0;\n transparent = false;\n\n mounted() {\n this.transparent = (this.$refs.chromePicker).val.rgba.a === 0;\n this.setPosition();\n }\n\n open() {\n if (this.display || this.disabled) return; // click on the picker itself\n this.setPosition();\n this.display = true;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n updateColor(value: { rgba: { r: number; g: number; b: number; a: number } }) {\n this.transparent = value.rgba.a === 0;\n const newColor = tinycolor(value.rgba).toRgbString();\n this.$emit(\"update:color\", newColor);\n this.$emit(\"input\", newColor);\n }\n closePicker() {\n this.display = false;\n this.$emit(\"change\", this.color);\n }\n setPosition() {\n const rect = this.$el.getBoundingClientRect();\n // 224 is the width of the picker, 242 the height\n if (rect.right + 224 > window.innerWidth) this.left = rect.left - 224;\n else this.left = rect.right;\n if (rect.bottom + 242 > window.innerHeight) this.top = rect.top - 242;\n else this.top = rect.bottom;\n }\n}\n","import { render, staticRenderFns } from \"./game.vue?vue&type=template&id=3d0578ba&scoped=true&\"\nimport script from \"./game.vue?vue&type=script&lang=ts&\"\nexport * from \"./game.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./game.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d0578ba\",\n null\n \n)\n\nexport default component.exports","import io from \"socket.io-client\";\nimport { Route } from \"vue-router\";\n\nexport const socket = io(location.protocol + \"//\" + location.host + \"/planarally\", { autoConnect: false });\n\nexport function createConnection(route: Route) {\n socket.io.opts.query = `user=${route.params.creator}&room=${route.params.room}`;\n socket.connect();\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport AssetContextMenu from \"@/assetManager/contextMenu.vue\";\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\n\nimport { socket } from \"@/assetManager/socket\";\nimport { assetStore } from \"@/assetManager/store\";\nimport { Asset } from \"@/core/comm/types\";\nimport { uuidv4 } from \"@/core/utils\";\n\n@Component({\n components: {\n Prompt,\n ConfirmDialog,\n AssetContextMenu,\n },\n beforeRouteEnter(to, from, next) {\n socket.connect();\n next();\n },\n beforeRouteLeave(to, from, next) {\n socket.disconnect();\n next();\n },\n})\nexport default class AssetManager extends Vue {\n path: number[] = [];\n draggingSelection = false;\n\n get folders(): number[] {\n return assetStore.folders;\n }\n\n get files(): number[] {\n return assetStore.files;\n }\n\n get selected(): number[] {\n return assetStore.selected;\n }\n\n get idMap() {\n return assetStore.idMap;\n }\n\n get currentFolder(): number {\n if (this.path.length) return this.path[this.path.length - 1];\n return assetStore.root;\n }\n get parentFolder(): number {\n let parent = this.path[this.path.length - 2];\n if (parent === undefined) parent = assetStore.root;\n return parent;\n }\n get firstSelectedFile(): Asset | null {\n for (const sel of assetStore.selected) {\n if (assetStore.idMap.get(sel)!.file_hash) {\n return assetStore.idMap.get(sel)!;\n }\n }\n return null;\n }\n changeDirectory(nextFolder: number) {\n if (nextFolder < 0) this.path.pop();\n else this.path.push(nextFolder);\n assetStore.clearSelected();\n socket.emit(\"Folder.Get\", this.currentFolder);\n }\n createDirectory() {\n const name = window.prompt(\"New folder name\");\n if (name !== null) {\n socket.emit(\"Folder.Create\", { name, parent: this.currentFolder });\n }\n }\n moveInode(inode: number, target: number) {\n if (assetStore.files.includes(inode)) assetStore.files.splice(assetStore.files.indexOf(inode), 1);\n else assetStore.folders.splice(assetStore.folders.indexOf(inode), 1);\n assetStore.idMap.delete(inode);\n socket.emit(\"Inode.Move\", { inode, target });\n }\n select(event: MouseEvent, inode: number) {\n if (event.shiftKey && assetStore.selected.length > 0) {\n const inodes = [...assetStore.files, ...assetStore.folders];\n const start = inodes.indexOf(assetStore.selected[assetStore.selected.length - 1]);\n const end = inodes.indexOf(inode);\n for (let i = start; i !== end; start < end ? i++ : i--) {\n if (i === start) continue;\n assetStore.selected.push(inodes[i]);\n }\n assetStore.selected.push(inodes[end]);\n } else {\n if (!event.ctrlKey) {\n assetStore.clearSelected();\n }\n assetStore.selected.push(inode);\n }\n }\n startDrag(event: DragEvent, file: number) {\n if (event.dataTransfer === null) return;\n event.dataTransfer.setData(\"Hack\", \"ittyHack\");\n event.dataTransfer.dropEffect = \"move\";\n if (!assetStore.selected.includes(file)) assetStore.selected.push(file);\n this.draggingSelection = true;\n }\n moveDrag(event: DragEvent) {\n if ((event.target).classList.contains(\"folder\"))\n (event.target).classList.add(\"inode-selected\");\n }\n leaveDrag(event: DragEvent) {\n if ((event.target).classList.contains(\"folder\"))\n (event.target).classList.remove(\"inode-selected\");\n }\n stopDrag(event: DragEvent, target: number) {\n (event.target).classList.remove(\"inode-selected\");\n if (this.draggingSelection) {\n if (\n (target === assetStore.root || assetStore.folders.includes(target)) &&\n !assetStore.selected.includes(target)\n ) {\n for (const inode of assetStore.selected) {\n this.moveInode(inode, target);\n }\n }\n assetStore.clearSelected();\n } else if (event.dataTransfer && event.dataTransfer.files.length > 0) {\n this.upload(event.dataTransfer.files, target);\n }\n this.draggingSelection = false;\n }\n prepareUpload() {\n document.getElementById(\"files\")!.click();\n }\n upload(fls?: FileList, target?: number) {\n const files = (document.getElementById(\"files\")!).files;\n if (fls === undefined) {\n if (files) fls = files;\n else return;\n }\n if (target === undefined) target = this.currentFolder;\n const CHUNK_SIZE = 100000;\n for (const file of fls) {\n const uuid = uuidv4();\n const slices = Math.ceil(file.size / CHUNK_SIZE);\n for (let slice = 0; slice < slices; slice++) {\n const fr = new FileReader();\n fr.readAsArrayBuffer(\n file.slice(\n slice * CHUNK_SIZE,\n slice * CHUNK_SIZE + Math.min(CHUNK_SIZE, file.size - slice * CHUNK_SIZE),\n ),\n );\n fr.onload = e => {\n socket.emit(\"Asset.Upload\", {\n name: file.name,\n directory: target,\n data: fr.result,\n slice,\n totalSlices: slices,\n uuid,\n });\n };\n }\n }\n }\n}\n","import { render, staticRenderFns } from \"./asset_node.vue?vue&type=template&id=6d718094&scoped=true&\"\nimport script from \"./asset_node.vue?vue&type=script&lang=ts&\"\nexport * from \"./asset_node.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d718094\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./login.vue?vue&type=template&id=bc30fc14&scoped=true&\"\nimport script from \"./login.vue?vue&type=script&lang=ts&\"\nexport * from \"./login.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bc30fc14\",\n null\n \n)\n\nexport default component.exports","import { layerManager } from \"@/game/layers/manager\";\nimport { g2lx, g2ly } from \"@/game/units\";\nimport { EdgeIterator, TDS } from \"./tds\";\nimport { ccw, cw } from \"./triag\";\n\nexport function drawPolygon(polygon: number[][], colour?: string) {\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n ctx.beginPath();\n ctx.strokeStyle =\n colour === undefined ? `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})` : colour;\n ctx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) {\n ctx.lineTo(g2lx(point[0]), g2ly(point[1]));\n }\n ctx.closePath();\n ctx.stroke();\n}\n\nexport function drawPolygonL(polygon: number[][], colour?: string) {\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n ctx.beginPath();\n ctx.strokeStyle =\n colour === undefined ? `rgb(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255})` : colour;\n ctx.moveTo(polygon[0][0], polygon[0][1]);\n for (const point of polygon) {\n ctx.lineTo(point[0], point[1]);\n }\n ctx.closePath();\n ctx.stroke();\n}\n\nfunction x(xx: number, local: boolean) {\n if (local) return xx;\n else return g2lx(xx);\n}\n\nfunction y(yy: number, local: boolean) {\n if (local) return yy;\n else return g2ly(yy);\n}\n\nlet I = 0;\nlet J = 0;\n\nfunction drl(ctx: CanvasRenderingContext2D, from: number[], to: number[], constrained: boolean, local: boolean) {\n // J++;\n // if (constrained) {\n // I++;\n // console.log(\"*\", from, to);\n // } else {\n // console.log(\" \", from, to);\n // }\n ctx.beginPath();\n ctx.strokeStyle = constrained ? \"rgba(255, 0, 0, 0.30)\" : \"rgba(0, 0, 0, 0.30)\";\n ctx.moveTo(x(from[0], local), y(from[1], local));\n ctx.lineTo(x(to[0], local), y(to[1], local));\n ctx.closePath();\n ctx.stroke();\n}\n\nfunction drawPolygonT(tds: TDS, local = true, clear = true, logs: 0 | 1 | 2 = 0) {\n I = 0;\n J = 0;\n let T = 0;\n const dl = layerManager.getLayer(\"draw\");\n if (dl === undefined) return;\n const ctx = dl.ctx;\n if (clear) ctx.clearRect(0, 0, 2000, 1000);\n ctx.lineJoin = \"round\";\n // ctx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n ctx.lineJoin = \"round\";\n const ei = new EdgeIterator(tds);\n while (ei.valid) {\n ei.next();\n ei.collect();\n }\n ei.collect();\n do {\n const fromP = ei.edge.first!.vertices[ccw(ei.edge.second)]!.point!;\n const toP = ei.edge.first!.vertices[cw(ei.edge.second)]!.point!;\n if (logs > 0) {\n if (fromP[0] === -Infinity || toP[0] === -Infinity) {\n ei.next();\n continue;\n }\n J++;\n if (ei.edge.first!.constraints[ei.edge.second]) {\n I++;\n if (logs === 2) console.log(`Edge: (*) ${fromP} > ${toP}`);\n } else if (logs === 2) console.log(`Edge: ${fromP} > ${toP}`);\n }\n do {\n ei.next();\n ei.collect();\n } while (ei.valid);\n } while (ei.pos !== null);\n for (const t of tds.triangles) {\n if (t.isInfinite()) continue;\n T++;\n const po = [];\n ctx.fillStyle = \"red\";\n if (t.vertices[0] !== undefined) {\n po.push(t.vertices[0]!.point);\n ctx.beginPath();\n ctx.arc(x(t.vertices[0]!.point![0], local), y(t.vertices[0]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (t.vertices[1] !== undefined) {\n po.push(t.vertices[1]!.point);\n ctx.arc(x(t.vertices[1]!.point![0], local), y(t.vertices[1]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (t.vertices[2] !== undefined) {\n po.push(t.vertices[2]!.point);\n ctx.arc(x(t.vertices[2]!.point![0], local), y(t.vertices[2]!.point![1], local), 5, 0, 2 * Math.PI);\n ctx.closePath();\n ctx.fill();\n }\n if (logs === 2) console.log(\"[T] \", ...po, t.constraints);\n\n ctx.moveTo(x(t.vertices[0]!.point![0], local), y(t.vertices[0]!.point![1], local));\n if (t.vertices[0] !== undefined && t.vertices[1] !== undefined)\n drl(ctx, t.vertices[0]!.point!, t.vertices[1]!.point!, t.constraints[2], local);\n if (t.vertices[1] !== undefined && t.vertices[2] !== undefined)\n drl(ctx, t.vertices[1]!.point!, t.vertices[2]!.point!, t.constraints[0], local);\n if (t.vertices[2] !== undefined && t.vertices[0] !== undefined)\n drl(ctx, t.vertices[2]!.point!, t.vertices[0]!.point!, t.constraints[1], local);\n }\n if (logs > 0) {\n console.log(`Edges: ${I}/${J}`);\n console.log(`Faces: ${T}`);\n }\n}\n\n(window).DP = drawPolygon;\n(window).DPL = drawPolygonL;\n(window).DPT = drawPolygonT;\n","import { render, staticRenderFns } from \"./accordion.vue?vue&type=template&id=0bf2b7ba&scoped=true&\"\nimport script from \"./accordion.vue?vue&type=script&lang=ts&\"\nexport * from \"./accordion.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0bf2b7ba\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=style&index=0&lang=css&\"","import * as tinycolor from \"tinycolor2\";\n\nimport { calcFontScale } from \"@/core/utils\";\nimport { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerCircularToken } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lz } from \"@/game/units\";\n\nexport class CircularToken extends Circle {\n type = \"circulartoken\";\n text: string;\n font: string;\n constructor(\n center: GlobalPoint,\n r: number,\n text: string,\n font: string,\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(center, r, fillColour, strokeColour, uuid);\n this.text = text;\n this.font = font;\n }\n asDict(): ServerCircularToken {\n return Object.assign(this.getBaseDict(), {\n radius: this.r,\n text: this.text,\n font: this.font,\n });\n }\n fromDict(data: ServerCircularToken) {\n super.fromDict(data);\n this.r = data.radius;\n this.text = data.text;\n this.font = data.font;\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.font = this.font;\n ctx.save();\n const dest = g2l(this.center());\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n const xs = calcFontScale(ctx, this.text, g2lz(this.r), g2lz(this.r));\n const ys = 0;\n ctx.transform(xs, ys, -ys, xs, dest.x, dest.y);\n ctx.fillStyle = tinycolor.mostReadable(this.fillColour, [\"#000\", \"#fff\"]).toHexString();\n ctx.fillText(this.text, 0, 0);\n ctx.restore();\n }\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.name === \"\" || this.name === \"Unknown shape\" ? this.text : this.name,\n has_img: false,\n effects: [],\n index: Infinity,\n };\n }\n}\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Text } from \"@/game/shapes/text\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\n\nexport class AnnotationManager {\n annotationText: Text;\n annotationRect: Rect;\n layer: Layer | undefined;\n shown: boolean = false;\n\n constructor() {\n const origin = new GlobalPoint(0, 0);\n this.annotationText = new Text(origin, \"\", \"bold 20px serif\", 0, \"rgba(230, 230, 230, 1)\");\n this.annotationRect = new Rect(origin, 0, 0, \"rgba(0, 0, 0, 0.6)\");\n }\n\n setActiveText(text: string) {\n if (this.layer === undefined) {\n if (layerManager.hasLayer(\"draw\")) {\n this.layer = layerManager.getLayer(\"draw\")!;\n this.layer.addShape(this.annotationRect, false);\n this.layer.addShape(this.annotationText, false);\n } else {\n console.warn(\"There is no draw layer to draw annotations on!\");\n return;\n }\n }\n this.shown = text !== \"\";\n this.annotationText.refPoint = l2g(new LocalPoint(this.layer.canvas.width / 2, 50));\n this.annotationText.text = text;\n const width = this.shown ? this.annotationText.getMaxWidth(this.layer.ctx) + 10 : 0;\n const height = this.shown ? this.annotationText.getMaxHeight(this.layer.ctx) + 10 : 0;\n this.annotationRect.refPoint = l2g(new LocalPoint(this.layer.canvas.width / 2 - width / 2, 30));\n this.annotationRect.w = width / gameStore.zoomFactor;\n this.annotationRect.h = height / gameStore.zoomFactor;\n this.layer.invalidate(true);\n }\n}\n","import { render, staticRenderFns } from \"./menu.vue?vue&type=template&id=c7fe324c&scoped=true&\"\nimport script from \"./menu.vue?vue&type=script&lang=ts&\"\nexport * from \"./menu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c7fe324c\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./contextmenu.vue?vue&type=template&id=256dde9c&\"\nimport script from \"./contextmenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./contextmenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./contextmenu.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Label manager\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Category\"}},[_vm._v(\"Cat.\")])]),_c('div',{staticClass:\"header name\"},[_vm._v(\"Name\")]),_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Visible\"}},[_vm._v(\"Vis.\")])]),_c('div',{staticClass:\"header\"},[_c('abbr',{attrs:{\"title\":\"Delete\"}},[_vm._v(\"Del.\")])]),_c('div',{staticClass:\"separator spanrow\",staticStyle:{\"margin\":\"0 0 7px\"}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search),expression:\"search\"}],ref:\"search\",staticClass:\"spanrow\",attrs:{\"type\":\"text\",\"placeholder\":\"search\"},domProps:{\"value\":(_vm.search)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.search=$event.target.value}}})]),_c('div',{staticClass:\"grid scroll\"},[_vm._l((_vm.categories),function(category){return [_vm._l((_vm.labels[category]),function(label){return [_c('div',{key:'row-'+label.uuid,staticClass:\"row\",on:{\"click\":function($event){return _vm.selectLabel(label.uuid)}}},[(label.category)?[_c('div',{key:'cat-'+label.uuid},[_vm._v(_vm._s(label.category))]),_c('div',{key:'name-'+label.uuid,staticClass:\"name\"},[_vm._v(_vm._s(label.name))])]:_vm._e(),(!label.category)?[_c('div',{key:'cat-'+label.uuid}),_c('div',{key:'name-'+label.uuid,staticClass:\"name\"},[_vm._v(_vm._s(label.name))])]:_vm._e(),_c('div',{key:'visible-'+label.uuid,class:{'lower-opacity': !label.visible},style:({textAlign: 'center'}),on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleVisibility(label)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{key:'delete-'+label.uuid,on:{\"click\":function($event){$event.stopPropagation();return _vm.deleteLabel(label.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])],2)]})]}),(_vm.labels.length === 0)?[_c('div',{attrs:{\"id\":\"no-labels\"}},[_vm._v(\"No labels exist yet\")])]:_vm._e()],2),_c('div',{staticClass:\"grid\"},[_c('div',{staticClass:\"separator spanrow\"}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newCategory),expression:\"newCategory\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newCategory)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newCategory=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newName),expression:\"newName\",modifiers:{\"trim\":true}}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.newName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newName=$event.target.value.trim()},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('button',{attrs:{\"id\":\"addLabelButton\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.addLabel($event)}}},[_vm._v(\"Add\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=template&id=e477c214&scoped=true&\"","import {\n ServerAsset,\n ServerCircle,\n ServerCircularToken,\n ServerLine,\n ServerMultiLine,\n ServerPolygon,\n ServerRect,\n ServerShape,\n ServerText,\n} from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Asset } from \"@/game/shapes/asset\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { CircularToken } from \"@/game/shapes/circulartoken\";\nimport { Line } from \"@/game/shapes/line\";\nimport { MultiLine } from \"@/game/shapes/multiline\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { Text } from \"@/game/shapes/text\";\nimport { Polygon } from \"./polygon\";\n\nexport function createShapeFromDict(shape: ServerShape) {\n let sh: Shape;\n\n // A fromJSON and toJSON on Shape would be cleaner but ts does not allow for static abstracts so yeah.\n\n // Shape Type specifics\n\n const refPoint = new GlobalPoint(shape.x, shape.y);\n if (shape.type_ === \"rect\") {\n const rect = shape;\n sh = new Rect(refPoint, rect.width, rect.height, rect.fill_colour, rect.stroke_colour, rect.uuid);\n } else if (shape.type_ === \"circle\") {\n const circ = shape;\n sh = new Circle(refPoint, circ.radius, circ.fill_colour, circ.stroke_colour, circ.uuid);\n } else if (shape.type_ === \"circulartoken\") {\n const token = shape;\n sh = new CircularToken(\n refPoint,\n token.radius,\n token.text,\n token.font,\n token.fill_colour,\n token.stroke_colour,\n token.uuid,\n );\n } else if (shape.type_ === \"line\") {\n const line = shape;\n sh = new Line(refPoint, new GlobalPoint(line.x2, line.y2), line.line_width, line.stroke_colour, line.uuid);\n } else if (shape.type_ === \"multiline\") {\n const multiline = shape;\n sh = new MultiLine(\n refPoint,\n multiline.points.map(p => new GlobalPoint(p.x, p.y)),\n multiline.line_width,\n multiline.stroke_colour,\n multiline.uuid,\n );\n } else if (shape.type_ === \"polygon\") {\n const polygon = shape;\n sh = new Polygon(\n refPoint,\n polygon.vertices.map(v => new GlobalPoint(v.x, v.y)),\n polygon.fill_colour,\n polygon.stroke_colour,\n polygon.uuid,\n );\n } else if (shape.type_ === \"text\") {\n const text = shape;\n sh = new Text(refPoint, text.text, text.font, text.angle, text.fill_colour, text.stroke_colour, text.uuid);\n } else if (shape.type_ === \"assetrect\") {\n const asset = shape;\n const img = new Image(asset.width, asset.height);\n if (asset.src.startsWith(\"http\")) img.src = new URL(asset.src).pathname;\n else img.src = asset.src;\n sh = new Asset(img, refPoint, asset.width, asset.height, asset.uuid);\n img.onload = () => {\n layerManager.getLayer(shape.layer)!.invalidate(false);\n };\n } else {\n return undefined;\n }\n sh.fromDict(shape);\n return sh;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SelectContext',{ref:\"selectcontext\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=template&id=048b3482&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"colour\":'rgba(255, 255, 255, 0.8)',\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"DM Settings\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\",on:{\"click\":_vm.handleClick}},[_c('div',{attrs:{\"id\":\"categories\"}},_vm._l((_vm.categories),function(category,c){return _c('div',{key:category,staticClass:\"category\",class:{'selected': _vm.selection === c},on:{\"click\":function($event){_vm.selection = c}}},[_vm._v(_vm._s(category))])}),0),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 0),expression:\"selection === 0\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Players\")]),_vm._l((_vm.$store.state.game.players),function(player){return _c('div',{key:player.id,staticClass:\"row smallrow\"},[_c('div',[_vm._v(_vm._s(player.name))]),_c('div',[_c('div',{on:{\"click\":function($event){return _vm.kickPlayer(player.id)}}},[_vm._v(\"Kick\")])])])}),(Object.values(_vm.$store.state.game.players).length === 0)?_c('div',{staticClass:\"row smallrow\"},[_c('div',{staticClass:\"spanrow\"},[_vm._v(\"There are no players yet, invite some using the link below!\")])]):_vm._e(),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Invite code\")]),_c('div',{staticClass:\"row\"},[_c('div',[_vm._v(\"Invitation URL:\")]),(_vm.showRefreshState)?[_c('InputCopyElement',{attrs:{\"value\":_vm.refreshState}})]:[_c('InputCopyElement',{attrs:{\"value\":_vm.invitationUrl}})]],2),_c('div',{staticClass:\"row\",on:{\"click\":_vm.refreshInviteCode}},[_c('div'),_c('div',[_c('button',[_vm._v(\"Refresh invitation code\")])])]),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Danger Zone\")]),_c('div',{staticClass:\"row\"},[_c('div',[(_vm.locked)?[_vm._v(\"Unlock\")]:[_vm._v(\"Lock\")],_vm._v(\" Session \"),_c('i',[_vm._v(\"(DM access only)\")])],2),_c('div',[_c('button',{staticClass:\"danger\",on:{\"click\":_vm.toggleSessionLock}},[(_vm.locked)?[_vm._v(\"Unlock\")]:[_vm._v(\"Lock\")],_vm._v(\" this Session\")],2)])]),_c('div',{staticClass:\"row\"},[_c('div',[_vm._v(\"Remove Session\")]),_c('div',[_c('button',{staticClass:\"danger\",on:{\"click\":_vm.deleteSession}},[_vm._v(\"Delete this Session\")])])])],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 1),expression:\"selection === 1\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"useGridInput\"}},[_vm._v(\"Use grid\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.useGrid),expression:\"useGrid\"}],attrs:{\"id\":\"useGridInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.useGrid)?_vm._i(_vm.useGrid,null)>-1:(_vm.useGrid)},on:{\"change\":function($event){var $$a=_vm.useGrid,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.useGrid=$$a.concat([$$v]))}else{$$i>-1&&(_vm.useGrid=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.useGrid=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"gridSizeInput\"}},[_vm._v(\"Grid Size (in pixels):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.gridSize),expression:\"gridSize\",modifiers:{\"number\":true}}],attrs:{\"id\":\"gridSizeInput\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.gridSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.gridSize=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"unitSizeInput\"}},[_vm._v(\"Unit Size (in ft.):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.unitSize),expression:\"unitSize\",modifiers:{\"number\":true}}],attrs:{\"id\":\"unitSizeInput\",\"type\":\"number\"},domProps:{\"value\":(_vm.unitSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.unitSize=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selection === 2),expression:\"selection === 2\"}],staticClass:\"panel\"},[_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Core\")]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fakePlayerInput\"}},[_vm._v(\"Fake player:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fakePlayer),expression:\"fakePlayer\"}],attrs:{\"id\":\"fakePlayerInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fakePlayer)?_vm._i(_vm.fakePlayer,null)>-1:(_vm.fakePlayer)},on:{\"change\":function($event){var $$a=_vm.fakePlayer,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fakePlayer=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fakePlayer=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fakePlayer=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"useFOWInput\"}},[_vm._v(\"Fill entire canvas with FOW:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fullFOW),expression:\"fullFOW\"}],attrs:{\"id\":\"useFOWInput\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fullFOW)?_vm._i(_vm.fullFOW,null)>-1:(_vm.fullFOW)},on:{\"change\":function($event){var $$a=_vm.fullFOW,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fullFOW=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fullFOW=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fullFOW=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fowLOS\"}},[_vm._v(\"Only show lights in LoS:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fowLOS),expression:\"fowLOS\"}],attrs:{\"id\":\"fowLOS\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.fowLOS)?_vm._i(_vm.fowLOS,null)>-1:(_vm.fowLOS)},on:{\"change\":function($event){var $$a=_vm.fowLOS,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.fowLOS=$$a.concat([$$v]))}else{$$i>-1&&(_vm.fowLOS=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.fowLOS=$$c}}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"fowOpacity\"}},[_vm._v(\"FOW opacity:\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.fowOpacity),expression:\"fowOpacity\",modifiers:{\"number\":true}}],attrs:{\"id\":\"fowOpacity\",\"type\":\"number\",\"min\":\"0\",\"max\":\"1\",\"step\":\"0.1\"},domProps:{\"value\":(_vm.fowOpacity)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.fowOpacity=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Advanced\")]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"visionMode\"}},[_vm._v(\"Vision Mode:\")]),_c('div',[_c('select',{attrs:{\"id\":\"visionMode\"},on:{\"change\":_vm.changeVisionMode}},[_c('option',{domProps:{\"selected\":_vm.$store.state.game.visionMode === 'bvh'}},[_vm._v(\"BVH\")]),_c('option',{domProps:{\"selected\":_vm.$store.state.game.visionMode === 'triangle'}},[_vm._v(\"Triangle\")])])])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"vmininp\"}},[_vm._v(\"Minimal full vision (ft):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(_vm.visionRangeMin),expression:\"visionRangeMin\",modifiers:{\"lazy\":true,\"number\":true}}],attrs:{\"id\":\"vmininp\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.visionRangeMin)},on:{\"change\":function($event){_vm.visionRangeMin=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])]),_c('div',{staticClass:\"row\"},[_c('label',{attrs:{\"for\":\"vmaxinp\"}},[_vm._v(\"Maximal vision (ft):\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(_vm.visionRangeMax),expression:\"visionRangeMax\",modifiers:{\"lazy\":true,\"number\":true}}],attrs:{\"id\":\"vmaxinp\",\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.visionRangeMax)},on:{\"change\":function($event){_vm.visionRangeMax=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=template&id=b908e87c&scoped=true&\"","import tinycolor from \"tinycolor2\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { aurasFromServer, aurasToServer } from \"@/game/comm/conversion/aura\";\nimport { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz } from \"@/game/units\";\n\nexport abstract class Shape {\n // Used to create class instance from server shape data\n abstract readonly type: string;\n // The unique ID of this shape\n readonly uuid: string;\n // The layer the shape is currently on\n layer!: string;\n\n // A reference point regarding that specific shape's structure\n protected _refPoint: GlobalPoint;\n\n // Fill colour of the shape\n fillColour: string = \"#000\";\n strokeColour: string = \"rgba(0,0,0,0)\";\n // The optional name associated with the shape\n name = \"Unknown shape\";\n nameVisible = true;\n\n // Associated trackers/auras/owners\n trackers: Tracker[] = [];\n auras: Aura[] = [];\n labels: Label[] = [];\n protected _owners: string[] = [];\n\n // Block light sources\n visionObstruction = false;\n // Prevent shapes from overlapping with this shape\n movementObstruction = false;\n // Does this shape represent a playable token\n isToken = false;\n // Show a highlight box\n showHighlight = false;\n\n // Mouseover annotation\n annotation: string = \"\";\n\n // Draw modus to use\n globalCompositeOperation: string = \"source-over\";\n\n // Additional options for specialized uses\n options: Map = new Map();\n\n constructor(refPoint: GlobalPoint, fillColour?: string, strokeColour?: string, uuid?: string) {\n this._refPoint = refPoint;\n this.uuid = uuid || uuidv4();\n if (fillColour !== undefined) this.fillColour = fillColour;\n if (strokeColour !== undefined) this.strokeColour = strokeColour;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n this._refPoint = point;\n }\n\n abstract getBoundingBox(): BoundingRect;\n\n // If inWorldCoord is\n abstract contains(point: GlobalPoint): boolean;\n\n abstract center(): GlobalPoint;\n abstract center(centerPoint: GlobalPoint): void;\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n // for (const aura of this.auras) {\n // if (aura.value > 0) {\n // const auraCircle = new Circle(this.center(), aura.value);\n // if (auraCircle.visibleInCanvas(canvas)) return true;\n // }\n // }\n return false;\n }\n\n // Code to snap a shape to the grid\n // This is shape dependent as the shape refPoints are shape specific in\n abstract snapToGrid(): void;\n abstract resizeToGrid(): void;\n abstract resize(resizePoint: number, point: LocalPoint): void;\n\n abstract get points(): number[][];\n\n getPointIndex(p: GlobalPoint, delta = 0): number {\n for (const [idx, point] of this.points.entries()) {\n if (Math.abs(p.x - point[0]) <= delta && Math.abs(p.y - point[1]) <= delta) return idx;\n }\n return -1;\n }\n\n getPointOrientation(i: number): Vector {\n const prev = GlobalPoint.fromArray(this.points[(this.points.length + i - 1) % this.points.length]);\n const point = GlobalPoint.fromArray(this.points[i]);\n const next = GlobalPoint.fromArray(this.points[(i + 1) % this.points.length]);\n const vec = next.subtract(prev);\n const mid = prev.add(vec.multiply(0.5));\n return point.subtract(mid).normalize();\n }\n\n invalidate(skipLightUpdate: boolean) {\n const l = layerManager.getLayer(this.layer);\n if (l) l.invalidate(skipLightUpdate);\n }\n\n checkVisionSources(recalculate = true) {\n const self = this;\n const obstructionIndex = gameStore.visionBlockers.indexOf(this.uuid);\n let update = false;\n if (this.visionObstruction && obstructionIndex === -1) {\n gameStore.visionBlockers.push(this.uuid);\n update = true;\n } else if (!this.visionObstruction && obstructionIndex >= 0) {\n gameStore.visionBlockers.splice(obstructionIndex, 1);\n update = true;\n }\n if (update && recalculate) gameStore.recalculateVision();\n\n // Check if the visionsource auras are in the gameManager\n this.auras.forEach(au => {\n const ls = gameStore.visionSources;\n const i = ls.findIndex(o => o.aura === au.uuid);\n if (au.visionSource && i === -1) {\n ls.push({ shape: self.uuid, aura: au.uuid });\n } else if (!au.visionSource && i >= 0) {\n ls.splice(i, 1);\n }\n });\n // Check if anything in the gameManager referencing this shape is in fact still a visionsource\n for (let i = gameStore.visionSources.length - 1; i >= 0; i--) {\n const ls = gameStore.visionSources[i];\n if (ls.shape === self.uuid) {\n if (!self.auras.some(a => a.uuid === ls.aura && a.visionSource)) gameStore.visionSources.splice(i, 1);\n }\n }\n }\n\n setMovementBlock(blocksMovement: boolean, recalculate = true) {\n this.movementObstruction = blocksMovement || false;\n const obstructionIndex = gameStore.movementblockers.indexOf(this.uuid);\n let update = false;\n if (this.movementObstruction && obstructionIndex === -1) {\n gameStore.movementblockers.push(this.uuid);\n update = true;\n } else if (!this.movementObstruction && obstructionIndex >= 0) {\n gameStore.movementblockers.splice(obstructionIndex, 1);\n update = true;\n }\n if (update && recalculate) gameStore.recalculateMovement();\n }\n\n setIsToken(isToken: boolean) {\n this.isToken = isToken;\n if (this.ownedBy()) {\n const i = gameStore.ownedtokens.indexOf(this.uuid);\n if (this.isToken && i === -1) gameStore.ownedtokens.push(this.uuid);\n else if (!this.isToken && i >= 0) gameStore.ownedtokens.splice(i, 1);\n }\n }\n\n abstract asDict(): ServerShape;\n getBaseDict(): ServerShape {\n return {\n type_: this.type,\n uuid: this.uuid,\n x: this.refPoint.x,\n y: this.refPoint.y,\n layer: this.layer,\n draw_operator: this.globalCompositeOperation,\n movement_obstruction: this.movementObstruction,\n vision_obstruction: this.visionObstruction,\n auras: aurasToServer(this.auras),\n trackers: this.trackers,\n labels: this.labels,\n owners: this._owners,\n fill_colour: this.fillColour,\n stroke_colour: this.strokeColour,\n name: this.name,\n name_visible: this.nameVisible,\n annotation: this.annotation,\n is_token: this.isToken,\n options: JSON.stringify([...this.options]),\n };\n }\n fromDict(data: ServerShape) {\n this.layer = data.layer;\n this.globalCompositeOperation = data.draw_operator;\n this.movementObstruction = data.movement_obstruction;\n this.visionObstruction = data.vision_obstruction;\n this.auras = aurasFromServer(data.auras);\n this.trackers = data.trackers;\n this.labels = data.labels;\n this._owners = data.owners;\n this.isToken = data.is_token;\n this.nameVisible = data.name_visible;\n if (data.annotation) this.annotation = data.annotation;\n if (data.name) this.name = data.name;\n if (data.options) this.options = new Map(JSON.parse(data.options));\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n if (this.globalCompositeOperation !== undefined) ctx.globalCompositeOperation = this.globalCompositeOperation;\n else ctx.globalCompositeOperation = \"source-over\";\n if (this.showHighlight) {\n const bbox = this.getBoundingBox();\n ctx.strokeStyle = \"red\";\n ctx.strokeRect(g2lx(bbox.topLeft.x) - 5, g2ly(bbox.topLeft.y) - 5, g2lz(bbox.w) + 10, g2lz(bbox.h) + 10);\n }\n }\n\n drawAuras(ctx: CanvasRenderingContext2D) {\n for (const aura of this.auras) {\n if (aura.value === 0 && aura.dim === 0) return;\n ctx.beginPath();\n\n const loc = g2l(this.center());\n const innerRange = g2lr(aura.value + aura.dim);\n\n if (aura.dim === 0) ctx.fillStyle = aura.colour;\n else {\n const gradient = ctx.createRadialGradient(\n loc.x,\n loc.y,\n g2lr(aura.value),\n loc.x,\n loc.y,\n g2lr(aura.value + aura.dim),\n );\n const tc = tinycolor(aura.colour);\n ctx.fillStyle = gradient;\n gradient.addColorStop(0, aura.colour);\n gradient.addColorStop(1, tc.setAlpha(0).toRgbString());\n }\n if (!aura.visionSource || aura.lastPath === undefined) {\n ctx.arc(loc.x, loc.y, innerRange, 0, 2 * Math.PI);\n ctx.fill();\n } else {\n try {\n ctx.fill(aura.lastPath);\n } catch (e) {\n ctx.arc(loc.x, loc.y, innerRange, 0, 2 * Math.PI);\n ctx.fill();\n console.warn(e);\n }\n }\n }\n }\n\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.name,\n has_img: false,\n effects: [],\n index: Infinity,\n };\n }\n\n moveLayer(layer: string, sync: boolean) {\n const oldLayer = layerManager.getLayer(this.layer);\n const newLayer = layerManager.getLayer(layer);\n if (oldLayer === undefined || newLayer === undefined) return;\n this.layer = layer;\n // Update layer shapes\n oldLayer.shapes.splice(oldLayer.shapes.indexOf(this), 1);\n newLayer.shapes.push(this);\n // Revalidate layers (light should at most be redone once)\n oldLayer.invalidate(true);\n newLayer.invalidate(false);\n // Sync!\n if (sync) socket.emit(\"Shape.Layer.Change\", { uuid: this.uuid, layer });\n }\n\n get owners() {\n return Object.freeze(this._owners.slice());\n }\n\n ownedBy(username?: string) {\n if (username === undefined) username = gameStore.username;\n return gameStore.IS_DM || this._owners.includes(username) || (gameStore.FAKE_PLAYER && gameStore.activeTokens.includes(this.uuid));\n }\n\n addOwner(owner: string) {\n if (!this._owners.includes(owner)) this._owners.push(owner);\n }\n\n updateOwner(oldValue: string, newValue: string) {\n const ownerIndex = this._owners.findIndex(o => o === oldValue);\n if (ownerIndex >= 0) this._owners.splice(ownerIndex, 1, newValue);\n else this.addOwner(newValue);\n }\n\n removeOwner(owner: string) {\n const ownerIndex = this._owners.findIndex(o => o === owner);\n this._owners.splice(ownerIndex, 1);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"menuContainer\"}},[_c('div',{ref:\"rm\",style:({\n left: _vm.visible.settings ? '200px' : '0',\n top: _vm.visible.locations ? '100px' : '0'\n }),attrs:{\"id\":\"radialmenu\"}},[_c('div',{staticClass:\"rm-wrapper\"},[_c('div',{staticClass:\"rm-toggler\"},[_c('ul',{staticClass:\"rm-list\",class:{ 'rm-list-dm': _vm.IS_DM }},[(_vm.IS_DM)?_c('li',{staticClass:\"rm-item\",attrs:{\"id\":\"rm-locations\"},on:{\"click\":function($event){_vm.visible.locations = !_vm.visible.locations}}},[_vm._m(0)]):_vm._e(),_c('li',{staticClass:\"rm-item\",attrs:{\"id\":\"rm-settings\"},on:{\"click\":function($event){_vm.visible.settings = !_vm.visible.settings}}},[_vm._m(1)])])]),_vm._m(2)])]),_c('transition',{attrs:{\"name\":\"settings\"},on:{\"enter\":function($event){_vm.$refs.rm.style.transition = 'left 500ms'}}},[(_vm.visible.settings)?_c('div',{ref:\"settings\",attrs:{\"id\":\"menu\"},on:{\"click\":_vm.settingsClick}},[_c('div',{staticStyle:{\"width\":\"200px\",\"height\":\"90%\",\"overflow-y\":\"auto\",\"overflow-x\":\"hidden\"}},[(_vm.IS_DM)?[_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Assets\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('a',{staticClass:\"actionButton\",attrs:{\"href\":\"/assets\",\"target\":\"blank\",\"title\":\"Open asset manager\"}},[_c('i',{staticClass:\"fas fa-external-link-alt\"})]),_c('div',{staticClass:\"directory\",attrs:{\"id\":\"menu-tokens\"}},[_c('asset-node',{attrs:{\"asset\":_vm.assets}}),(!_vm.assets)?_c('div',[_vm._v(\"No assets\")]):_vm._e()],1)]),_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Notes\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('div',{staticClass:\"menu-accordion-subpanel\",attrs:{\"id\":\"menu-notes\"}},[_c('a',{staticClass:\"actionButton\",on:{\"click\":_vm.createNote}},[_c('i',{staticClass:\"far fa-plus-square\"})]),_vm._l((_vm.notes),function(note){return _c('div',{key:note.uuid,staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.openNote(note)}}},[_vm._v(_vm._s(note.title || \"[?]\"))])}),(!_vm.notes.length)?_c('div',[_vm._v(\"No notes\")]):_vm._e()],2)]),_c('button',{staticClass:\"menu-accordion\",on:{\"click\":_vm.openDmSettings}},[_vm._v(\"DM Options\")])]:_vm._e(),_c('button',{staticClass:\"menu-accordion\"},[_vm._v(\"Client Options\")]),_c('div',{staticClass:\"menu-accordion-panel\"},[_c('div',{staticClass:\"menu-accordion-subpanel\"},[_c('label',{attrs:{\"for\":\"gridColour\"}},[_vm._v(\"Grid Colour:\")]),_c('color-picker',{attrs:{\"id\":\"gridColour\",\"color\":_vm.gridColour},on:{\"update:color\":function($event){_vm.gridColour=$event}}}),_c('label',{attrs:{\"for\":\"fowColour\"}},[_vm._v(\"FOW Colour:\")]),_c('color-picker',{attrs:{\"id\":\"fowColour\",\"color\":_vm.fowColour},on:{\"update:color\":function($event){_vm.fowColour=$event}}}),_c('label',{attrs:{\"for\":\"rulerColour\"}},[_vm._v(\"Ruler Colour:\")]),_c('color-picker',{attrs:{\"id\":\"rulerColour\",\"color\":_vm.rulerColour},on:{\"update:color\":function($event){_vm.rulerColour=$event}}})],1)])],2),_c('router-link',{staticClass:\"menu-accordion\",staticStyle:{\"text-decoration\":\"none\",\"display\":\"inline-block\",\"position\":\"absolute\",\"bottom\":\"0\"},attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"Exit\")])],1):_vm._e()]),_c('transition',{attrs:{\"name\":\"locations\"},on:{\"enter\":function($event){_vm.$refs.rm.style.transition = 'top 500ms'}}},[(_vm.IS_DM && _vm.visible.locations)?_c('div',{attrs:{\"id\":\"locations-menu\"}},[_c('div',[_vm._l((_vm.locations),function(location){return _c('div',{key:location,on:{\"click\":function($event){return _vm.changeLocation(location)}}},[_vm._v(_vm._s(location))])}),_c('div',{on:{\"click\":_vm.createLocation}},[_c('i',{staticClass:\"fas fa-plus\"})])],2)]):_vm._e()]),_c('img',{attrs:{\"id\":\"dragImage\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"#\"}},[_c('i',{staticClass:\"far fa-compass\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{attrs:{\"href\":\"#\"}},[_c('i',{staticClass:\"fas fa-cog\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"rm-topper\"},[_c('i',{staticClass:\"icon-share-alt\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=template&id=c7fe324c&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.note !== null)?_c('modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('span',{on:{\"click\":function($event){return _vm.$refs.title.select()}}},[_c('i',{staticClass:\"fas fa-pencil-alt\",staticStyle:{\"font-size\":\"15px\"}})]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.title),expression:\"note.title\"}],ref:\"title\",domProps:{\"value\":(_vm.note.title)},on:{\"change\":_vm.updateNote,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.note, \"title\", $event.target.value)}}}),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}],null,false,1320213373)},[_c('div',{staticClass:\"modal-body\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.note.text),expression:\"note.text\"}],ref:\"textarea\",style:({'height': _vm.calcHeight()}),domProps:{\"value\":(_vm.note.text)},on:{\"change\":_vm.updateNote,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.note, \"text\", $event.target.value)}}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.removeNote}},[_c('i',{staticClass:\"far fa-trash-alt\"}),_vm._v(\" Remove\\n \")])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=template&id=7a3669fd&scoped=true&\"","\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport SelectContext from \"@/game/ui/tools/selectcontext.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\nimport SelectionInfo from \"../selection/selection_info.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint, LocalPoint, Ray, Vector } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz, l2g, l2gz } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\nexport enum SelectOperations {\n Noop,\n Resize,\n Drag,\n GroupSelect,\n}\n\nconst start = new GlobalPoint(-1000, -1000);\n\n@Component({\n components: {\n SelectContext,\n },\n})\nexport default class SelectTool extends Tool {\n name = \"Select\";\n showContextMenu = false;\n active = false;\n\n mode = SelectOperations.Noop;\n resizePoint = 0;\n deltaChanged = false;\n // Because we never drag from the asset's (0, 0) coord and want a smoother drag experience\n // we keep track of the actual offset within the asset.\n dragRay = new Ray(new LocalPoint(0, 0), new Vector(0, 0));\n selectionStartPoint = start;\n selectionHelper = new Rect(start, 0, 0);\n created() {\n this.selectionHelper.globalCompositeOperation = \"source-over\";\n }\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n if (!this.selectionHelper.owners.includes(gameStore.username)) {\n this.selectionHelper.addOwner(gameStore.username);\n }\n\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n\n let hit = false;\n // The selectionStack allows for lower positioned objects that are selected to have precedence during overlap.\n let selectionStack;\n if (!layer.selection.length) selectionStack = layer.shapes;\n else selectionStack = layer.shapes.concat(layer.selection);\n for (let i = selectionStack.length - 1; i >= 0; i--) {\n const shape = selectionStack[i];\n\n this.resizePoint = shape.getPointIndex(globalMouse, l2gz(3));\n\n // Resize case, a corner is selected\n if (this.resizePoint >= 0) {\n layer.selection = [shape];\n getRef(\"selectionInfo\").shape = shape;\n this.mode = SelectOperations.Resize;\n layer.invalidate(true);\n hit = true;\n break;\n\n // Drag case, a shape is selected\n } else if (shape.contains(globalMouse)) {\n const selection = shape;\n if (layer.selection.indexOf(selection) === -1) {\n layer.selection = [selection];\n getRef(\"selectionInfo\").shape = selection;\n }\n this.mode = SelectOperations.Drag;\n const localRefPoint = g2l(selection.refPoint);\n this.dragRay = new Ray(localRefPoint, mouse.subtract(localRefPoint));\n layer.invalidate(true);\n hit = true;\n break;\n }\n }\n\n // GroupSelect case, draw a selection box to select multiple shapes\n if (!hit) {\n this.mode = SelectOperations.GroupSelect;\n for (const selection of layer.selection) getRef(\"selectionInfo\").shape = selection;\n\n this.selectionStartPoint = globalMouse;\n\n this.selectionHelper.refPoint = this.selectionStartPoint;\n this.selectionHelper.w = 0;\n this.selectionHelper.h = 0;\n\n layer.selection = [this.selectionHelper];\n layer.invalidate(true);\n }\n this.active = true;\n }\n onMouseMove(event: MouseEvent) {\n // if (!this.active) return; we require mousemove for the resize cursor\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n this.deltaChanged = false;\n\n if (this.mode === SelectOperations.GroupSelect) {\n // Currently draw on active layer\n const endPoint = globalMouse;\n\n this.selectionHelper.w = Math.abs(endPoint.x - this.selectionStartPoint.x);\n this.selectionHelper.h = Math.abs(endPoint.y - this.selectionStartPoint.y);\n this.selectionHelper.refPoint = new GlobalPoint(\n Math.min(this.selectionStartPoint.x, endPoint.x),\n Math.min(this.selectionStartPoint.y, endPoint.y),\n );\n layer.invalidate(true);\n } else if (layer.selection.length) {\n const og = g2l(layer.selection[layer.selection.length - 1].refPoint);\n const origin = og.add(this.dragRay.direction);\n let delta = mouse.subtract(origin).multiply(1 / gameStore.zoomFactor);\n const ogDelta = delta;\n if (this.mode === SelectOperations.Drag) {\n // If we are on the tokens layer do a movement block check.\n if (layer.name === \"tokens\" && !(event.shiftKey && gameStore.IS_DM)) {\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n if (sel.uuid === this.selectionHelper.uuid) continue; // the selection helper should not be treated as a real shape.\n delta = calculateDelta(delta, sel);\n if (delta !== ogDelta) this.deltaChanged = true;\n }\n }\n // Actually apply the delta on all shapes\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n sel.refPoint = sel.refPoint.add(delta);\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision(true);\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: true });\n }\n }\n layer.invalidate(false);\n } else if (this.mode === SelectOperations.Resize) {\n for (const sel of layer.selection) {\n if (!sel.ownedBy()) continue;\n sel.resize(this.resizePoint, mouse);\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision(true);\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: true });\n }\n layer.invalidate(false);\n this.updateCursor(layer, globalMouse);\n }\n } else {\n this.updateCursor(layer, globalMouse);\n }\n } else {\n document.body.style.cursor = \"default\";\n }\n }\n onMouseUp(e: MouseEvent): void {\n if (!this.active) return;\n if (layerManager.getLayer() === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const layer = layerManager.getLayer()!;\n\n if (this.mode === SelectOperations.GroupSelect) {\n layer.clearSelection();\n layer.shapes.forEach(shape => {\n if (!shape.ownedBy()) return;\n if (shape === this.selectionHelper) return;\n const bbox = shape.getBoundingBox();\n if (!shape.ownedBy()) return;\n if (\n this.selectionHelper!.refPoint.x <= bbox.topRight.x &&\n this.selectionHelper!.refPoint.x + this.selectionHelper!.w >= bbox.topLeft.x &&\n this.selectionHelper!.refPoint.y <= bbox.botLeft.y &&\n this.selectionHelper!.refPoint.y + this.selectionHelper!.h >= bbox.topLeft.y\n ) {\n layer.selection.push(shape);\n }\n });\n\n // Push the selection helper as the last element of the selection\n // This makes sure that it will be the first one to be hit in the hit detection onMouseDown\n if (layer.selection.length > 0) layer.selection.push(this.selectionHelper);\n\n layer.invalidate(true);\n } else if (layer.selection.length) {\n layer.selection.forEach(sel => {\n if (!sel.ownedBy()) return;\n if (this.mode === SelectOperations.Drag) {\n if (\n this.dragRay.origin!.x === g2lx(sel.refPoint.x) &&\n this.dragRay.origin!.y === g2ly(sel.refPoint.y)\n )\n return;\n\n if (gameStore.useGrid && !e.altKey && !this.deltaChanged) {\n sel.snapToGrid();\n }\n\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision();\n if (sel.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n layer.invalidate(false);\n }\n if (this.mode === SelectOperations.Resize) {\n if (gameStore.useGrid && !e.altKey) {\n sel.resizeToGrid();\n }\n if (sel !== this.selectionHelper) {\n if (sel.visionObstruction) gameStore.recalculateVision();\n if (sel.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n layer.invalidate(false);\n }\n });\n }\n this.mode = SelectOperations.Noop;\n this.active = false;\n }\n onContextMenu(event: MouseEvent) {\n if (layerManager.getLayer() === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n const layer = layerManager.getLayer()!;\n const mouse = getMouse(event);\n const globalMouse = l2g(mouse);\n\n for (const shape of layer.selection) {\n if (shape.contains(globalMouse) && shape !== this.selectionHelper) {\n layer.selection = [shape];\n getRef(\"selectionInfo\").shape = shape;\n layer.invalidate(true);\n (this.$parent.$refs.shapecontext).open(event, shape);\n return;\n }\n }\n (this.$refs.selectcontext).open(event);\n }\n updateCursor(layer: Layer, globalMouse: GlobalPoint) {\n for (const sel of layer.selection) {\n const resizePoint = sel.getPointIndex(globalMouse, l2gz(3));\n if (resizePoint < 0) document.body.style.cursor = \"default\";\n else {\n let angle = sel.getPointOrientation(resizePoint).angle();\n if (angle < 0) angle += 360;\n const d = 45 / 2;\n if (angle >= 315 + d || angle < d || (angle >= 135 + d && angle < 225 - d))\n document.body.style.cursor = \"ew-resize\";\n if ((angle >= 45 + d && angle < 135 - d) || (angle >= 225 + d && angle < 315 - d))\n document.body.style.cursor = \"ns-resize\";\n if ((angle >= d && angle < 90 - d) || (angle >= 180 + d && angle < 270 - d))\n document.body.style.cursor = \"nwse-resize\";\n if ((angle >= 90 + d && angle < 180 - d) || (angle >= 270 + d && angle < 360 - d))\n document.body.style.cursor = \"nesw-resize\";\n }\n }\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport InputCopyElement from \"@/core/components/inputCopy.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\nimport Prompt from '../../core/components/modals/prompt.vue';\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\nimport { layerManager } from \"../layers/manager\";\n\n@Component({\n components: {\n InputCopyElement,\n Modal,\n },\n computed: {\n ...mapState(\"game\", [\"invitationCode\"]),\n },\n})\nexport default class DmSettings extends Vue {\n visible = false;\n categories = [\"Admin\", \"Grid\", \"Vision\"];\n selection = 0;\n\n showRefreshState = false;\n refreshState = \"pending\";\n\n mounted() {\n EventBus.$on(\"DmSettings.Open\", () => {\n this.visible = true;\n });\n EventBus.$on(\"DmSettings.RefreshedInviteCode\", () => {\n this.showRefreshState = false;\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"DmSettings.Open\");\n EventBus.$off(\"DmSettings.RefreshedInviteCode\");\n }\n\n // Admin\n get invitationUrl(): string {\n return window.location.protocol + '//' + window.location.host + '/invite/' + gameStore.invitationCode;\n }\n get locked(): boolean {\n return gameStore.isLocked;\n }\n // Grid\n get useGrid(): boolean {\n return gameStore.useGrid;\n }\n set useGrid(value: boolean) {\n gameStore.setUseGrid({ useGrid: value, sync: true });\n }\n get unitSize(): number {\n return gameStore.unitSize;\n }\n set unitSize(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setUnitSize({ unitSize: value, sync: true });\n }\n get gridSize(): number {\n return gameStore.gridSize;\n }\n set gridSize(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setGridSize({ gridSize: value, sync: true });\n }\n // Vision\n get fakePlayer(): boolean {\n return gameStore.FAKE_PLAYER;\n }\n set fakePlayer(value: boolean) {\n gameStore.setFakePlayer(value);\n }\n get fullFOW(): boolean {\n return gameStore.fullFOW;\n }\n set fullFOW(value: boolean) {\n gameStore.setFullFOW({ fullFOW: value, sync: true });\n }\n get fowOpacity(): number {\n return gameStore.fowOpacity;\n }\n set fowOpacity(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setFOWOpacity({ fowOpacity: value, sync: true });\n }\n get fowLOS(): boolean {\n return gameStore.fowLOS;\n }\n set fowLOS(value: boolean) {\n gameStore.setLineOfSight({ fowLOS: value, sync: true });\n }\n get visionRangeMin(): number {\n return gameStore.visionRangeMin;\n }\n set visionRangeMin(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setVisionRangeMin({ value, sync: true });\n }\n get visionRangeMax(): number {\n return gameStore.visionRangeMax;\n }\n set visionRangeMax(value: number) {\n if (typeof value !== \"number\") return;\n gameStore.setVisionRangeMax({ value, sync: true });\n }\n changeVisionMode(event: { target: HTMLSelectElement }) {\n const value = event.target.value.toLowerCase();\n if (value !== \"bvh\" && value !== \"triangle\") return;\n gameStore.setVisionMode({ mode: value, sync: true });\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n layerManager.invalidate();\n }\n handleClick(event: { target: HTMLElement }) {\n const child = event.target.firstElementChild;\n if (child instanceof HTMLInputElement) {\n child.click();\n }\n }\n refreshInviteCode() {\n socket.emit(\"Room.Info.InviteCode.Refresh\");\n this.refreshState = \"pending\";\n this.showRefreshState = true;\n }\n kickPlayer(id: number) {\n socket.emit(\"Room.Info.Players.Kick\", id);\n gameStore.kickPlayer(id);\n }\n toggleSessionLock() {\n gameStore.setIsLocked({isLocked: !gameStore.isLocked, sync: true});\n }\n deleteSession() {\n getRef(\"prompt\")\n .prompt(`ENTER ${gameStore.roomCreator}/${gameStore.roomName} TO CONFIRM SESSION REMOVAL.`, `DELETING SESSION`)\n .then(\n (value: string) => {\n if (value !== `${gameStore.roomCreator}/${gameStore.roomName}`) return;\n socket.emit(\"Room.Delete\");\n this.$router.push(\"/\");\n },\n () => {},\n );\n }\n}\n","import { GlobalPoint, Ray, Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { PA_CDT } from \"@/game/visibility/te/pa\";\nimport { Point, Sign, Triangle } from \"@/game/visibility/te/tds\";\nimport { ccw, cw, intersection, orientation } from \"@/game/visibility/te/triag\";\n\n// First go through each shape in the selection and see if the delta has to be truncated due to movement blockers\n\n// This is definitely super convoluted and inefficient but I was tired and really wanted the smooth wall sliding collision stuff to work\n// And it does now, so hey ¯\\_(ツ)_/¯\nexport function calculateDelta(delta: Vector, sel: Shape, done?: string[]) {\n if (delta.x === 0 && delta.y === 0) return delta;\n if (gameStore.visionMode === \"bvh\") {\n if (done === undefined) done = [];\n const ogSelBBox = sel.getBoundingBox();\n const newSelBBox = ogSelBBox.offset(delta);\n let refine = false;\n for (const movementBlocker of gameStore.movementblockers) {\n if (done.includes(movementBlocker)) continue;\n const blocker = layerManager.UUIDMap.get(movementBlocker)!;\n const blockerBBox = blocker.getBoundingBox();\n let found = blockerBBox.intersectsWithInner(newSelBBox);\n if (!found) {\n // This is an edge case, precalculating the rays is not worth in this case.\n const ray = Ray.fromPoints(ogSelBBox.topLeft.add(delta.normalize()), newSelBBox.topLeft);\n const invDir = ray.direction.inverse();\n const dirIsNegative = [invDir.x < 0, invDir.y < 0];\n found = blockerBBox.intersectP(ray, invDir, dirIsNegative).hit;\n }\n // Check if the bounding box of our destination would intersect with the bounding box of the movementblocker\n if (found) {\n const bCenter = blockerBBox.center();\n const sCenter = ogSelBBox.center();\n\n const d = sCenter.subtract(bCenter);\n const ux = new Vector(1, 0);\n const uy = new Vector(0, 1);\n let dx = d.dot(ux);\n let dy = d.dot(uy);\n if (dx > blockerBBox.w / 2) dx = blockerBBox.w / 2;\n if (dx < -blockerBBox.w / 2) dx = -blockerBBox.w / 2;\n if (dy > blockerBBox.h / 2) dy = blockerBBox.h / 2;\n if (dy < -blockerBBox.h / 2) dy = -blockerBBox.h / 2;\n\n // Closest point / intersection point between the two bboxes. Not the delta intersect!\n const p = bCenter.add(ux.multiply(dx)).add(uy.multiply(dy));\n\n if (p.x === ogSelBBox.topLeft.x || p.x === ogSelBBox.topRight.x) delta = new Vector(0, delta.y);\n else if (p.y === ogSelBBox.topLeft.y || p.y === ogSelBBox.botLeft.y) delta = new Vector(delta.x, 0);\n else {\n if (p.x < ogSelBBox.topLeft.x) delta = new Vector(p.x - ogSelBBox.topLeft.x, delta.y);\n else if (p.x > ogSelBBox.topRight.x) delta = new Vector(p.x - ogSelBBox.topRight.x, delta.y);\n else if (p.y < ogSelBBox.topLeft.y) delta = new Vector(delta.x, p.y - ogSelBBox.topLeft.y);\n else if (p.y > ogSelBBox.botLeft.y) delta = new Vector(delta.x, p.y - ogSelBBox.botLeft.y);\n }\n refine = true;\n done.push(movementBlocker);\n break;\n }\n }\n if (refine) delta = calculateDelta(delta, sel, done);\n return delta;\n } else {\n const centerTriangle = PA_CDT.movement.locate(sel.center().asArray(), null).loc;\n for (const point of sel.points) {\n const lt = PA_CDT.movement.locate(point, centerTriangle);\n const triangle = lt.loc;\n if (triangle === null) continue;\n delta = checkTriangle(point, triangle, delta);\n }\n return delta;\n }\n}\n\nfunction checkTriangle(point: Point, triangle: Triangle, delta: Vector, skip: Triangle[] = []): Vector {\n const p = new GlobalPoint(point[0], point[1]);\n const endpoint = p.add(delta).asArray();\n if (triangle.contains(endpoint)) return delta;\n skip.push(triangle);\n\n for (let i = 0; i < 3; i++) {\n if (skip.includes(triangle.neighbours[i]!)) continue;\n\n const _cw = triangle.vertices[cw(i)]!.point!;\n const _ccw = triangle.vertices[ccw(i)]!.point!;\n const ix = intersection(point, endpoint, _cw, _ccw);\n\n if (ix === null) continue;\n\n if (!triangle.isConstrained(i)) return checkTriangle(point, triangle.neighbours[i]!, delta, skip);\n\n if (ix[0] === p.x && ix[1] === p.y) {\n const OR = orientation;\n const o = orientation(point, endpoint, _ccw);\n // Remember: canvas y axis is inverted\n if (o === Sign.LEFT_TURN) continue;\n if (o === Sign.ZERO) continue;\n }\n let newDelta = new GlobalPoint(ix[0], ix[1]).subtract(p).multiply(0.8);\n if (newDelta.length() < 1) newDelta = new Vector(0, 0);\n if (newDelta.length() < delta.length()) delta = newDelta;\n }\n return delta;\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=script&lang=ts&\"","import { socket } from \"@/game/api/socket\";\nimport { gameStore } from \"@/game/store\";\n\nexport function sendClientOptions() {\n socket.emit(\"Client.Options.Set\", {\n locationOptions: {\n panX: gameStore.panX,\n panY: gameStore.panY,\n zoomFactor: gameStore.zoomFactor,\n },\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\n\nimport { AssetFile, AssetList } from \"@/core/comm/types\";\nimport { alphSort } from \"@/core/utils\";\n\n@Component({\n name: \"asset-node\",\n})\nexport default class AssetNode extends Vue {\n @Prop() asset!: AssetList;\n\n showImage = null;\n get folders(): string[] {\n return Object.keys(this.asset)\n .filter(el => ![\"__files\"].includes(el))\n .sort(alphSort);\n }\n\n get files(): AssetFile[] {\n if (this.asset.__files)\n return (this.asset.__files)\n .concat()\n .sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1));\n return [];\n }\n\n toggle(event: { target: HTMLElement }) {\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < event.target.children.length; i++) {\n const el = event.target.children[i];\n el.style.display = el.style.display === \"\" ? \"block\" : \"\";\n }\n }\n\n dragStart(event: DragEvent, imageSource: string) {\n this.showImage = null;\n if (event === null || event.dataTransfer === null) return;\n const img = (event.target).querySelector(\".preview\")!;\n event.dataTransfer.setDragImage(img, 0, 0);\n event.dataTransfer.setData(\"text/plain\", imageSource);\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"ContextMenu\",style:({left:_vm.left, top:_vm.top}),attrs:{\"tabindex\":\"-1\"},on:{\"blur\":function($event){return _vm.$emit('close')}}},[_c('ul',[_vm._t(\"default\")],2)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=template&id=256dde9c&\"","// import Vuex from \"vuex\";\nimport { getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { Asset } from \"@/core/comm/types\";\nimport { rootStore } from \"@/store\";\n\nexport interface AssetState {\n root: number;\n files: number[];\n folders: number[];\n idMap: Map;\n selected: number[];\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"assets\", namespaced: true })\nclass AssetStore extends VuexModule {\n root = -1;\n files: number[] = [];\n folders: number[] = [];\n idMap: Map = new Map();\n selected: number[] = [];\n\n @Mutation\n clear() {\n this.folders = [];\n this.files = [];\n }\n\n @Mutation\n clearSelected() {\n console.log(\"Cleared\");\n this.selected = [];\n }\n\n @Mutation\n setRoot(root: number) {\n this.root = root;\n }\n}\n\nexport const assetStore = getModule(AssetStore);\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\nimport Initiative from \"@/game/ui/initiative.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class ShapeContext extends Vue {\n visible = false;\n x = 0;\n y = 0;\n shape: Shape | null = null;\n get activeLayer(): string {\n const layer = layerManager.getLayer();\n return layer === undefined ? \"\" : layer.name;\n }\n open(event: MouseEvent, shape: Shape) {\n this.visible = true;\n this.x = event.pageX;\n this.y = event.pageY;\n this.shape = shape;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n close() {\n this.visible = false;\n this.shape = null;\n }\n getLayers() {\n return layerManager.layers.filter(l => l.selectable && (gameStore.IS_DM || l.playerEditable));\n }\n getActiveLayer() {\n return layerManager.getLayer();\n }\n getInitiativeWord() {\n if (this.shape === null) return \"\";\n return getRef(\"initiative\").contains(this.shape.uuid) ? \"Show\" : \"Add\";\n }\n setLayer(newLayer: string) {\n if (this.shape === null) return;\n this.shape.moveLayer(newLayer, true);\n this.close();\n }\n moveToBack() {\n if (this.shape === null) return;\n const layer = this.getActiveLayer()!;\n layer.moveShapeOrder(this.shape, 0, true);\n this.close();\n }\n moveToFront() {\n if (this.shape === null) return;\n const layer = this.getActiveLayer()!;\n layer.moveShapeOrder(this.shape, layer.shapes.length - 1, true);\n this.close();\n }\n addInitiative() {\n if (this.shape === null) return;\n const initiative = getRef(\"initiative\");\n if (!initiative.contains(this.shape.uuid)) initiative.addInitiative(this.shape.getInitiativeRepr());\n initiative.visible = true;\n this.close();\n }\n openEditDialog() {\n EventBus.$emit(\"EditDialog.Open\", this.shape);\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=style&index=0&id=c7fe324c&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class InputCopyElement extends Vue {\n @Prop() value!: string;\n\n borderColour = \"lightgray\";\n popupString = \"\";\n showPopup = false;\n\n copy() {\n (navigator).clipboard.writeText(this.value).then(\n () => {\n this.popupString = \"Copied!\";\n this.showPopup = true;\n },\n () => {\n console.log(\"Could not copy to clipboard :(\");\n this.popupString = \"Error!\";\n this.showPopup = true;\n },\n );\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.left + 'px',\"top\":_vm.top + 'px'},on:{\"close\":_vm.close}},[_c('li',{on:{\"click\":_vm.rename}},[_vm._v(\"Rename\")]),_c('li',{on:{\"click\":_vm.remove}},[_vm._v(\"Remove\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=template&id=dbbd4d08&\"","import { Layer } from \"@/game/layers/layer\";\nimport { gameStore } from \"@/game/store\";\n\nexport class GridLayer extends Layer {\n invalidate(): void {\n this.valid = false;\n }\n draw(doClear?: boolean): void {\n if (!this.valid) {\n this.drawGrid();\n }\n }\n drawGrid(): void {\n const ctx = this.ctx;\n this.clear();\n ctx.beginPath();\n\n const gs = gameStore.gridSize;\n\n for (let i = 0; i < this.width; i += gs * gameStore.zoomFactor) {\n ctx.moveTo(i + (gameStore.panX % gs) * gameStore.zoomFactor, 0);\n ctx.lineTo(i + (gameStore.panX % gs) * gameStore.zoomFactor, this.height);\n ctx.moveTo(0, i + (gameStore.panY % gs) * gameStore.zoomFactor);\n ctx.lineTo(this.width, i + (gameStore.panY % gs) * gameStore.zoomFactor);\n }\n\n ctx.strokeStyle = gameStore.gridColour;\n ctx.lineWidth = 1;\n ctx.stroke();\n this.valid = true;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"outer\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.open($event)}}},[_c('div',{staticClass:\"current-color\",style:(_vm.transparent ? 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)' : 'background-color:' + _vm.color),on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.open($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],staticClass:\"mask\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.closePicker($event)}}}),_c('chrome-picker',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.display),expression:\"display\"}],ref:\"chromePicker\",style:({position: 'fixed', left:_vm.left + 'px', top:_vm.top + 'px', 'z-index': 9999}),attrs:{\"value\":_vm.color,\"tabindex\":\"-1\"},on:{\"input\":_vm.updateColor}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=template&id=f8744d60&scoped=true&\"","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport { AssetState } from \"@/assetManager/store\";\nimport { CoreState } from \"@/core/store\";\nimport { GameState } from \"@/game/store\";\n\nVue.use(Vuex);\n\nexport interface RootState {\n assets: AssetState;\n core: CoreState;\n game: GameState;\n}\n\nexport const rootStore = new Vuex.Store({});\n","import { render, staticRenderFns } from \"./colorpicker.vue?vue&type=template&id=f8744d60&scoped=true&\"\nimport script from \"./colorpicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./colorpicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./colorpicker.vue?vue&type=style&index=0&id=f8744d60&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f8744d60\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { Shape } from \"../../shapes/shape\";\n\n@Component\nexport default class VisionTool extends Tool {\n name = \"Vision\";\n active = false;\n\n get selection(): string[] {\n return gameStore.activeTokens;\n }\n\n get tokens(): Shape[] {\n return gameStore.ownedtokens.map(t => layerManager.UUIDMap.get(t)!);\n }\n\n toggle(uuid: string) {\n if (this.selection.includes(uuid)) gameStore.removeActiveToken(uuid);\n else gameStore.addActiveToken(uuid);\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=style&index=0&id=bc30fc14&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view',{ref:\"activeComponent\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=196415f0&\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { GlobalPoint, Ray } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Settings } from \"@/game/settings\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly, g2lz, getUnitDistance } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\nimport { computeVisibility } from \"../visibility/te/te\";\n\nexport class FOWLayer extends Layer {\n isVisionLayer: boolean = true;\n preFogShapes: Shape[] = [];\n virtualCanvas: HTMLCanvasElement;\n vCtx: CanvasRenderingContext2D;\n\n constructor(canvas: HTMLCanvasElement, name: string) {\n super(canvas, name);\n this.virtualCanvas = document.createElement(\"canvas\");\n this.virtualCanvas.width = window.innerWidth;\n this.virtualCanvas.height = window.innerHeight;\n this.vCtx = this.virtualCanvas.getContext(\"2d\")!;\n }\n\n addShape(shape: Shape, sync: boolean, temporary?: boolean, invalidate = true): void {\n super.addShape(shape, sync, temporary, invalidate);\n if (shape.options.has(\"preFogShape\") && shape.options.get(\"preFogShape\")) {\n this.preFogShapes.push(shape);\n }\n }\n\n removeShape(shape: Shape, sync: boolean, temporary?: boolean) {\n if (shape.options.has(\"preFogShape\") && shape.options.get(\"preFogShape\")) {\n const idx = this.preFogShapes.findIndex(s => s.uuid === shape.uuid);\n this.preFogShapes.splice(idx, 1);\n }\n super.removeShape(shape, sync, temporary);\n }\n\n draw(): void {\n if (!this.valid) {\n const ctx = this.ctx;\n\n if (Settings.skipLightFOW) {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.valid = true;\n return;\n }\n\n const originalOperation = ctx.globalCompositeOperation;\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n\n const dctx = layerManager.getLayer(\"draw\")!.ctx;\n if (Settings.drawAngleLines || Settings.drawFirstLightHit) {\n dctx.clearRect(0, 0, dctx.canvas.width, dctx.canvas.height);\n }\n\n // At all times provide a minimal vision range to prevent losing your tokens in fog.\n if (gameStore.fullFOW && layerManager.hasLayer(\"tokens\")) {\n layerManager.getLayer(\"tokens\")!.shapes.forEach(sh => {\n if (!sh.ownedBy() || !sh.isToken) return;\n const bb = sh.getBoundingBox();\n const lcenter = g2l(sh.center());\n const alm = 0.8 * g2lz(bb.w);\n ctx.beginPath();\n ctx.arc(lcenter.x, lcenter.y, alm, 0, 2 * Math.PI);\n const gradient = ctx.createRadialGradient(lcenter.x, lcenter.y, alm / 2, lcenter.x, lcenter.y, alm);\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n ctx.fill();\n });\n }\n\n this.vCtx.clearRect(0, 0, window.innerWidth, window.innerHeight);\n\n // First cut out all the light sources\n for (const light of gameStore.visionSources) {\n const shape = layerManager.UUIDMap.get(light.shape);\n if (shape === undefined) continue;\n const aura = shape.auras.find(a => a.uuid === light.aura);\n if (aura === undefined) continue;\n\n const auraLength = getUnitDistance(aura.value + aura.dim);\n const center = shape.center();\n const lcenter = g2l(center);\n\n const auraCircle = new Circle(center, auraLength);\n if (!auraCircle.visibleInCanvas(ctx.canvas)) continue;\n\n if (gameStore.visionMode === \"bvh\") {\n let lastArcAngle = -1;\n\n const path = new Path2D();\n path.moveTo(lcenter.x, lcenter.y);\n let firstPoint: GlobalPoint;\n\n for (let angle = 0; angle < 2 * Math.PI; angle += (Settings.angleSteps / 180) * Math.PI) {\n const anglePoint = new GlobalPoint(\n center.x + auraLength * Math.cos(angle),\n center.y + auraLength * Math.sin(angle),\n );\n if (Settings.drawAngleLines) {\n dctx!.beginPath();\n dctx!.moveTo(g2lx(center.x), g2ly(center.y));\n dctx!.lineTo(g2lx(anglePoint.x), g2ly(anglePoint.y));\n dctx!.stroke();\n }\n\n // Check if there is a hit with one of the nearby light blockers.\n const lightRay = Ray.fromPoints(center, anglePoint);\n const hitResult = gameStore.BV.intersect(lightRay);\n\n if (angle === 0) firstPoint = hitResult.hit ? hitResult.intersect : anglePoint;\n\n // We can move on to the next angle if nothing was hit.\n if (!hitResult.hit) {\n // If an earlier hit caused the aura to leave the arc, we need to go back to the arc\n if (lastArcAngle === -1) {\n // Set the start of a new arc beginning at the current angle\n lastArcAngle = angle;\n // Draw a line from the last non arc location back to the arc\n const dest = g2l(anglePoint);\n ctx.lineTo(dest.x, dest.y);\n }\n continue;\n }\n // If hit , first finish any ongoing arc, then move to the intersection point\n if (lastArcAngle !== -1) {\n path.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), lastArcAngle, angle);\n lastArcAngle = -1;\n }\n path.lineTo(g2lx(hitResult.intersect.x), g2ly(hitResult.intersect.y));\n }\n // Finish the final arc.\n if (lastArcAngle === -1) path.lineTo(g2lx(firstPoint!.x), g2ly(firstPoint!.y));\n else path.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), lastArcAngle, 2 * Math.PI);\n\n if (gameStore.fullFOW) {\n if (aura.dim > 0) {\n // Fill the light aura with a radial dropoff towards the outside.\n const gradient = ctx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(aura.value),\n lcenter.x,\n lcenter.y,\n g2lr(aura.value + aura.dim),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n } else {\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n ctx.fill(path);\n }\n\n aura.lastPath = path;\n } else {\n this.vCtx.globalCompositeOperation = \"source-over\";\n this.vCtx.fillStyle = \"rgba(0, 0, 0, 1)\";\n const polygon = computeVisibility(center, \"vision\");\n this.vCtx.beginPath();\n this.vCtx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) this.vCtx.lineTo(g2lx(point[0]), g2ly(point[1]));\n this.vCtx.closePath();\n this.vCtx.fill();\n if (aura.dim > 0) {\n // Fill the light aura with a radial dropoff towards the outside.\n const gradient = this.vCtx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(aura.value),\n lcenter.x,\n lcenter.y,\n g2lr(aura.value + aura.dim),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n this.vCtx.fillStyle = gradient;\n } else {\n this.vCtx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n this.vCtx.globalCompositeOperation = \"source-in\";\n this.vCtx.beginPath();\n this.vCtx.arc(lcenter.x, lcenter.y, g2lr(aura.value + aura.dim), 0, 2 * Math.PI);\n this.vCtx.fill();\n ctx.drawImage(this.virtualCanvas, 0, 0);\n }\n }\n\n // At the DM Side due to opacity of the two fow layers, it looks strange if we just render them on top of eachother like players.\n if (gameStore.fowLOS) {\n ctx.globalCompositeOperation = \"source-in\";\n ctx.drawImage(layerManager.getLayer(\"fow-players\")!.canvas, 0, 0);\n }\n\n for (const preShape of this.preFogShapes) {\n if (!preShape.visibleInCanvas(this.canvas)) continue;\n const ogComposite = preShape.globalCompositeOperation;\n if (!gameStore.fullFOW) {\n if (preShape.globalCompositeOperation === \"source-over\")\n preShape.globalCompositeOperation = \"destination-out\";\n else if (preShape.globalCompositeOperation === \"destination-out\")\n preShape.globalCompositeOperation = \"source-over\";\n }\n preShape.draw(ctx);\n preShape.globalCompositeOperation = ogComposite;\n }\n\n if (gameStore.fullFOW) {\n ctx.globalCompositeOperation = \"source-out\";\n ctx.fillStyle = getFogColour();\n ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n }\n\n super.draw(false);\n\n ctx.globalCompositeOperation = originalOperation;\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Edit asset\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('div',{staticClass:\"grid\"},[_c('label',{attrs:{\"for\":\"shapeselectiondialog-name\"}},[_vm._v(\"Name\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shape.name),expression:\"shape.name\"}],staticStyle:{\"grid-column\":\"numerator / remove\"},attrs:{\"type\":\"text\",\"id\":\"shapeselectiondialog-name\",\"disabled\":!_vm.owned},domProps:{\"value\":(_vm.shape.name)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.shape, \"name\", $event.target.value)}}}),_c('div',{style:({opacity: _vm.shape.nameVisible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){_vm.shape.nameVisible = !_vm.shape.nameVisible;_vm.updateShape(false)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('label',{attrs:{\"for\":\"shapeselectiondialog-istoken\"}},[_vm._v(\"Is a token\")]),_c('input',{staticClass:\"styled-checkbox\",staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-istoken\",\"disabled\":!_vm.owned},domProps:{\"checked\":_vm.shape.isToken},on:{\"click\":_vm.setToken}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-visionblocker\"}},[_vm._v(\"Blocks vision/light\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shape.visionObstruction),expression:\"shape.visionObstruction\"}],staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-visionblocker\",\"disabled\":!_vm.owned},domProps:{\"checked\":Array.isArray(_vm.shape.visionObstruction)?_vm._i(_vm.shape.visionObstruction,null)>-1:(_vm.shape.visionObstruction)},on:{\"change\":[function($event){var $$a=_vm.shape.visionObstruction,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.shape, \"visionObstruction\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.shape, \"visionObstruction\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.shape, \"visionObstruction\", $$c)}},_vm.setVisionBlocker]}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-moveblocker\"}},[_vm._v(\"Blocks movement\")]),_c('input',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"type\":\"checkbox\",\"id\":\"shapeselectiondialog-moveblocker\",\"disabled\":!_vm.owned},domProps:{\"checked\":_vm.shape.movementObstruction},on:{\"click\":_vm.setMovementBlocker}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-strokecolour\"}},[_vm._v(\"Border colour\")]),_c('color-picker',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"color\":_vm.shape.strokeColour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(_vm.shape, \"strokeColour\", $event)},\"input\":function($event){return _vm.updateShape(true, true)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('label',{attrs:{\"for\":\"shapeselectiondialog-fillcolour\"}},[_vm._v(\"Fill colour\")]),_c('color-picker',{staticStyle:{\"grid-column-start\":\"remove\"},attrs:{\"color\":_vm.shape.fillColour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(_vm.shape, \"fillColour\", $event)},\"input\":function($event){return _vm.updateShape(true, true)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Access\")]),_vm._l((_vm.shape.owners),function(owner){return [_c('input',{key:owner,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":owner},on:{\"change\":function($event){return _vm.updateOwner($event, owner)}}}),(owner !== '')?_c('div',{key:'remove-' + owner,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center', gridColumnStart: 'remove'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeOwner(owner)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Trackers\")]),_vm._l((_vm.shape.trackers),function(tracker){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(tracker.name),expression:\"tracker.name\"}],key:'name-'+tracker.uuid,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.name)},on:{\"change\":function($event){return _vm.updateShape(false);},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(tracker.value),expression:\"tracker.value\",modifiers:{\"number\":true}}],key:'value-'+tracker.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.value)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"value\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'fspan-'+tracker.uuid},[_vm._v(\"/\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(tracker.maxvalue),expression:\"tracker.maxvalue\",modifiers:{\"number\":true}}],key:'maxvalue-'+tracker.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(tracker.maxvalue)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(tracker, \"maxvalue\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'sspan-'+tracker.uuid}),_c('div',{key:'visibility-'+tracker.uuid,style:({opacity: tracker.visible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){tracker.visible = !tracker.visible;_vm.updateShape(false)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('span',{key:'tspan-'+tracker.uuid}),(tracker.name !== '' || tracker.value !== 0)?_c('div',{key:'remove-'+tracker.uuid,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeTracker(tracker.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Auras\")]),_vm._l((_vm.shape.auras),function(aura){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(aura.name),expression:\"aura.name\"}],key:'name-'+aura.uuid,staticStyle:{\"grid-column-start\":\"name\"},attrs:{\"type\":\"text\",\"placeholder\":\"name\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.name)},on:{\"change\":function($event){return _vm.updateShape(false)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(aura.value),expression:\"aura.value\",modifiers:{\"number\":true}}],key:'value-'+aura.uuid,attrs:{\"type\":\"text\",\"title\":\"Current value\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.value)},on:{\"change\":function($event){return _vm.updateShape(true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"value\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('span',{key:'fspan-'+aura.uuid},[_vm._v(\"/\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(aura.dim),expression:\"aura.dim\",modifiers:{\"number\":true}}],key:'dimvalue-'+aura.uuid,attrs:{\"type\":\"text\",\"title\":\"Dim value\",\"disabled\":!_vm.owned},domProps:{\"value\":(aura.dim)},on:{\"change\":function($event){return _vm.updateShape(true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(aura, \"dim\", _vm._n($event.target.value))},\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('color-picker',{key:'colour-'+aura.uuid,attrs:{\"color\":aura.colour,\"disabled\":!_vm.owned},on:{\"update:color\":function($event){return _vm.$set(aura, \"colour\", $event)},\"input\":function($event){return _vm.updateAuraColour(aura, $event)},\"change\":function($event){return _vm.updateShape(true)}}}),_c('div',{key:'visibility-'+aura.uuid,style:({opacity: aura.visible ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){aura.visible = !aura.visible;_vm.updateShape(true)}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{key:'visionsource-'+aura.uuid,style:({opacity: aura.visionSource ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.updateAuraVisionSource(aura)}}},[_c('i',{staticClass:\"fas fa-lightbulb\"})]),(aura.name !== '' || aura.value !== 0)?_c('div',{key:'remove-'+aura.uuid,style:({opacity: _vm.owned ? 1.0 : 0.3, textAlign: 'center'}),attrs:{\"disabled\":!_vm.owned},on:{\"click\":function($event){return _vm.removeAura(aura.uuid)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]):_vm._e()]}),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Labels\")]),_c('div',{staticClass:\"spanrow\",attrs:{\"id\":\"labels\"}},[_vm._l((_vm.shape.labels),function(label){return _c('div',{key:label.uuid,staticClass:\"label\"},[(label.category)?[_c('div',{staticClass:\"label-user\"},[_vm._v(_vm._s(label.category))]),_c('div',{staticClass:\"label-main\",on:{\"click\":function($event){return _vm.removeLabel(label.uuid)}}},[_vm._v(_vm._s(label.name))])]:_vm._e(),(!label.category)?[_c('div',{staticClass:\"label-main\",on:{\"click\":function($event){return _vm.removeLabel(label.uuid)}}},[_vm._v(_vm._s(label.name))])]:_vm._e()],2)}),(_vm.owned)?_c('div',{staticClass:\"label\",attrs:{\"id\":\"label-add\"}},[_c('div',{staticClass:\"label-main\",on:{\"click\":_vm.openLabelManager}},[_vm._v(\"+\")])]):_vm._e()],2),_c('div',{staticClass:\"spanrow header\"},[_vm._v(\"Annotation\")]),_c('textarea',{staticClass:\"spanrow\",attrs:{\"disabled\":!_vm.owned},domProps:{\"value\":_vm.shape.annotation},on:{\"change\":_vm.updateAnnotation}})],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=template&id=23de098e&scoped=true&\"","import { ServerCircle } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2l, g2lz, l2g } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\n\nexport class Circle extends Shape {\n type = \"circle\";\n r: number;\n constructor(center: GlobalPoint, r: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(center, fillColour, strokeColour, uuid);\n this.r = r || 1;\n }\n asDict(): ServerCircle {\n // const base = this.getBaseDict();\n // base.r = this.r;\n // base.border = this.border;\n // return base;\n return Object.assign(this.getBaseDict(), {\n radius: this.r,\n });\n }\n fromDict(data: ServerCircle) {\n super.fromDict(data);\n this.r = data.radius;\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(\n new GlobalPoint(this.refPoint.x - this.r, this.refPoint.y - this.r),\n this.r * 2,\n this.r * 2,\n );\n }\n\n get points() {\n return this.getBoundingBox().points;\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.beginPath();\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n const loc = g2l(this.refPoint);\n ctx.arc(loc.x, loc.y, g2lz(this.r), 0, 2 * Math.PI);\n ctx.fill();\n if (this.strokeColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.beginPath();\n ctx.lineWidth = g2lz(5);\n ctx.strokeStyle = this.strokeColour;\n ctx.arc(loc.x, loc.y, g2lz(this.r), 0, 2 * Math.PI);\n ctx.stroke();\n }\n }\n contains(point: GlobalPoint): boolean {\n return (point.x - this.refPoint.x) ** 2 + (point.y - this.refPoint.y) ** 2 < this.r ** 2;\n }\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n if (centerPoint === undefined) return this.refPoint;\n this.refPoint = centerPoint;\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid() {\n const gs = gameStore.gridSize;\n let targetX;\n let targetY;\n if (((2 * this.r) / gs) % 2 === 0) {\n targetX = Math.round(this.refPoint.x / gs) * gs;\n } else {\n targetX = Math.round((this.refPoint.x - gs / 2) / gs) * gs + this.r;\n }\n if (((2 * this.r) / gs) % 2 === 0) {\n targetY = Math.round(this.refPoint.y / gs) * gs;\n } else {\n targetY = Math.round((this.refPoint.y - gs / 2) / gs) * gs + this.r;\n }\n const delta = calculateDelta(new Vector(targetX - this.refPoint.x, targetY - this.refPoint.y), this);\n this.refPoint = this.refPoint.add(delta);\n this.invalidate(false);\n }\n resizeToGrid() {\n const gs = gameStore.gridSize;\n this.r = Math.max(Math.round(this.r / gs) * gs, gs / 2);\n this.invalidate(false);\n }\n resize(resizePoint: number, point: LocalPoint) {\n const z = gameStore.zoomFactor;\n const diff = l2g(point).subtract(this.refPoint);\n this.r = Math.sqrt(Math.pow(diff.length(), 2) / 2);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class MapTool extends Tool {\n name = \"Map\";\n active = false;\n xCount = 3;\n yCount = 3;\n startPoint: GlobalPoint | null = null;\n rect: Rect | null = null;\n\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = true;\n\n this.startPoint = l2g(getMouse(event));\n this.rect = new Rect(this.startPoint.clone(), 0, 0, \"rgba(0,0,0,0)\", \"black\");\n layer.addShape(this.rect, false, false);\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active || this.rect === null || this.startPoint === null) return;\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n const endPoint = l2g(getMouse(event));\n\n this.rect.w = Math.abs(endPoint.x - this.startPoint.x);\n this.rect.h = Math.abs(endPoint.y - this.startPoint.y);\n this.rect.refPoint = new GlobalPoint(\n Math.min(this.startPoint.x, endPoint.x),\n Math.min(this.startPoint.y, endPoint.y),\n );\n layer.invalidate(false);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.rect === null) return;\n const layer = layerManager.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = false;\n\n if (layer.selection.length !== 1) {\n layer.removeShape(this.rect, false, false);\n return;\n }\n\n const w = this.rect.w;\n const h = this.rect.h;\n const sel = layer.selection[0];\n\n if (sel instanceof BaseRect) {\n sel.w *= (this.xCount * gameStore.gridSize) / w;\n sel.h *= (this.yCount * gameStore.gridSize) / h;\n }\n\n layer.removeShape(this.rect, false, false);\n }\n}\n","import { render, staticRenderFns } from \"./load.vue?vue&type=template&id=ff095222&\"\nimport script from \"./load.vue?vue&type=script&lang=ts&\"\nexport * from \"./load.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { LocalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class PanTool extends Tool {\n name = \"Pan\";\n panStart = new LocalPoint(0, 0);\n active = false;\n\n onMouseDown(event: MouseEvent) {\n this.panStart = getMouse(event);\n this.active = true;\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active) return;\n const mouse = getMouse(event);\n const distance = mouse.subtract(this.panStart).multiply(1 / gameStore.zoomFactor);\n gameStore.increasePanX(Math.round(distance.x));\n gameStore.increasePanY(Math.round(distance.y));\n this.panStart = mouse;\n layerManager.invalidate();\n }\n onMouseUp(event: MouseEvent) {\n this.active = false;\n sendClientOptions();\n }\n}\n","import { render, staticRenderFns } from \"./selectcontext.vue?vue&type=template&id=2e7d4582&scoped=true&\"\nimport script from \"./selectcontext.vue?vue&type=script&lang=ts&\"\nexport * from \"./selectcontext.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2e7d4582\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nimport { app } from \"@/main\";\n\n// Reference: https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nexport function uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, c => {\n const r = (Math.random() * 16) | 0;\n const v = c === \"x\" ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nexport function capitalize(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n\nexport function alphSort(a: string, b: string) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n else return 1;\n}\n\nexport function getHTMLFont(element: HTMLElement) {\n let font = element.style.font;\n while (font === null && element.parentElement !== null) {\n element = element.parentElement;\n font = element.style.font;\n }\n if (font === null) font = window.getComputedStyle(document.body).getPropertyValue(\"font\");\n return font;\n}\n\nexport function getHTMLTextWidth(text: string, font: string): number {\n let fakeElement = document.getElementById(\"emptycanvas\");\n if (fakeElement === null) {\n fakeElement = document.createElement(\"canvas\");\n fakeElement.id = \"emptycanvas\";\n fakeElement.style.display = \"\";\n document.body.appendChild(fakeElement);\n }\n const ctx = fakeElement.getContext(\"2d\")!;\n ctx.font = font;\n return Math.ceil(ctx.measureText(text).width);\n}\n\nexport function partition(arr: T[], predicate: (n: T) => boolean) {\n const ret: T[][] = [[], []];\n arr.forEach(n => (predicate(n) ? ret[1].push(n) : ret[0].push(n)));\n return ret;\n}\n\nexport function calcFontScale(ctx: CanvasRenderingContext2D, text: string, width: number, height: number) {\n const points = Number(ctx.font.split(\"px\")[0]) * 0.2;\n const fontWidth = ctx.measureText(text).width;\n return Math.min(width / fontWidth, height / points);\n}\n\nexport function fixedEncodeURIComponent(str: string) {\n return encodeURIComponent(str).replace(/[!'()*]/g, c => {\n return \"%\" + c.charCodeAt(0).toString(16);\n });\n}\n\nexport class OrderedMap {\n keys: K[] = [];\n values: V[] = [];\n\n get length() {\n return this.keys.length;\n }\n\n get(key: K) {\n return this.values[this.keys.indexOf(key)];\n }\n getIndexValue(idx: number) {\n return this.values[idx];\n }\n getIndexKey(idx: number) {\n return this.keys[idx];\n }\n set(key: K, value: V) {\n this.keys.push(key);\n this.values.push(value);\n }\n has(key: K) {\n return this.indexOf(key) >= 0;\n }\n indexOf(element: K) {\n return this.keys.indexOf(element);\n }\n remove(element: K) {\n const idx = this.indexOf(element);\n this.keys.splice(idx, 1);\n this.values.splice(idx, 1);\n }\n}\n\nexport function getComponent(): T {\n return app.$children[0].$refs.activeComponent;\n}\n\nexport function getRef(ref: string): T {\n const active = app.$children[0].$refs.activeComponent;\n return active.$refs[ref];\n}\n","import { render, staticRenderFns } from \"./contextMenu.vue?vue&type=template&id=dbbd4d08&\"\nimport script from \"./contextMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./contextMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { EdgeCirculator, Point, Sign, Triangle, Vertex } from \"./tds\";\n\ntype Line = number[];\n\nexport function cw(index: number) {\n return (index + 2) % 3;\n}\n\nexport function ccw(index: number) {\n return (index + 1) % 3;\n}\n\nexport function edgeInfo(va: Vertex, vb: Vertex) {\n const ec = new EdgeCirculator(va, null);\n if (ec.valid) {\n do {\n const indv = 3 - ec.t!.indexV(va) - ec.ri;\n const v = ec.t!.vertices[indv]!;\n if (!v.infinite) {\n if (v === vb) {\n return { includes: true, vi: vb, fr: ec.t!, i: ec.ri };\n } else {\n const orient = orientation(va.point!, vb.point!, v.point!);\n if (orient === Sign.COLLINEAR && collinearBetween(va.point!, v.point!, vb.point!)) {\n return { includes: true, vi: v, fr: ec.t!, i: ec.ri };\n }\n }\n }\n } while (ec.next());\n }\n return { includes: false };\n}\n\nexport function collinearBetween(p: Point, q: Point, r: Point): boolean {\n let cPQ: Sign;\n let cQR: Sign;\n if (compare(0, p, r) === Sign.EQUAL) {\n cPQ = compare(1, p, q);\n cQR = compare(1, q, r);\n } else {\n cPQ = compare(0, p, q);\n cQR = compare(0, q, r);\n }\n return (cPQ === Sign.SMALLER && cQR === Sign.SMALLER) || (cPQ === Sign.LARGER && cQR === Sign.LARGER);\n}\n\nfunction compare(index: number, a: Point, b: Point): Sign {\n if (a[index] < b[index]) return Sign.SMALLER;\n if (a[index] > b[index]) return Sign.LARGER;\n return Sign.EQUAL;\n}\n\nexport function orientation(p: Point, q: Point, r: Point) {\n const px = p[0];\n const py = p[1];\n const qx = q[0];\n const qy = q[1];\n const rx = r[0];\n const ry = r[1];\n const pqx = qx - px;\n const pqy = qy - py;\n const prx = rx - px;\n const pry = ry - py;\n const det = determinant(pqx, pqy, prx, pry);\n let maxX = Math.abs(pqx);\n let maxY = Math.abs(pqy);\n const aprX = Math.abs(prx);\n const aprY = Math.abs(pry);\n if (maxX < aprX) maxX = aprX;\n if (maxY < aprY) maxY = aprY;\n if (maxX > maxY) [maxX, maxY] = [maxY, maxX];\n // underflow proection in eps computation?? Math.sqrt(Number.MIN_VALUE, Number.EPSILON)\n if (maxX < 2e-162 && maxX === 0) {\n return Sign.ZERO;\n }\n // overflow protection in det computation\n if (maxY < 1e153) {\n const eps = Number.EPSILON * maxX * maxY;\n if (det > eps) return Sign.POSITIVE;\n if (det < -eps) return Sign.NEGATIVE;\n }\n return Sign.ZERO;\n}\n\nexport function determinant(a00: number, a01: number, a10: number, a11: number) {\n return a00 * a11 - a01 * a10;\n}\n\nexport function hasInexactNegativeOrientation(p: Point, q: Point, r: Point) {\n return determinant(q[0] - p[0], q[1] - p[1], r[0] - p[0], r[1] - p[1]) < 0;\n}\n\nexport function sideOfOrientedCircle(t: Triangle, p: Point, perturb: boolean): Sign {\n if (!t.isInfinite())\n return sideOfOrientedCircleP(t.vertices[0]!.point!, t.vertices[1]!.point!, t.vertices[2]!.point!, p, perturb);\n throw new Error(\"SSS\");\n}\n\nfunction sideOfOrientedCircleP(p0: Point, p1: Point, p2: Point, p: Point, perturb: boolean): Sign {\n const os = getOrientedSide(p0, p1, p2, p);\n if (os !== Sign.ON_ORIENTED_BOUNDARY || !perturb) return os;\n const points = [p0, p1, p2, p];\n points.sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n for (const point of points.reverse()) {\n if (point === p) return Sign.ON_NEGATIVE_SIDE;\n let o = orientation(p0, p1, p);\n if (point === p2 && o !== Sign.COLLINEAR) return o;\n o = orientation(p0, p, p2);\n if (point === p1 && o !== Sign.COLLINEAR) return o;\n o = orientation(p, p1, p2);\n if (point === p0 && o !== Sign.COLLINEAR) return o;\n }\n return Sign.ON_NEGATIVE_SIDE;\n}\n\nexport function xyEqual(p: Point, q: Point) {\n return p[0] === q[0] && p[1] === q[1];\n}\n\nexport function xySmaller(p: Point, q: Point) {\n return p[0] < q[0] || (p[0] === q[0] && p[1] < q[1]);\n}\n\nexport function xyCompare(p: Point, q: Point) {\n if (xySmaller(p, q)) return Sign.SMALLER;\n if (xyEqual(p, q)) return Sign.EQUAL;\n return Sign.LARGER;\n}\n\nfunction getOrientedSide(p: Point, q: Point, r: Point, t: Point): Sign {\n const qpx = q[0] - p[0];\n const qpy = q[1] - p[1];\n const rpx = r[0] - p[0];\n const rpy = r[1] - p[1];\n const tpx = t[0] - p[0];\n const tpy = t[1] - p[1];\n const tqx = t[0] - q[0];\n const tqy = t[1] - q[1];\n const rqx = r[0] - q[0];\n const rqy = r[1] - q[1];\n\n const det = determinant(qpx * tpy - qpy * tpx, tpx * tqx + tpy * tqy, qpx * rpy - qpy * rpx, rpx * rqx + rpy * rqy);\n let maxx = Math.abs(qpx);\n let maxy = Math.abs(qpy);\n const arpx = Math.abs(rpx);\n const arpy = Math.abs(rpy);\n const atqx = Math.abs(tqx);\n const atqy = Math.abs(tqy);\n const atpx = Math.abs(tpx);\n const atpy = Math.abs(tpy);\n const arqx = Math.abs(rqx);\n const arqy = Math.abs(rqy);\n\n if (maxx < arpx) maxx = arpx;\n if (maxx < atpx) maxx = atpx;\n if (maxx < atqx) maxx = atqx;\n if (maxx < arqx) maxx = arqx;\n\n if (maxy < arpy) maxy = arpy;\n if (maxy < atpy) maxy = atpy;\n if (maxy < atqy) maxy = atqy;\n if (maxy < arqy) maxy = arqy;\n\n if (maxx > maxy) [maxx, maxy] = [maxy, maxx];\n\n if (maxx < 1e-73 && maxx === 0) return Sign.ON_ORIENTED_BOUNDARY;\n // sqrt(sqrt(max_double/16\n else if (maxy < 1e76) {\n const eps = Number.EPSILON * maxx * maxy * (maxy * maxy);\n if (det > eps) return Sign.ON_POSITIVE_SIDE;\n if (det < -eps) return Sign.ON_NEGATIVE_SIDE;\n }\n\n return Sign.ZERO;\n}\n\nfunction segSegDoIntersectCrossing(p1: Point, p2: Point, p3: Point, p4: Point): boolean {\n switch (orientation(p1, p2, p3)) {\n case Sign.LEFT_TURN:\n return orientation(p3, p4, p2) !== Sign.RIGHT_TURN;\n case Sign.RIGHT_TURN:\n return orientation(p3, p4, p2) !== Sign.LEFT_TURN;\n case Sign.COLLINEAR:\n return true;\n }\n}\n\nfunction segSegDoIntersectContained(p1: Point, p2: Point, p3: Point, p4: Point): boolean {\n switch (orientation(p1, p2, p3)) {\n case Sign.LEFT_TURN:\n return orientation(p1, p2, p4) !== Sign.LEFT_TURN;\n case Sign.RIGHT_TURN:\n return orientation(p1, p2, p4) !== Sign.RIGHT_TURN;\n case Sign.COLLINEAR:\n return true;\n }\n}\n\nexport function intersection(pa: Point, pb: Point, pc: Point, pd: Point) {\n const i = getIntersectionType(pa, pb, pc, pd);\n switch (i.intersectionType) {\n case IntersectionType.POINT:\n return i.point!;\n case IntersectionType.NO_INTERSECTION:\n return null;\n }\n throw new Error(\"sdfgighowen\");\n}\n\nenum IntersectionType {\n NO_INTERSECTION,\n POINT,\n SEGMENT,\n}\n\nfunction getLine(p0: Point, p1: Point): Line {\n if (p0[0] === p1[0]) return [1, 0, -p0[0]];\n if (p0[1] === p1[1]) return [0, 1, -p0[1]];\n const x = p1[0] - p0[0];\n const y = p1[1] - p0[1];\n return [-y, x, -x * p0[1] + y * p0[0]];\n}\n\nfunction getIntersectionType(pa: Point, pb: Point, pc: Point, pd: Point) {\n if (!doIntersect(pa, pb, pc, pd)) return { intersectionType: IntersectionType.NO_INTERSECTION, point: null };\n const l1 = getLine(pa, pb);\n const l2 = getLine(pc, pd);\n const info = getIntersectionTypeLine(l1, l2);\n switch (info.intersectionType) {\n case IntersectionType.POINT: {\n return info;\n }\n }\n throw new Error(\"gzseuihgpib\");\n}\n\nfunction getIntersectionTypeLine(la: Line, lb: Line) {\n const denom = la[0] * lb[1] - lb[0] * la[1];\n const nom1 = la[1] * lb[2] - lb[1] * la[2];\n const nom2 = lb[0] * la[2] - la[0] * lb[2];\n return {\n intersectionType: IntersectionType.POINT,\n point: [nom1 / denom, nom2 / denom],\n };\n}\n\nfunction doIntersect(A1: Point, A2: Point, B1: Point, B2: Point): boolean {\n if (xySmaller(A1, A2)) {\n if (xySmaller(B1, B2)) {\n if (xySmaller(A2, B1) || xySmaller(B2, A1)) return false;\n } else {\n if (xySmaller(A2, B2) || xySmaller(B1, A1)) return false;\n }\n } else {\n if (xySmaller(B1, B2)) {\n if (xySmaller(A1, B1) || xySmaller(B2, A2)) return false;\n } else {\n if (xySmaller(A1, B2) || xySmaller(B1, A2)) return false;\n }\n }\n if (xySmaller(A1, A2)) {\n if (xySmaller(B1, B2)) {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER: {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A1, A2, B1, B2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A1, A2, B1, B2);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B2, A1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B2, A2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B1, B2, A1, A2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B1, B2, A1, A2);\n }\n }\n }\n }\n } else {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER: {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A1, A2, B2, B1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A1, A2, B2, B1);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B1, A1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B1, A2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B2, B1, A1, A2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B2, B1, A1, A2);\n }\n }\n }\n }\n }\n } else {\n if (xySmaller(B1, B2)) {\n switch (xyCompare(A2, B1)) {\n case Sign.SMALLER: {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A2, A1, B1, B2);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A2, A1, B1, B2);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B2, A2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B2, A1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B1, B2, A2, A1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B1, B2, A2, A1);\n }\n }\n }\n }\n } else {\n switch (xyCompare(A2, B2)) {\n case Sign.SMALLER: {\n switch (xyCompare(A1, B2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(A1, B1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(A2, A1, B2, B1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(A2, A1, B2, B1);\n }\n }\n }\n }\n case Sign.EQUAL:\n return true;\n default:\n switch (xyCompare(B1, A2)) {\n case Sign.SMALLER:\n return false;\n case Sign.EQUAL:\n return true;\n default: {\n switch (xyCompare(B1, A1)) {\n case Sign.SMALLER:\n return segSegDoIntersectCrossing(B2, B1, A2, A1);\n case Sign.EQUAL:\n return true;\n default:\n return segSegDoIntersectContained(B2, B1, A2, A1);\n }\n }\n }\n }\n }\n }\n}\n\nfunction nextUp(x: number) {\n if (x !== x) {\n return x;\n }\n if (x === -1 / 0) {\n return -Number.MAX_VALUE;\n }\n if (x === +1 / 0) {\n return +1 / 0;\n }\n if (x === +Number.MAX_VALUE) {\n return +1 / 0;\n }\n let y = x * (x < 0 ? 1 - Number.EPSILON / 2 : 1 + Number.EPSILON);\n if (y === x) {\n y = Number.MIN_VALUE * Number.EPSILON > 0 ? x + Number.MIN_VALUE * Number.EPSILON : x + Number.MIN_VALUE;\n }\n if (y === +1 / 0) {\n y = +Number.MAX_VALUE;\n }\n const b = x + (y - x) / 2;\n if (x < b && b < y) {\n y = b;\n }\n const c = (y + x) / 2;\n if (x < c && c < y) {\n y = c;\n }\n return y === 0 ? -0 : y;\n}\n\nexport function ulp(x: number) {\n return x < 0 ? nextUp(x) - x : x + nextUp(-x);\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.x + 'px',\"top\":_vm.y + 'px'},on:{\"close\":_vm.close}},[(_vm.IS_DM)?_c('li',{on:{\"click\":_vm.bringPlayers}},[_vm._v(\"Bring players\")]):_vm._e(),_c('li',{on:{\"click\":_vm.createToken}},[_vm._v(\"Create basic token\")]),_c('li',{on:{\"click\":_vm.showInitiative}},[_vm._v(\"Show initiative\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=template&id=2e7d4582&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\n\n@Component\nexport default class Modal extends Vue {\n @Prop(Boolean) visible!: boolean;\n @Prop({ type: Boolean, default: true }) mask!: boolean;\n @Prop({ type: String, default: \"white\" }) colour!: string;\n\n $refs!: {\n container: HTMLElement;\n };\n\n positioned = false;\n offsetX = 0;\n offsetY = 0;\n screenX = 0;\n screenY = 0;\n dragging = false;\n\n // Example of mounted required: opening note\n mounted() {\n this.updatePosition();\n }\n // Example of updated required: opening initiative\n updated() {\n this.updatePosition();\n }\n\n close(event: MouseEvent) {\n this.$emit(\"close\");\n }\n updatePosition() {\n if (!this.positioned) {\n const container = this.$refs.container;\n if (container.offsetWidth === 0 && container.offsetHeight === 0) return;\n this.$refs.container.style.left = (window.innerWidth - container.offsetWidth) / 2 + \"px\";\n this.$refs.container.style.top = (window.innerHeight - container.offsetHeight) / 2 + \"px\";\n this.positioned = true;\n }\n }\n dragStart(event: DragEvent) {\n if (event === null || event.dataTransfer === null) return;\n event.dataTransfer.setData(\"Hack\", \"\");\n // Because the drag event is happening on the header, we have to change the drag image\n // in order to give the impression that the entire modal is dragged.\n event.dataTransfer.setDragImage(this.$refs.container, event.offsetX, event.offsetY);\n this.offsetX = event.offsetX;\n this.offsetY = event.offsetY;\n this.screenX = event.screenX;\n this.screenY = event.screenY;\n this.dragging = true;\n }\n dragEnd(event: DragEvent) {\n this.dragging = false;\n let left = event.clientX - this.offsetX;\n let top = event.clientY - this.offsetY;\n if (event.clientX === 0 && event.clientY === 0 && event.pageX === 0 && event.pageY === 0) {\n left = parseInt(this.$refs.container.style.left!, 10) - (this.screenX - event.screenX);\n top = parseInt(this.$refs.container.style.top!, 10) - (this.screenY - event.screenY);\n }\n if (left < 0) left = 0;\n if (left > window.innerWidth - 100) left = window.innerWidth - 100;\n if (top < 0) top = 0;\n if (top > window.innerHeight - 100) top = window.innerHeight - 100;\n this.$refs.container.style.left = left + \"px\";\n this.$refs.container.style.top = top + \"px\";\n this.$refs.container.style.display = \"block\";\n }\n dragOver(event: DragEvent) {\n if (this.dragging) this.$refs.container.style.display = \"none\";\n }\n}\n","import io from \"socket.io-client\";\n\nimport { Asset } from \"@/core/comm/types\";\nimport { assetStore } from \"./store\";\n\nexport const socket = io(location.protocol + \"//\" + location.host + \"/pa_assetmgmt\", { autoConnect: false });\n\n// export const socket = io.connect(location.protocol + \"//\" + location.host + \"/pa_assetmgmt\");\nsocket.on(\"connect\", () => {\n console.log(\"Connected\");\n});\nsocket.on(\"disconnect\", () => {\n console.log(\"Disconnected\");\n});\nsocket.on(\"redirect\", (destination: string) => {\n console.log(\"redirecting\");\n window.location.href = destination;\n});\nsocket.on(\"Folder.Root.Set\", (root: number) => {\n assetStore.setRoot(root);\n});\nsocket.on(\"Folder.Set\", (folder: Asset) => {\n assetStore.clear();\n if (folder.children) {\n for (const child of folder.children) {\n assetStore.idMap.set(child.id, child);\n if (child.file_hash) {\n assetStore.files.push(child.id);\n } else {\n assetStore.folders.push(child.id);\n }\n }\n }\n});\nsocket.on(\"Folder.Create\", (folder: Asset) => {\n assetStore.folders.push(folder.id);\n assetStore.idMap.set(folder.id, folder);\n});\nsocket.on(\"Asset.Upload.Finish\", (asset: Asset) => {\n assetStore.idMap.set(asset.id, asset);\n assetStore.files.push(asset.id);\n});\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport Accordion from \"@/core/components/accordion.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n accordion: Accordion,\n },\n})\nexport default class FilterTool extends Tool {\n name = \"Filter\";\n active = false;\n\n get labels() {\n const cat: { [category: string]: [string, string][] } = {'': []};\n for (const uuid of Object.keys(gameStore.labels)) {\n const label = gameStore.labels[uuid];\n if (!label.category) cat[\"\"].push([label.uuid, label.name]);\n else {\n if (!(label.category in cat)) cat[label.category] = [];\n cat[label.category].push([label.uuid, label.name]);\n cat[label.category].sort((a, b) => a[1].localeCompare(b[1]));\n }\n }\n return cat;\n }\n\n get initalValues() {\n const values: { [category: string]: string[] } = {};\n for (const cat of Object.keys(this.labels)) {\n values[cat] = gameStore.labelFilters.filter(f => this.labels[cat].map(l => l[0]).includes(f));\n }\n return values;\n }\n\n get categories() {\n return Object.keys(this.labels).sort();\n }\n\n isFilter(uuid: string): boolean {\n return gameStore.labelFilters.includes(uuid);\n }\n\n toggleFilter(uuid: string) {\n const i = gameStore.labelFilters.indexOf(uuid);\n if (i >= 0) gameStore.labelFilters.splice(i, 1);\n else gameStore.labelFilters.push(uuid);\n layerManager.invalidate();\n }\n\n toggleUnlabeled() {\n gameStore.toggleUnlabeledFilter();\n layerManager.invalidate();\n }\n\n updateSelection(data: { title: string; selection: string[] }) {\n if (!(data.title in this.labels)) return;\n for (const [uuid, _] of this.labels[data.title]) {\n const idx = gameStore.labelFilters.indexOf(uuid);\n const selected = data.selection.includes(uuid);\n if (idx >= 0 && !selected) {\n gameStore.labelFilters.splice(idx, 1);\n socket.emit(\"Labels.Filter.Remove\", uuid);\n } else if (idx < 0 && selected) {\n gameStore.labelFilters.push(uuid);\n socket.emit(\"Labels.Filter.Add\", uuid);\n }\n }\n layerManager.invalidate();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\nimport { gameStore } from '../../game/store';\n\n@Component\nexport default class Accordion extends Vue {\n @Prop(String) title!: string;\n @Prop({ default: true, type: Boolean }) showArrow!: boolean;\n @Prop({ default: () => []}) items!: [string, string][];\n @Prop({ default: () => []}) initialValues!: string[];\n\n selected: string[] = [];\n\n active = false;\n\n mounted() {\n this.selected = this.initialValues;\n this.updateCategory();\n }\n\n toggleDisplay(event: MouseEvent) {\n this.active = !this.active;\n }\n\n toggleCategory() {\n const overall = this.$refs.overall as HTMLInputElement;\n if (overall.checked) this.selected = this.items.map((i) => i[0]);\n else this.selected = [];\n this.$emit(\"selectionupdate\", {title: this.title, selection: this.selected});\n }\n\n updateCategory() {\n const overall = this.$refs.overall as HTMLInputElement;\n if (this.selected.length === 0) {\n overall.checked = false;\n overall.indeterminate = false;\n } else if(this.selected.length === this.items.length) {\n overall.checked = true;\n overall.indeterminate = false;\n } else {\n overall.checked = false;\n overall.indeterminate = true;\n }\n }\n\n toggleSelection(item: string) {\n const found = this.selected.indexOf(item);\n if (found === -1) this.selected.push(item);\n else this.selected.splice(found, 1);\n this.updateCategory();\n this.$emit(\"selectionupdate\", {title: this.title, selection: this.selected});\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},_vm._l((_vm.tokens),function(token){return _c('div',{key:token.uuid,staticClass:\"token\",class:{'selected': _vm.selection.includes(token.uuid)},on:{\"click\":function($event){return _vm.toggle(token.uuid)}}},[(token.src)?_c('img',{attrs:{\"src\":token.src,\"width\":\"30px\",\"height\":\"30px\"}}):_vm._e(),_c('div',[_vm._v(_vm._s(token.name))])])}),0):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./vision.vue?vue&type=template&id=46baf892&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=style&index=0&id=2e7d4582&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=0&lang=css&\"","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2lx, g2ly, g2lz, l2g } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\nimport { ServerMultiLine } from \"../comm/types/shapes\";\n\nexport class MultiLine extends Shape {\n type = \"multiline\";\n _points: GlobalPoint[] = [];\n lineWidth: number;\n constructor(\n startPoint: GlobalPoint,\n points?: GlobalPoint[],\n lineWidth?: number,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, \"rgba(0, 0, 0, 0)\", strokeColour || \"#000\", uuid);\n this._points = points || [];\n this.lineWidth = lineWidth || 3;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n const delta = point.subtract(this._refPoint);\n this._refPoint = point;\n for (let i = 0; i < this._points.length; i++) this._points[i] = this._points[i].add(delta);\n }\n\n asDict() {\n return Object.assign(this.getBaseDict(), {\n line_width: this.lineWidth,\n points: this._points.map(p => ({ x: p.x, y: p.y })),\n });\n }\n fromDict(data: ServerMultiLine) {\n super.fromDict(data);\n this._points = data.points.map(p => new GlobalPoint(p.x, p.y));\n }\n get points() {\n return this._points.map(point => [point.x, point.y]);\n }\n getBoundingBox(): BoundingRect {\n let minx: number = this.refPoint.x;\n let maxx: number = this.refPoint.x;\n let miny: number = this.refPoint.y;\n let maxy: number = this.refPoint.y;\n for (const p of this._points) {\n if (p.x < minx) minx = p.x;\n if (p.x > maxx) maxx = p.x;\n if (p.y < miny) miny = p.y;\n if (p.y > maxy) maxy = p.y;\n }\n return new BoundingRect(new GlobalPoint(minx, miny), maxx - minx, maxy - miny);\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.beginPath();\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.moveTo(g2lx(this.refPoint.x), g2ly(this.refPoint.y));\n for (const p of this._points) ctx.lineTo(g2lx(p.x), g2ly(p.y));\n if (this.strokeColour === \"fog\") ctx.strokeStyle = getFogColour();\n else ctx.strokeStyle = this.strokeColour;\n ctx.lineWidth = g2lz(this.lineWidth);\n ctx.stroke();\n }\n contains(point: GlobalPoint): boolean {\n return this.getBoundingBox().contains(point);\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n return this.getBoundingBox().center();\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this._refPoint = l2g(point);\n else this._points[resizePoint - 1] = l2g(point);\n }\n}\n","import { render, staticRenderFns } from \"./draw.vue?vue&type=template&id=639cd890&scoped=true&\"\nimport script from \"./draw.vue?vue&type=script&lang=ts&\"\nexport * from \"./draw.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"639cd890\",\n null\n \n)\n\nexport default component.exports","import tinycolor from \"tinycolor2\";\n\nimport { LocalPoint } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nexport function getMouse(e: MouseEvent): LocalPoint {\n return new LocalPoint(e.pageX, e.pageY);\n}\n\nexport function getFogColour(opposite: boolean = false): string {\n const tc = tinycolor(gameStore.fowColour);\n if (gameStore.IS_DM) tc.setAlpha(opposite ? 1 : gameStore.fowOpacity);\n else tc.setAlpha(1);\n return tc.toRgbString();\n}\n\nexport function zoomValue(display: number) {\n // Powercurve 0.2/3/10\n // Based on https://stackoverflow.com/a/17102320\n return 1 / (-5 / 3 + (28 / 15) * Math.exp(1.83 * display));\n}\n\nexport function zoomDisplay(value: number) {\n return Math.log((1 / value + 5 / 3) * (15 / 28)) / 1.83;\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport * as tinycolor from \"tinycolor2\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { calcFontScale } from \"@/core/utils\";\nimport { LocalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { CircularToken } from \"@/game/shapes/circulartoken\";\nimport { gameStore } from \"@/game/store\";\nimport { getUnitDistance, l2g } from \"@/game/units\";\nimport { Watch } from \"vue-property-decorator\";\n\n@Component({\n components: {\n Modal,\n \"color-picker\": ColorPicker,\n },\n computed: {\n ...mapState(\"game\", [\"unitSize\"]),\n },\n})\nexport default class CreateTokenModal extends Vue {\n x = 0;\n y = 0;\n visible = false;\n text = \"X\";\n fillColour = \"rgba(255, 255, 255, 1)\";\n borderColour = \"rgba(0, 0, 0, 1)\";\n\n mounted() {\n this.updatePreview();\n }\n\n @Watch(\"text\")\n onTextChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n @Watch(\"fillColour\")\n onFillChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n @Watch(\"borderColour\")\n onBorderChange(newValue: string, oldValue: string) {\n this.updatePreview();\n }\n\n open(x: number, y: number) {\n this.visible = true;\n this.x = x;\n this.y = y;\n }\n submit() {\n const layer = layerManager.getLayer();\n if (layer === undefined) return;\n const token = new CircularToken(\n l2g(new LocalPoint(this.x, this.y)),\n getUnitDistance(gameStore.unitSize / 2),\n this.text,\n \"10px serif\",\n this.fillColour,\n this.borderColour,\n );\n token.addOwner(gameStore.username);\n layer.addShape(token, true);\n layer.invalidate(false);\n this.visible = false;\n }\n updatePreview() {\n const ctx = (this.$refs.canvas).getContext(\"2d\")!;\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n ctx.beginPath();\n const dest = { x: ctx.canvas.width / 2, y: ctx.canvas.height / 2 };\n const r = Math.min(dest.x, dest.y) * 0.9;\n\n ctx.fillStyle = this.fillColour;\n\n ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI);\n ctx.fill();\n if (this.borderColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.beginPath();\n ctx.lineWidth = 5;\n ctx.strokeStyle = this.borderColour;\n ctx.arc(dest.x, dest.y, r, 0, 2 * Math.PI);\n ctx.stroke();\n }\n ctx.save();\n ctx.textAlign = \"center\";\n ctx.textBaseline = \"middle\";\n const xs = calcFontScale(ctx, this.text, r, r);\n const ys = 0;\n ctx.transform(xs, ys, -ys, xs, dest.x, dest.y);\n ctx.fillStyle = tinycolor.mostReadable(this.fillColour, [\"#000\", \"#fff\"]).toHexString();\n ctx.fillText(this.text, 0, 0);\n ctx.restore();\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class NoteDialog extends Vue {\n visible = false;\n note: Note | null = null;\n\n open(note: Note) {\n this.visible = true;\n this.note = note;\n }\n calcHeight() {\n if (this.$refs.textarea) {\n const el = this.$refs.textarea;\n el.style.height = \"auto\";\n el.style.height = el.scrollHeight + \"px\";\n // Using the return value without the above did not achieve what I want, so hey /shrug\n return el.scrollHeight + \"px\";\n }\n return \"100px\";\n }\n updateNote() {\n if (this.note) gameStore.updateNote({ note: this.note, sync: true });\n }\n removeNote() {\n getRef(\"confirm\")\n .open(\"Are you sure you wish to remove this?\")\n .then(\n (result: boolean) => {\n if (result && this.note) {\n gameStore.removeNote({ note: this.note, sync: true });\n this.visible = false;\n }\n },\n () => {},\n );\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Component from \"vue-class-component\";\n\nimport { Watch } from \"vue-property-decorator\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Circle } from \"@/game/shapes/circle\";\nimport { Line } from \"@/game/shapes/line\";\nimport { MultiLine } from \"@/game/shapes/multiline\";\nimport { Polygon } from \"@/game/shapes/polygon\";\nimport { Rect } from \"@/game/shapes/rect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { getUnitDistance, l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\n@Component({\n components: {\n \"color-picker\": ColorPicker,\n },\n})\nexport default class DrawTool extends Tool {\n name = \"Draw\";\n active = false;\n\n startPoint: GlobalPoint | null = null;\n shape: Shape | null = null;\n brushHelper: Circle | null = null;\n ruler: Line | null = null;\n\n fillColour = \"rgba(0, 0, 0, 1)\";\n borderColour = \"rgba(255, 255, 255, 0)\";\n\n shapeSelect = \"square\";\n shapes = [\"square\", \"circle\", \"draw-polygon\", \"paint-brush\"];\n modeSelect = \"normal\";\n modes = [\"normal\", \"reveal\", \"hide\"];\n\n brushSize = getUnitDistance(gameStore.unitSize);\n\n get helperSize(): number {\n if (this.shapeSelect === \"paint-brush\") return this.brushSize / 2;\n return getUnitDistance(this.unitSize) / 8;\n }\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n get unitSize(): number {\n return gameStore.unitSize;\n }\n get useGrid(): boolean {\n return gameStore.useGrid;\n }\n\n @Watch(\"fillColour\")\n onFillChange() {\n if (this.brushHelper) this.brushHelper.fillColour = this.fillColour;\n }\n\n @Watch(\"modeSelect\")\n onModeUpdate(newValue: string, oldValue: string) {\n this.onModeChange(newValue, oldValue);\n }\n\n setupBrush() {\n if (this.brushHelper === null) return;\n if (this.modeSelect === \"reveal\" || this.modeSelect === \"hide\") {\n this.brushHelper.options.set(\"preFogShape\", true);\n this.brushHelper.options.set(\"skipDraw\", true);\n this.brushHelper.fillColour = \"rgba(0, 0, 0, 1)\";\n\n if (this.modeSelect === \"reveal\") this.brushHelper.globalCompositeOperation = \"source-over\";\n else if (this.modeSelect === \"hide\") this.brushHelper.globalCompositeOperation = \"destination-out\";\n } else {\n this.brushHelper.options.delete(\"preFogShape\");\n this.brushHelper.options.delete(\"skipDraw\");\n this.brushHelper.globalCompositeOperation = \"source-over\";\n this.brushHelper.fillColour = this.fillColour;\n }\n }\n onModeChange(newValue: string, oldValue: string) {\n if (this.brushHelper === null) return;\n\n const fowLayer = layerManager.getLayer(\"fow\");\n const normalLayer = layerManager.getLayer();\n if (fowLayer === undefined || normalLayer === undefined) return;\n\n this.setupBrush();\n\n if (newValue !== \"normal\" && oldValue === \"normal\") {\n normalLayer.removeShape(this.brushHelper, false);\n fowLayer.addShape(this.brushHelper, false);\n } else if (newValue === \"normal\" && oldValue !== \"normal\") {\n normalLayer.addShape(this.brushHelper, false);\n fowLayer.removeShape(this.brushHelper, false);\n }\n }\n getLayer() {\n if (this.modeSelect === \"normal\") return layerManager.getLayer();\n return layerManager.getLayer(\"fow\");\n }\n onMouseDown(event: MouseEvent) {\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n if (!this.active) {\n this.startPoint = l2g(getMouse(event));\n this.active = true;\n switch (this.shapeSelect) {\n case \"square\": {\n this.shape = new Rect(this.startPoint.clone(), 0, 0, this.fillColour, this.borderColour);\n break;\n }\n case \"circle\": {\n this.shape = new Circle(\n this.startPoint.clone(),\n this.helperSize,\n this.fillColour,\n this.borderColour,\n );\n break;\n }\n case \"paint-brush\": {\n this.shape = new MultiLine(this.startPoint.clone(), [], this.brushSize);\n this.shape.fillColour = this.fillColour;\n break;\n }\n case \"draw-polygon\": {\n this.shape = new Polygon(this.startPoint.clone(), [], this.fillColour, this.borderColour);\n break;\n }\n default:\n return;\n }\n\n if (this.modeSelect !== \"normal\") {\n this.shape.options.set(\"preFogShape\", true);\n this.shape.options.set(\"skipDraw\", true);\n this.shape.fillColour = \"rgba(0, 0, 0, 1)\";\n }\n if (this.modeSelect === \"reveal\") this.shape.globalCompositeOperation = \"source-over\";\n else if (this.modeSelect === \"hide\") this.shape.globalCompositeOperation = \"destination-out\";\n\n this.shape.addOwner(gameStore.username);\n if (layer.name === \"fow\" && this.modeSelect === \"normal\") {\n this.shape.visionObstruction = true;\n this.shape.movementObstruction = true;\n }\n layer.addShape(this.shape, true, false, false);\n\n // Push brushhelper to back\n this.pushBrushBack();\n } else if (this.shape !== null && this.shape instanceof Polygon) {\n // For polygon draw\n this.shape._vertices.push(l2g(getMouse(event)));\n }\n if (this.shape !== null && this.shape instanceof Polygon) {\n const lastPoint = l2g(getMouse(event));\n if (this.ruler === null) {\n this.ruler = new Line(lastPoint, lastPoint, 3, \"black\");\n layer.addShape(this.ruler, false);\n } else {\n this.ruler.refPoint = lastPoint;\n this.ruler.endPoint = lastPoint;\n }\n if (this.shape.visionObstruction) gameStore.recalculateVision(true);\n layer.invalidate(false);\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: true });\n }\n }\n onMouseMove(event: MouseEvent) {\n const endPoint = l2g(getMouse(event));\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n\n if (this.brushHelper !== null) {\n this.brushHelper.r = this.helperSize;\n this.brushHelper.refPoint = endPoint;\n if (!this.active) layer.invalidate(false);\n }\n\n if (!this.active || this.startPoint === null || this.shape === null) return;\n\n switch (this.shapeSelect) {\n case \"square\": {\n (this.shape).w = Math.abs(endPoint.x - this.startPoint.x);\n (this.shape).h = Math.abs(endPoint.y - this.startPoint.y);\n this.shape.refPoint = new GlobalPoint(\n Math.min(this.startPoint.x, endPoint.x),\n Math.min(this.startPoint.y, endPoint.y),\n );\n break;\n }\n case \"circle\": {\n (this.shape).r = endPoint.subtract(this.startPoint).length();\n break;\n }\n case \"paint-brush\": {\n (this.shape)._points.push(endPoint);\n break;\n }\n case \"draw-polygon\": {\n this.ruler!.endPoint = endPoint;\n break;\n }\n }\n\n if (!(this.shape instanceof Polygon)) {\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: true });\n if (this.shape.visionObstruction) gameStore.recalculateVision(true);\n }\n layer.invalidate(false);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.shape === null || this.shape instanceof Polygon) return;\n if (!event.altKey && this.useGrid) {\n this.shape.resizeToGrid();\n }\n this.finaliseShape();\n }\n onContextMenu(event: MouseEvent) {\n if (!this.active || this.shape === null || !(this.shape instanceof Polygon)) return;\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n layer.removeShape(this.ruler!, false);\n this.ruler = null;\n this.finaliseShape();\n }\n\n private finaliseShape() {\n if (this.shape === null) return;\n if (this.shape.visionObstruction) gameStore.recalculateVision();\n if (this.shape.movementObstruction) gameStore.recalculateMovement();\n socket.emit(\"Shape.Update\", { shape: this.shape!.asDict(), redraw: true, temporary: false });\n this.active = false;\n }\n\n onSelect() {\n const layer = this.getLayer();\n if (layer === undefined) return;\n this.brushHelper = new Circle(new GlobalPoint(-1000, -1000), this.brushSize / 2, this.fillColour);\n this.setupBrush();\n layer.addShape(this.brushHelper, false); // during mode change the shape is already added\n }\n onDeselect() {\n const layer = this.getLayer();\n if (this.brushHelper !== null && layer !== undefined) layer.removeShape(this.brushHelper, false);\n if (this.active && layer !== undefined && this.shape !== null) {\n layer.removeShape(this.shape, true, false);\n this.shape = null;\n this.active = false;\n layer.invalidate(false);\n }\n }\n\n private pushBrushBack() {\n const layer = this.getLayer();\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n if (this.brushHelper !== null) layer.removeShape(this.brushHelper, false);\n this.brushHelper = new Circle(new GlobalPoint(-1000, -1000), this.brushSize / 2, this.fillColour);\n this.setupBrush();\n layer.addShape(this.brushHelper, false); // during mode change the shape is already added\n }\n}\n","import { GlobalPoint, LocalPoint } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { g2lx, g2ly, l2g } from \"@/game/units\";\n\nexport class Line extends Shape {\n type = \"line\";\n endPoint: GlobalPoint;\n lineWidth: number;\n constructor(\n startPoint: GlobalPoint,\n endPoint: GlobalPoint,\n lineWidth?: number,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, \"rgba(0, 0, 0, 0)\", strokeColour || \"#000\", uuid);\n this.endPoint = endPoint;\n this.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n x2: this.endPoint.x,\n y2: this.endPoint.y,\n line_width: this.lineWidth,\n });\n }\n get points() {\n return [[this.refPoint.x, this.refPoint.y], [this.endPoint.x, this.endPoint.y]];\n }\n getBoundingBox(): BoundingRect {\n return new BoundingRect(\n new GlobalPoint(Math.min(this.refPoint.x, this.endPoint.x), Math.min(this.refPoint.y, this.endPoint.y)),\n Math.abs(this.refPoint.x - this.endPoint.x),\n Math.abs(this.refPoint.y - this.endPoint.y),\n );\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.strokeStyle = this.strokeColour;\n ctx.beginPath();\n ctx.moveTo(g2lx(this.refPoint.x), g2ly(this.refPoint.y));\n ctx.lineTo(g2lx(this.endPoint.x), g2ly(this.endPoint.y));\n ctx.lineWidth = this.lineWidth;\n ctx.stroke();\n }\n contains(point: GlobalPoint): boolean {\n return false; // TODO\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {} // TODO\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this.refPoint = l2g(point);\n else this.endPoint = l2g(point);\n }\n}\n","// import \"./class-component-hooks\";\n\nimport axios, { AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Router from \"vue-router\";\n\nVue.use(Router);\n\nimport AssetManager from \"@/assetManager/manager.vue\";\nimport Login from \"@/auth/login.vue\";\nimport Logout from \"@/auth/logout\";\nimport LoadComponent from \"@/core/components/load.vue\";\nimport Dashboard from \"@/dashboard/main.vue\";\nimport Game from \"@/game/game.vue\";\nimport Invitation from \"@/invitation/invitation\";\n\nimport { coreStore } from \"@/core/store\";\n// import { AssetManager } from \"./assetManager/assets\";\n// const AssetManager = () => import(\"./assetManager/assets\").then(m => m.AssetManager);\n\nexport const router = new Router({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes: [\n {\n path: \"/\",\n redirect: \"/dashboard\",\n },\n {\n path: \"/_load\",\n name: \"load\",\n component: LoadComponent,\n },\n {\n path: \"/assets\",\n component: AssetManager,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/auth\",\n component: { template: \"\" },\n children: [{ path: \"login\", component: Login }, { path: \"logout\", component: Logout }],\n },\n {\n path: \"/invite/:code\",\n component: Invitation,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/dashboard\",\n component: Dashboard,\n meta: {\n auth: true,\n },\n },\n {\n path: \"/game/:creator/:room\",\n component: Game,\n meta: {\n auth: true,\n },\n },\n ],\n});\n\nrouter.beforeEach((to, from, next) => {\n if (!coreStore.initialized && to.path !== \"/_load\") {\n next({ path: \"/_load\" });\n axios\n .get(\"/api/auth\")\n .then((response: AxiosResponse) => {\n if (response.data.auth) {\n coreStore.setAuthenticated(true);\n coreStore.setUsername(response.data.username);\n }\n coreStore.setInitialized(true);\n router.push(to.path);\n })\n .catch(() => {\n console.error(\"Authentication check could not be fulfilled.\");\n });\n } else if (to.matched.some(record => record.meta.auth) && !coreStore.authenticated) {\n next({ path: \"/auth/login\", query: { redirect: to.path } });\n } else {\n next();\n }\n});\n","\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class Tool extends Vue {\n name = \"\";\n selected = false;\n active = false;\n get detailRight(): string {\n const rect = (this.$parent.$refs[this.name + \"-selector\"])[0].getBoundingClientRect();\n const mid = rect.left + rect.width / 2;\n\n return `${window.innerWidth - Math.min(window.innerWidth - 25, mid + 75)}px`;\n }\n get detailArrow(): string {\n const rect = (this.$parent.$refs[this.name + \"-selector\"])[0].getBoundingClientRect();\n const mid = rect.left + rect.width / 2;\n const right = Math.min(window.innerWidth - 25, mid + 75);\n return `${right - mid - 14}px`; // border width\n }\n created() {\n this.$parent.$on(\"mousedown\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseDown(event);\n });\n this.$parent.$on(\"mouseup\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseUp(event);\n });\n this.$parent.$on(\"mousemove\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onMouseMove(event);\n });\n this.$parent.$on(\"contextmenu\", (event: MouseEvent, tool: string) => {\n if (tool === this.name) this.onContextMenu(event);\n });\n this.$parent.$on(\"tools-select-change\", (newValue: string, oldValue: string) => {\n if (oldValue === this.name) {\n this.selected = false;\n this.onDeselect();\n } else if (newValue === this.name) {\n this.selected = true;\n this.onSelect();\n }\n });\n }\n onSelect() {}\n onDeselect() {}\n onMouseDown(event: MouseEvent) {}\n onMouseUp(event: MouseEvent) {}\n onMouseMove(event: MouseEvent) {}\n onContextMenu(event: MouseEvent) {}\n}\n","import { render, staticRenderFns } from \"./tools.vue?vue&type=template&id=b6e1f51c&scoped=true&\"\nimport script from \"./tools.vue?vue&type=script&lang=ts&\"\nexport * from \"./tools.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6e1f51c\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"main\"},on:{\"mouseleave\":_vm.mouseleave,\"wheel\":_vm.zoom}},[(_vm.showUI)?_c('menu-bar'):_vm._e(),_c('div',{attrs:{\"id\":\"board\"}},[(_vm.ready.manager)?[_c('tool-bar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],ref:\"tools\"})]:_vm._e(),_c('div',{attrs:{\"id\":\"layers\"},on:{\"mousedown\":_vm.mousedown,\"mouseup\":_vm.mouseup,\"mousemove\":_vm.mousemove,\"contextmenu\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.contextmenu($event)},\"dragover\":function($event){$event.preventDefault();},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.drop($event)}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI && _vm.layers.length>1),expression:\"showUI && layers.length>1\"}],attrs:{\"id\":\"layerselect\"}},[_c('ul',_vm._l((_vm.layers),function(layer){return _c('li',{key:layer.name,class:{ 'layer-selected': layer === _vm.selectedLayer },on:{\"mousedown\":function($event){return _vm.selectLayer(layer)}}},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(layer))])])}),0)])],2),_c('selection-info',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],ref:\"selectionInfo\"}),_c('initiative-dialog',{ref:\"initiative\",attrs:{\"id\":\"initiativedialog\"}}),_c('note-dialog',{ref:\"note\"}),_c('label-dialog',{ref:\"labels\"}),(_vm.IS_DM || _vm.FAKE_PLAYER)?_c('dm-settings',{ref:\"dmsettings\"}):_vm._e(),_c('zoom-slider',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUI),expression:\"showUI\"}],attrs:{\"id\":\"zoomer\",\"height\":6,\"width\":200,\"min\":0,\"max\":1,\"interval\":0.1,\"dot-width\":8,\"dot-height\":20,\"tooltip-dir\":'bottom',\"tooltip\":'hover',\"formatter\":_vm.zoomDisplay.toFixed(1),\"slider-style\":{'border-radius': '15%'},\"bg-style\":{'background-color': '#fff', 'box-shadow': '0.5px 0.5px 3px 1px rgba(0, 0, 0, .36)'},\"process-style\":{'background-color': '#fff'}},model:{value:(_vm.zoomDisplay),callback:function ($$v) {_vm.zoomDisplay=$$v},expression:\"zoomDisplay\"}}),_c('prompt-dialog',{ref:\"prompt\"}),_c('confirm-dialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=template&id=3d0578ba&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"input-copy\"},on:{\"mouseleave\":function($event){_vm.showPopup=false}}},[_c('input',{attrs:{\"type\":\"text\",\"disabled\":\"disabled\",\"id\":\"input-element\"},domProps:{\"value\":_vm.value}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPopup),expression:\"showPopup\"}],attrs:{\"id\":\"show-popup\"}},[_vm._v(_vm._s(_vm.popupString))]),_c('div',{attrs:{\"id\":\"copy-button\"},on:{\"click\":_vm.copy}},[_c('i',{staticClass:\"far fa-copy\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=template&id=20bfdb3e&scoped=true&\"","import { InitiativeData } from \"@/game/comm/types/general\";\nimport { ServerAsset } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly, g2lz } from \"@/game/units\";\n\nexport class Asset extends BaseRect {\n type = \"assetrect\";\n img: HTMLImageElement;\n src: string = \"\";\n constructor(img: HTMLImageElement, topleft: GlobalPoint, w: number, h: number, uuid?: string) {\n super(topleft, w, h, undefined, undefined, uuid);\n this.img = img;\n }\n asDict() {\n return Object.assign(this.getBaseDict(), {\n src: this.src,\n });\n }\n fromDict(data: ServerAsset) {\n super.fromDict(data);\n this.src = data.src;\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n try {\n ctx.drawImage(this.img, g2lx(this.refPoint.x), g2ly(this.refPoint.y), g2lz(this.w), g2lz(this.h));\n } catch (error) {\n console.warn(`Shape ${this.uuid} could not load the image ${this.src}`);\n }\n }\n getInitiativeRepr(): InitiativeData {\n return {\n uuid: this.uuid,\n visible: !gameStore.IS_DM,\n group: false,\n source: this.src,\n has_img: true,\n effects: [],\n index: Infinity,\n };\n }\n}\n","import { render, staticRenderFns } from \"./inputCopy.vue?vue&type=template&id=20bfdb3e&scoped=true&\"\nimport script from \"./inputCopy.vue?vue&type=script&lang=ts&\"\nexport * from \"./inputCopy.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./inputCopy.vue?vue&type=style&index=0&id=20bfdb3e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"20bfdb3e\",\n null\n \n)\n\nexport default component.exports","import {\n BoundingBox,\n EdgeCirculator,\n FaceCirculator,\n LineFaceCirculator,\n LocateType,\n Point,\n Sign,\n TDS,\n Triangle,\n Vertex,\n} from \"./tds\";\nimport {\n ccw,\n collinearBetween,\n cw,\n edgeInfo,\n hasInexactNegativeOrientation,\n intersection,\n orientation,\n sideOfOrientedCircle,\n xyEqual,\n} from \"./triag\";\n\nexport type Edge = [Triangle, number];\n\nexport class CDT {\n tds: TDS;\n constructor() {\n this.tds = new TDS();\n }\n insertConstraint(a: Point, b: Point) {\n const va = this.insert(a);\n const vb = this.insert(b);\n if (va !== vb) this.insertConstraintV(va, vb);\n }\n\n insertConstraintV(va: Vertex, vb: Vertex) {\n const stack = [[va, vb]];\n while (stack.length > 0) {\n const v = stack.pop()!;\n const info = edgeInfo(v[0], v[1]);\n if (info.includes) {\n this.markConstraint(info.fr!, info.i!);\n if (info.vi! !== v[1]) {\n stack.push([info.vi!, v[1]]);\n }\n continue;\n }\n const intersectionInfo = this.findIntersectedFaces(v[0], v[1]);\n if (intersectionInfo.found) {\n if (intersectionInfo.vi !== v[0] && intersectionInfo.vi !== v[1]) {\n stack.push([v[0], intersectionInfo.vi]);\n stack.push([intersectionInfo.vi, v[1]]);\n } else {\n stack.push(v);\n }\n continue;\n }\n this.triangulateHole(intersectionInfo.intersectedFaces, intersectionInfo.listAB, intersectionInfo.listBA);\n if (intersectionInfo.vi !== v[1]) {\n stack.push([intersectionInfo.vi, v[1]]);\n }\n }\n }\n\n triangulateHole(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[]) {\n const edges: Edge[] = [];\n this.triangulateHole2(intersectedFaces, listAB, listBA, edges);\n this.propagatingFlipE(edges);\n }\n\n triangulateHole2(intersectedFaces: Triangle[], listAB: Edge[], listBA: Edge[], edges: Edge[]) {\n if (listAB.length > 0) {\n this.triangulateHalfHole(listAB, edges);\n this.triangulateHalfHole(listBA, edges);\n const fl = listAB[0][0];\n const fr = listBA[0][0];\n fl.neighbours[2] = fr;\n fr.neighbours[2] = fl;\n fl.constraints[2] = true;\n fr.constraints[2] = true;\n\n while (intersectedFaces.length > 0) {\n this.tds.deleteTriangle(intersectedFaces.shift()!);\n }\n }\n }\n\n triangulateHalfHole(conflictBoundaries: Edge[], edges: Edge[]) {\n let iC = 0;\n let iN: number;\n let iT: number;\n const current = () => conflictBoundaries[iC];\n const next = () => conflictBoundaries[iN];\n const tempo = () => conflictBoundaries[iT];\n\n const va = current()[0].vertices[ccw(current()[1])]!;\n iN = iC;\n ++iN;\n\n let n: Triangle;\n let n1: Triangle;\n let n2: Triangle;\n let ind: number;\n let ind1: number;\n let ind2: number;\n do {\n n1 = current()[0];\n ind1 = current()[1];\n if (n1.neighbours[ind1] !== null) {\n n = n1.neighbours[ind1]!;\n ind = cw(n.indexV(n1.vertices[cw(ind1)]!));\n n1 = n.neighbours[ind]!;\n ind1 = this.tds.mirrorIndex(n, ind);\n }\n n2 = next()[0];\n ind2 = next()[1];\n if (n2.neighbours[ind2] !== null) {\n n = n2.neighbours[ind2]!;\n ind = cw(n.indexV(n2.vertices[cw(ind2)]!));\n n2 = n.neighbours[ind]!;\n ind2 = this.tds.mirrorIndex(n, ind);\n }\n const v0 = n1.vertices[ccw(ind1)]!;\n const v1 = n1.vertices[cw(ind1)]!;\n const v2 = n2.vertices[cw(ind2)]!;\n const orient = orientation(v0.point!, v1.point!, v2.point!);\n switch (orient) {\n case Sign.RIGHT_TURN: {\n const newlf = this.tds.createTriangle(v0, v2, v1, null, null, null);\n edges.push([newlf, 2]);\n newlf.neighbours[1] = n1;\n newlf.neighbours[0] = n2;\n n1.neighbours[ind1] = newlf;\n n2.neighbours[ind2] = newlf;\n if (n1.isConstrained(ind1)) newlf.constraints[1] = true;\n if (n2.isConstrained(ind2)) newlf.constraints[0] = true;\n v0.triangle = newlf;\n v1.triangle = newlf;\n v2.triangle = newlf;\n iT = iC + 1;\n conflictBoundaries.splice(iC, 0, [newlf, 2]);\n conflictBoundaries.splice(Math.max(iT, iN), 1);\n conflictBoundaries.splice(Math.min(iT, iN), 1);\n iN = iC;\n if (v0 !== va) --iC;\n else ++iN;\n break;\n }\n case Sign.LEFT_TURN:\n case Sign.COLLINEAR: {\n ++iC;\n ++iN;\n break;\n }\n }\n } while (iN < conflictBoundaries.length);\n }\n\n findIntersectedFaces(vaa: Vertex, vbb: Vertex) {\n const aa = vaa.point!;\n const bb = vbb.point!;\n const listAB: Edge[] = [];\n const listBA: Edge[] = [];\n const intersectedFaces: Triangle[] = [];\n const lfc = new LineFaceCirculator(vaa, this, bb);\n let ind = lfc.pos!.indexV(vaa);\n let vi: Vertex;\n if (lfc.pos!.isConstrained(ind)) {\n vi = this.intersect(lfc.pos!, ind, vaa, vbb);\n return { found: true, vi, listAB, listBA, intersectedFaces };\n }\n let lf = lfc.pos!.neighbours[ccw(ind)]!;\n let rf = lfc.pos!.neighbours[cw(ind)]!;\n listAB.push([lf, lf.indexT(lfc.pos!)]);\n listBA.unshift([rf, rf.indexT(lfc.pos!)]);\n intersectedFaces.unshift(lfc.pos!);\n let previousFace = lfc.pos!;\n lfc.next();\n ind = lfc.pos!.indexT(previousFace);\n let currentVertex = lfc.pos!.vertices[ind]!;\n let done = false;\n while (currentVertex !== vbb && !done) {\n let i1: number;\n let i2: number;\n const orient = orientation(aa, bb, currentVertex.point!);\n switch (orient) {\n case Sign.COLLINEAR: {\n done = true;\n break;\n }\n case Sign.LEFT_TURN:\n case Sign.RIGHT_TURN: {\n if (orient === Sign.LEFT_TURN) {\n i1 = ccw(ind);\n i2 = cw(ind);\n } else {\n i1 = cw(ind);\n i2 = ccw(ind);\n }\n if (lfc.pos!.isConstrained(i1)) {\n vi = this.intersect(lfc.pos!, i1, vaa, vbb);\n return { found: true, vi, listAB, listBA, intersectedFaces };\n } else {\n lf = lfc.pos!.neighbours[i2]!;\n intersectedFaces.unshift(lfc.pos!);\n if (orient === Sign.LEFT_TURN) listAB.push([lf, lf.indexT(lfc.pos!)]);\n else listBA.unshift([lf, lf.indexT(lfc.pos!)]);\n previousFace = lfc.pos!;\n lfc.next();\n ind = lfc.pos!.indexT(previousFace);\n currentVertex = lfc.pos!.vertices[ind]!;\n }\n break;\n }\n }\n }\n vi = currentVertex;\n intersectedFaces.unshift(lfc.pos!);\n lf = lfc.pos!.neighbours[cw(ind)]!;\n listAB.push([lf, lf.indexT(lfc.pos!)]);\n rf = lfc.pos!.neighbours[ccw(ind)]!;\n listBA.unshift([rf, rf.indexT(lfc.pos!)]);\n return { found: false, vi, listAB, listBA, intersectedFaces };\n }\n\n intersect(t: Triangle, i: number, vaa: Vertex, vbb: Vertex): Vertex {\n const vcc = t.vertices[cw(i)]!;\n const vdd = t.vertices[ccw(i)]!;\n const pa = vaa.point!;\n const pb = vbb.point!;\n const pc = vcc.point!;\n const pd = vdd.point!;\n let pi = intersection(pa, pb, pc, pd);\n if (pi !== pa && pi !== pb && pi !== pc && pi !== pd) {\n const bbox = new BoundingBox(pi!);\n bbox.dilate(4);\n if (bbox.overlaps(new BoundingBox(pa))) pi = pa;\n if (bbox.overlaps(new BoundingBox(pb))) pi = pb;\n if (bbox.overlaps(new BoundingBox(pc))) pi = pc;\n if (bbox.overlaps(new BoundingBox(pd))) pi = pd;\n }\n let vi: Vertex;\n if (pi === null) throw new Error(\"what\");\n else {\n this.removeConstrainedEdge(t, i);\n vi = this.insert(pi, t);\n }\n\n if (vi !== vcc && vi !== vdd) {\n this.insertConstraintV(vcc, vi);\n this.insertConstraintV(vi, vdd);\n } else {\n this.insertConstraintV(vcc, vdd);\n }\n return vi;\n }\n\n removeConstrainedEdge(t: Triangle, i: number) {\n t.constraints[i] = false;\n if (this.tds.dimension === 2) t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = false;\n }\n\n updateConstraintsOpposite(v: Vertex) {\n let t = v.triangle!;\n const start = t;\n let indf: number;\n do {\n indf = t.indexV(v);\n if (t.neighbours[indf]!.constraints[this.tds.mirrorIndex(t, indf)]) t.constraints[indf] = true;\n else t.constraints[indf] = false;\n t = t.neighbours[ccw(indf)]!;\n } while (t !== start);\n }\n\n markConstraint(t: Triangle, i: number) {\n if (this.tds.dimension === 1) t.constraints[2] = true;\n else {\n t.constraints[i] = true;\n t.neighbours[i]!.constraints[this.tds.mirrorIndex(t, i)] = true;\n }\n }\n\n insert(p: Point, start: Triangle | null = null) {\n const locateInfo = this.locate(p, this.iLocate(p, start));\n const va = this.insertb(p, locateInfo.loc, locateInfo.lt, locateInfo.li);\n this.flipAround(va);\n return va;\n }\n\n flipAround(v: Vertex) {\n if (this.tds.dimension <= 1) return;\n let t = v.triangle!;\n let i: number;\n let next: Triangle;\n const start = t;\n do {\n i = t.indexV(v);\n next = t.neighbours[ccw(i)]!;\n this.propagatingFlip(t, i);\n t = next;\n } while (next !== start);\n }\n\n propagatingFlip(t: Triangle, i: number, depth = 0) {\n if (!this.isFlipable(t, i)) return;\n const maxDepth = 100;\n if (depth === maxDepth) {\n throw new Error(\"maxde\");\n return;\n }\n const ni = t.neighbours[i]!;\n this.flip(t, i);\n this.propagatingFlip(t, i, depth + 1);\n i = ni.indexV(t.vertices[i]!);\n this.propagatingFlip(ni, i, depth + 1);\n }\n\n lessEdge(e1: Edge, e2: Edge) {\n const ind1 = e1[1];\n const ind2 = e2[1];\n return e1[0].uid < e2[0].uid || (e1[0].uid === e2[0].uid && ind1 < ind2);\n }\n\n propagatingFlipE(edges: Edge[]) {\n let eI = 0;\n let t: Triangle;\n let i: number;\n let eni: Edge;\n const edgeSet: Edge[] = [];\n while (eI < edges.length) {\n t = edges[eI][0];\n i = edges[eI][1];\n if (this.isFlipable(t, i)) {\n eni = [t.neighbours[i]!, this.tds.mirrorIndex(t, i)];\n if (this.lessEdge(edges[eI], eni)) edgeSet.push(edges[eI]);\n else edgeSet.push(eni);\n }\n ++eI;\n }\n let indf: number;\n let ni: Triangle;\n let indn: number;\n let ei: Edge;\n const e: (Edge | null)[] = [null, null, null, null];\n while (edgeSet.length > 0) {\n t = edgeSet[0][0];\n indf = edgeSet[0][1];\n ni = t.neighbours[indf]!;\n indn = this.tds.mirrorIndex(t, indf);\n ei = [t, indf];\n edgeSet.splice(edgeSet.findIndex(ed => ed[0] === ei[0] && ed[1] === ei[1]), 1);\n e[0] = [t, cw(indf)];\n e[1] = [t, ccw(indf)];\n e[2] = [ni, cw(indn)];\n e[3] = [ni, ccw(indn)];\n\n for (const edge of e) {\n const tt = edge![0];\n const ii = edge![1];\n eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)];\n if (this.lessEdge(edge!, eni))\n edgeSet.splice(edgeSet.findIndex(ed => ed[0] === edge![0] && ed[1] === edge![1]), 1);\n else edgeSet.splice(edgeSet.findIndex(ed => ed[0] === eni[0] && ed[1] === eni[1]), 1);\n }\n\n this.flip(t, indf);\n\n for (const edge of e) {\n const tt = edge![0];\n const ii = edge![1];\n if (this.isFlipable(tt, ii)) {\n eni = [tt.neighbours[ii]!, this.tds.mirrorIndex(tt, ii)];\n if (this.lessEdge(edge!, eni)) edgeSet.push(edge!);\n else edgeSet.push(eni);\n }\n }\n }\n }\n\n flip(t: Triangle, i: number) {\n const u = t.neighbours[i]!;\n const j = this.tds.mirrorIndex(t, i);\n const t1 = t.neighbours[cw(i)]!;\n const i1 = this.tds.mirrorIndex(t, cw(i));\n const t2 = t.neighbours[ccw(i)]!;\n const i2 = this.tds.mirrorIndex(t, ccw(i));\n const t3 = u.neighbours[cw(j)]!;\n const i3 = this.tds.mirrorIndex(u, cw(j));\n const t4 = u.neighbours[ccw(j)]!;\n const i4 = this.tds.mirrorIndex(u, ccw(j));\n this.tds.flip(t, i);\n t.constraints[t.indexT(u)] = false;\n u.constraints[u.indexT(t)] = false;\n t1.neighbours[i1]!.constraints[this.tds.mirrorIndex(t1, i1)] = t1.constraints[i1];\n t2.neighbours[i2]!.constraints[this.tds.mirrorIndex(t2, i2)] = t2.constraints[i2];\n t3.neighbours[i3]!.constraints[this.tds.mirrorIndex(t3, i3)] = t3.constraints[i3];\n t4.neighbours[i4]!.constraints[this.tds.mirrorIndex(t4, i4)] = t4.constraints[i4];\n }\n\n isFlipable(t: Triangle, i: number, perturb = true) {\n const ni = t.neighbours[i]!;\n if (t.isInfinite() || ni.isInfinite()) return false;\n if (t.constraints[i]) return false;\n return sideOfOrientedCircle(ni, t.vertices[i]!.point!, perturb) === Sign.ON_POSITIVE_SIDE;\n }\n\n insertb(a: Point, loc: Triangle | null, lt: LocateType, li: number): Vertex {\n let insertInConstrainedEdge = false;\n let v1: Vertex;\n let v2: Vertex;\n if (lt === LocateType.EDGE && loc!.isConstrained(li)) {\n insertInConstrainedEdge = true;\n v1 = loc!.vertices[ccw(li)]!;\n v2 = loc!.vertices[cw(li)]!;\n }\n const va = this.insertc(a, loc, lt, li);\n if (insertInConstrainedEdge) this.updateConstraintsIncident(va, v1!, v2!);\n else if (lt !== LocateType.VERTEX) this.clearConstraintsIncident(va);\n if (this.tds.dimension === 2) this.updateConstraintsOpposite(va);\n return va;\n }\n\n updateConstraintsIncident(va: Vertex, c1: Vertex, c2: Vertex) {\n if (this.tds.dimension === 0) return;\n if (this.tds.dimension === 1) {\n const ec = new EdgeCirculator(va, null);\n do {\n ec.t!.constraints[2] = true;\n } while (ec.next());\n } else {\n const fc = new FaceCirculator(va, null);\n do {\n const indf = fc.t!.indexV(va);\n const cwi = cw(indf);\n const ccwi = ccw(indf);\n if (fc.t!.vertices[cwi] === c1 || fc.t!.vertices[cwi] === c2) {\n fc.t!.constraints[ccwi] = true;\n fc.t!.constraints[cwi] = false;\n } else {\n fc.t!.constraints[ccwi] = false;\n fc.t!.constraints[cwi] = true;\n }\n } while (fc.next());\n }\n }\n\n clearConstraintsIncident(v: Vertex) {\n const ec = new EdgeCirculator(v, null);\n if (ec.valid) {\n do {\n const t = ec.t!;\n const indf = ec.ri;\n t.constraints[indf] = false;\n if (this.tds.dimension === 2) t.neighbours[indf]!.constraints[this.tds.mirrorIndex(t, indf)] = false;\n } while (ec.next());\n }\n }\n\n insertc(p: Point, loc: Triangle | null, lt: LocateType, li: number): Vertex {\n if (this.tds.vertices.length === 1) {\n return this.insertFirst(p);\n } else if (this.tds.vertices.length === 2) {\n if (lt === LocateType.VERTEX) return this.tds.finiteVertex;\n else return this.insertSecond(p);\n }\n switch (lt) {\n case LocateType.VERTEX: {\n return loc!.vertices[li]!;\n }\n case LocateType.OUTSIDE_AFFINE_HULL: {\n return this.insertOutsideAffineHull(p);\n }\n case LocateType.OUTSIDE_CONVEX_HULL: {\n return this.insertOutsideConvexHull(p, loc!);\n }\n case LocateType.EDGE: {\n return this.insertInEdge(p, loc!, li);\n }\n case LocateType.FACE: {\n return this.insertInFace(p, loc!);\n }\n }\n throw new Error(\"qwe\");\n return new Vertex();\n }\n\n insertInEdge(p: Point, loc: Triangle, li: number): Vertex {\n const v = this.tds.insertInEdge(loc, li);\n v.point = p;\n return v;\n }\n\n insertInFace(p: Point, loc: Triangle): Vertex {\n const v = this.tds.insertInFace(loc);\n v.point = p;\n return v;\n }\n\n insertFirst(p: Point): Vertex {\n const v = this.tds.insertDimUp();\n v.point = p;\n return v;\n }\n\n insertSecond(p: Point): Vertex {\n const v = this.tds.insertDimUp(this.tds._infinite, true);\n v.point = p;\n return v;\n }\n\n insertOutsideAffineHull(p: Point): Vertex {\n let conform = false;\n if (this.tds.dimension === 1) {\n const t = this.tds.finiteEdge.first!;\n const orient = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p);\n conform = orient === Sign.COUNTERCLOCKWISE;\n }\n const v = this.tds.insertDimUp(this.tds._infinite, conform);\n v.point = p;\n return v;\n }\n\n insertOutsideConvexHull(p: Point, t: Triangle): Vertex {\n let v: Vertex;\n if (this.tds.dimension === 1) {\n throw new Error(\"sdfasdasd\");\n } else {\n v = this.insertOutsideConvexHull2(p, t);\n }\n v.point = p;\n return v;\n }\n\n insertOutsideConvexHull2(p: Point, t: Triangle): Vertex {\n let li = t.indexV(this.tds._infinite);\n const ccwlist: Triangle[] = [];\n const cwlist: Triangle[] = [];\n let fc = new FaceCirculator(this.tds._infinite, t);\n let done = false;\n while (!done) {\n fc.prev();\n li = fc.t!.indexV(this.tds._infinite);\n const q = fc.t!.vertices[ccw(li)]!.point!;\n const r = fc.t!.vertices[cw(li)]!.point!;\n if (orientation(p, q, r) === Sign.LEFT_TURN) ccwlist.push(fc.t!);\n else done = true;\n }\n fc = new FaceCirculator(this.tds._infinite, t);\n done = false;\n while (!done) {\n fc.next();\n li = fc.t!.indexV(this.tds._infinite);\n const q = fc.t!.vertices[ccw(li)]!.point!;\n const r = fc.t!.vertices[cw(li)]!.point!;\n if (orientation(p, q, r) === Sign.LEFT_TURN) cwlist.push(fc.t!);\n else done = true;\n }\n const v = this.tds.insertInFace(t);\n v.point = p;\n let th;\n while (ccwlist.length > 0) {\n th = ccwlist[0];\n li = ccw(th.indexV(this.tds._infinite));\n this.tds.flip(th, li);\n ccwlist.shift();\n }\n while (cwlist.length > 0) {\n th = cwlist[0];\n li = cw(th.indexV(this.tds._infinite));\n this.tds.flip(th, li);\n cwlist.shift();\n }\n fc = new FaceCirculator(v, null);\n while (!fc.t!.isInfinite()) fc.next();\n this.tds._infinite.triangle = fc.t!;\n return v;\n }\n\n locate(p: Point, start: Triangle | null) {\n let lt = 0;\n let li = 0;\n if (this.tds.dimension < 0) {\n lt = LocateType.OUTSIDE_AFFINE_HULL;\n li = 4;\n return { loc: null, lt, li };\n } else if (this.tds.dimension === 0) {\n if (xyEqual(p, this.tds.finiteVertex.triangle!.vertices[0]!.point!)) {\n lt = LocateType.VERTEX;\n } else {\n lt = LocateType.OUTSIDE_AFFINE_HULL;\n }\n li = 4;\n return { loc: null, lt, li };\n } else if (this.tds.dimension === 1) {\n return this.marchLocate1D(p);\n }\n if (start === null) {\n const t = this.tds._infinite.triangle!;\n start = t.neighbours[t.indexV(this.tds._infinite)]!;\n } else if (start.isInfinite()) {\n start = start.neighbours[start.indexV(this.tds._infinite)]!;\n }\n return this.marchLocate2D(start, p);\n }\n\n marchLocate1D(p: Point) {\n const ff = this.tds._infinite.triangle!;\n const iv = ff.indexV(this.tds._infinite);\n const t = ff.neighbours[iv]!;\n const pqt = orientation(t.vertices[0]!.point!, t.vertices[1]!.point!, p);\n if (pqt === Sign.RIGHT_TURN || pqt === Sign.LEFT_TURN) {\n return { loc: new Triangle(), lt: LocateType.OUTSIDE_AFFINE_HULL, li: 4 };\n }\n const i = t.indexT(ff);\n if (collinearBetween(p, t.vertices[1 - i]!.point!, t.vertices[i]!.point!))\n return { loc: ff, lt: LocateType.OUTSIDE_CONVEX_HULL, li: iv };\n\n if (xyEqual(p, t.vertices[1 - i]!.point!)) return { loc: t, lt: LocateType.VERTEX, li: 1 - i };\n throw new Error(\"sdfsdf\");\n }\n\n marchLocate2D(c: Triangle, p: Point) {\n let prev = null;\n let first = true;\n let lt: LocateType | undefined;\n let li: number | undefined;\n while (true) {\n if (c.isInfinite()) {\n return { loc: c, lt: LocateType.OUTSIDE_CONVEX_HULL, li: c.indexV(this.tds._infinite) };\n }\n const leftFirst = 0; // Math.round(Math.random());\n const p0 = c.vertices[0]!.point!;\n const p1 = c.vertices[1]!.point!;\n const p2 = c.vertices[2]!.point!;\n let o0: Sign;\n let o1: Sign;\n let o2: Sign;\n if (first) {\n prev = c;\n first = false;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n } else if (leftFirst) {\n if (c.neighbours[0]! === prev) {\n prev = c;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o1 = Sign.POSITIVE;\n } else if (c.neighbours[1]! === prev) {\n prev = c;\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o2 = Sign.POSITIVE;\n } else {\n prev = c;\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o0 = Sign.POSITIVE;\n }\n } else {\n if (c.neighbours[0] === prev) {\n prev = c;\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = Sign.POSITIVE;\n } else if (c.neighbours[1] === prev) {\n prev = c;\n o0 = orientation(p0, p1, p);\n if (o0 === Sign.NEGATIVE) {\n c = c.neighbours[2]!;\n continue;\n }\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = Sign.POSITIVE;\n } else {\n prev = c;\n o1 = orientation(p1, p2, p);\n if (o1 === Sign.NEGATIVE) {\n c = c.neighbours[0]!;\n continue;\n }\n o2 = orientation(p2, p0, p);\n if (o2 === Sign.NEGATIVE) {\n c = c.neighbours[1]!;\n continue;\n }\n o0 = Sign.POSITIVE;\n }\n }\n const sum =\n (o0 === Sign.COLLINEAR ? 1 : 0) + (o1 === Sign.COLLINEAR ? 1 : 0) + (o2 === Sign.COLLINEAR ? 1 : 0);\n switch (sum) {\n case 0: {\n lt = LocateType.FACE;\n li = 4;\n break;\n }\n case 1: {\n lt = LocateType.EDGE;\n li = o0 === Sign.COLLINEAR ? 2 : o1 === Sign.COLLINEAR ? 0 : 1;\n break;\n }\n case 2: {\n lt = LocateType.VERTEX;\n li = o0 !== Sign.COLLINEAR ? 2 : o1 !== Sign.COLLINEAR ? 0 : 1;\n break;\n }\n }\n if (lt === undefined || li === undefined) throw new Error(\"ert\");\n return { loc: c, lt, li };\n }\n }\n\n iLocate(p: Point, start: Triangle | null) {\n if (this.tds.dimension < 2) return start;\n if (start === null) {\n const t = this.tds._infinite.triangle!;\n start = t.neighbours[t.indexV(this.tds._infinite)];\n } else if (start.isInfinite()) {\n start = start.neighbours[start.indexV(this.tds._infinite)];\n }\n let prev = null;\n let c = start!;\n let first = true;\n let nTurns = 2500;\n while (true) {\n if (!nTurns--) return c;\n if (c.isInfinite()) return c;\n const p0 = c.vertices[0]!.point!;\n const p1 = c.vertices[1]!.point!;\n const p2 = c.vertices[2]!.point!;\n if (first) {\n prev = c;\n first = false;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n } else {\n if (c.neighbours[0] === prev) {\n prev = c;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n } else if (c.neighbours[1] === prev) {\n prev = c;\n if (hasInexactNegativeOrientation(p0, p1, p)) {\n c = c.neighbours[2]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n } else {\n prev = c;\n if (hasInexactNegativeOrientation(p2, p0, p)) {\n c = c.neighbours[1]!;\n continue;\n }\n if (hasInexactNegativeOrientation(p1, p2, p)) {\n c = c.neighbours[0]!;\n continue;\n }\n }\n }\n break;\n }\n return c;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=script&lang=ts&\"","import { GlobalPoint } from \"@/game/geom\";\nimport { GridLayer } from \"@/game/layers/grid\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { Asset } from \"@/game/shapes/asset\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { l2gx, l2gy, l2gz } from \"@/game/units\";\n\nclass LayerManager {\n layers: Layer[] = [];\n width = window.innerWidth;\n height = window.innerHeight;\n\n UUIDMap: Map = new Map();\n\n // Refresh interval and redraw setter.\n interval = 30;\n\n constructor() {\n requestAnimationFrame(this.drawLoop);\n }\n\n reset() {\n this.layers = [];\n this.UUIDMap = new Map();\n }\n\n drawLoop = () => {\n for (let i = this.layers.length - 1; i >= 0; i--) {\n this.layers[i].draw();\n }\n requestAnimationFrame(this.drawLoop);\n };\n\n setWidth(width: number): void {\n this.width = width;\n for (const layer of this.layers) {\n layer.canvas.width = width;\n layer.width = width;\n }\n }\n\n setHeight(height: number): void {\n this.height = height;\n for (const layer of this.layers) {\n layer.canvas.height = height;\n layer.height = height;\n }\n }\n\n addLayer(layer: Layer): void {\n this.layers.push(layer);\n if (!gameStore.IS_DM && !layer.playerEditable) return;\n if (layer.selectable) gameStore.addLayer(layer.name);\n }\n\n hasLayer(name: string): boolean {\n return this.layers.some(l => l.name === name);\n }\n\n getLayer(name?: string) {\n name = name === undefined ? gameStore.selectedLayer : name;\n for (const layer of this.layers) {\n if (layer.name === name) return layer;\n }\n }\n\n selectLayer(name: string, sync: boolean = true): void {\n let found = false;\n for (const layer of this.layers) {\n if (!layer.selectable) continue;\n if (found && layer.name !== \"fow\") layer.ctx.globalAlpha = 0.3;\n else layer.ctx.globalAlpha = 1.0;\n\n if (name === layer.name) {\n gameStore.selectLayer({ name, sync });\n found = true;\n }\n\n layer.clearSelection();\n layer.invalidate(true);\n }\n }\n\n getGridLayer(): GridLayer | undefined {\n return this.getLayer(\"grid\");\n }\n\n hasSelection() {\n const selection = this.getSelection();\n return selection !== undefined && selection.length > 0;\n }\n\n // THIS INCLUDES POTENTIALLY THE SelectTool.SelectionHelper !!!\n getSelection() {\n const layer = this.getLayer();\n if (layer === undefined) return undefined;\n return layer.selection;\n }\n\n invalidate(): void {\n for (let i = this.layers.length - 1; i >= 0; i--) {\n this.layers[i].invalidate(true);\n }\n }\n\n invalidateLight() {\n for (let i = this.layers.length - 1; i >= 0; i--)\n if (this.layers[i].isVisionLayer) this.layers[i].invalidate(true);\n }\n\n dropAsset(event: DragEvent) {\n const layer = this.getLayer();\n if (layer === undefined || event === null || event.dataTransfer === null) return;\n const image = document.createElement(\"img\");\n image.src = event.dataTransfer.getData(\"text/plain\");\n const asset = new Asset(\n image,\n new GlobalPoint(l2gx(event.clientX), l2gy(event.clientY)),\n l2gz(image.width),\n l2gz(image.height),\n );\n asset.src = new URL(image.src).pathname;\n\n if (gameStore.useGrid) {\n const gs = gameStore.gridSize;\n asset.refPoint = new GlobalPoint(\n Math.round(asset.refPoint.x / gs) * gs,\n Math.round(asset.refPoint.y / gs) * gs,\n );\n asset.w = Math.max(Math.round(asset.w / gs) * gs, gs);\n asset.h = Math.max(Math.round(asset.h / gs) * gs, gs);\n }\n\n layer.addShape(asset, true);\n }\n}\n\nexport const layerManager = new LayerManager();\n(window).lm = layerManager;\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./createtoken_modal.vue?vue&type=template&id=73816298&scoped=true&\"\nimport script from \"./createtoken_modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./createtoken_modal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"73816298\",\n null\n \n)\n\nexport default component.exports","import { BoundingRect } from \"@/game/shapes/boundingrect\";\n\nexport class BoundingNode {\n bbox: BoundingRect;\n nPrimitives: number;\n children: BoundingNode[] = [];\n constructor(nPrimitives: number, bbox: BoundingRect) {\n this.nPrimitives = nPrimitives;\n this.bbox = bbox;\n }\n}\n\nexport class LeafNode extends BoundingNode {\n firstPrimOffset: number;\n constructor(first: number, n: number, bbox: BoundingRect) {\n super(n, bbox);\n this.firstPrimOffset = first;\n }\n}\n\nexport class InteriorNode extends BoundingNode {\n dimension: number;\n constructor(dimension: number, c1: BoundingNode, c2: BoundingNode) {\n super(0, c1.bbox.union(c2.bbox));\n this.dimension = dimension;\n this.children.push(c1);\n this.children.push(c2);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=script&lang=ts&\"","import Tools from \"@/game/ui/tools/tools.vue\";\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { ServerAura } from '@/game/comm/types/shapes';\nimport { EventBus } from \"@/game/event-bus\";\nimport { Vector } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\n\nexport function onKeyUp(event: KeyboardEvent) {\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {\n } else {\n if (event.key === \"Delete\" || event.key === \"Del\" || event.key === \"Backspace\") {\n if (layerManager.getLayer === undefined) {\n console.log(\"No active layer selected for delete operation\");\n return;\n }\n const l = layerManager.getLayer()!;\n for (let i = l.selection.length - 1; i >= 0; i--) {\n const sel = l.selection[i];\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) {\n l.selection.splice(i, 1);\n continue;\n }\n l.removeShape(sel, true, false);\n EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n EventBus.$emit(\"Initiative.Remove\", sel.uuid);\n }\n }\n }\n}\n\nexport function onKeyDown(event: KeyboardEvent) {\n if (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) {\n if (event.keyCode === 65 && event.ctrlKey) event.target!.select();\n } else {\n if (event.keyCode >= 37 && event.keyCode <= 40) {\n // todo: this should already be rounded\n const gridSize = Math.round(gameStore.gridSize);\n let offsetX = gridSize * (event.keyCode % 2);\n let offsetY = gridSize * (event.keyCode % 2 ? 0 : 1);\n if (layerManager.hasSelection()) {\n const selection = layerManager.getSelection()!;\n offsetX *= event.keyCode <= 38 ? -1 : 1;\n offsetY *= event.keyCode <= 38 ? -1 : 1;\n let delta = new Vector(offsetX, offsetY);\n if (!event.shiftKey || !gameStore.IS_DM) {\n // First check for collisions. Using the smooth wall slide collision check used on mouse move is overkill here.\n for (const sel of selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) continue;\n delta = calculateDelta(delta, sel);\n }\n }\n for (const sel of selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === sel.uuid) continue;\n sel.refPoint = sel.refPoint.add(delta);\n // todo: Fix again\n // if (sel.refPoint.x % gridSize !== 0 || sel.refPoint.y % gridSize !== 0) sel.snapToGrid();\n socket.emit(\"Shape.Position.Update\", { shape: sel.asDict(), redraw: true, temporary: false });\n }\n gameStore.recalculateVision();\n layerManager.getLayer()!.invalidate(false);\n } else {\n // The pan offsets should be in the opposite direction to give the correct feel.\n gameStore.increasePanX(offsetX * (event.keyCode <= 38 ? 1 : -1));\n gameStore.increasePanY(offsetY * (event.keyCode <= 38 ? 1 : -1));\n layerManager.invalidate();\n sendClientOptions();\n }\n } else if (event.keyCode === 68) {\n const layer = layerManager.getLayer();\n if (layer) {\n layer.clearSelection();\n layer.invalidate(true);\n }\n } else if (event.key === \"u\" && event.ctrlKey) {\n event.preventDefault();\n event.stopPropagation();\n gameStore.toggleUI();\n } else if (event.key === \"c\" && event.ctrlKey) {\n const layer = layerManager.getLayer();\n if (!layer) return;\n if (!layer.selection) return;\n const clipboard = [];\n for (const shape of layer.selection) {\n if ((getRef(\"tools\").$refs.selectTool).selectionHelper.uuid === shape.uuid) continue;\n clipboard.push(shape.asDict());\n }\n gameStore.setClipboard(clipboard);\n } else if (event.key === \"v\" && event.ctrlKey) {\n const layer = layerManager.getLayer();\n if (!layer) return;\n if (!gameStore.clipboard) return;\n layer.selection = [];\n for (const clip of gameStore.clipboard) {\n clip.x += 10;\n clip.y += 10;\n clip.uuid = uuidv4();\n const oldTrackers = clip.trackers;\n clip.trackers = [];\n for (const tracker of oldTrackers) {\n const newTracker: Tracker = {\n ...tracker,\n uuid: uuidv4()\n }\n clip.trackers.push(newTracker);\n }\n const oldAuras = clip.auras;\n clip.auras = [];\n for (const aura of oldAuras) {\n const newAura: ServerAura = {\n ...aura,\n uuid: uuidv4()\n }\n clip.auras.push(newAura);\n }\n const shape = createShapeFromDict(clip);\n if (shape === undefined) continue;\n layer.addShape(shape, true);\n layer.selection.push(shape);\n }\n if (layer.selection.length === 1) EventBus.$emit(\"SelectionInfo.Shape.Set\", layer.selection[0]);\n else EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n layer.invalidate(false);\n }\n }\n}\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n\nimport ShapeContext from \"@/game/ui/selection/shapecontext.vue\";\nimport CreateTokenModal from \"@/game/ui/tools/createtoken_modal.vue\";\nimport DrawTool from \"@/game/ui/tools/draw.vue\";\nimport FilterTool from \"@/game/ui/tools/filter.vue\";\nimport MapTool from \"@/game/ui/tools/map.vue\";\nimport PanTool from \"@/game/ui/tools/pan\";\nimport SelectTool from \"@/game/ui/tools/select.vue\";\nimport VisionTool from \"@/game/ui/tools/vision.vue\";\n\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameManager } from \"@/game/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { RulerTool } from \"@/game/ui/tools/ruler\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\nimport Component from \"vue-class-component\";\n\n@Component({\n components: {\n \"select-tool\": SelectTool,\n \"pan-tool\": PanTool,\n \"draw-tool\": DrawTool,\n \"ruler-tool\": RulerTool,\n \"map-tool\": MapTool,\n \"filter-tool\": FilterTool,\n \"vision-tool\": VisionTool,\n \"shape-menu\": ShapeContext,\n \"createtoken-dialog\": CreateTokenModal,\n },\n watch: {\n currentTool(newValue, oldValue) {\n this.$emit(\"tools-select-change\", newValue, oldValue);\n },\n },\n})\nexport default class Tools extends Vue {\n $refs!: {\n selectTool: InstanceType;\n };\n\n currentTool = \"Select\";\n tools = [\"Select\", \"Pan\", \"Draw\", \"Ruler\", \"Map\", \"Filter\", \"Vision\"];\n dmTools = [\"Map\"];\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n get currentToolComponent(): string {\n return `${this.currentTool.toLowerCase()}-tool`;\n }\n\n get visibleTools(): string[] {\n return this.tools.filter(t => (!this.dmTools.includes(t) || this.IS_DM));\n }\n\n toolVisible(tool: string): boolean {\n if (tool === 'Filter') {\n return Object.keys(gameStore.labels).length > 0;\n } else if (tool === 'Vision') {\n return gameStore.ownedtokens.length > 1;\n }\n return true;\n }\n\n mousedown(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if (event.button === 1) {\n targetTool = \"Pan\";\n } else if (event.button !== 0) {\n return;\n }\n\n this.$emit(\"mousedown\", event, targetTool);\n }\n mouseup(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if (event.button === 1) {\n targetTool = \"Pan\";\n } else if (event.button !== 0) {\n return;\n }\n\n this.$emit(\"mouseup\", event, targetTool);\n }\n mousemove(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n\n let targetTool = this.currentTool;\n if ((event.buttons & 4) !== 0) {\n targetTool = \"Pan\";\n } else if ((event.button & 1) > 1) {\n return;\n }\n\n this.$emit(\"mousemove\", event, targetTool);\n\n // Annotation hover\n let found = false;\n for (const uuid of gameStore.annotations) {\n if (layerManager.UUIDMap.has(uuid) && layerManager.hasLayer(\"draw\")) {\n const shape = layerManager.UUIDMap.get(uuid)!;\n if (shape.contains(l2g(getMouse(event)))) {\n found = true;\n gameManager.annotationManager.setActiveText(shape.annotation);\n }\n }\n }\n if (!found && gameManager.annotationManager.shown) {\n gameManager.annotationManager.setActiveText(\"\");\n }\n }\n mouseleave(event: MouseEvent) {\n // When leaving the window while a mouse is pressed down, act as if it was released\n if ((event.buttons & 1) !== 0) {\n this.$emit(\"mouseup\", event, this.currentTool);\n }\n }\n contextmenu(event: MouseEvent) {\n if ((event.target).tagName !== \"CANVAS\") return;\n if (event.button !== 2 || (event.target).tagName !== \"CANVAS\") return;\n this.$emit(\"contextmenu\", event, this.currentTool);\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextmenu.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class Prompt extends Vue {\n $refs!: {\n answer: HTMLElement;\n };\n\n visible = false;\n question = \"\";\n answer = \"\";\n title = \"\";\n\n resolve = (value: string) => {};\n reject = () => {};\n\n submit() {\n this.resolve(this.answer);\n this.close();\n }\n close() {\n this.reject();\n this.visible = false;\n this.question = \"\";\n this.answer = \"\";\n this.title = \"\";\n }\n prompt(question: string, title: string): Promise {\n this.question = question;\n this.title = title;\n this.visible = true;\n this.$nextTick(() => {\n this.$refs.answer.focus();\n });\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=style&index=0&id=0bf2b7ba&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._v(_vm._s(_vm.message))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./load.vue?vue&type=template&id=ff095222&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./menu.vue?vue&type=script&lang=ts&\"","import { GlobalPoint, Point, Ray, Vector } from \"@/game/geom\";\nimport { g2lx, g2ly } from \"../units\";\n\nexport class BoundingRect {\n readonly w: number;\n readonly h: number;\n readonly topLeft: GlobalPoint;\n readonly topRight: GlobalPoint;\n readonly botRight: GlobalPoint;\n readonly botLeft: GlobalPoint;\n\n constructor(topleft: GlobalPoint, w: number, h: number) {\n this.w = w;\n this.h = h;\n this.topLeft = topleft;\n this.topRight = new GlobalPoint(topleft.x + w, topleft.y);\n this.botRight = new GlobalPoint(topleft.x + w, topleft.y + h);\n this.botLeft = new GlobalPoint(topleft.x, topleft.y + h);\n }\n\n contains(point: GlobalPoint): boolean {\n return (\n this.topLeft.x <= point.x &&\n this.topRight.x >= point.x &&\n this.topLeft.y <= point.y &&\n this.botLeft.y >= point.y\n );\n }\n\n get points() {\n if (this.w === 0 || this.h === 0) return [[this.topLeft.x, this.topLeft.y]];\n return [\n [this.topLeft.x, this.topLeft.y],\n [this.botLeft.x, this.botLeft.y],\n [this.botRight.x, this.botRight.y],\n [this.topRight.x, this.topRight.y],\n ];\n }\n\n offset(vector: Vector): BoundingRect {\n return new BoundingRect(this.topLeft.add(vector), this.w, this.h);\n }\n\n union(other: BoundingRect): BoundingRect {\n const xmin = Math.min(this.topLeft.x, other.topLeft.x);\n const xmax = Math.max(this.topRight.x, other.topRight.x);\n const ymin = Math.min(this.topLeft.y, other.topLeft.y);\n const ymax = Math.max(this.botLeft.y, other.botLeft.y);\n return new BoundingRect(new GlobalPoint(xmin, ymin), xmax - xmin, ymax - ymin);\n }\n\n getDiagCorner(botright: boolean) {\n return botright ? this.botRight : this.topLeft;\n }\n\n intersectsWith(other: BoundingRect): boolean {\n return !(\n other.topLeft.x > this.topRight.x ||\n other.topRight.x < this.topLeft.x ||\n other.topLeft.y > this.botLeft.y ||\n other.botLeft.y < this.topLeft.y\n );\n }\n\n intersectsWithInner(other: BoundingRect): boolean {\n return !(\n other.topLeft.x >= this.topRight.x ||\n other.topRight.x <= this.topLeft.x ||\n other.topLeft.y >= this.botLeft.y ||\n other.botLeft.y <= this.topLeft.y\n );\n }\n\n intersectP(ray: Ray, invDir: Vector, dirIsNeg: boolean[]) {\n let txmin = invDir.x * (this.getDiagCorner(dirIsNeg[0]).x - ray.origin!.x);\n let txmax = invDir.x * (this.getDiagCorner(!dirIsNeg[0]).x - ray.origin!.x);\n const tymin = invDir.y * (this.getDiagCorner(dirIsNeg[1]).y - ray.origin!.y);\n const tymax = invDir.y * (this.getDiagCorner(!dirIsNeg[1]).y - ray.origin!.y);\n if (txmin > tymax || tymin > txmax) return { hit: false, min: txmin, max: txmax };\n if (tymin > txmin) txmin = tymin;\n if (tymax < txmax) txmax = tymax;\n return { hit: txmin < ray.tMax! && txmax > 0, min: txmin, max: txmax };\n }\n\n center(): GlobalPoint {\n return this.topLeft.add(new Vector(this.w / 2, this.h / 2));\n }\n\n getMaxExtent() {\n return this.w > this.h ? 0 : 1;\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n const coreVisible = !(\n g2lx(this.topLeft.x) > canvas.width ||\n g2ly(this.topLeft.y) > canvas.height ||\n g2lx(this.topRight.x) < 0 ||\n g2ly(this.botRight.y) < 0\n );\n if (coreVisible) return true;\n return false;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"formcontainer\"}},[(_vm.owned || _vm.joined)?_c('form',[_c('fieldset',[_c('legend',{staticClass:\"legend\"},[_vm._v(\"Your sessions\")]),_c('div',{staticClass:\"input\"},[_vm._l((_vm.owned),function(room,i){return _c('router-link',{key:'o-'+i,attrs:{\"to\":'/game/' + room[1] + '/' + room[0]}},[_vm._v(_vm._s(room[0]))])}),_vm._l((_vm.joined),function(room,i){return _c('router-link',{key:'j-'+i,attrs:{\"to\":'/game/' + room[1] + '/' + room[0]}},[_vm._v(_vm._s(room[1])+\"/\"+_vm._s(room[0]))])})],2),(_vm.owned.length === 0)?_c('div',{staticClass:\"input\"},[_vm._v(\"No active sessions\")]):_vm._e()])]):_vm._e(),_vm._m(0),_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.createRoom($event)}}},[_c('fieldset',[(!_vm.owned && !_vm.joined)?_c('legend',{staticClass:\"legend\"},[_vm._v(\"Create a session\")]):_c('div',{staticClass:\"input\"},[_vm._v(\"Create a new session\")]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newSessionName),expression:\"newSessionName\"}],attrs:{\"type\":\"text\",\"name\":\"room_name\",\"placeholder\":\"Session Name\"},domProps:{\"value\":(_vm.newSessionName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newSessionName=$event.target.value}}}),_vm._m(1)]),_vm._m(2)])]),_c('div',{attrs:{\"id\":\"account-options\"}},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('router-link',{staticClass:\"submit\",attrs:{\"tag\":\"button\",\"title\":\"Account Settings\",\"to\":\"/account\"}},[_c('i',{staticClass:\"fas fa-cog\"})])],1),_c('form',{on:{\"submit\":function($event){$event.preventDefault();}}},[_c('router-link',{staticClass:\"submit\",attrs:{\"tag\":\"button\",\"title\":\"Logout\",\"to\":\"/auth/logout\"}},[_c('i',{staticClass:\"fas fa-sign-out-alt\"})])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_c('span',[_vm._v(\"OR\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fab fa-d-and-d\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"submit\",attrs:{\"type\":\"submit\",\"title\":\"Create\"}},[_c('i',{staticClass:\"fas fa-arrow-right\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=template&id=61eb1455&scoped=true&\"","/*\nThis module defines some Point classes.\nA strong focus is made to ensure that at no time a global and a local point are mixed up with each other.\nAt first glance this adds weird looking hacks as ts does not support nominal typing.\n*/\n\nexport function getPointDistance(p1: Point, p2: Point) {\n const a = p1.x - p2.x;\n const b = p1.y - p2.y;\n return Math.sqrt(a * a + b * b);\n}\n\nexport class Point {\n readonly x: number;\n readonly y: number;\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n static fromArray(point: number[]) {\n return new Point(point[0], point[1]);\n }\n add(vec: Vector) {\n return new Point(this.x + vec.x, this.y + vec.y);\n }\n subtract(other: Point) {\n return new Vector(this.x - other.x, this.y - other.y);\n }\n clone(): Point {\n return new Point(this.x, this.y);\n }\n get(dimension: 0 | 1) {\n if (dimension === 0) return this.x;\n return this.y;\n }\n asArray(): number[] {\n return [this.x, this.y];\n }\n}\nexport class GlobalPoint extends Point {\n // This is to differentiate with LocalPoint, is actually never used\n // We do ! to prevent errors that it never gets initialized\n // tslint:disable-next-line:variable-name\n _GlobalPoint!: string;\n add(vec: Vector): GlobalPoint {\n return super.add(vec);\n }\n subtract(other: GlobalPoint): Vector {\n return super.subtract(other);\n }\n clone(): GlobalPoint {\n return super.clone();\n }\n static fromArray(point: number[]) {\n return new GlobalPoint(point[0], point[1]);\n }\n}\n\nexport class LocalPoint extends Point {\n // This is to differentiate with GlobalPoint, is actually never used\n // We do ! to prevent errors that it never gets initialized\n // tslint:disable-next-line:variable-name\n _LocalPoint!: string;\n add(vec: Vector): LocalPoint {\n return super.add(vec);\n }\n subtract(other: LocalPoint): Vector {\n return super.subtract(other);\n }\n clone(): LocalPoint {\n return super.clone();\n }\n}\n\nexport class Vector {\n readonly x: number;\n readonly y: number;\n constructor(x: number, y: number) {\n this.x = x;\n this.y = y;\n }\n dot(other: Vector): number {\n return this.x * other.x + this.y * other.y;\n }\n inverse(): Vector {\n return new Vector(this.x === 0 ? 0 : 1 / this.x, this.y === 0 ? 0 : 1 / this.y);\n }\n length(): number {\n return Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2));\n }\n normalize(): Vector {\n const l = this.length();\n return new Vector(this.x / l, this.y / l);\n }\n reverse(): Vector {\n return new Vector(-this.x, -this.y);\n }\n multiply(scale: number): Vector {\n return new Vector(this.x * scale, this.y * scale);\n }\n angle(): number {\n return (Math.atan2(this.y, this.x) * 180) / Math.PI;\n }\n}\n\nexport class Ray {\n readonly direction: Vector;\n readonly origin: T;\n tMax: number;\n constructor(origin: T, direction: Vector, tMax?: number) {\n this.direction = direction;\n this.origin = origin;\n if (tMax === undefined) tMax = Infinity;\n this.tMax = tMax;\n }\n static fromPoints(p1: T, p2: T): Ray {\n const vec = new Vector(p2.x - p1.x, p2.y - p1.y);\n let maxT;\n if (Math.abs(vec.x) > 0.01) maxT = (p2.x - p1.x) / vec.x;\n else maxT = (p2.y - p1.y) / vec.y;\n return new Ray(p1, vec, maxT);\n }\n get(t: number): T {\n return new Point(this.origin.x + t * this.direction.x, this.origin.y + t * this.direction.y);\n }\n getDistance(t1: number, t2: number) {\n return Math.sqrt(Math.pow(t2 - t1, 2) * (Math.pow(this.direction.x, 2) + Math.pow(this.direction.y, 2)));\n }\n getT(t1: number, distance: number) {\n return t1 + Math.sqrt(Math.pow(distance, 2) / (Math.pow(this.direction.x, 2) + Math.pow(this.direction.y, 2)));\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_vm._l((_vm.folders),function(folder){return _c('li',{key:folder,staticClass:\"folder\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggle($event)}}},[_vm._v(\"\\n \"+_vm._s(folder)+\"\\n \"),_c('asset-node',{attrs:{\"asset\":_vm.asset[folder]}})],1)}),_vm._l((_vm.files),function(file){return _c('li',{key:file.name,staticClass:\"file draggable token\",attrs:{\"draggable\":\"true\"},on:{\"mouseover\":function($event){_vm.showImage = file.hash},\"mouseout\":function($event){_vm.showImage = null},\"dragstart\":function($event){return _vm.dragStart($event, '/static/assets/' + file.hash)}}},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \"),(_vm.showImage == file.hash)?_c('div',{staticClass:\"preview\"},[_c('img',{staticClass:\"asset-preview-image\",attrs:{\"src\":'/static/assets/' + file.hash}})]):_vm._e()])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=template&id=6d718094&scoped=true&\"","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./inputCopy.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport vueSlider from \"vue-slider-component\";\n\nimport \"@/game/api/events\";\n\nimport { throttle } from \"lodash\";\nimport { mapGetters, mapState } from \"vuex\";\n\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport Initiative from \"@/game/ui/initiative.vue\";\nimport LabelManager from \"@/game/ui/labels.vue\";\nimport MenuBar from \"@/game/ui/menu/menu.vue\";\nimport NoteDialog from \"@/game/ui/note.vue\";\nimport SelectionInfo from \"@/game/ui/selection/selection_info.vue\";\nimport Tools from \"@/game/ui/tools/tools.vue\";\n\nimport { createConnection, socket } from \"@/game/api/socket\";\nimport { onKeyDown, onKeyUp } from \"@/game/events/keyboard\";\nimport { scrollZoom } from \"@/game/events/mouse\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { LocalPoint } from \"./geom\";\nimport DmSettings from \"./ui/dmsettings.vue\";\n\n@Component({\n components: {\n \"tool-bar\": Tools,\n \"selection-info\": SelectionInfo,\n \"prompt-dialog\": Prompt,\n \"confirm-dialog\": ConfirmDialog,\n \"menu-bar\": MenuBar,\n \"initiative-dialog\": Initiative,\n \"zoom-slider\": vueSlider,\n \"note-dialog\": NoteDialog,\n \"label-dialog\": LabelManager,\n \"dm-settings\": DmSettings,\n },\n beforeRouteEnter(to, from, next) {\n createConnection(to);\n next();\n },\n beforeRouteLeave(to, from, next) {\n socket.disconnect();\n next();\n },\n})\nexport default class Game extends Vue {\n $refs!: {\n confirm: InstanceType;\n tools: InstanceType;\n };\n\n ready = {\n manager: false,\n tools: false,\n };\n\n get showUI(): boolean {\n return gameStore.showUI;\n }\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n get FAKE_PLAYER(): boolean {\n return gameStore.FAKE_PLAYER;\n }\n\n get layers(): string[] {\n return gameStore.layers;\n }\n\n get selectedLayer(): string {\n return gameStore.selectedLayer;\n }\n\n get zoomDisplay(): number {\n return gameStore.zoomDisplay;\n }\n\n set zoomDisplay(value: number) {\n gameStore.updateZoom({\n newZoomDisplay: value,\n zoomLocation: l2g(new LocalPoint(window.innerWidth / 2, window.innerHeight / 2)),\n });\n }\n\n mounted() {\n window.addEventListener(\"resize\", this.resizeWindow);\n window.addEventListener(\"keyup\", onKeyUp);\n window.addEventListener(\"keydown\", onKeyDown);\n this.ready.manager = true;\n }\n\n destroyed() {\n window.removeEventListener(\"resize\", this.resizeWindow);\n window.removeEventListener(\"keyup\", onKeyUp);\n window.removeEventListener(\"keydown\", onKeyDown);\n this.ready.manager = false;\n }\n\n // Window events\n\n zoom(event: WheelEvent) {\n throttle(scrollZoom)(event);\n }\n\n resizeWindow() {\n layerManager.setWidth(window.innerWidth);\n layerManager.setHeight(window.innerHeight);\n layerManager.invalidate();\n }\n\n // Mouse events\n\n mousedown(event: MouseEvent) {\n this.$refs.tools.mousedown(event);\n }\n mouseup(event: MouseEvent) {\n this.$refs.tools.mouseup(event);\n }\n mousemove(event: MouseEvent) {\n this.$refs.tools.mousemove(event);\n }\n mouseleave(event: MouseEvent) {\n this.$refs.tools.mouseleave(event);\n }\n contextmenu(event: MouseEvent) {\n this.$refs.tools.contextmenu(event);\n }\n selectLayer(layer: string) {\n layerManager.selectLayer(layer);\n }\n drop(event: DragEvent) {\n if (event === null || event.dataTransfer === null) return;\n if (event.dataTransfer.files.length > 0) {\n this.$refs.confirm\n .open(\"Uploading files should be done through the asset manager.\", \"Ok\", \"\")\n .then(() => {}, () => {});\n } else if (event.dataTransfer.getData(\"text/plain\") === \"\") {\n return;\n } else {\n layerManager.dropAsset(event);\n }\n }\n}\n","import { GlobalPoint, LocalPoint, Ray } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nexport function g2l(obj: GlobalPoint): LocalPoint {\n const z = gameStore.zoomFactor;\n const panX = gameStore.panX;\n const panY = gameStore.panY;\n return new LocalPoint((obj.x + panX) * z, (obj.y + panY) * z);\n}\n\nexport function g2lx(x: number) {\n return g2l(new GlobalPoint(x, 0)).x;\n}\n\nexport function g2ly(y: number) {\n return g2l(new GlobalPoint(0, y)).y;\n}\n\nexport function g2lz(z: number) {\n return z * gameStore.zoomFactor;\n}\n\nexport function getUnitDistance(r: number) {\n return (r / gameStore.unitSize) * gameStore.gridSize;\n}\n\nexport function g2lr(r: number) {\n return g2lz(getUnitDistance(r));\n}\n\nexport function l2g(obj: LocalPoint): GlobalPoint;\nexport function l2g(obj: Ray): Ray;\nexport function l2g(obj: LocalPoint | Ray): GlobalPoint | Ray {\n const z = gameStore.zoomFactor;\n const panX = gameStore.panX;\n const panY = gameStore.panY;\n if (obj instanceof LocalPoint) {\n return new GlobalPoint(obj.x / z - panX, obj.y / z - panY);\n } else {\n return new Ray(l2g(obj.origin), obj.direction.multiply(1 / z), obj.tMax);\n }\n}\n\nexport function l2gx(x: number) {\n return l2g(new LocalPoint(x, 0)).x;\n}\n\nexport function l2gy(y: number) {\n return l2g(new LocalPoint(0, y)).y;\n}\n\nexport function l2gz(z: number) {\n return z / gameStore.zoomFactor;\n}\n\nexport function l2gr(r: number) {\n return l2gz(getUnitDistance(r));\n}\n\n(window).g2lx = g2lx;\n(window).g2ly = g2ly;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { mapState } from \"vuex\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport AssetNode from \"@/game/ui/menu/asset_node.vue\";\nimport NoteDialog from \"@/game/ui/note.vue\";\n\nimport { getRef, uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { gameStore } from \"@/game/store\";\nimport { EventBus } from \"../../event-bus\";\n\n@Component({\n components: {\n \"color-picker\": ColorPicker,\n \"asset-node\": AssetNode,\n },\n computed: {\n ...mapState(\"game\", [\"locations\", \"assets\", \"notes\"]),\n },\n})\nexport default class MenuBar extends Vue {\n visible = {\n settings: false,\n locations: false,\n };\n\n get IS_DM(): boolean {\n return gameStore.IS_DM || gameStore.FAKE_PLAYER;\n }\n get gridColour(): string {\n return gameStore.gridColour;\n }\n set gridColour(value: string) {\n gameStore.setGridColour({ colour: value, sync: true });\n }\n get fowColour(): string {\n return gameStore.fowColour;\n }\n set fowColour(value: string) {\n gameStore.setFOWColour({ colour: value, sync: true });\n }\n get rulerColour(): string {\n return gameStore.rulerColour;\n }\n set rulerColour(value: string) {\n gameStore.setRulerColour({ colour: value, sync: true });\n }\n settingsClick(event: { target: HTMLElement }) {\n if (event.target.classList.contains(\"menu-accordion\")) {\n event.target.classList.toggle(\"menu-accordion-active\");\n const next = event.target.nextElementSibling;\n if (next !== null) next.style.display = next.style.display === \"\" ? \"block\" : \"\";\n }\n }\n changeLocation(name: string) {\n socket.emit(\"Location.Change\", name);\n }\n createLocation() {\n getRef(\"prompt\")\n .prompt(`New location name:`, `Create new location`)\n .then(\n (value: string) => {\n socket.emit(\"Location.New\", value);\n },\n () => {},\n );\n }\n createNote() {\n const note = { title: \"New note\", text: \"\", uuid: uuidv4() };\n gameStore.newNote({ note, sync: true });\n this.openNote(note);\n }\n openNote(note: Note) {\n getRef(\"note\").open(note);\n }\n\n openDmSettings() {\n EventBus.$emit(\"DmSettings.Open\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./colorpicker.vue?vue&type=script&lang=ts&\"","import { CDT } from \"./cdt\";\nimport { ccw, cw, orientation, ulp } from \"./triag\";\n\nexport type Point = number[];\n\nexport const INFINITE = -7e310;\n\nlet _INFINITE_VERTEX: Vertex;\n\nexport enum Sign {\n NEGATIVE = -1,\n ZERO = 0,\n POSITIVE = 1,\n\n RIGHT_TURN = -1,\n LEFT_TURN = 1,\n\n SMALLER = -1,\n EQUAL = 0,\n LARGER = 1,\n\n CLOCKWISE = -1,\n COUNTERCLOCKWISE = 1,\n\n COLLINEAR = 0,\n COPLANAR = 0,\n DEGENERATE = 0,\n\n ON_NEGATIVE_SIDE = -1,\n ON_ORIENTED_BOUNDARY = 0,\n ON_POSITIVE_SIDE = 1,\n}\n\nenum LineFaceState {\n UNDEFINED = -1,\n VERTEX_VERTEX = 0,\n VERTEX_EDGE = 1,\n EDGE_VERTEX = 2,\n EDGE_EDGE = 3,\n}\n\nfunction newPoint(): Point {\n return [INFINITE, INFINITE];\n}\n\nexport class Triangle {\n vertices: (Vertex | null)[] = [];\n neighbours: (Triangle | null)[] = [null, null, null];\n constraints = [false, false, false];\n static _counter = 0;\n uid = Triangle._counter++;\n\n constructor(...vertices: (Vertex | null)[]) {\n this.vertices = vertices;\n }\n\n from(t: Triangle): this {\n this.vertices = t.vertices.slice(0, t.vertices.length);\n this.neighbours = t.neighbours.slice(0, t.neighbours.length);\n this.constraints = t.constraints.slice(0, t.constraints.length);\n return this;\n }\n\n get dimension() {\n return this.vertices.length - 1;\n }\n\n addVertex(vertex: Vertex) {\n if (vertex === undefined) {\n console.log(\"UNDEFINED HIERE\");\n }\n this.vertices.push(vertex);\n vertex.triangle = this;\n }\n\n isConstrained(index: number): boolean {\n return this.constraints[index];\n }\n\n reorient() {\n // If certain indices do not exist yet thay will append faulty undefined's, thus we slice them\n this.vertices = [this.vertices[1], this.vertices[0], this.vertices[2]].slice(0, this.vertices.length);\n this.neighbours = [this.neighbours[1], this.neighbours[0], this.neighbours[2]];\n this.constraints = [this.constraints[1], this.constraints[0], this.constraints[2]];\n }\n\n indexV(v: Vertex): number {\n return this.vertices.indexOf(v);\n }\n\n indexT(t: Triangle): number {\n return this.neighbours.indexOf(t);\n }\n\n isInfinite(index?: number): boolean {\n if (index === undefined) {\n return this.vertices.includes(_INFINITE_VERTEX);\n } else {\n return this.vertices[ccw(index)]!.infinite || this.vertices[cw(index)]!.infinite;\n }\n }\n\n contains(point: Point) {\n const A =\n -this.vertices[1]!.point![1] * this.vertices[2]!.point![0] +\n this.vertices[0]!.point![1] * (-this.vertices[1]!.point![0] + this.vertices[2]!.point![0]) +\n this.vertices[0]!.point![0] * (this.vertices[1]!.point![1] - this.vertices[2]!.point![1]) +\n this.vertices[1]!.point![0] * this.vertices[2]!.point![1];\n const sign = A < 0 ? -1 : 1;\n const s =\n (this.vertices[0]!.point![1] * this.vertices[2]!.point![0] -\n this.vertices[0]!.point![0] * this.vertices[2]!.point![1] +\n (this.vertices[2]!.point![1] - this.vertices[0]!.point![1]) * point[0] +\n (this.vertices[0]!.point![0] - this.vertices[2]!.point![0]) * point[1]) *\n sign;\n if (s < 0) return false;\n const t =\n (this.vertices[0]!.point![0] * this.vertices[1]!.point![1] -\n this.vertices[0]!.point![1] * this.vertices[1]!.point![0] +\n (this.vertices[0]!.point![1] - this.vertices[1]!.point![1]) * point[0] +\n (this.vertices[1]!.point![0] - this.vertices[0]!.point![0]) * point[1]) *\n sign;\n\n return t > 0 && s + t < A * sign;\n }\n}\n\nexport class Vertex {\n infinite = false;\n private _point: Point | undefined;\n triangle: Triangle | undefined;\n\n constructor(point?: Point) {\n this._point = point;\n }\n\n get point(): Point | undefined {\n return this._point;\n }\n\n set point(point: Point | undefined) {\n this._point = point;\n this.infinite = false;\n }\n}\n\nexport class EdgeCirculator {\n ri: number;\n v: Vertex | null;\n t: Triangle | null;\n _ri: number;\n _v: Vertex | null;\n _t: Triangle | null;\n\n constructor(v: Vertex | null, t: Triangle | null) {\n this.v = v;\n this.t = t;\n if (v === null) {\n this.t = null;\n } else if (t === null) {\n this.t = v.triangle!;\n }\n if (this.t == null || this.t.dimension < 1) {\n this.ri = 0;\n this.v = null;\n this.t = null;\n } else {\n const i = this.t.indexV(v!);\n if (this.t.dimension === 2) this.ri = ccw(i);\n else this.ri = 2;\n }\n this._ri = this.ri;\n this._v = this.v;\n this._t = this.t;\n }\n\n get valid() {\n return this.t !== null && this.v !== null;\n }\n\n next(): boolean {\n let i = this.t!.indexV(this.v!);\n if (this.t!.dimension === 1) {\n this.t = this.t!.neighbours[i === 0 ? 1 : 0];\n } else {\n this.t = this.t!.neighbours[ccw(i)];\n i = this.t!.indexV(this.v!);\n this.ri = ccw(i);\n }\n return this.ri !== this._ri || this.v !== this._v || this.t !== this._t;\n }\n}\n\nexport class EdgeIterator {\n private i = 0;\n pos: Triangle | null;\n edge: Edge = new Edge();\n tds: TDS;\n _es = 0;\n constructor(tds: TDS) {\n this.tds = tds;\n this.edge.second = 0;\n if (tds.dimension <= 0) {\n this.pos = null;\n return;\n }\n this.pos = tds.triangles[0];\n if (tds.dimension === 1) this.edge.second = 2;\n while (this.pos !== null && !this.associatedEdge()) {\n throw new Error(\"[poi\");\n }\n\n if (tds.dimension === 1) this._es = 2;\n }\n\n get valid(): boolean {\n return (this.pos !== null || this._es !== this.edge.second) && this.pos!.isInfinite(this.edge.second);\n }\n\n next() {\n do {\n this.increment();\n } while (this.pos !== null && !this.associatedEdge());\n }\n\n collect(): Edge {\n this.edge.first = this.pos;\n return this.edge;\n }\n\n associatedEdge(): boolean {\n if (this.tds.dimension === 1) return true;\n return (\n this.tds.triangles.indexOf(this.pos!) < this.tds.triangles.indexOf(this.pos!.neighbours[this.edge.second]!)\n );\n }\n\n increment() {\n if (this.tds.dimension === 1) {\n this.i++;\n if (this.tds.triangles.length <= this.i) this.pos = null;\n else this.pos = this.tds.triangles[this.i];\n } else if (this.edge.second === 2) {\n this.edge.second = 0;\n this.i++;\n if (this.tds.triangles.length <= this.i) this.pos = null;\n else this.pos = this.tds.triangles[this.i];\n } else {\n this.edge.second++;\n }\n }\n}\n\nexport class FaceCirculator {\n v: Vertex | null;\n t: Triangle | null;\n _v: Vertex | null;\n _t: Triangle | null;\n\n constructor(v: Vertex | null, t: Triangle | null) {\n this.v = v;\n this.t = t;\n if (v === null) {\n this.t = null;\n } else if (t === null) {\n this.t = v.triangle!;\n }\n if (this.t == null || this.t.dimension < 2) {\n this.v = null;\n this.t = null;\n }\n this._v = this.v;\n this._t = this.t;\n }\n\n get valid() {\n return this.t !== null && this.v !== null;\n }\n\n prev() {\n const i = this.t!.indexV(this.v!);\n this.t = this.t!.neighbours[cw(i)];\n }\n\n next(): boolean {\n const i = this.t!.indexV(this.v!);\n this.t = this.t!.neighbours[ccw(i)];\n return this.v !== this._v || this.t !== this._t;\n }\n}\n\nexport class LineFaceCirculator {\n private i = 0;\n pos: Triangle | null = null;\n _tr: CDT;\n s: LineFaceState = LineFaceState.UNDEFINED;\n p: Point;\n q: Point;\n\n constructor(v: Vertex, tr: CDT, dir: Point) {\n this._tr = tr;\n this.p = v.point!;\n this.q = dir;\n\n const fc = new FaceCirculator(v, null);\n let ic = fc.t!.indexV(v);\n let vt = fc.t!.vertices[cw(ic)]!;\n while (v === _INFINITE_VERTEX || orientation(this.p, this.q, vt.point!) !== Sign.LEFT_TURN) {\n fc.next();\n ic = fc.t!.indexV(v);\n vt = fc.t!.vertices[cw(ic)]!;\n if (!fc.valid) {\n return;\n }\n }\n\n let vr = fc.t!.vertices[ccw(ic)]!;\n let pqr: Sign = Sign.RIGHT_TURN;\n // tslint:disable:no-conditional-assignment\n while (vr !== _INFINITE_VERTEX && (pqr = orientation(this.p, this.q, vr.point!)) === Sign.LEFT_TURN) {\n fc.prev();\n ic = fc.t!.indexV(v);\n vr = fc.t!.vertices[ccw(ic)]!;\n }\n\n ic = fc.t!.indexV(v);\n vt = fc.t!.vertices[cw(ic)]!;\n\n if (vr === _INFINITE_VERTEX) {\n fc.prev();\n ic = fc.t!.indexV(v);\n vr = fc.t!.vertices[ccw(ic)]!;\n pqr = orientation(this.p, this.q, vr.point!);\n switch (pqr) {\n case Sign.RIGHT_TURN:\n case Sign.COLLINEAR: {\n fc.next();\n ic = fc.t!.indexV(_INFINITE_VERTEX);\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ic;\n break;\n }\n case Sign.LEFT_TURN: {\n break;\n }\n }\n } else if (pqr === Sign.COLLINEAR) {\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ccw(ic);\n } else {\n this.pos = fc.t!;\n this.s = LineFaceState.VERTEX_EDGE;\n this.i = ic;\n }\n }\n\n next() {\n this.increment();\n }\n\n increment() {\n let o: Sign;\n if (this.s === LineFaceState.VERTEX_VERTEX || this.s === LineFaceState.EDGE_VERTEX) {\n do {\n const n = this.pos!.neighbours[cw(this.i)]!;\n this.i = n.indexT(this.pos!);\n this.pos = n;\n if (this.pos!.vertices[this.i] === _INFINITE_VERTEX) {\n o = Sign.COLLINEAR;\n this.i = cw(this.i);\n break;\n }\n o = orientation(this.p, this.q, this.pos!.vertices[this.i]!.point!);\n this.i = cw(this.i);\n } while (o === Sign.LEFT_TURN);\n if (o === Sign.COLLINEAR) {\n this.s = LineFaceState.VERTEX_VERTEX;\n this.i = ccw(this.i);\n } else {\n this.s = LineFaceState.VERTEX_EDGE;\n }\n } else {\n const n = this.pos!.neighbours[this.i]!;\n const ni = n.indexT(this.pos!);\n this.pos = n;\n o =\n this.pos!.vertices[ni]! === _INFINITE_VERTEX\n ? Sign.COLLINEAR\n : orientation(this.p, this.q, this.pos!.vertices[ni]!.point!);\n switch (o) {\n case Sign.LEFT_TURN: {\n this.s = LineFaceState.EDGE_EDGE;\n this.i = ccw(ni);\n break;\n }\n case Sign.RIGHT_TURN: {\n this.s = LineFaceState.EDGE_EDGE;\n this.i = cw(ni);\n break;\n }\n default: {\n this.s = LineFaceState.EDGE_VERTEX;\n this.i = ni;\n }\n }\n }\n }\n}\n\nclass Edge {\n first: Triangle | null = null;\n second: number = 0;\n}\n\nexport enum LocateType {\n VERTEX,\n EDGE,\n FACE,\n OUTSIDE_CONVEX_HULL,\n OUTSIDE_AFFINE_HULL,\n}\n\nexport class TDS {\n dimension = -1;\n vertices: Vertex[] = [];\n triangles: Triangle[] = [];\n _infinite: Vertex;\n\n constructor() {\n this._infinite = this.createVertex();\n _INFINITE_VERTEX = this._infinite;\n const t = new Triangle();\n t.addVertex(this._infinite);\n this.triangles.push(t);\n }\n\n createVertex(): Vertex {\n const v = this.infiniteVertex;\n if (v === undefined) {\n console.log(\"UNDEFINED HIERE\");\n }\n this.vertices.push(v);\n return v;\n }\n\n createTriangle(\n v0: Vertex | null,\n v1: Vertex | null,\n v2: Vertex | null,\n n0: Triangle | null,\n n1: Triangle | null,\n n2: Triangle | null,\n ) {\n const t = new Triangle(v0, v1, v2);\n t.neighbours[0] = n0;\n t.neighbours[1] = n1;\n t.neighbours[2] = n2;\n this.triangles.push(t);\n return t;\n }\n\n deleteTriangle(trig: Triangle) {\n this.triangles = this.triangles.filter(t => t !== trig);\n }\n\n setAdjacency(t0: Triangle, i0: number, t1: Triangle, i1: number) {\n t0.neighbours[i0] = t1;\n t1.neighbours[i1] = t0;\n }\n\n get finiteVertex(): Vertex {\n return this.vertices[1];\n }\n\n get infiniteVertex(): Vertex {\n const v = new Vertex(newPoint());\n v.infinite = true;\n return v;\n }\n\n get finiteEdge(): Edge {\n if (this.dimension < 1) throw new Error(\"aspo\");\n const ei = new EdgeIterator(this);\n while (ei.valid) ei.next();\n return ei.collect();\n }\n\n insertDimUp(w: Vertex = new Vertex(), orient: boolean = true): Vertex {\n const v = this.createVertex();\n this.dimension++;\n let t1: Triangle;\n let t2: Triangle;\n switch (this.dimension) {\n case 0: {\n t1 = this.triangles[0];\n t2 = new Triangle(v);\n this.triangles.push(t2);\n this.setAdjacency(t1, 0, t2, 0);\n v.triangle = t2;\n break;\n }\n case 1:\n case 2: {\n const deleteList: Triangle[] = [];\n const triangles = this.triangles.slice(0, this.triangles.length);\n for (const trig of triangles) {\n const copy = new Triangle().from(trig);\n this.triangles.push(copy);\n trig.vertices[this.dimension] = v;\n copy.vertices[this.dimension] = w;\n this.setAdjacency(trig, this.dimension, copy, this.dimension);\n if (trig.vertices.includes(w)) deleteList.push(copy);\n }\n for (const trig of triangles) {\n const neighbour = trig.neighbours[this.dimension];\n for (let j = 0; j < this.dimension; ++j) {\n neighbour!.neighbours[j] = trig.neighbours[j]!.neighbours[this.dimension];\n }\n }\n\n let lfit = 0;\n if (this.dimension === 1) {\n if (orient) {\n triangles[lfit].reorient();\n lfit++;\n triangles[lfit].neighbours[1]!.reorient();\n } else {\n triangles[lfit].neighbours[1]!.reorient();\n lfit++;\n triangles[lfit].reorient();\n }\n } else {\n for (const trig of triangles) {\n if (orient) trig.neighbours[2]!.reorient();\n else trig.reorient();\n }\n }\n\n for (const trig of deleteList) {\n let j = 1;\n if (trig.vertices[0] === w) j = 0;\n t1 = trig.neighbours[this.dimension]!;\n const i1 = this.mirrorIndex(trig, this.dimension);\n t2 = trig.neighbours[j]!;\n const i2 = this.mirrorIndex(trig, j);\n this.setAdjacency(t1, i1, t2, i2);\n this.deleteTriangle(trig);\n }\n v.triangle = triangles[0];\n break;\n }\n default: {\n throw new Error(\"Dimension unknown\");\n }\n }\n return v;\n }\n\n mirrorIndex(t: Triangle, i: number): number {\n if (t.dimension === 1) {\n const j = t.neighbours[i]!.indexV(t.vertices[i === 0 ? 1 : 0]!);\n return j === 0 ? 1 : 0;\n }\n return ccw(t.neighbours[i]!.indexV(t.vertices[ccw(i)]!));\n }\n\n insertInFace(t: Triangle) {\n const v = this.createVertex();\n const v0 = t.vertices[0]!;\n const v1 = t.vertices[1]!;\n const v2 = t.vertices[2]!;\n const n1 = t.neighbours[1]!;\n const n2 = t.neighbours[2]!;\n const t1 = this.createTriangle(v0, v, v2, t, n1, null);\n const t2 = this.createTriangle(v0, v1, v, t, null, n2);\n this.setAdjacency(t1, 2, t2, 1);\n if (n1 !== null) {\n const i1 = this.mirrorIndex(t, 1);\n n1.neighbours[i1] = t1;\n }\n if (n2 !== null) {\n const i2 = this.mirrorIndex(t, 2);\n n2.neighbours[i2] = t2;\n }\n t.vertices[0] = v;\n t.neighbours[1] = t1;\n t.neighbours[2] = t2;\n if (v0.triangle === t) v0.triangle = t2;\n v.triangle = t;\n return v;\n }\n\n flip(t: Triangle, i: number) {\n const n = t.neighbours[i]!;\n const ni = this.mirrorIndex(t, i);\n const vCW = t.vertices[cw(i)]!;\n const vCCW = t.vertices[ccw(i)]!;\n const tr = t.neighbours[ccw(i)]!;\n const tri = this.mirrorIndex(t, ccw(i));\n const bl = n.neighbours[ccw(ni)]!;\n const bli = this.mirrorIndex(n, ccw(ni));\n\n t.vertices[cw(i)] = n.vertices[ni]!;\n n.vertices[cw(ni)] = t.vertices[i]!;\n\n this.setAdjacency(t, i, bl, bli);\n this.setAdjacency(t, ccw(i), n, ccw(ni));\n this.setAdjacency(n, ni, tr, tri);\n\n if (vCW.triangle! === t) vCW.triangle = n;\n if (vCCW.triangle! === n) vCCW.triangle = t;\n }\n\n insertInEdge(t: Triangle, i: number) {\n let v: Vertex;\n if (this.dimension === 1) {\n v = this.createVertex();\n const ff = t.neighbours[0]!;\n const vv = t.vertices[1]!;\n const g = this.createTriangle(v, vv, null, ff, t, null);\n t.vertices[1] = v;\n t.neighbours[0] = g;\n ff.neighbours[1] = g;\n v.triangle = g;\n vv.triangle = ff;\n } else {\n const n = t.neighbours[i]!;\n const ni = this.mirrorIndex(t, i);\n v = this.insertInFace(t);\n this.flip(n, ni);\n }\n return v;\n }\n}\n\nexport class BoundingBox {\n x1: number;\n x2: number;\n y1: number;\n y2: number;\n constructor(p: Point) {\n this.x1 = p[0];\n this.y1 = p[1];\n this.x2 = p[0];\n this.y2 = p[1];\n }\n\n dilate(dist: number) {\n this.x1 -= dist * ulp(this.x1);\n this.y1 -= dist * ulp(this.y1);\n this.x2 += dist * ulp(this.x2);\n this.y2 += dist * ulp(this.y2);\n }\n\n overlaps(other: BoundingBox): boolean {\n if (this.x2 < other.x1 || other.x2 < this.x1) return false;\n if (this.y2 < other.y1 || other.y2 < this.y1) return false;\n return true;\n }\n}\n","import { partition } from \"@/core/utils\";\nimport { GlobalPoint, Ray } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly, g2lz } from \"@/game/units\";\nimport { BoundingNode, InteriorNode, LeafNode } from \"@/game/visibility/bvh/node\";\n\ninterface BuildInfo {\n index: number;\n bbox: BoundingRect;\n center: BoundingRect;\n}\ninterface LinearBHVNode {\n bbox: BoundingRect;\n nPrimitives: number;\n}\ninterface LinearLeafNode extends LinearBHVNode {\n primitivesOffset: number;\n}\ninterface LinearInternalNode extends LinearBHVNode {\n secondChildOffset: number;\n dimension: number;\n}\n\nexport class BoundingVolume {\n totalNodes = 0;\n buildData: BuildInfo[] = [];\n shapes: string[];\n orderedPrims: string[] = [];\n root: BoundingNode | null;\n nodes: LinearBHVNode[] = [];\n\n offset = 0;\n\n constructor(shapes: string[]) {\n this.shapes = shapes;\n if (this.shapes.length === 0) {\n this.root = null;\n this.nodes = [];\n return;\n }\n for (let i = 0; i < shapes.length; i++) {\n const shape = layerManager.UUIDMap.get(shapes[i])!;\n this.buildData.push({\n index: i,\n bbox: shape.getBoundingBox(),\n center: new BoundingRect(shape.center(), 0, 0),\n });\n }\n this.root = this.recursiveBuild(0, shapes.length);\n this.compact();\n }\n\n draw() {\n const ctx = layerManager.getLayer(\"draw\")!.ctx;\n for (const node of this.nodes) {\n const b = node.bbox;\n ctx.strokeRect(g2lx(b.topLeft.x), g2ly(b.topLeft.y), g2lz(b.w), g2lz(b.h));\n }\n }\n\n recursiveBuild(start: number, end: number): BoundingNode {\n this.totalNodes++;\n let bbox = this.buildData[start].bbox;\n for (let i = start + 1; i < end; i++) bbox = bbox.union(this.buildData[i].bbox);\n const nPrimitives = end - start;\n if (nPrimitives === 1) {\n return this.createLeaf(start, end, nPrimitives, bbox);\n } else {\n let centroidBbox = this.buildData[start].center;\n for (let i = start; i < end; i++) centroidBbox = centroidBbox.union(this.buildData[i].center);\n const dimension = centroidBbox.getMaxExtent();\n if (centroidBbox.botRight.get(dimension) === centroidBbox.topLeft.get(dimension)) {\n return this.createLeaf(start, end, nPrimitives, bbox);\n }\n // Use shitty Middle thingy until an introselect js algo is added\n const pMid = 0.5 * (centroidBbox.topLeft.get(dimension) + centroidBbox.botRight.get(dimension));\n const partitionedData = partition(\n this.buildData.slice(start, end),\n (n: BuildInfo) => n.center.center().get(dimension) < pMid,\n );\n const flattened = ([]).concat.apply([], partitionedData);\n if (partitionedData[0].length === 0 || partitionedData[1].length === 0) console.log(\"EMPTY\");\n this.buildData.splice(start, flattened.length, ...flattened);\n const mid = partitionedData[0].length + start;\n return new InteriorNode(dimension, this.recursiveBuild(start, mid), this.recursiveBuild(mid, end));\n }\n }\n\n intersect(ray: Ray, stopOnFirstHit?: boolean) {\n if (this.nodes.length === 0) return { hit: false, intersect: ray.get(0), tMin: 0, tMax: ray.tMax };\n if (stopOnFirstHit === undefined) stopOnFirstHit = false;\n // Initialize return values\n let hit = false;\n let tMin = 0;\n let tMax = ray.tMax;\n\n // Initialize work variables\n let todoOffset = 0;\n let nodeNum = 0;\n const todo: number[] = [];\n\n // Precalculate intersection vectors\n const invDir = ray.direction.inverse();\n const dirIsNegative = [invDir.x < 0, invDir.y < 0];\n\n while (true) {\n const node = this.nodes[nodeNum];\n\n const i = node.bbox.intersectP(ray, invDir, dirIsNegative);\n if (i.hit) {\n if (node.nPrimitives > 0) {\n // TODO: nPrimitives is currently always 1 , this could be generalised\n // for (let i=0; i < node.nPrimitives; i++) {\n // if (this.shapes[(node).primitivesOffset + i])\n // }\n hit = true;\n tMin = ray.tMax = i.min;\n tMax = i.max;\n if (todoOffset === 0 || stopOnFirstHit) break;\n nodeNum = todo[--todoOffset];\n } else {\n if (dirIsNegative[(node).dimension]) {\n todo[todoOffset++] = nodeNum + 1;\n nodeNum = (node).secondChildOffset;\n } else {\n todo[todoOffset++] = (node).secondChildOffset;\n nodeNum++;\n }\n }\n } else {\n if (todoOffset === 0) break;\n nodeNum = todo[--todoOffset];\n }\n }\n return { hit, intersect: ray.get(tMin), tMin, tMax };\n }\n\n private compact() {\n this.offset = 0;\n if (this.root !== null) this.flatten(this.root);\n }\n\n private flatten(node: BoundingNode) {\n const index = this.offset;\n const myOffset = this.offset++;\n if (node.nPrimitives === 0) {\n this.flatten(node.children[0]);\n const secondOffset = this.flatten(node.children[1]);\n this.nodes[index] = {\n bbox: node.bbox,\n dimension: (node).dimension,\n nPrimitives: 0,\n secondChildOffset: secondOffset,\n };\n } else {\n this.nodes[index] = {\n bbox: node.bbox,\n primitivesOffset: (node).firstPrimOffset,\n nPrimitives: node.nPrimitives,\n };\n }\n return myOffset;\n }\n\n private createLeaf(start: number, end: number, nPrimitives: number, bbox: BoundingRect) {\n const size = this.orderedPrims.length;\n for (let i = start; i < end; i++) this.orderedPrims.push(this.shapes[this.buildData[i].index]);\n return new LeafNode(size, nPrimitives, bbox);\n }\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"","import Initiative from \"./ui/initiative.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { AnnotationManager } from \"@/game/ui/annotation\";\nimport { g2l } from \"@/game/units\";\n\nexport class GameManager {\n selectedTool: number = 0;\n\n annotationManager = new AnnotationManager();\n\n addShape(shape: ServerShape): void {\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Shape with unknown layer ${shape.layer} could not be added`);\n return;\n }\n const layer = layerManager.getLayer(shape.layer)!;\n const sh = createShapeFromDict(shape);\n if (sh === undefined) {\n console.log(`Shape with unknown type ${shape.type_} could not be added`);\n return;\n }\n layer.addShape(sh, false);\n layer.invalidate(false);\n }\n\n updateShape(data: { shape: ServerShape; redraw: boolean; move: boolean; temporary: boolean }): void {\n if (!layerManager.hasLayer(data.shape.layer)) {\n console.log(`Shape with unknown layer ${data.shape.layer} could not be added`);\n return;\n }\n const sh = createShapeFromDict(data.shape);\n if (sh === undefined) {\n console.log(`Shape with unknown type ${data.shape.type_} could not be added`);\n return;\n }\n const oldShape = layerManager.UUIDMap.get(data.shape.uuid);\n if (oldShape === undefined) {\n console.log(`Shape with unknown id could not be updated`);\n return;\n }\n const redrawInitiative = sh.owners !== oldShape.owners;\n const shape = Object.assign(oldShape, sh);\n shape.checkVisionSources();\n shape.setMovementBlock(shape.movementObstruction);\n shape.setIsToken(shape.isToken);\n if (data.redraw) {\n if (shape.visionObstruction) gameStore.recalculateVision(data.temporary);\n layerManager.getLayer(data.shape.layer)!.invalidate(false);\n if (shape.movementObstruction) gameStore.recalculateMovement(data.temporary);\n }\n if (redrawInitiative) getRef(\"initiative\").$forceUpdate();\n }\n\n setCenterPosition(position: GlobalPoint) {\n const localPos = g2l(position);\n gameStore.increasePanX((window.innerWidth / 2 - localPos.x) / gameStore.zoomFactor);\n gameStore.increasePanY((window.innerHeight / 2 - localPos.y) / gameStore.zoomFactor);\n layerManager.invalidate();\n sendClientOptions();\n }\n}\n\nexport const gameManager = new GameManager();\n(window).gameManager = gameManager;\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset_node.vue?vue&type=style&index=0&id=6d718094&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./vision.vue?vue&type=template&id=46baf892&scoped=true&\"\nimport script from \"./vision.vue?vue&type=script&lang=ts&\"\nexport * from \"./vision.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./vision.vue?vue&type=style&index=0&id=46baf892&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46baf892\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible,\"mask\":false},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_c('div',[_vm._v(\"Initiative\")]),_c('div',{staticClass:\"header-close\",on:{\"click\":function($event){_vm.visible = false}}},[_c('i',{staticClass:\"far fa-window-close\"})])])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('draggable',{attrs:{\"id\":\"initiative-list\",\"options\":{setData: _vm.fakeSetData, disabled: !_vm.$store.state.game.IS_DM}},on:{\"change\":_vm.updateOrder},model:{value:(_vm.data),callback:function ($$v) {_vm.data=$$v},expression:\"data\"}},[_vm._l((_vm.data),function(actor){return [_c('div',{key:actor.uuid,staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"align-items\":\"flex-end\"}},[_c('div',{staticClass:\"initiative-actor\",class:{'initiative-selected': _vm.currentActor === actor.uuid},style:({'cursor': _vm.$store.state.game.IS_DM && 'move'}),on:{\"mouseenter\":function($event){return _vm.toggleHighlight(actor, true)},\"mouseleave\":function($event){return _vm.toggleHighlight(actor, false)}}},[(actor.has_img)?[_c('img',{attrs:{\"src\":actor.source,\"width\":\"30px\",\"height\":\"30px\"}})]:[_c('span',{staticStyle:{\"width\":\"auto\"}},[_vm._v(_vm._s(actor.source))])],_c('input',{directives:[{name:\"model\",rawName:\"v-model.lazy.number\",value:(actor.initiative),expression:\"actor.initiative\",modifiers:{\"lazy\":true,\"number\":true}}],class:{'notAllowed': !_vm.owns(actor)},attrs:{\"type\":\"text\",\"placeholder\":\"value\",\"disabled\":!_vm.owns(actor)},domProps:{\"value\":(actor.initiative)},on:{\"change\":[function($event){_vm.$set(actor, \"initiative\", _vm._n($event.target.value))},function($event){return _vm.syncInitiative(actor)}],\"blur\":function($event){return _vm.$forceUpdate()}}}),_c('div',{staticClass:\"initiative-effects-icon\",class:{'notAllowed': !_vm.owns(actor)},staticStyle:{\"opacity\":\"0.6\"},on:{\"click\":function($event){_vm.createEffect(actor, _vm.getDefaultEffect(), true)}}},[_c('i',{staticClass:\"fas fa-stopwatch\"}),(actor.effects)?[_vm._v(_vm._s(actor.effects.length))]:[_vm._v(\"0\")]],2),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': actor.visible ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.toggleOption(actor, 'visible')}}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': actor.group ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.toggleOption(actor, 'group')}}},[_c('i',{staticClass:\"fas fa-users\"})]),_c('div',{class:{'notAllowed': !_vm.owns(actor)},style:({'opacity': _vm.owns(actor) ? '1.0' : '0.3'}),on:{\"click\":function($event){return _vm.removeInitiative(actor.uuid, true, true)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})])],2),(actor.effects)?_c('div',{staticClass:\"initiative-effect\"},_vm._l((actor.effects),function(effect){return _c('div',{key:effect.uuid},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(effect.name),expression:\"effect.name\"}],attrs:{\"type\":\"text\",\"size\":effect.name.length || 1},domProps:{\"value\":(effect.name)},on:{\"change\":function($event){return _vm.updateEffect(actor.uuid, effect, true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(effect, \"name\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(effect.turns),expression:\"effect.turns\"}],attrs:{\"type\":\"text\",\"size\":effect.turns.toString().length || 1},domProps:{\"value\":(effect.turns)},on:{\"change\":function($event){return _vm.updateEffect(actor.uuid, effect, true)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(effect, \"turns\", $event.target.value)}}})])}),0):_vm._e()])]})],2),_c('div',{attrs:{\"id\":\"initiative-bar\"}},[_c('div',{attrs:{\"id\":\"initiative-round\"}},[_vm._v(\"Round \"+_vm._s(_vm.roundCounter))]),_c('div',{staticStyle:{\"display\":\"flex\"}}),_c('div',{staticClass:\"initiative-bar-button\",style:(_vm.visionLock ? 'background-color: #82c8a0' : ''),on:{\"click\":_vm.toggleVisionLock}},[_c('i',{staticClass:\"fas fa-eye\"})]),_c('div',{staticClass:\"initiative-bar-button\",style:(_vm.cameraLock ? 'background-color: #82c8a0' : ''),on:{\"click\":function($event){_vm.cameraLock = !_vm.cameraLock}}},[_c('i',{staticClass:\"fas fa-video\"})]),_c('div',{staticClass:\"initiative-bar-button\",class:{'notAllowed': !_vm.$store.state.game.IS_DM},on:{\"click\":function($event){_vm.setRound(0, true); _vm.updateTurn(_vm.data[0].uuid, true)}}},[_c('i',{staticClass:\"fas fa-sync-alt\"})]),_c('div',{staticClass:\"initiative-bar-button\",class:{'notAllowed': !_vm.$store.state.game.IS_DM},on:{\"click\":_vm.nextTurn}},[_c('i',{staticClass:\"fas fa-chevron-right\"})])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=template&id=07fc8ff2&scoped=true&\"","\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class LoadComponent extends Vue {\n message = \"Loading...\";\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.shape !== null)?_c('div',[_c('div',{attrs:{\"id\":\"selection-menu\"}},[_c('div',{attrs:{\"id\":\"selection-edit-button\"},on:{\"click\":_vm.openEditDialog}},[_c('i',{staticClass:\"fas fa-edit\"})]),_c('div',{attrs:{\"id\":\"selection-name\"}},[_vm._v(_vm._s(_vm.shape.name))]),_c('div',{attrs:{\"id\":\"selection-trackers\"}},[_vm._l((_vm.shape.trackers),function(tracker){return (tracker.name !== '' || tracker.value !== 0)?[_c('div',{key:'name-' + tracker.uuid},[_vm._v(_vm._s(tracker.name))]),_c('div',{key:'value-' + tracker.uuid,staticClass:\"selection-tracker-value\",on:{\"click\":function($event){return _vm.changeValue(tracker, false)}}},[(tracker.maxvalue === 0)?[_vm._v(_vm._s(tracker.value))]:[_vm._v(_vm._s(tracker.value)+\" / \"+_vm._s(tracker.maxvalue))]],2)]:_vm._e()})],2),_c('div',{attrs:{\"id\":\"selection-auras\"}},[_vm._l((_vm.shape.auras),function(aura){return (aura.name !== '' || aura.value !== 0)?[_c('div',{key:'name-' + aura.uuid},[_vm._v(_vm._s(aura.name))]),_c('div',{key:'value-' + aura.uuid,staticClass:\"selection-tracker-value\",on:{\"click\":function($event){return _vm.changeValue(aura, true)}}},[(aura.dim === 0)?[_vm._v(_vm._s(aura.value))]:[_vm._v(_vm._s(aura.value)+\" / \"+_vm._s(aura.dim))]],2)]:_vm._e()})],2)]),_c('edit-dialog',{ref:\"editDialog\",attrs:{\"shape\":_vm.shape}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selection_info.vue?vue&type=template&id=674cf937&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\nimport { coreStore } from \"@/core/store\";\n\nComponent.registerHooks([\"beforeRouteEnter\"]);\n\n@Component\nexport default class Dashboard extends Vue {\n owned = [];\n joined = [];\n error = \"\";\n\n newSessionName = \"\";\n\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n axios\n .get(\"/api/rooms\")\n .then((response: AxiosResponse) => {\n next((vm: this) => {\n vm.owned = response.data.owned;\n vm.joined = response.data.joined;\n });\n })\n .catch((err: AxiosError) => {\n next((vm: this) => {\n vm.error = err.message;\n });\n });\n }\n\n createRoom(event: Event) {\n axios\n .post(\"/api/rooms\", {\n name: this.newSessionName,\n })\n .then((response: AxiosResponse) => {\n this.$router.push(`/game/${coreStore.username}/${this.newSessionName}`);\n })\n .catch((err: AxiosError) => {\n this.error = err.message;\n });\n }\n}\n","import { render, staticRenderFns } from \"./confirm.vue?vue&type=template&id=1883e207&scoped=true&\"\nimport script from \"./confirm.vue?vue&type=script&lang=ts&\"\nexport * from \"./confirm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./confirm.vue?vue&type=style&index=0&id=1883e207&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1883e207\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=style&index=0&id=639cd890&scoped=true&lang=css&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=style&index=0&id=6c66d243&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=script&lang=ts&\"","import Vue from \"vue\";\nexport const EventBus = new Vue();\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=script&lang=ts&\"","import { GlobalPoint } from \"@/game/geom\";\nimport { BaseRect } from \"@/game/shapes/baserect\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l } from \"@/game/units\";\nimport { getFogColour } from \"@/game/utils\";\n\nexport class Rect extends BaseRect {\n type = \"rect\";\n constructor(topleft: GlobalPoint, w: number, h: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(topleft, w, h, fillColour, strokeColour, uuid);\n }\n asDict() {\n return super.getBaseDict();\n }\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n const z = gameStore.zoomFactor;\n const loc = g2l(this.refPoint);\n ctx.fillRect(loc.x, loc.y, this.w * z, this.h * z);\n if (this.strokeColour !== \"rgba(0, 0, 0, 0)\") {\n ctx.strokeStyle = this.strokeColour;\n ctx.lineWidth = 5;\n ctx.strokeRect(loc.x, loc.y, this.w * z, this.h * z);\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./selectcontext.vue?vue&type=script&lang=ts&\"","import { Ray, Vector } from \"@/game/geom\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Settings } from \"@/game/settings\";\nimport { gameStore } from \"@/game/store\";\nimport { g2l, g2lr, g2lx, g2ly } from \"@/game/units\";\nimport { computeVisibility } from \"../visibility/te/te\";\n\nexport class FOWPlayersLayer extends Layer {\n isVisionLayer: boolean = true;\n\n draw(): void {\n if (!this.valid) {\n // console.time(\"VI\");\n const ctx = this.ctx;\n\n if (!gameStore.fowLOS || Settings.skipPlayerFOW) {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.valid = true;\n return;\n }\n\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\n const originalOperation = ctx.globalCompositeOperation;\n\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n\n // For the DM this is done at the end of this function. TODO: why the split up ???\n // This was done in commit be1e65cff1e7369375fe11cfa1643fab1d11beab.\n if (!gameStore.IS_DM) super.draw(!gameStore.fullFOW);\n\n // Then cut out all the player vision auras\n const maxLength = ctx.canvas.width + ctx.canvas.height;\n\n for (const tokenId of gameStore.activeTokens) {\n const token = layerManager.UUIDMap.get(tokenId);\n if (token === undefined) continue;\n const center = token.center();\n const lcenter = g2l(center);\n if (gameStore.visionMode === \"bvh\") {\n ctx.beginPath();\n let lastArcAngle = -1;\n\n for (let angle = 0; angle < 2 * Math.PI; angle += (Settings.angleSteps / 2 / 180) * Math.PI) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n // Check if there is a hit with one of the nearby light blockers.\n const lightRay = new Ray(center, new Vector(cos, sin));\n const hitResult = gameStore.BV.intersect(lightRay);\n\n // We can move on to the next angle if nothing was hit.\n if (!hitResult.hit) {\n // If an earlier hit caused the aura to leave the arc, we need to go back to the arc\n if (lastArcAngle === -1) {\n // Draw a line from the last non arc location back to the arc\n ctx.lineTo(lcenter.x + maxLength * cos, lcenter.y + maxLength * sin);\n // Set the start of a new arc beginning at the current angle\n lastArcAngle = angle;\n }\n continue;\n }\n // If hit , first finish any ongoing arc, then move to the intersection point\n if (lastArcAngle !== -1) {\n ctx.arc(lcenter.x, lcenter.y, maxLength, lastArcAngle, angle);\n lastArcAngle = -1;\n }\n ctx.lineTo(g2lx(hitResult.intersect.x), g2ly(hitResult.intersect.y));\n }\n\n // Finish the final arc.\n if (lastArcAngle !== -1) ctx.arc(lcenter.x, lcenter.y, maxLength, lastArcAngle, 2 * Math.PI);\n else ctx.closePath();\n ctx.fill();\n } else {\n if (true) {\n // Add a gradient vision dropoff\n const gradient = ctx.createRadialGradient(\n lcenter.x,\n lcenter.y,\n g2lr(gameStore.visionRangeMin),\n lcenter.x,\n lcenter.y,\n g2lr(gameStore.visionRangeMax),\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 1)\");\n gradient.addColorStop(1, \"rgba(0, 0, 0, 0)\");\n ctx.fillStyle = gradient;\n } else {\n ctx.fillStyle = \"rgba(0, 0, 0, 1)\";\n }\n try {\n const polygon = computeVisibility(token.center(), \"vision\");\n ctx.beginPath();\n ctx.moveTo(g2lx(polygon[0][0]), g2ly(polygon[0][1]));\n for (const point of polygon) ctx.lineTo(g2lx(point[0]), g2ly(point[1]));\n ctx.closePath();\n ctx.fill();\n } catch {}\n }\n }\n\n // For the players this is done at the beginning of this function. TODO: why the split up ???\n // This was done in commit be1e65cff1e7369375fe11cfa1643fab1d11beab.\n if (gameStore.IS_DM) super.draw(!gameStore.fullFOW);\n\n ctx.globalCompositeOperation = originalOperation;\n // console.timeEnd(\"VI\");\n }\n }\n}\n","import { socket } from \"@/game/api/socket\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { createShapeFromDict } from \"@/game/shapes/utils\";\nimport { gameStore } from \"@/game/store\";\nimport { g2lx, g2ly } from \"@/game/units\";\n\nexport class Layer {\n name: string;\n width: number;\n height: number;\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n\n selectable: boolean = false;\n playerEditable: boolean = false;\n isVisionLayer: boolean = false;\n\n // When set to false, the layer will be redrawn on the next tick\n valid: boolean = false;\n // The collection of shapes that this layer contains.\n // These are ordered on a depth basis.\n shapes: Shape[] = [];\n\n // Collection of shapes that are currently selected\n selection: Shape[] = [];\n\n // Extra selection highlighting settings\n selectionColor = \"#CC0000\";\n selectionWidth = 2;\n\n constructor(canvas: HTMLCanvasElement, name: string) {\n this.canvas = canvas;\n this.name = name;\n this.width = canvas.width;\n this.height = canvas.height;\n this.ctx = canvas.getContext(\"2d\")!;\n }\n\n invalidate(skipLightUpdate: boolean): void {\n this.valid = false;\n if (!skipLightUpdate) {\n layerManager.invalidateLight();\n }\n }\n\n addShape(shape: Shape, sync: boolean, temporary?: boolean, invalidate = true): void {\n if (temporary === undefined) temporary = false;\n shape.layer = this.name;\n this.shapes.push(shape);\n layerManager.UUIDMap.set(shape.uuid, shape);\n shape.checkVisionSources(invalidate);\n shape.setMovementBlock(shape.movementObstruction, invalidate);\n if (shape.ownedBy(gameStore.username) && shape.isToken) gameStore.ownedtokens.push(shape.uuid);\n if (shape.annotation.length) gameStore.annotations.push(shape.uuid);\n if (sync) socket.emit(\"Shape.Add\", { shape: shape.asDict(), temporary });\n if (invalidate) this.invalidate(!sync);\n }\n\n setShapes(shapes: ServerShape[]): void {\n for (const serverShape of shapes) {\n const shape = createShapeFromDict(serverShape);\n if (shape === undefined) {\n console.log(`Shape with unknown type ${serverShape.type_} could not be added`);\n return;\n }\n this.addShape(shape, false, false, false);\n }\n this.clearSelection(); // TODO: Fix keeping selection on those items that are not moved.\n this.invalidate(false);\n }\n\n removeShape(shape: Shape, sync: boolean, temporary?: boolean) {\n if (temporary === undefined) temporary = false;\n this.shapes.splice(this.shapes.indexOf(shape), 1);\n\n if (sync) socket.emit(\"Shape.Remove\", { shape: shape.asDict(), temporary });\n const lsI = gameStore.visionSources.findIndex(ls => ls.shape === shape.uuid);\n const lbI = gameStore.visionBlockers.findIndex(ls => ls === shape.uuid);\n\n const mbI = gameStore.movementblockers.findIndex(ls => ls === shape.uuid);\n const anI = gameStore.annotations.findIndex(ls => ls === shape.uuid);\n if (lsI >= 0) gameStore.visionSources.splice(lsI, 1);\n if (lbI >= 0) gameStore.visionBlockers.splice(lbI, 1);\n if (mbI >= 0) gameStore.movementblockers.splice(mbI, 1);\n if (anI >= 0) gameStore.annotations.splice(anI, 1);\n\n const annotationIndex = gameStore.annotations.indexOf(shape.uuid);\n if (annotationIndex >= 0) gameStore.annotations.splice(annotationIndex, 1);\n\n const ownedIndex = gameStore.ownedtokens.indexOf(shape.uuid);\n if (ownedIndex >= 0) gameStore.ownedtokens.splice(ownedIndex, 1);\n\n layerManager.UUIDMap.delete(shape.uuid);\n\n const index = this.selection.indexOf(shape);\n if (index >= 0) this.selection.splice(index, 1);\n if (lbI >= 0) gameStore.recalculateVision();\n if (mbI >= 0) gameStore.recalculateMovement();\n this.invalidate(!sync);\n }\n\n clear(): void {\n this.ctx.clearRect(0, 0, this.width, this.height);\n }\n\n clearSelection(): void {\n this.selection = [];\n EventBus.$emit(\"SelectionInfo.Shape.Set\", null);\n }\n\n draw(doClear?: boolean): void {\n if (!this.valid) {\n const ctx = this.ctx;\n const ogOP = ctx.globalCompositeOperation;\n doClear = doClear === undefined ? true : doClear;\n\n if (doClear) this.clear();\n\n const state = this;\n\n // We iteratre twice over all shapes\n // First to draw the auras and a second time to draw the shapes themselves\n // Otherwise auras from one shape could be overlapping another shape itself.\n\n this.shapes.forEach(shape => {\n if (shape.options.has(\"skipDraw\") && shape.options.get(\"skipDraw\")) return;\n if (layerManager.getLayer() === undefined) return;\n if (!shape.visibleInCanvas(state.canvas)) return;\n if (state.name === \"fow\" && shape.visionObstruction && layerManager.getLayer()!.name !== state.name)\n return;\n shape.drawAuras(ctx);\n });\n this.shapes.forEach(shape => {\n if (shape.options.has(\"skipDraw\") && shape.options.get(\"skipDraw\")) return;\n if (shape.labels.length === 0 && gameStore.filterNoLabel) return;\n if (\n shape.labels.length &&\n gameStore.labelFilters.length &&\n !shape.labels.some(l => gameStore.labelFilters.includes(l.uuid))\n )\n return;\n if (layerManager.getLayer() === undefined) return;\n if (!shape.visibleInCanvas(state.canvas)) return;\n if (state.name === \"fow\" && shape.visionObstruction && layerManager.getLayer()!.name !== state.name)\n return;\n shape.draw(ctx);\n });\n\n if (this.selection != null) {\n ctx.fillStyle = this.selectionColor;\n ctx.strokeStyle = this.selectionColor;\n ctx.lineWidth = this.selectionWidth;\n const z = gameStore.zoomFactor;\n this.selection.forEach(sel => {\n ctx.globalCompositeOperation = sel.globalCompositeOperation;\n const bb = sel.getBoundingBox();\n // TODO: REFACTOR THIS TO Shape.drawSelection(ctx);\n ctx.strokeRect(g2lx(bb.topLeft.x), g2ly(bb.topLeft.y), bb.w * z, bb.h * z);\n\n for (const p of sel.points) {\n ctx.beginPath();\n ctx.arc(g2lx(p[0]), g2ly(p[1]), 3, 0, 2 * Math.PI);\n ctx.fill();\n }\n ctx.beginPath();\n ctx.moveTo(g2lx(sel.points[0][0]), g2ly(sel.points[0][1]));\n for (let i = 1; i <= sel.points.length; i++) {\n const vertex = sel.points[i % sel.points.length];\n ctx.lineTo(g2lx(vertex[0]), g2ly(vertex[1]));\n }\n ctx.stroke();\n });\n }\n ctx.globalCompositeOperation = ogOP;\n this.valid = true;\n }\n }\n\n moveShapeOrder(shape: Shape, destinationIndex: number, sync: boolean): void {\n const oldIdx = this.shapes.indexOf(shape);\n if (oldIdx === destinationIndex) return;\n this.shapes.splice(oldIdx, 1);\n this.shapes.splice(destinationIndex, 0, shape);\n if (sync) socket.emit(\"Shape.Order.Set\", { shape: shape.asDict(), index: destinationIndex });\n this.invalidate(true);\n }\n}\n","import { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\nexport function scrollZoom(e: WheelEvent) {\n if (!e.target || !(e.target).tagName || (e.target).tagName !== \"CANVAS\") return;\n let delta: number;\n delta = Math.sign(e.deltaY) * -1;\n gameStore.updateZoom({ newZoomDisplay: gameStore.zoomDisplay - 0.1 * delta, zoomLocation: l2g(getMouse(e)) });\n}\n","import { render, staticRenderFns } from \"./filter.vue?vue&type=template&id=dca395d6&scoped=true&\"\nimport script from \"./filter.vue?vue&type=script&lang=ts&\"\nexport * from \"./filter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./filter.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./filter.vue?vue&type=style&index=1&id=dca395d6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"dca395d6\",\n null\n \n)\n\nexport default component.exports","import { GlobalPoint, LocalPoint, Vector } from \"@/game/geom\";\nimport { BoundingRect } from \"@/game/shapes/boundingrect\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\nimport { calculateDelta } from \"@/game/ui/tools/utils\";\nimport { g2lx, g2ly, l2g, l2gx, l2gy } from \"@/game/units\";\n\nexport abstract class BaseRect extends Shape {\n w: number;\n h: number;\n constructor(topleft: GlobalPoint, w: number, h: number, fillColour?: string, strokeColour?: string, uuid?: string) {\n super(topleft, fillColour, strokeColour, uuid);\n this.w = w;\n this.h = h;\n }\n getBaseDict() {\n return Object.assign(super.getBaseDict(), {\n width: this.w,\n height: this.h,\n });\n }\n getBoundingBox() {\n return new BoundingRect(this.refPoint, this.w, this.h);\n }\n\n get points() {\n if (this.w === 0 || this.h === 0) return [[this.refPoint.x, this.refPoint.y]];\n // note to self: topright and botleft are swapped because I'm retarded.\n const topright = this.refPoint.add(new Vector(0, this.h));\n const botright = this.refPoint.add(new Vector(this.w, this.h));\n const botleft = this.refPoint.add(new Vector(this.w, 0));\n return [\n [this.refPoint.x, this.refPoint.y],\n [topright.x, topright.y],\n [botright.x, botright.y],\n [botleft.x, botleft.y],\n ];\n }\n\n contains(point: GlobalPoint): boolean {\n return (\n this.refPoint.x <= point.x &&\n this.refPoint.x + this.w >= point.x &&\n this.refPoint.y <= point.y &&\n this.refPoint.y + this.h >= point.y\n );\n }\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n if (centerPoint === undefined) return this.refPoint.add(new Vector(this.w / 2, this.h / 2));\n this.refPoint = new GlobalPoint(centerPoint.x - this.w / 2, centerPoint.y - this.h / 2);\n }\n\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n if (super.visibleInCanvas(canvas)) return true;\n const coreVisible = !(\n g2lx(this.refPoint.x) > canvas.width ||\n g2ly(this.refPoint.y) > canvas.height ||\n g2lx(this.refPoint.x + this.w) < 0 ||\n g2ly(this.refPoint.y + this.h) < 0\n );\n if (coreVisible) return true;\n return false;\n }\n snapToGrid() {\n const gs = gameStore.gridSize;\n const center = this.center();\n const mx = center.x;\n const my = center.y;\n\n let targetX;\n let targetY;\n\n if ((this.w / gs) % 2 === 0) {\n targetX = Math.round(mx / gs) * gs - this.w / 2;\n } else {\n targetX = (Math.round((mx + gs / 2) / gs) - 1 / 2) * gs - this.w / 2;\n }\n if ((this.h / gs) % 2 === 0) {\n targetY = Math.round(my / gs) * gs - this.h / 2;\n } else {\n targetY = (Math.round((my + gs / 2) / gs) - 1 / 2) * gs - this.h / 2;\n }\n\n const delta = calculateDelta(new Vector(targetX - this.refPoint.x, targetY - this.refPoint.y), this);\n this.refPoint = this.refPoint.add(delta);\n\n this.invalidate(false);\n }\n resizeToGrid() {\n const gs = gameStore.gridSize;\n this.refPoint = new GlobalPoint(Math.round(this.refPoint.x / gs) * gs, Math.round(this.refPoint.y / gs) * gs);\n this.w = Math.max(Math.round(this.w / gs) * gs, gs);\n this.h = Math.max(Math.round(this.h / gs) * gs, gs);\n this.invalidate(false);\n }\n resize(resizePoint: number, point: LocalPoint) {\n const z = gameStore.zoomFactor;\n switch (resizePoint) {\n case 0: {\n this.w = g2lx(this.refPoint.x) + this.w * z - point.x;\n this.h = g2ly(this.refPoint.y) + this.h * z - point.y;\n this.refPoint = l2g(point);\n break;\n }\n case 1: {\n this.w = g2lx(this.refPoint.x) + this.w * z - point.x;\n this.h = point.y - g2ly(this.refPoint.y);\n this.refPoint = new GlobalPoint(l2gx(point.x), this.refPoint.y);\n break;\n }\n case 2: {\n this.w = point.x - g2lx(this.refPoint.x);\n this.h = point.y - g2ly(this.refPoint.y);\n break;\n }\n case 3: {\n this.w = point.x - g2lx(this.refPoint.x);\n this.h = g2ly(this.refPoint.y) + this.h * z - point.y;\n this.refPoint = new GlobalPoint(this.refPoint.x, l2gy(point.y));\n break;\n }\n }\n\n this.w /= z;\n this.h /= z;\n\n if (this.w < 0) {\n this.refPoint = this.refPoint.add(new Vector(this.w, 0));\n this.w = Math.abs(this.w);\n }\n if (this.h < 0) {\n this.refPoint = this.refPoint.add(new Vector(0, this.h));\n this.h = Math.abs(this.h);\n }\n }\n}\n","import { render, staticRenderFns } from \"./select.vue?vue&type=template&id=048b3482&\"\nimport script from \"./select.vue?vue&type=script&lang=ts&\"\nexport * from \"./select.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./main.vue?vue&type=template&id=61eb1455&scoped=true&\"\nimport script from \"./main.vue?vue&type=script&lang=ts&\"\nexport * from \"./main.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./main.vue?vue&type=style&index=0&id=61eb1455&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"61eb1455\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=style&index=0&id=73816298&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"AssetManager\"}},[_c('div',{attrs:{\"id\":\"titlebar\"}},[_vm._v(\"Asset Manager\")]),_c('div',{attrs:{\"id\":\"main\"}},[_c('div',{attrs:{\"id\":\"assets\"},on:{\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, _vm.currentFolder)}}},[_c('div',{attrs:{\"id\":\"breadcrumbs\"}},[_c('div',[_vm._v(\"/\")]),_vm._l((_vm.path),function(dir){return _c('div',{key:dir},[_vm._v(_vm._s(_vm.idMap.get(dir).name))])})],2),_c('div',{attrs:{\"id\":\"actionbar\"}},[_c('input',{attrs:{\"id\":\"files\",\"type\":\"file\",\"multiple\":\"\",\"hidden\":\"\"},on:{\"change\":function($event){return _vm.upload()}}}),_c('div',{attrs:{\"title\":\"Create folder\"},on:{\"click\":_vm.createDirectory}},[_c('i',{staticClass:\"fas fa-plus-square\"})]),_c('div',{attrs:{\"title\":\"Upload files\"},on:{\"click\":_vm.prepareUpload}},[_c('i',{staticClass:\"fas fa-upload\"})])]),_c('div',{attrs:{\"id\":\"explorer\"}},[(_vm.path.length)?_c('div',{staticClass:\"inode folder\",on:{\"dblclick\":function($event){return _vm.changeDirectory(-1)},\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"dragleave\":function($event){$event.preventDefault();return _vm.leaveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, _vm.parentFolder)}}},[_c('i',{staticClass:\"fas fa-folder\",staticStyle:{\"font-size\":\"50px\"}}),_c('div',{staticClass:\"title\"},[_vm._v(\"..\")])]):_vm._e(),_vm._l((_vm.folders),function(key){return _c('div',{key:key,staticClass:\"inode folder\",class:{'inode-selected': _vm.selected.includes(key)},attrs:{\"draggable\":\"true\"},on:{\"click\":function($event){return _vm.select($event, key)},\"dblclick\":function($event){return _vm.changeDirectory(key)},\"contextmenu\":function($event){$event.preventDefault();return _vm.$refs.cm.open($event, key)},\"dragstart\":function($event){return _vm.startDrag($event, key)},\"dragover\":function($event){$event.preventDefault();return _vm.moveDrag($event)},\"dragleave\":function($event){$event.preventDefault();return _vm.leaveDrag($event)},\"drop\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.stopDrag($event, key)}}},[_c('i',{staticClass:\"fas fa-folder\",staticStyle:{\"font-size\":\"50px\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.idMap.get(key).name))])])}),_vm._l((_vm.files),function(file){return _c('div',{key:file,staticClass:\"inode file\",class:{'inode-selected': _vm.selected.includes(file)},attrs:{\"draggable\":\"true\"},on:{\"click\":function($event){return _vm.select($event, file)},\"contextmenu\":function($event){$event.preventDefault();return _vm.$refs.cm.open($event, file)},\"dragstart\":function($event){return _vm.startDrag($event, file)}}},[_c('img',{attrs:{\"src\":'/static/assets/' + _vm.idMap.get(file).file_hash,\"width\":\"50\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.idMap.get(file).name))])])})],2)]),(_vm.firstSelectedFile)?_c('div',{attrs:{\"id\":\"asset-details\"}},[_c('div',{attrs:{\"id\":\"asset-detail-title\"}},[_vm._v(_vm._s(_vm.firstSelectedFile.name))]),_c('img',{attrs:{\"src\":'/static/assets/' + _vm.firstSelectedFile.file_hash}})]):_vm._e()]),_c('AssetContextMenu',{ref:\"cm\"}),_c('Prompt',{ref:\"prompt\"}),_c('ConfirmDialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manager.vue?vue&type=template&id=5b0def98&\"","\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\nimport { l2gx, l2gy } from \"@/game/units\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class SelectContext extends Vue {\n visible = false;\n x = 0;\n y = 0;\n\n get IS_DM(): boolean {\n return gameStore.IS_DM;\n }\n\n open(event: MouseEvent) {\n this.visible = true;\n this.x = event.pageX;\n this.y = event.pageY;\n this.$nextTick(() => (this.$children[0].$el).focus());\n }\n close() {\n this.visible = false;\n }\n bringPlayers() {\n if (!gameStore.IS_DM) return;\n socket.emit(\"Players.Bring\", { x: l2gx(this.x), y: l2gy(this.y) });\n this.close();\n }\n createToken() {\n (this.$parent.$parent.$refs.createtokendialog).open(this.x, this.y);\n this.close();\n }\n showInitiative() {\n EventBus.$emit(\"Initiative.Show\");\n this.close();\n }\n}\n","import Axios from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\nimport { coreStore } from \"@/core/store\";\n\nComponent.registerHooks([\"beforeRouteEnter\"]);\n\n@Component({})\nexport default class Logout extends Vue {\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n Axios.post(\"/api/logout\").then(() => {\n coreStore.setAuthenticated(false);\n coreStore.setUsername(\"\");\n next({ path: \"/auth/login\" });\n });\n }\n}\n","import { getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { rootStore } from \"@/store\";\n\nexport interface CoreState {\n authenticated: boolean;\n initialized: boolean;\n username: string;\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"core\" })\nclass CoreStore extends VuexModule implements CoreState {\n authenticated = false;\n initialized = false;\n username = \"\";\n\n @Mutation\n setAuthenticated(auth: boolean) {\n this.authenticated = auth;\n }\n\n @Mutation\n setInitialized(init: boolean) {\n this.initialized = init;\n }\n\n @Mutation\n setUsername(username: string) {\n this.username = username;\n }\n}\n\nexport const coreStore = getModule(CoreStore);\n","import Vue from \"vue\";\n\nimport App from \"@/App.vue\";\nimport { router } from \"@/router\";\nimport { rootStore } from \"@/store\";\n\nVue.config.productionTip = false;\nVue.config.devtools = true;\nVue.config.performance = true;\n\nexport const app = new Vue({\n router,\n store: rootStore,\n render: h => h(App),\n}).$mount(\"#app\");\n\n(window).app = app;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component({\n props: [\"visible\", \"left\", \"top\"],\n})\nexport default class ContextMenu extends Vue {}\n","import Axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Route } from \"vue-router\";\n\n@Component({ template: \"\" })\nexport default class Initiative extends Vue {\n beforeRouteEnter(to: Route, from: Route, next: ({}) => {}) {\n Axios.post(\"/api/invite\", {\n code: to.params.code,\n })\n .then((response: AxiosResponse) => {\n next({ path: response.data.sessionUrl });\n })\n .catch((error: AxiosError) => {\n console.error(\"Invitation code could not be redeemed\");\n next({ path: \"/dashboard\" });\n });\n }\n}\n","import { render, staticRenderFns } from \"./prompt.vue?vue&type=template&id=0602c2e6&scoped=true&\"\nimport script from \"./prompt.vue?vue&type=script&lang=ts&\"\nexport * from \"./prompt.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./prompt.vue?vue&type=style&index=0&id=0602c2e6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0602c2e6\",\n null\n \n)\n\nexport default component.exports","import { GlobalPoint } from \"@/game/geom\";\nimport { gameStore } from \"@/game/store\";\n\nimport { Edge } from \"./cdt\";\nimport { drawPolygon } from \"./draw\";\nimport { PA_CDT } from \"./pa\";\nimport { Point, Sign, Triangle } from \"./tds\";\nimport { ccw, cw, orientation } from \"./triag\";\n\nexport function computeVisibility(q: GlobalPoint, target: \"vision\" | \"movement\", drawt?: boolean): number[][] {\n if (drawt === undefined) drawt = gameStore.drawTEContour;\n // console.time(\"CV\");\n const Q: Point = [q.x, q.y];\n const rawOutput: number[][] = [];\n const triangle = PA_CDT[target].locate(Q, null).loc;\n if (triangle === null) {\n console.error(\"Triangle not found\");\n return [];\n }\n // triangle.fill();\n rawOutput.push(triangle.vertices[1]!.point!);\n if (!triangle.isConstrained(0))\n expandEdge(Q, triangle.vertices[2]!.point!, triangle.vertices[1]!.point!, triangle, 0, rawOutput);\n rawOutput.push(triangle.vertices[2]!.point!);\n if (!triangle.isConstrained(1))\n expandEdge(Q, triangle.vertices[0]!.point!, triangle.vertices[2]!.point!, triangle, 1, rawOutput);\n rawOutput.push(triangle.vertices[0]!.point!);\n if (!triangle.isConstrained(2))\n expandEdge(Q, triangle.vertices[1]!.point!, triangle.vertices[0]!.point!, triangle, 2, rawOutput);\n // console.timeEnd(\"CV\");\n\n if (drawt) drawPolygon(rawOutput, \"red\");\n\n return rawOutput;\n}\n\nfunction expandEdge(\n q: Point,\n left: number[],\n right: number[],\n fh: Triangle,\n index: number,\n rawOutput: number[][],\n): void {\n // fh.edge(index).draw();\n const nfh = fh.neighbours[index]!;\n // nfh.fill(\"rgba(255, 0, 0, 0.25)\");\n const nIndex = nfh.indexT(fh);\n const rIndex = ccw(nIndex);\n const lIndex = cw(nIndex);\n const nvh = nfh.vertices[nIndex]!;\n const rvh = nfh.vertices[lIndex]!;\n const lvh = nfh.vertices[rIndex]!;\n\n const re: Edge = [nfh, rIndex];\n const le: Edge = [nfh, lIndex];\n\n const ro = orientation(q, right, nvh.point!);\n const lo = orientation(q, left, nvh.point!);\n\n // const ctx = layerManager.getLayer(\"draw\")!.ctx;\n // ctx.beginPath();\n // ctx.strokeStyle = \"red\";\n // ctx.lineJoin = \"round\";\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(left[0]), g2ly(left[1]));\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(nvh[0]), g2ly(nvh[1]));\n // ctx.strokeStyle = \"blue\";\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(right[0]), g2ly(right[1]));\n // ctx.moveTo(g2lx(q.x), g2ly(q.y));\n // ctx.lineTo(g2lx(nvh[0]), g2ly(nvh[1]));\n // ctx.closePath();\n // ctx.stroke();\n\n // Right edge is seen if the new vertex is ccw of the right ray\n if (ro === Sign.COUNTERCLOCKWISE) {\n if (re[0].isConstrained(re[1])) {\n // See if current right ray is rvh\n if (right !== rvh.point!) rawOutput.push(raySegIntersection(q, right, nvh.point!, rvh.point!));\n if (lo === Sign.COUNTERCLOCKWISE) rawOutput.push(raySegIntersection(q, left, nvh.point!, rvh.point!));\n } else {\n if (lo === Sign.COUNTERCLOCKWISE) return expandEdge(q, left, right, nfh, rIndex, rawOutput);\n else expandEdge(q, nvh.point!, right, nfh, rIndex, rawOutput);\n }\n }\n\n if (ro !== Sign.CLOCKWISE && lo !== Sign.COUNTERCLOCKWISE) {\n rawOutput.push(nvh.point!);\n }\n\n if (lo === Sign.CLOCKWISE) {\n if (le[0].isConstrained(le[1])) {\n if (ro === Sign.CLOCKWISE) {\n rawOutput.push(raySegIntersection(q, right, nvh.point!, lvh.point!));\n }\n if (left !== lvh.point!) {\n rawOutput.push(raySegIntersection(q, left, nvh.point!, lvh.point!));\n }\n return;\n } else {\n if (ro === Sign.CLOCKWISE) {\n return expandEdge(q, left, right, nfh, lIndex, rawOutput);\n } else {\n return expandEdge(q, left, nvh.point!, nfh, lIndex, rawOutput);\n }\n }\n }\n}\n\nfunction raySegIntersection(q: Point, b: Point, s: Point, t: Point) {\n const denominator = (t[1] - s[1]) * (b[0] - q[0]) - (t[0] - s[0]) * (b[1] - q[1]);\n const ua = ((t[0] - s[0]) * (q[1] - s[1]) - (t[1] - s[1]) * (q[0] - s[0])) / denominator;\n // const ub = ((b[0] - q.x) * (q.y - s[1]) - (b[1] - q.y) * (q.x - s[0])) / denominator;\n const x = q[0] + ua * (b[0] - q[0]);\n const y = q[1] + ua * (b[1] - q[1]);\n\n return [x, y];\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',[_vm._v(\"#X\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.xCount),expression:\"xCount\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.xCount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.xCount=$event.target.value}}}),_c('div',[_vm._v(\"#Y\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.yCount),expression:\"yCount\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.yCount)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.yCount=$event.target.value}}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./map.vue?vue&type=template&id=2104f147&\"","import { render, staticRenderFns } from \"./edit_dialog.vue?vue&type=template&id=23de098e&scoped=true&\"\nimport script from \"./edit_dialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./edit_dialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./edit_dialog.vue?vue&type=style&index=0&id=23de098e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23de098e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"modal\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"mask\",class:{'modal-mask': _vm.mask, 'dialog-mask': !_vm.mask},on:{\"click\":_vm.close,\"dragover\":function($event){$event.preventDefault();return _vm.dragOver($event)}}},[_c('div',{ref:\"container\",staticClass:\"modal-container\",style:({'background-color': _vm.colour}),on:{\"click\":function($event){$event.stopPropagation();}}},[_vm._t(\"header\",null,{\"dragStart\":_vm.dragStart,\"dragEnd\":_vm.dragEnd}),_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./modal.vue?vue&type=template&id=c2851f0e&scoped=true&\"","export class Settings {\n static angleSteps = 4;\n static drawAngleLines = false;\n static drawFirstLightHit = false;\n static skipPlayerFOW = false;\n static skipLightFOW = false;\n\n static tempFill: string = \"fog\";\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport axios, { AxiosError, AxiosResponse } from \"axios\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { coreStore } from \"@/core/store\";\n\n@Component\nexport default class Login extends Vue {\n username = \"\";\n password = \"\";\n error = \"\";\n\n login() {\n axios\n .post(\"/api/login\", {\n username: this.username,\n password: this.password,\n })\n .then((response: AxiosResponse) => {\n coreStore.setUsername(this.username);\n coreStore.setAuthenticated(true);\n this.$router.push(this.$route.query.redirect || \"/\");\n })\n .catch((error: AxiosError) => {\n if (error.response) this.error = error.response.statusText;\n else this.error = \"Unknown error occured\";\n });\n }\n\n register() {\n axios\n .post(\"/api/register\", {\n username: this.username,\n password: this.password,\n })\n .then((response: AxiosResponse) => {\n coreStore.setUsername(this.username);\n coreStore.setAuthenticated(true);\n this.$router.push(this.$route.query.redirect || \"/\");\n })\n .catch((error: AxiosError) => {\n if (error.response) this.error = error.response.statusText;\n else this.error = \"Unknown error occured\";\n });\n }\n\n focusin(event: { target?: { nextElementSibling?: HTMLElement } }) {\n if (event.target && event.target.nextElementSibling) {\n const span = event.target.nextElementSibling;\n span.style.opacity = \"0\";\n }\n }\n\n focusout(event: { target?: { nextElementSibling?: HTMLElement } }) {\n if (event.target && event.target.nextElementSibling) {\n const span = event.target.nextElementSibling;\n span.style.opacity = \"1\";\n }\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":function($event){_vm.visible = false}},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(\"Create basic token\")])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('label',{attrs:{\"for\":\"createtokendialog-text\"}},[_vm._v(\"Text\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],attrs:{\"type\":\"text\",\"id\":\"createtokendialog-name\"},domProps:{\"value\":(_vm.text)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.text=$event.target.value}}}),_c('label',[_vm._v(\"Colours\")]),_c('div',{staticClass:\"colours\"},[_c('span',[_vm._v(\"Fill:\")]),_c('color-picker',{attrs:{\"color\":_vm.fillColour},on:{\"update:color\":function($event){_vm.fillColour=$event}}}),_c('span',[_vm._v(\"Border:\")]),_c('color-picker',{attrs:{\"color\":_vm.borderColour},on:{\"update:color\":function($event){_vm.borderColour=$event}}})],1),_c('canvas',{ref:\"canvas\",attrs:{\"width\":\"100px\",\"height\":\"100px\"}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./createtoken_modal.vue?vue&type=template&id=73816298&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(\"div\")}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tool.vue?vue&type=template&id=1e034b42&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=script&lang=ts&\"","import Component from \"vue-class-component\";\n\nimport Tool from \"@/game/ui/tools/tool.vue\";\n\nimport { socket } from \"@/game/api/socket\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Line } from \"@/game/shapes/line\";\nimport { Text } from \"@/game/shapes/text\";\nimport { gameStore } from \"@/game/store\";\nimport { l2g } from \"@/game/units\";\nimport { getMouse } from \"@/game/utils\";\n\n@Component\nexport class RulerTool extends Tool {\n name = \"Ruler\";\n active = false;\n startPoint: GlobalPoint | null = null;\n ruler: Line | null = null;\n text: Text | null = null;\n onMouseDown(event: MouseEvent) {\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No draw layer!\");\n return;\n }\n this.active = true;\n this.startPoint = l2g(getMouse(event));\n this.ruler = new Line(this.startPoint, this.startPoint, 3, gameStore.rulerColour);\n this.text = new Text(this.startPoint.clone(), \"\", \"bold 20px serif\");\n this.ruler.addOwner(gameStore.username);\n this.text.addOwner(gameStore.username);\n layer.addShape(this.ruler, true, true);\n layer.addShape(this.text, true, true);\n }\n onMouseMove(event: MouseEvent) {\n if (!this.active || this.ruler === null || this.startPoint === null || this.text === null) return;\n\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No draw layer!\");\n return;\n }\n const endPoint = l2g(getMouse(event));\n\n this.ruler.endPoint = endPoint;\n socket.emit(\"Shape.Update\", { shape: this.ruler!.asDict(), redraw: true, temporary: true });\n\n const diffsign = Math.sign(endPoint.x - this.startPoint.x) * Math.sign(endPoint.y - this.startPoint.y);\n const xdiff = Math.abs(endPoint.x - this.startPoint.x);\n const ydiff = Math.abs(endPoint.y - this.startPoint.y);\n const label =\n Math.round((Math.sqrt(xdiff ** 2 + ydiff ** 2) * gameStore.unitSize) / gameStore.gridSize) + \" ft\";\n const angle = Math.atan2(diffsign * ydiff, xdiff);\n const xmid = Math.min(this.startPoint.x, endPoint.x) + xdiff / 2;\n const ymid = Math.min(this.startPoint.y, endPoint.y) + ydiff / 2;\n this.text.refPoint = new GlobalPoint(xmid, ymid);\n this.text.text = label;\n this.text.angle = angle;\n socket.emit(\"Shape.Update\", { shape: this.text.asDict(), redraw: true, temporary: true });\n layer.invalidate(true);\n }\n onMouseUp(event: MouseEvent) {\n if (!this.active || this.ruler === null || this.startPoint === null || this.text === null) return;\n\n const layer = layerManager.getLayer(\"draw\");\n if (layer === undefined) {\n console.log(\"No active layer!\");\n return;\n }\n this.active = false;\n\n layer.removeShape(this.ruler, true, true);\n layer.removeShape(this.text, true, true);\n layer.invalidate(true);\n this.ruler = this.startPoint = this.text = null;\n }\n}\n","import { render, staticRenderFns } from \"./modal.vue?vue&type=template&id=c2851f0e&scoped=true&\"\nimport script from \"./modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./modal.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./modal.vue?vue&type=style&index=0&id=c2851f0e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c2851f0e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/ts-loader/index.js??ref--12-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=script&lang=ts&\"","import { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\nimport { CDT } from \"./cdt\";\n\nexport let PA_CDT = {\n vision: new CDT(),\n movement: new CDT(),\n};\n\nexport function triangulate(target: \"vision\" | \"movement\", partial: boolean = false) {\n const cdt = new CDT();\n\n let shapes;\n if (target === \"vision\") shapes = gameStore.visionBlockers;\n else shapes = gameStore.movementblockers;\n\n for (const sh of shapes) {\n const shape = layerManager.UUIDMap.get(sh)!;\n if (partial && !shape.visibleInCanvas(layerManager.getLayer()!.canvas)) continue;\n for (let i = 0; i < shape.points.length; i++) {\n cdt.insertConstraint(shape.points[i], shape.points[(i + 1) % shape.points.length]);\n }\n }\n // LEFT WALL\n cdt.insertConstraint([-1e8, -1e8], [-1e8, 1e8]);\n cdt.insertConstraint([-1e8, 1e8], [-1e11, 1e8]);\n cdt.insertConstraint([-1e11, 1e8], [-1e11, -1e8]);\n cdt.insertConstraint([-1e11, -1e8], [-1e8, -1e8]);\n // TOP WALL\n cdt.insertConstraint([-1e8, -1e8], [1e8, -1e8]);\n cdt.insertConstraint([1e8, -1e8], [1e8, -1e11]);\n cdt.insertConstraint([1e8, -1e11], [-1e8, -1e11]);\n cdt.insertConstraint([-1e8, -1e11], [-1e8, -1e8]);\n // RIGHT WALL\n cdt.insertConstraint([1e8, -1e8], [1e8, 1e8]);\n cdt.insertConstraint([1e8, 1e8], [1e11, 1e8]);\n cdt.insertConstraint([1e11, 1e8], [1e11, -1e8]);\n cdt.insertConstraint([1e11, -1e8], [1e8, -1e8]);\n // BOT WALL\n cdt.insertConstraint([-1e8, 1e8], [1e8, 1e8]);\n cdt.insertConstraint([1e8, 1e8], [1e8, 1e11]);\n cdt.insertConstraint([1e8, 1e11], [-1e8, 1e11]);\n cdt.insertConstraint([-1e8, 1e11], [-1e8, 1e8]);\n PA_CDT[target] = cdt;\n (window).CDT = PA_CDT;\n}\n","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=style&index=0&id=b6e1f51c&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&id=61eb1455&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./main.vue?vue&type=style&index=0&id=61eb1455&scoped=true&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Prop } from \"vue-property-decorator\";\n\nimport ColorPicker from \"@/core/components/colorpicker.vue\";\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n \"color-picker\": ColorPicker,\n },\n})\nexport default class EditDialog extends Vue {\n @Prop() shape!: Shape;\n\n visible = false;\n\n get owned(): boolean {\n return this.shape.ownedBy();\n }\n\n mounted() {\n EventBus.$on(\"EditDialog.Open\", (shape: Shape) => {\n this.shape = shape;\n this.visible = true;\n });\n EventBus.$on(\"EditDialog.AddLabel\", (label: string) => {\n if (this.visible) {\n this.shape.labels.push(gameStore.labels[label]);\n this.updateShape(true);\n }\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"EditDialog.Open\");\n EventBus.$off(\"EditDialog.AddLabel\");\n }\n\n updated() {\n this.addEmpty();\n }\n\n addEmpty() {\n if (this.shape.owners[this.shape.owners.length - 1] !== \"\") this.shape.addOwner(\"\");\n if (\n !this.shape.trackers.length ||\n this.shape.trackers[this.shape.trackers.length - 1].name !== \"\" ||\n this.shape.trackers[this.shape.trackers.length - 1].value !== 0\n )\n this.shape.trackers.push({ uuid: uuidv4(), name: \"\", value: 0, maxvalue: 0, visible: false });\n if (\n !this.shape.auras.length ||\n this.shape.auras[this.shape.auras.length - 1].name !== \"\" ||\n this.shape.auras[this.shape.auras.length - 1].value !== 0\n )\n this.shape.auras.push({\n uuid: uuidv4(),\n name: \"\",\n value: 0,\n dim: 0,\n visionSource: false,\n colour: \"rgba(0,0,0,0)\",\n visible: false,\n });\n }\n updateShape(redraw: boolean, temporary = false) {\n if (!this.owned) return;\n socket.emit(\"Shape.Update\", { shape: this.shape.asDict(), redraw, temporary });\n if (redraw) layerManager.invalidate();\n this.addEmpty();\n }\n setToken(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.setIsToken(event.target.checked);\n this.updateShape(true);\n }\n setVisionBlocker(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.checkVisionSources();\n this.updateShape(true);\n }\n setMovementBlocker(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n this.shape.setMovementBlock(event.target.checked);\n this.updateShape(false);\n }\n updateAnnotation(event: { target: HTMLInputElement }) {\n if (!this.owned) return;\n const hadAnnotation = this.shape.annotation !== \"\";\n this.shape.annotation = event.target.value;\n if (this.shape.annotation !== \"\" && !hadAnnotation) {\n gameStore.annotations.push(this.shape.uuid);\n if (layerManager.hasLayer(\"draw\")) layerManager.getLayer(\"draw\")!.invalidate(true);\n } else if (this.shape.annotation === \"\" && hadAnnotation) {\n gameStore.annotations.splice(gameStore.annotations.findIndex(an => an === this.shape.uuid));\n if (layerManager.hasLayer(\"draw\")) layerManager.getLayer(\"draw\")!.invalidate(true);\n }\n this.updateShape(false);\n }\n updateOwner(event: { target: HTMLInputElement }, oldValue: string) {\n if (!this.owned) return;\n this.shape.updateOwner(oldValue, event.target.value);\n this.updateShape(gameStore.fowLOS);\n }\n removeOwner(value: string) {\n if (!this.owned) return;\n this.shape.removeOwner(value);\n this.updateShape(gameStore.fowLOS);\n }\n removeTracker(uuid: string) {\n if (!this.owned) return;\n this.shape.trackers = this.shape.trackers.filter(tr => tr.uuid !== uuid);\n this.updateShape(false);\n }\n removeAura(uuid: string) {\n if (!this.owned) return;\n this.shape.auras = this.shape.auras.filter(au => au.uuid !== uuid);\n this.shape.checkVisionSources();\n this.updateShape(true);\n }\n updateAuraVisionSource(aura: Aura) {\n if (!this.owned) return;\n aura.visionSource = !aura.visionSource;\n const i = gameStore.visionSources.findIndex(ls => ls.aura === aura.uuid);\n if (aura.visionSource && i === -1) gameStore.visionSources.push({ shape: this.shape.uuid, aura: aura.uuid });\n else if (!aura.visionSource && i >= 0) gameStore.visionSources.splice(i, 1);\n this.updateShape(true);\n }\n updateAuraColour(aura: Aura, colour: string) {\n if (!this.owned) return;\n const layer = layerManager.getLayer(this.shape.layer);\n if (layer === undefined) return;\n layer.invalidate(!aura.visionSource);\n }\n openLabelManager() {\n EventBus.$emit(\"LabelManager.Open\");\n }\n removeLabel(uuid: string) {\n if(!this.owned) return;\n this.shape.labels = this.shape.labels.filter(l => l.uuid !== uuid);\n this.updateShape(true);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.getActiveLayer() !== undefined)?_c('ContextMenu',{attrs:{\"visible\":_vm.visible,\"left\":_vm.x + 'px',\"top\":_vm.y + 'px'},on:{\"close\":_vm.close}},[(_vm.getLayers().length > 1)?_c('li',[_vm._v(\"Layer\\n \"),_c('ul',_vm._l((_vm.getLayers()),function(layer){return _c('li',{key:layer.name,style:([_vm.getActiveLayer().name === layer.name ? {'background-color':'#82c8a0'}: {}]),on:{\"click\":function($event){return _vm.setLayer(layer.name)}}},[_vm._v(_vm._s(layer.name))])}),0)]):_vm._e(),_c('li',{on:{\"click\":_vm.moveToBack}},[_vm._v(\"Move to back\")]),_c('li',{on:{\"click\":_vm.moveToFront}},[_vm._v(\"Move to front\")]),_c('li',{on:{\"click\":_vm.addInitiative}},[_vm._v(_vm._s(_vm.getInitiativeWord())+\" initiative\")]),_c('li',{on:{\"click\":_vm.openEditDialog}},[_vm._v(\"Show properties\")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./shapecontext.vue?vue&type=template&id=6c66d243&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class ConfirmDialog extends Vue {\n $refs!: {\n confirm: HTMLButtonElement;\n };\n\n visible = false;\n yes = \"Yes\";\n no = \"No\";\n title = \"\";\n\n resolve = (ok: boolean) => {};\n reject = () => {};\n\n confirm() {\n this.resolve(true);\n this.close();\n }\n deny() {\n this.resolve(false);\n this.close();\n }\n close() {\n this.reject();\n this.visible = false;\n this.title = \"\";\n }\n open(title: string, yes = \"yes\", no = \"no\"): Promise {\n this.yes = yes;\n this.no = no;\n this.title = title;\n\n this.visible = true;\n this.$nextTick(() => {\n this.$refs.confirm.focus();\n });\n\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./map.vue?vue&type=template&id=2104f147&\"\nimport script from \"./map.vue?vue&type=script&lang=ts&\"\nexport * from \"./map.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"accordion\"},[_c('div',{attrs:{\"id\":\"header\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleDisplay($event)}}},[_c('input',{ref:\"overall\",attrs:{\"type\":\"checkbox\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleCategory($event)}}}),_c('strong',[_vm._v(_vm._s(_vm.title))]),(_vm.showArrow)?[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showArrow && !_vm.active),expression:\"showArrow && !active\"}],staticClass:\"down-Arrow\"},[_vm._v(\"▼\")]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showArrow && _vm.active),expression:\"showArrow && active\"}],staticClass:\"up-Arrow\"},[_vm._v(\"▲\")])]:_vm._e()],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],attrs:{\"id\":\"body\"}},_vm._l((_vm.items),function(item){return _c('div',{key:item[0],staticClass:\"item\",on:{\"click\":function($event){return _vm.toggleSelection(item[0])}}},[_c('input',{attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":_vm.selected.includes(item[0])},on:{\"click\":function($event){$event.preventDefault();}}}),_vm._v(\" \"+_vm._s(item[1])+\"\\n \")])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./accordion.vue?vue&type=template&id=0bf2b7ba&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":_vm.close},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(_vm._s(_vm.title))])}}])},[_c('div',{staticClass:\"modal-body\"},[_c('button',{ref:\"confirm\",on:{\"click\":_vm.confirm}},[_vm._v(_vm._s(_vm.yes))]),(!!_vm.no)?_c('button',{on:{\"click\":_vm.deny}},[_vm._v(_vm._s(_vm.no))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=template&id=1883e207&scoped=true&\"","import { render, staticRenderFns } from \"./dmsettings.vue?vue&type=template&id=b908e87c&scoped=true&\"\nimport script from \"./dmsettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./dmsettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./dmsettings.vue?vue&type=style&index=0&id=b908e87c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b908e87c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n\nimport Component from \"vue-class-component\";\n\nimport ContextMenu from \"@/core/components/contextmenu.vue\";\nimport ConfirmDialog from \"@/core/components/modals/confirm.vue\";\nimport Prompt from \"@/core/components/modals/prompt.vue\";\n\nimport { socket } from \"@/assetManager/socket\";\nimport { assetStore } from \"@/assetManager/store\";\nimport { getComponent, getRef } from \"@/core/utils\";\n\n@Component({\n components: {\n ContextMenu,\n },\n})\nexport default class AssetContextMenu extends Vue {\n visible = false;\n left = 0;\n top = 0;\n open(event: MouseEvent, inode: number) {\n if (!assetStore.selected.includes(inode)) getComponent().select(event, inode);\n\n this.visible = true;\n this.left = event.pageX;\n this.top = event.pageY;\n this.$nextTick(() => {\n (this.$children[0].$el).focus();\n });\n }\n close() {\n this.visible = false;\n }\n rename() {\n if (assetStore.selected.length !== 1) return;\n const asset = assetStore.idMap.get(assetStore.selected[0])!;\n\n getRef(\"prompt\")\n .prompt(\"New name:\", `Renaming ${asset.name}`)\n .then(\n (name: string) => {\n socket.emit(\"Asset.Rename\", {\n asset: asset.id,\n name,\n });\n asset.name = name;\n getComponent().$forceUpdate();\n },\n () => {},\n );\n this.close();\n }\n remove() {\n if (assetStore.selected.length === 0) return;\n getRef(\"confirm\")\n .open(\"Are you sure you wish to remove this?\")\n .then(\n (result: boolean) => {\n if (result) {\n for (const sel of assetStore.selected) {\n socket.emit(\"Asset.Remove\", sel);\n if (assetStore.files.includes(sel))\n assetStore.files.splice(assetStore.files.indexOf(sel), 1);\n else assetStore.folders.splice(assetStore.folders.indexOf(sel), 1);\n }\n assetStore.clearSelected();\n }\n },\n () => {},\n );\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select.vue?vue&type=script&lang=ts&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=style&index=0&lang=css&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { gameStore } from \"@/game/store\";\n\n@Component({\n components: {\n Modal,\n },\n})\nexport default class LabelManager extends Vue {\n visible = false;\n newCategory = \"\";\n newName = \"\";\n search = \"\";\n\n mounted() {\n EventBus.$on(\"LabelManager.Open\", () => {\n this.visible = true;\n this.newCategory = \"\";\n this.newName = \"\";\n this.$nextTick(() => (this.$refs.search).focus());\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"LabelManager.Open\");\n }\n\n get labels() {\n const cat: {[category: string]: Label[]} = {'': []};\n for (const uuid of Object.keys(gameStore.labels)) {\n const label = gameStore.labels[uuid];\n if (this.search.length && `${label.category.toLowerCase()}${label.name.toLowerCase()}`.search(this.search.toLowerCase()) < 0) continue;\n if (label.user !== gameStore.username) continue;\n if (!label.category) cat[''].push(label);\n else {\n if (!(label.category in cat)) cat[label.category] = [];\n cat[label.category].push(label);\n cat[label.category].sort((a, b) => a.name.localeCompare(b.name));\n }\n }\n return cat;\n }\n\n get categories() {\n return Object.keys(this.labels).sort();\n }\n\n selectLabel(label: string) {\n EventBus.$emit(\"EditDialog.AddLabel\", label);\n this.visible = false;\n }\n\n toggleVisibility(label: Label) {\n label.visible = !label.visible;\n socket.emit(\"Label.Visibility.Set\", { uuid: label.uuid, visible: label.visible });\n }\n\n addLabel() {\n if (this.newName === \"\") return;\n const label = {\n uuid: uuidv4(),\n category: this.newCategory,\n name: this.newName,\n visible: false,\n user: gameStore.username,\n };\n gameStore.addLabel(label);\n socket.emit(\"Label.Add\", label);\n this.newCategory = \"\";\n this.newName = \"\";\n }\n\n deleteLabel(uuid: string) {\n gameStore.deleteLabel({ uuid, user: gameStore.username });\n socket.emit(\"Label.Delete\", uuid);\n }\n}\n","import { ServerPolygon } from \"../comm/types/shapes\";\nimport { GlobalPoint, LocalPoint } from \"../geom\";\nimport { g2lx, g2ly, g2lz, l2g } from \"../units\";\nimport { getFogColour } from \"../utils\";\nimport { BoundingRect } from \"./boundingrect\";\nimport { Shape } from \"./shape\";\n\nexport class Polygon extends Shape {\n type = \"polygon\";\n _vertices: GlobalPoint[] = [];\n\n constructor(\n startPoint: GlobalPoint,\n vertices: GlobalPoint[] = [],\n fillColour?: string,\n strokeColour?: string,\n uuid?: string,\n ) {\n super(startPoint, fillColour, strokeColour, uuid);\n this._vertices = vertices;\n }\n\n get refPoint() {\n return this._refPoint;\n }\n set refPoint(point: GlobalPoint) {\n const delta = point.subtract(this._refPoint);\n this._refPoint = point;\n for (let i = 0; i < this._vertices.length; i++) this._vertices[i] = this._vertices[i].add(delta);\n }\n\n get vertices() {\n return [this._refPoint, ...this._vertices];\n }\n\n asDict() {\n return Object.assign(this.getBaseDict(), {\n vertices: this._vertices.map(p => ({ x: p.x, y: p.y })),\n });\n }\n\n fromDict(data: ServerPolygon) {\n super.fromDict(data);\n this._vertices = data.vertices.map(v => new GlobalPoint(v.x, v.y));\n }\n\n get points() {\n return this.vertices.map(point => [point.x, point.y]);\n }\n\n draw(ctx: CanvasRenderingContext2D) {\n super.draw(ctx);\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n\n if (this.strokeColour === \"fog\") ctx.strokeStyle = getFogColour();\n else if (this.vertices.length === 2) ctx.strokeStyle = this.fillColour;\n else ctx.strokeStyle = this.strokeColour;\n if (this.fillColour === \"fog\") ctx.fillStyle = getFogColour();\n else ctx.fillStyle = this.fillColour;\n ctx.lineWidth = g2lz(2);\n\n ctx.beginPath();\n ctx.moveTo(g2lx(this.vertices[0].x), g2ly(this.vertices[0].y));\n for (let i = 1; i <= this.vertices.length; i++) {\n const vertex = this.vertices[i % this.vertices.length];\n ctx.lineTo(g2lx(vertex.x), g2ly(vertex.y));\n }\n ctx.fill();\n ctx.stroke();\n }\n\n contains(point: GlobalPoint): boolean {\n return this.getBoundingBox().contains(point);\n }\n\n center(): GlobalPoint;\n center(centerPoint: GlobalPoint): void;\n center(centerPoint?: GlobalPoint): GlobalPoint | void {\n return this.getBoundingBox().center();\n }\n visibleInCanvas(canvas: HTMLCanvasElement): boolean {\n return this.getBoundingBox().visibleInCanvas(canvas);\n } // TODO\n snapToGrid(): void {}\n resizeToGrid(): void {}\n resize(resizePoint: number, point: LocalPoint): void {\n if (resizePoint === 0) this._refPoint = l2g(point);\n else this._vertices[resizePoint - 1] = l2g(point);\n }\n getBoundingBox(): BoundingRect {\n let minx: number = this.refPoint.x;\n let maxx: number = this.refPoint.x;\n let miny: number = this.refPoint.y;\n let maxy: number = this.refPoint.y;\n for (const p of this._vertices) {\n if (p.x < minx) minx = p.x;\n if (p.x > maxx) maxx = p.x;\n if (p.y < miny) miny = p.y;\n if (p.y > maxy) maxy = p.y;\n }\n return new BoundingRect(new GlobalPoint(minx, miny), maxx - minx, maxy - miny);\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IS_DM),expression:\"IS_DM\"}]},[_vm._v(\"Mode\")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.IS_DM),expression:\"IS_DM\"}],staticClass:\"selectgroup\"},_vm._l((_vm.modes),function(mode){return _c('div',{key:mode,staticClass:\"option\",class:{'option-selected': _vm.modeSelect === mode},on:{\"click\":function($event){_vm.modeSelect = mode}}},[_vm._v(_vm._s(mode))])}),0),_c('div',[_vm._v(\"Shape\")]),_c('div',{staticClass:\"selectgroup\"},_vm._l((_vm.shapes),function(shape){return _c('div',{key:shape,staticClass:\"option\",class:{'option-selected': _vm.shapeSelect === shape},on:{\"click\":function($event){_vm.shapeSelect = shape}}},[_c('i',{staticClass:\"fas\",class:'fa-' + shape})])}),0),_c('div',[_vm._v(\"Colours\")]),_c('div',{staticClass:\"selectgroup\"},[_c('color-picker',{staticClass:\"option\",attrs:{\"color\":_vm.fillColour},on:{\"update:color\":function($event){_vm.fillColour=$event}}}),_c('color-picker',{staticClass:\"option\",attrs:{\"color\":_vm.borderColour},on:{\"update:color\":function($event){_vm.borderColour=$event}}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.shapeSelect === 'paint-brush'),expression:\"shapeSelect === 'paint-brush'\"}]},[_vm._v(\"Brush size\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.brushSize),expression:\"brushSize\"},{name:\"show\",rawName:\"v-show\",value:(_vm.shapeSelect === 'paint-brush'),expression:\"shapeSelect === 'paint-brush'\"}],staticStyle:{\"max-width\":\"100px\"},attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.brushSize)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.brushSize=$event.target.value}}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draw.vue?vue&type=template&id=639cd890&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./game.vue?vue&type=style&index=1&id=3d0578ba&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selected)?_c('div',{staticClass:\"tool-detail\",style:({'--detailRight': _vm.detailRight, '--detailArrow': _vm.detailArrow})},[_c('div',{attrs:{\"id\":\"accordion-container\"}},_vm._l((_vm.categories),function(category){return _c('accordion',{key:category,attrs:{\"title\":category === '' ? 'no category' : category,\"showArrow\":false,\"items\":_vm.labels[category],\"initialValues\":_vm.initalValues[category]},on:{\"selectionupdate\":_vm.updateSelection}})}),1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter.vue?vue&type=template&id=dca395d6&scoped=true&\"","import { render, staticRenderFns } from \"./manager.vue?vue&type=template&id=5b0def98&\"\nimport script from \"./manager.vue?vue&type=script&lang=ts&\"\nexport * from \"./manager.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./manager.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./tool.vue?vue&type=template&id=1e034b42&\"\nimport script from \"./tool.vue?vue&type=script&lang=ts&\"\nexport * from \"./tool.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./tool.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=style&index=0&id=07fc8ff2&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./initiative.vue?vue&type=style&index=0&id=07fc8ff2&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"visible\":_vm.visible},on:{\"close\":_vm.close},scopedSlots:_vm._u([{key:\"header\",fn:function(m){return _c('div',{staticClass:\"modal-header\",attrs:{\"draggable\":\"true\"},on:{\"dragstart\":m.dragStart,\"dragend\":m.dragEnd}},[_vm._v(_vm._s(_vm.title))])}}])},[_c('div',{staticClass:\"modal-body\"},[_vm._v(\"\\n \"+_vm._s(_vm.question)+\"\\n \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.answer),expression:\"answer\"}],ref:\"answer\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.answer)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.answer=$event.target.value}}})]),_c('div',{staticClass:\"modal-footer\"},[_c('button',{on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prompt.vue?vue&type=template&id=0602c2e6&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport draggable from \"vuedraggable\";\nVue.component(\"draggable\", draggable);\n\nimport Modal from \"@/core/components/modals/modal.vue\";\n\nimport { uuidv4 } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { InitiativeData, InitiativeEffect } from \"@/game/comm/types/general\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { gameManager } from '../manager';\n\n@Component({\n components: {\n Modal,\n draggable,\n },\n})\nexport default class Initiative extends Vue {\n visible = false;\n data: InitiativeData[] = [];\n currentActor: string | null = null;\n roundCounter = 0;\n visionLock = false;\n cameraLock = false;\n _activeTokens: string[] = [];\n\n mounted() {\n EventBus.$on(\"Initiative.Clear\", this.clear);\n EventBus.$on(\"Initiative.Remove\", (data: string) => this.removeInitiative(data));\n EventBus.$on(\"Initiative.Show\", () => (this.visible = true));\n\n socket.on(\"Initiative.Set\", (data: InitiativeData[]) => {\n this.data = data;\n });\n socket.on(\"Initiative.Turn.Set\", (data: string) => this.setTurn(data));\n socket.on(\"Initiative.Turn.Update\", (data: string) => this.updateTurn(data, false));\n socket.on(\"Initiative.Round.Update\", (data: number) => this.setRound(data, false));\n socket.on(\"Initiative.Effect.New\", (data: { actor: string; effect: InitiativeEffect }) => {\n const actor = this.getActor(data.actor);\n if (actor === undefined) return;\n this.createEffect(actor, data.effect, false);\n });\n socket.on(\"Initiative.Effect.Update\", (data: { actor: string; effect: InitiativeEffect }) =>\n this.updateEffect(data.actor, data.effect, false),\n );\n }\n\n beforeDestroy() {\n EventBus.$off(\"Initiative.Clear\");\n EventBus.$off(\"Initiative.Remove\");\n EventBus.$off(\"Initiative.Show\");\n }\n\n // Utilities\n clear() {\n this.data = [];\n this.currentActor = null;\n }\n getActor(actorId: string) {\n return this.data.find(a => a.uuid === actorId);\n }\n contains(uuid: string) {\n return this.data.some(d => d.uuid === uuid);\n }\n owns(actor: InitiativeData): boolean {\n if (gameStore.IS_DM) return true;\n const shape = layerManager.UUIDMap.get(actor.uuid);\n // Shapes that are unknown to this client are hidden from this client but owned by other clients\n if (shape === undefined) return false;\n return shape.owners.includes(gameStore.username);\n }\n getDefaultEffect() {\n return { uuid: uuidv4(), name: \"New Effect\", turns: 10 };\n }\n fakeSetData(dataTransfer: DataTransfer) {\n dataTransfer.setData(\"Hack\", \"\");\n }\n syncInitiative(data: InitiativeData | { uuid: string }) {\n socket.emit(\"Initiative.Update\", data);\n }\n // Events\n addInitiative(data: InitiativeData) {\n const d = this.data.findIndex(a => a.uuid === data.uuid);\n if (d >= 0) return;\n if (data.initiative === undefined) data.initiative = 0;\n this.syncInitiative(data);\n }\n removeInitiative(uuid: string) {\n const d = this.data.findIndex(a => a.uuid === uuid);\n if (d < 0 || this.data[d].group) return;\n this.syncInitiative({ uuid });\n // Remove highlight\n const shape = layerManager.UUIDMap.get(uuid);\n if (shape === undefined) return;\n if (shape.showHighlight) {\n shape.showHighlight = false;\n layerManager.getLayer(shape.layer)!.invalidate(true);\n }\n }\n updateOrder() {\n if (!gameStore.IS_DM) return;\n socket.emit(\"Initiative.Set\", this.data.map(d => d.uuid));\n }\n updateTurn(actorId: string | null, sync: boolean) {\n if (!gameStore.IS_DM && sync) return;\n this.currentActor = actorId;\n const actor = this.data.find(a => a.uuid === actorId);\n if (actor === undefined) return;\n if (actor.effects) {\n for (let e = actor.effects.length - 1; e >= 0; e--) {\n if (actor.effects[e].turns <= 0) actor.effects.splice(e, 1);\n else actor.effects[e].turns--;\n }\n }\n if (this.visionLock) {\n if (actorId !== null && gameStore.ownedtokens.includes(actorId)) gameStore.setActiveTokens([actorId]);\n else gameStore.setActiveTokens([]);\n }\n if (this.cameraLock) {\n if (actorId !== null) {\n const shape = layerManager.UUIDMap.get(actorId);\n if (shape !== undefined && shape.ownedBy()) {\n gameManager.setCenterPosition(shape.center());\n }\n }\n }\n if (sync) socket.emit(\"Initiative.Turn.Update\", actorId);\n }\n setRound(round: number, sync: boolean) {\n if (!gameStore.IS_DM && sync) return;\n this.roundCounter = round;\n if (sync) socket.emit(\"Initiative.Round.Update\", round);\n }\n setTurn(actorId: string | null) {\n this.currentActor = actorId;\n }\n nextTurn() {\n if (!gameStore.IS_DM) return;\n const order = this.data;\n const next = order[(order.findIndex(a => a.uuid === this.currentActor) + 1) % order.length];\n if (this.data[0].uuid === next.uuid) this.setRound(this.roundCounter + 1, true);\n this.updateTurn(next.uuid, true);\n }\n toggleHighlight(actor: InitiativeData, show: boolean) {\n const shape = layerManager.UUIDMap.get(actor.uuid);\n if (shape === undefined) return;\n shape.showHighlight = show;\n layerManager.getLayer(shape.layer)!.invalidate(true);\n }\n toggleOption(actor: InitiativeData, option: \"visible\" | \"group\") {\n if (!this.owns(actor)) return;\n actor[option] = !actor[option];\n this.syncInitiative(actor);\n }\n createEffect(actor: InitiativeData, effect: InitiativeEffect, sync: boolean) {\n if (!this.owns(actor)) return;\n actor.effects.push(effect);\n if (sync) socket.emit(\"Initiative.Effect.New\", { actor: actor.uuid, effect });\n }\n syncEffect(actor: InitiativeData, effect: InitiativeEffect) {\n if (!this.owns(actor)) return;\n socket.emit(\"Initiative.Effect.Update\", { actor: actor.uuid, effect });\n }\n updateEffect(actorId: string, effect: InitiativeEffect, sync: boolean) {\n const actor = this.data.find(a => a.uuid === actorId);\n if (actor === undefined) return;\n const effectIndex = actor.effects.findIndex(e => e.uuid === effect.uuid);\n if (effectIndex === undefined) return;\n actor.effects[effectIndex] = effect;\n if (sync) this.syncEffect(actor, effect);\n else this.$forceUpdate();\n }\n toggleVisionLock() {\n this.visionLock = !this.visionLock;\n if (this.visionLock) {\n this._activeTokens = [...gameStore._activeTokens];\n if (this.currentActor !== null && gameStore.ownedtokens.includes(this.currentActor)) gameStore.setActiveTokens([this.currentActor]);\n } else {\n gameStore.setActiveTokens(this._activeTokens);\n }\n }\n}\n","import { render, staticRenderFns } from \"./selection_info.vue?vue&type=template&id=674cf937&scoped=true&\"\nimport script from \"./selection_info.vue?vue&type=script&lang=ts&\"\nexport * from \"./selection_info.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./selection_info.vue?vue&type=style&index=0&id=674cf937&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"674cf937\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\n\nimport { Action, getModule, Module, Mutation, VuexModule } from \"vuex-module-decorators\";\n\nimport { AssetList } from \"@/core/comm/types\";\nimport { socket } from \"@/game/api/socket\";\nimport { sendClientOptions } from \"@/game/api/utils\";\nimport { Note } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { g2l, l2g } from \"@/game/units\";\nimport { zoomValue } from \"@/game/utils\";\nimport { BoundingVolume } from \"@/game/visibility/bvh/bvh\";\nimport { triangulate } from \"@/game/visibility/te/pa\";\nimport { rootStore } from \"@/store\";\n\nexport interface GameState {\n boardInitialized: boolean;\n}\n\n@Module({ dynamic: true, store: rootStore, name: \"game\", namespaced: true })\nclass GameStore extends VuexModule implements GameState {\n // This is a limited view of selectable layers that is used to generate the layer selection UI and ability to switch layers\n // See the layerManager for proper layer management tools\n layers: string[] = [];\n selectedLayerIndex = -1;\n boardInitialized = false;\n\n locations: string[] = [];\n\n assets: AssetList = {};\n\n notes: Note[] = [];\n\n IS_DM = false;\n FAKE_PLAYER = false;\n isLocked = false;\n gridSize = 50;\n username = \"\";\n roomName = \"\";\n roomCreator = \"\";\n invitationCode = \"\";\n players: { id: number; name: string; }[] = [];\n\n gridColour = \"rgba(0, 0, 0, 1)\";\n fowColour = \"rgba(0, 0, 0, 1)\";\n rulerColour = \"rgba(255, 0, 0, 1)\";\n panX = 0;\n panY = 0;\n\n zoomDisplay = 0.5;\n // zoomFactor = 1;\n\n unitSize = 5;\n useGrid = true;\n fullFOW = false;\n fowOpacity = 0.3;\n fowLOS = false;\n locationName = \"\";\n\n visionSources: { shape: string; aura: string }[] = [];\n visionBlockers: string[] = [];\n annotations: string[] = [];\n movementblockers: string[] = [];\n ownedtokens: string[] = [];\n _activeTokens: string[] = [];\n\n BV = Object.freeze(new BoundingVolume([]));\n\n visionMode: \"bvh\" | \"triangle\" = \"bvh\";\n drawTEContour = false;\n visionRangeMin = 1640;\n visionRangeMax = 3281;\n\n clipboard: ServerShape[] = [];\n\n // Maps are not yet supported in Vue untill 3.X, so for now we're using a plain old object\n labels: { [uuid: string]: Label } = {};\n\n filterNoLabel = false;\n labelFilters: string[] = [];\n\n showUI = true;\n\n get selectedLayer() {\n return this.layers[this.selectedLayerIndex];\n }\n\n get zoomFactor() {\n return zoomValue(this.zoomDisplay);\n }\n\n get activeTokens() {\n if (this._activeTokens.length === 0) return this.ownedtokens;\n return this._activeTokens;\n }\n\n @Mutation\n setFakePlayer(value: boolean) {\n this.FAKE_PLAYER = value;\n this.IS_DM = !value;\n layerManager.invalidate();\n }\n\n @Mutation\n setZoomDisplay(zoom: number) {\n if (zoom === this.zoomDisplay) return;\n if (zoom < 0) zoom = 0;\n if (zoom > 1) zoom = 1;\n this.zoomDisplay = zoom;\n layerManager.invalidate();\n }\n\n @Mutation\n setVisionMode(data: { mode: \"bvh\" | \"triangle\"; sync: boolean }) {\n this.visionMode = data.mode;\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_mode: data.mode });\n }\n\n @Mutation\n setBoardInitialized(boardInitialized: boolean) {\n this.boardInitialized = boardInitialized;\n }\n\n @Mutation\n toggleUnlabeledFilter() {\n this.filterNoLabel = !this.filterNoLabel;\n }\n\n @Mutation\n addLabel(label: Label) {\n Vue.set(this.labels, label.uuid, label);\n }\n\n @Mutation\n setLabelFilters(filters: string[]) {\n this.labelFilters = filters;\n }\n\n @Mutation\n setLabelVisibility(data: { user: string; uuid: string; visible: boolean }) {\n if (!(data.uuid in this.labels)) return;\n this.labels[data.uuid].visible = data.visible;\n }\n\n @Mutation\n deleteLabel(data: { uuid: string; user: string }) {\n if (!(data.uuid in this.labels)) return;\n const label = this.labels[data.uuid];\n const updatedLayers: Set = new Set();\n for (const shape of layerManager.UUIDMap.values()) {\n const i = shape.labels.indexOf(label);\n if (i >= 0) {\n shape.labels.splice(i, 1);\n updatedLayers.add(shape.layer);\n }\n }\n for (const layer of updatedLayers) layerManager.getLayer(layer)!.invalidate(false);\n Vue.delete(this.labels, data.uuid);\n }\n\n @Mutation\n setDM(isDM: boolean) {\n this.IS_DM = isDM;\n }\n\n @Mutation\n setUsername(username: string) {\n this.username = username;\n }\n\n @Mutation\n setRoomName(name: string) {\n this.roomName = name;\n }\n\n @Mutation\n setRoomCreator(name: string) {\n this.roomCreator = name;\n }\n\n @Mutation\n setInvitationCode(code: string) {\n this.invitationCode = code;\n }\n\n @Mutation\n addLayer(name: string) {\n this.layers.push(name);\n if (this.selectedLayerIndex === -1) this.selectedLayerIndex = this.layers.indexOf(name);\n }\n\n @Mutation\n selectLayer(data: { name: string; sync: boolean }) {\n const index = this.layers.indexOf(data.name);\n if (index >= 0) this.selectedLayerIndex = index;\n if (data.sync) socket.emit(\"Client.ActiveLayer.Set\", data.name);\n }\n\n @Mutation\n newNote(data: { note: Note; sync: boolean }) {\n this.notes.push(data.note);\n if (data.sync) socket.emit(\"Note.New\", data.note);\n }\n\n @Mutation\n setAssets(assets: AssetList) {\n this.assets = assets;\n }\n\n @Mutation\n setLocations(locations: string[]) {\n this.locations = locations;\n }\n\n @Mutation\n resetLayerInfo() {\n this.layers = [];\n this.selectedLayerIndex = -1;\n }\n\n @Mutation\n recalculateVision(partial = false) {\n if (this.boardInitialized) {\n if (this.visionMode === \"triangle\") triangulate(\"vision\", partial);\n else this.BV = Object.freeze(new BoundingVolume(this.visionBlockers));\n }\n }\n\n @Mutation\n recalculateMovement(partial = false) {\n if (this.boardInitialized && this.visionMode === \"triangle\") triangulate(\"movement\", partial);\n }\n\n @Mutation\n updateZoom(data: { newZoomDisplay: number; zoomLocation: GlobalPoint }) {\n if (data.newZoomDisplay === this.zoomDisplay) return;\n if (data.newZoomDisplay < 0) data.newZoomDisplay = 0;\n if (data.newZoomDisplay > 1) data.newZoomDisplay = 1;\n const oldLoc = g2l(data.zoomLocation);\n this.zoomDisplay = data.newZoomDisplay;\n const newLoc = l2g(oldLoc);\n // Change the pan settings to keep the zoomLocation in the same exact location before and after the zoom.\n const diff = newLoc.subtract(data.zoomLocation);\n this.panX += diff.x;\n this.panY += diff.y;\n layerManager.invalidate();\n sendClientOptions();\n }\n\n @Mutation\n setGridColour(data: { colour: string; sync: boolean }) {\n this.gridColour = data.colour;\n layerManager.getGridLayer()!.drawGrid();\n if (data.sync) socket.emit(\"Client.Options.Set\", { gridColour: data.colour });\n }\n\n @Mutation\n setFOWColour(data: { colour: string; sync: boolean }) {\n this.fowColour = data.colour;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Client.Options.Set\", { fowColour: data.colour });\n }\n\n @Mutation\n setRulerColour(data: { colour: string; sync: boolean }) {\n this.rulerColour = data.colour;\n if (data.sync) socket.emit(\"Client.Options.Set\", { rulerColour: data.colour });\n }\n\n @Mutation\n setPanX(x: number) {\n this.panX = x;\n }\n\n @Mutation\n setPanY(y: number) {\n this.panY = y;\n }\n\n @Mutation\n increasePanX(increase: number) {\n this.panX += increase;\n }\n\n @Mutation\n increasePanY(increase: number) {\n this.panY += increase;\n }\n\n @Mutation\n setUnitSize(data: { unitSize: number; sync: boolean }) {\n if (this.unitSize !== data.unitSize && data.unitSize > 0 && data.unitSize < Infinity) {\n this.unitSize = data.unitSize;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Location.Options.Set\", { unit_size: data.unitSize });\n }\n }\n\n @Mutation\n setUseGrid(data: { useGrid: boolean; sync: boolean }) {\n if (this.useGrid !== data.useGrid) {\n this.useGrid = data.useGrid;\n const gridLayer = layerManager.getGridLayer()!;\n if (data.useGrid) gridLayer.canvas.style.display = \"block\";\n else gridLayer.canvas.style.display = \"none\";\n if (data.sync) socket.emit(\"Location.Options.Set\", { use_grid: data.useGrid });\n }\n }\n\n @Mutation\n setGridSize(data: { gridSize: number; sync: boolean }): void {\n if (this.gridSize !== data.gridSize && data.gridSize > 0) {\n this.gridSize = data.gridSize;\n const gridLayer = layerManager.getGridLayer();\n if (gridLayer !== undefined) gridLayer.drawGrid();\n if (data.sync) socket.emit(\"Gridsize.Set\", data.gridSize);\n }\n }\n\n @Mutation\n setVisionRangeMin(data: { value: number; sync: boolean }): void {\n this.visionRangeMin = data.value;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_min_range: data.value });\n }\n\n @Mutation\n setVisionRangeMax(data: { value: number; sync: boolean }): void {\n this.visionRangeMax = Math.max(data.value, this.visionRangeMin);\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { vision_max_range: this.visionRangeMax });\n }\n\n @Mutation\n setFullFOW(data: { fullFOW: boolean; sync: boolean }) {\n if (this.fullFOW !== data.fullFOW) {\n this.fullFOW = data.fullFOW;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { full_fow: data.fullFOW });\n }\n }\n\n @Mutation\n setFOWOpacity(data: { fowOpacity: number; sync: boolean }) {\n this.fowOpacity = data.fowOpacity;\n layerManager.invalidateLight();\n if (data.sync) socket.emit(\"Location.Options.Set\", { fow_opacity: data.fowOpacity });\n }\n\n @Mutation\n setLineOfSight(data: { fowLOS: boolean; sync: boolean }) {\n if (this.fowLOS !== data.fowLOS) {\n this.fowLOS = data.fowLOS;\n layerManager.invalidate();\n if (data.sync) socket.emit(\"Location.Options.Set\", { fow_los: data.fowLOS });\n }\n }\n\n @Mutation\n setLocationName(name: string) {\n this.locationName = name;\n }\n\n @Mutation\n updateNote(data: { note: Note; sync: boolean }) {\n const actualNote = this.notes.find(n => n.uuid === data.note.uuid);\n if (actualNote === undefined) return;\n actualNote.title = data.note.title;\n actualNote.text = data.note.text;\n if (data.sync) socket.emit(\"Note.Update\", actualNote);\n }\n\n @Mutation\n removeNote(data: { note: Note; sync: boolean }) {\n this.notes = this.notes.filter(n => n.uuid !== data.note.uuid);\n if (data.sync) socket.emit(\"Note.Remove\", data.note.uuid);\n }\n\n @Mutation\n toggleUI() {\n this.showUI = !this.showUI;\n }\n\n @Mutation\n setClipboard(clipboard: ServerShape[]) {\n this.clipboard = clipboard;\n }\n\n @Mutation\n setActiveTokens(tokens: string[]) {\n this._activeTokens = tokens;\n layerManager.invalidateLight();\n }\n\n @Mutation\n addActiveToken(token: string) {\n this._activeTokens.push(token);\n layerManager.invalidateLight();\n }\n\n @Mutation\n removeActiveToken(token: string) {\n if (this._activeTokens.length === 0) {\n this._activeTokens = [...this.ownedtokens];\n }\n this._activeTokens.splice(this._activeTokens.indexOf(token), 1);\n layerManager.invalidateLight();\n }\n\n @Mutation\n setPlayers(players: { id: number; name: string; }[]) {\n this.players = players;\n }\n\n @Mutation\n addPlayer(player: { id: number; name: string }) {\n this.players.push(player);\n }\n\n @Mutation\n kickPlayer(playerId: number) {\n this.players = this.players.filter(p => p.id !== playerId);\n }\n\n @Mutation\n setIsLocked(data: {isLocked: boolean, sync: boolean}) {\n this.isLocked = data.isLocked;\n if (data.sync) {\n socket.emit(\"Room.Info.Set.Locked\", this.isLocked);\n }\n }\n\n @Action\n clear() {\n (this.context.state).visionSources = [];\n (this.context.state).visionBlockers = [];\n (this.context.state).ownedtokens = [];\n (this.context.state).annotations = [];\n (this.context.state).movementblockers = [];\n (this.context.state).notes = [];\n this.context.commit(\"recalculateVision\");\n this.context.commit(\"recalculateMovement\");\n }\n}\n\nexport const gameStore = getModule(GameStore);\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./confirm.vue?vue&type=script&lang=ts&\"","import { ServerAura } from \"@/game/comm/types/shapes\";\n\nexport const aurasFromServer = (auras: ServerAura[]): Aura[] => {\n const result = [];\n for (const aura of auras) {\n result.push({\n uuid: aura.uuid,\n visionSource: aura.vision_source,\n visible: aura.visible,\n name: aura.name,\n value: aura.value,\n dim: aura.dim,\n colour: aura.colour,\n });\n }\n return result;\n};\n\nexport const aurasToServer = (auras: Aura[]): ServerAura[] => {\n const result = [];\n for (const aura of auras) {\n result.push({\n uuid: aura.uuid,\n vision_source: aura.visionSource,\n visible: aura.visible,\n name: aura.name,\n value: aura.value,\n dim: aura.dim,\n colour: aura.colour,\n });\n }\n return result;\n};\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/ts-loader/index.js??ref--12-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./contextMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./note.vue?vue&type=template&id=7a3669fd&scoped=true&\"\nimport script from \"./note.vue?vue&type=script&lang=ts&\"\nexport * from \"./note.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./note.vue?vue&type=style&index=0&id=7a3669fd&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a3669fd\",\n null\n \n)\n\nexport default component.exports","import { render, staticRenderFns } from \"./initiative.vue?vue&type=template&id=07fc8ff2&scoped=true&\"\nimport script from \"./initiative.vue?vue&type=script&lang=ts&\"\nexport * from \"./initiative.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./initiative.vue?vue&type=style&index=0&id=07fc8ff2&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07fc8ff2\",\n null\n \n)\n\nexport default component.exports","import { ServerLayer } from \"@/game/comm/types/general\";\nimport { FOWLayer } from \"@/game/layers/fow\";\nimport { FOWPlayersLayer } from \"@/game/layers/fowplayers\";\nimport { GridLayer } from \"@/game/layers/grid\";\nimport { Layer } from \"@/game/layers/layer\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { gameStore } from \"@/game/store\";\n\nexport function createLayer(layerInfo: ServerLayer) {\n // Create canvas element\n const canvas = document.createElement(\"canvas\");\n canvas.style.zIndex = layerManager.layers.length.toString();\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n\n // Create the Layer instance\n let layer: Layer;\n if (layerInfo.type_ === \"grid\") layer = new GridLayer(canvas, layerInfo.name);\n else if (layerInfo.type_ === \"fow\") layer = new FOWLayer(canvas, layerInfo.name);\n else if (layerInfo.type_ === \"fow-players\") layer = new FOWPlayersLayer(canvas, layerInfo.name);\n else layer = new Layer(canvas, layerInfo.name);\n layer.selectable = layerInfo.selectable;\n layer.playerEditable = layerInfo.player_editable;\n layerManager.addLayer(layer);\n\n // Add the element to the DOM\n const layers = document.getElementById(\"layers\");\n if (layers === null) {\n console.warn(\"Layers div is missing, this will prevent the main game board from loading!\");\n return;\n }\n if (layerInfo.name !== \"fow-players\") layers.appendChild(canvas);\n\n if (layerInfo.type_ === \"grid\" && layerInfo.size) gameStore.setGridSize({ gridSize: layerInfo.size, sync: false });\n // Load layer shapes\n layer.setShapes(layerInfo.shapes);\n}\n","import { render, staticRenderFns } from \"./labels.vue?vue&type=template&id=e477c214&scoped=true&\"\nimport script from \"./labels.vue?vue&type=script&lang=ts&\"\nexport * from \"./labels.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./labels.vue?vue&type=style&index=0&id=e477c214&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e477c214\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/ts-loader/index.js??ref--12-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./edit_dialog.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{attrs:{\"id\":\"toolselect\"}},[_c('ul',_vm._l((_vm.visibleTools),function(tool){return _c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.toolVisible(tool)),expression:\"toolVisible(tool)\"}],key:tool,ref:tool + '-selector',refInFor:true,class:{'tool-selected': _vm.currentTool === tool},on:{\"mousedown\":function($event){_vm.currentTool = tool}}},[_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(_vm._s(tool))])])}),0)]),_c('div',[[_c('select-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Select'),expression:\"currentTool === 'Select'\"}],ref:\"selectTool\"}),_c('pan-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Pan'),expression:\"currentTool === 'Pan'\"}]}),_c('keep-alive',[_c('draw-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Draw'),expression:\"currentTool === 'Draw'\"}]})],1),_c('ruler-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Ruler'),expression:\"currentTool === 'Ruler'\"}]}),_c('map-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Map'),expression:\"currentTool === 'Map'\"}]}),_c('filter-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Filter'),expression:\"currentTool === 'Filter'\"}]}),_c('vision-tool',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentTool === 'Vision'),expression:\"currentTool === 'Vision'\"}]}),_c('shape-menu',{ref:\"shapecontext\"}),_c('createtoken-dialog',{ref:\"createtokendialog\"})]],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./tools.vue?vue&type=template&id=b6e1f51c&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{on:{\"focusin\":_vm.focusin,\"focusout\":_vm.focusout,\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('fieldset',[_c('legend',{staticClass:\"legend\"},[_vm._v(\"PlanarAlly\")]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],attrs:{\"type\":\"text\",\"name\":\"username\",\"placeholder\":\"Username\",\"autocomplete\":\"username\",\"required\":\"\"},domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._m(0)]),_c('div',{staticClass:\"input\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"type\":\"password\",\"name\":\"password\",\"placeholder\":\"Password\",\"autocomplete\":\"current-password\",\"required\":\"\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._m(1)]),_c('div',{staticStyle:{\"display\":\"flex\"}},[_c('button',{staticStyle:{\"visibility\":\"hidden\",\"display\":\"none\"},attrs:{\"type\":\"submit\",\"name\":\"login\"}}),_c('button',{staticClass:\"submit\",attrs:{\"type\":\"button\",\"name\":\"register\",\"title\":\"Register\"},on:{\"click\":_vm.register}},[_c('i',{staticClass:\"fas fa-plus\"})]),_vm._m(2)])]),(_vm.error)?_c('div',{staticClass:\"feedback\"},[_c('p',{staticClass:\"error\"},[_c('strong',[_vm._v(\"Error:\")]),_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-user-circle\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('i',{staticClass:\"fas fa-lock\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"submit\",attrs:{\"type\":\"submit\",\"name\":\"login\",\"title\":\"Login\"}},[_c('i',{staticClass:\"fas fa-arrow-right\"})])}]\n\nexport { render, staticRenderFns }","export * from \"-!cache-loader?{\\\"cacheDirectory\\\":\\\"node_modules/.cache/vue-loader\\\",\\\"cacheIdentifier\\\":\\\"1cb5efca-vue-loader-template\\\"}!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./login.vue?vue&type=template&id=bc30fc14&scoped=true&\"","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Prompt from \"@/core/components/modals/prompt.vue\";\nimport EditDialog from \"@/game/ui/selection/edit_dialog.vue\";\n\nimport { getRef } from \"@/core/utils\";\nimport { socket } from \"@/game/api/socket\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { Shape } from \"@/game/shapes/shape\";\n\n@Component({\n components: {\n \"edit-dialog\": EditDialog,\n },\n})\nexport default class SelectionInfo extends Vue {\n shape: Shape | null = null;\n\n mounted() {\n EventBus.$on(\"SelectionInfo.Shape.Set\", (shape: Shape | null) => {\n this.shape = shape;\n });\n }\n\n beforeDestroy() {\n EventBus.$off(\"SelectionInfo.Shape.Set\");\n }\n\n openEditDialog() {\n (this.$refs.editDialog).visible = true;\n }\n changeValue(object: Tracker | Aura, redraw: boolean) {\n if (this.shape === null) return;\n getRef(\"prompt\")\n .prompt(`New ${object.name} value:`, `Updating ${object.name}`)\n .then(\n (value: string) => {\n if (this.shape === null) return;\n const ogValue = object.value;\n if (value[0] === \"+\" || value[0] === \"-\") object.value += parseInt(value, 10);\n else object.value = parseInt(value, 10);\n if (isNaN(object.value)) object.value = ogValue;\n socket.emit(\"Shape.Update\", { shape: this.shape.asDict(), redraw, temporary: false });\n if (redraw) layerManager.invalidate();\n },\n () => {},\n );\n }\n}\n","import { AssetList } from \"@/core/comm/types\";\nimport { socket } from \"@/game/api/socket\";\nimport { BoardInfo, Note, ServerClient, ServerLocation } from \"@/game/comm/types/general\";\nimport { ServerShape } from \"@/game/comm/types/shapes\";\nimport { EventBus } from \"@/game/event-bus\";\nimport { GlobalPoint } from \"@/game/geom\";\nimport { layerManager } from \"@/game/layers/manager\";\nimport { createLayer } from \"@/game/layers/utils\";\nimport { gameManager } from \"@/game/manager\";\nimport { gameStore } from \"@/game/store\";\nimport { router } from \"@/router\";\nimport { zoomDisplay } from \"../utils\";\n\nsocket.on(\"connect\", () => {\n console.log(\"Connected\");\n});\nsocket.on(\"disconnect\", () => {\n console.log(\"Disconnected\");\n});\nsocket.on(\"connect_error\", (error: any) => {\n console.error(\"Could not connect to game session.\");\n router.push(\"/dashboard\");\n});\nsocket.on(\"error\", (error: any) => {\n console.error(\"Game session does not exist.\");\n router.push(\"/dashboard\");\n});\nsocket.on(\"redirect\", (destination: string) => {\n console.log(\"redirecting\");\n router.push(destination);\n});\nsocket.on(\"Room.Info.Set\", (data: { name: string; creator: string; invitationCode: string, isLocked: boolean, players: { id: number; name: string }[] }) => {\n gameStore.setRoomName(data.name);\n gameStore.setRoomCreator(data.creator);\n gameStore.setInvitationCode(data.invitationCode);\n gameStore.setIsLocked({isLocked: data.isLocked, sync: false});\n gameStore.setPlayers(data.players);\n});\nsocket.on(\"Room.Info.InvitationCode.Set\", (invitationCode: string) => {\n gameStore.setInvitationCode(invitationCode);\n EventBus.$emit(\"DmSettings.RefreshedInviteCode\");\n});\nsocket.on(\"Room.Info.Players.Add\", (data: {id: number, name: string}) => {\n gameStore.addPlayer(data);\n});\nsocket.on(\"Username.Set\", (username: string) => {\n gameStore.setUsername(username);\n gameStore.setDM(username === window.location.pathname.split(\"/\")[2]);\n});\nsocket.on(\"Client.Options.Set\", (options: ServerClient) => {\n gameStore.setGridColour({ colour: options.grid_colour, sync: false });\n gameStore.setFOWColour({ colour: options.fow_colour, sync: false });\n gameStore.setRulerColour({ colour: options.ruler_colour, sync: false });\n gameStore.setPanX(options.pan_x);\n gameStore.setPanY(options.pan_y);\n gameStore.setZoomDisplay(zoomDisplay(options.zoom_factor));\n // gameStore.setZoomDisplay(0.5);\n if (options.active_layer) layerManager.selectLayer(options.active_layer, false);\n if (layerManager.getGridLayer() !== undefined) layerManager.getGridLayer()!.invalidate();\n});\nsocket.on(\"Location.Set\", (data: Partial) => {\n if (data.name !== undefined) gameStore.setLocationName(data.name);\n if (data.unit_size !== undefined) gameStore.setUnitSize({ unitSize: data.unit_size, sync: false });\n if (data.use_grid !== undefined) gameStore.setUseGrid({ useGrid: data.use_grid, sync: false });\n if (data.full_fow !== undefined) gameStore.setFullFOW({ fullFOW: data.full_fow, sync: false });\n if (data.fow_opacity !== undefined) gameStore.setFOWOpacity({ fowOpacity: data.fow_opacity, sync: false });\n if (data.fow_los !== undefined) gameStore.setLineOfSight({ fowLOS: data.fow_los, sync: false });\n if (data.vision_min_range !== undefined) gameStore.setVisionRangeMin({ value: data.vision_min_range, sync: false });\n if (data.vision_max_range !== undefined) gameStore.setVisionRangeMax({ value: data.vision_max_range, sync: false });\n if (data.vision_mode !== undefined) {\n gameStore.setVisionMode({ mode: data.vision_mode, sync: false });\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n }\n});\nsocket.on(\"Position.Set\", (data: { x: number; y: number }) => {\n gameManager.setCenterPosition(new GlobalPoint(data.x, data.y));\n});\nsocket.on(\"Notes.Set\", (notes: Note[]) => {\n for (const note of notes) gameStore.newNote({ note, sync: false });\n});\nsocket.on(\"Asset.List.Set\", (assets: AssetList) => {\n gameStore.setAssets(assets);\n});\nsocket.on(\"Board.Set\", (locationInfo: BoardInfo) => {\n gameStore.clear();\n gameStore.setLocations(locationInfo.locations);\n document.getElementById(\"layers\")!.innerHTML = \"\";\n gameStore.resetLayerInfo();\n layerManager.reset();\n for (const layer of locationInfo.layers) createLayer(layer);\n // Force the correct opacity render on other layers.\n layerManager.selectLayer(layerManager.getLayer()!.name, false);\n EventBus.$emit(\"Initiative.Clear\");\n gameStore.recalculateVision();\n gameStore.recalculateMovement();\n gameStore.setBoardInitialized(true);\n});\nsocket.on(\"Gridsize.Set\", (gridSize: number) => {\n gameStore.setGridSize({ gridSize, sync: false });\n});\nsocket.on(\"Shape.Add\", (shape: ServerShape) => {\n gameManager.addShape(shape);\n});\nsocket.on(\"Shape.Remove\", (shape: ServerShape) => {\n if (!layerManager.UUIDMap.has(shape.uuid)) {\n console.log(`Attempted to remove an unknown shape`);\n return;\n }\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${shape.layer}`);\n return;\n }\n const layer = layerManager.getLayer(shape.layer)!;\n layer.removeShape(layerManager.UUIDMap.get(shape.uuid)!, false);\n layer.invalidate(false);\n});\nsocket.on(\"Shape.Order.Set\", (data: { shape: ServerShape; index: number }) => {\n if (!layerManager.UUIDMap.has(data.shape.uuid)) {\n console.log(`Attempted to move the shape order of an unknown shape`);\n return;\n }\n if (!layerManager.hasLayer(data.shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${data.shape.layer}`);\n return;\n }\n const shape = layerManager.UUIDMap.get(data.shape.uuid)!;\n const layer = layerManager.getLayer(shape.layer)!;\n layer.moveShapeOrder(shape, data.index, false);\n});\nsocket.on(\"Shape.Layer.Change\", (data: { uuid: string; layer: string }) => {\n const shape = layerManager.UUIDMap.get(data.uuid);\n if (shape === undefined) return;\n shape.moveLayer(data.layer, false);\n});\nsocket.on(\"Shape.Update\", (data: { shape: ServerShape; redraw: boolean; move: boolean, temporary: boolean }) => {\n gameManager.updateShape(data);\n});\nsocket.on(\"Temp.Clear\", (shapes: ServerShape[]) => {\n shapes.forEach(shape => {\n if (!layerManager.UUIDMap.has(shape.uuid)) {\n console.log(\"Attempted to remove an unknown temporary shape\");\n return;\n }\n if (!layerManager.hasLayer(shape.layer)) {\n console.log(`Attempted to remove shape from an unknown layer ${shape.layer}`);\n return;\n }\n const realShape = layerManager.UUIDMap.get(shape.uuid)!;\n layerManager.getLayer(shape.layer)!.removeShape(realShape, false);\n });\n});\nsocket.on(\"Labels.Set\", (labels: Label[]) => {\n for (const label of labels) gameStore.addLabel(label);\n});\nsocket.on(\"Label.Visibility.Set\", (data: { user: string; uuid: string; visible: boolean }) => {\n gameStore.setLabelVisibility(data);\n});\nsocket.on(\"Label.Add\", (data: Label) => {\n gameStore.addLabel(data);\n});\nsocket.on(\"Label.Delete\", (data: { user: string; uuid: string }) => {\n gameStore.deleteLabel(data);\n});\nsocket.on(\"Labels.Filter.Add\", (uuid: string) => {\n gameStore.labelFilters.push(uuid);\n layerManager.invalidate();\n})\nsocket.on(\"Labels.Filter.Remove\", (uuid: string) => {\n const idx = gameStore.labelFilters.indexOf(uuid);\n if (idx >= 0) {\n gameStore.labelFilters.splice(idx, 1);\n layerManager.invalidate();\n }\n})\nsocket.on(\"Labels.Filters.Set\", (filters: string[]) => {\n gameStore.setLabelFilters(filters);\n})\n"],"sourceRoot":""} \ No newline at end of file diff --git a/server/t.planar.sqlite b/server/t.planar.sqlite deleted file mode 100644 index 52b822376..000000000 Binary files a/server/t.planar.sqlite and /dev/null differ diff --git a/server/templates/index.html b/server/templates/index.html index 33344a5bb..78fdbad01 100644 --- a/server/templates/index.html +++ b/server/templates/index.html @@ -1 +1 @@ -PlanarAlly - The companion tool for your planar travels.
    \ No newline at end of file +PlanarAlly - The companion tool for your planar travels.
    \ No newline at end of file