├── .eslintrc ├── .gitignore ├── .npmignore ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── assets ├── banner.jpg ├── instruction.gif └── logo.svg ├── build ├── admin │ ├── components │ │ └── MapPicker │ │ │ ├── MapPickerComponent │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── index.js.map │ │ │ ├── MapPickerIcon │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── index.js.map │ │ │ └── MapPickerInput │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ └── index.js.map │ ├── constants.d.ts │ ├── constants.js │ ├── constants.js.map │ ├── hooks │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── use-plugin-config.d.ts │ │ ├── use-plugin-config.js │ │ └── use-plugin-config.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── reducers │ │ ├── config.d.ts │ │ ├── config.js │ │ ├── config.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ └── index.js.map │ ├── translations │ │ ├── index.d.ts │ │ ├── index.js │ │ └── index.js.map │ └── utils │ │ ├── get-trad.d.ts │ │ ├── get-trad.js │ │ ├── get-trad.js.map │ │ ├── getMessage.d.ts │ │ ├── getMessage.js │ │ ├── getMessage.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── plugin-id.d.ts │ │ ├── plugin-id.js │ │ ├── plugin-id.js.map │ │ ├── plugin-name.d.ts │ │ ├── plugin-name.js │ │ └── plugin-name.js.map ├── server │ ├── config.d.ts │ ├── config.js │ ├── config.js.map │ ├── controllers │ │ ├── google-map-picker.d.ts │ │ ├── google-map-picker.js │ │ ├── google-map-picker.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ └── index.js.map │ ├── helpers │ │ ├── pluginConfig.d.ts │ │ ├── pluginConfig.js │ │ └── pluginConfig.js.map │ ├── index.d.ts │ ├── index.js │ ├── index.js.map │ ├── register.d.ts │ ├── register.js │ ├── register.js.map │ ├── routes │ │ ├── admin-api.d.ts │ │ ├── admin-api.js │ │ ├── admin-api.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ └── index.js.map │ ├── services │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── plugin.d.ts │ │ ├── plugin.js │ │ └── plugin.js.map │ └── utils │ │ ├── get-service.d.ts │ │ ├── get-service.js │ │ ├── get-service.js.map │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── index.js.map │ │ ├── plugin-id.d.ts │ │ ├── plugin-id.js │ │ └── plugin-id.js.map ├── tsconfig.tsbuildinfo └── types │ ├── index.d.ts │ ├── index.js │ └── index.js.map ├── package.json ├── src ├── admin │ ├── components │ │ └── MapPicker │ │ │ ├── MapPickerComponent │ │ │ └── index.tsx │ │ │ ├── MapPickerIcon │ │ │ └── index.tsx │ │ │ └── MapPickerInput │ │ │ └── index.tsx │ ├── constants.ts │ ├── hooks │ │ └── use-plugin-config.ts │ ├── index.tsx │ ├── reducers │ │ ├── config.ts │ │ └── index.ts │ ├── translations │ │ ├── en.json │ │ ├── index.ts │ │ └── ru.json │ └── utils │ │ ├── get-trad.ts │ │ ├── index.ts │ │ ├── plugin-id.ts │ │ └── plugin-name.ts ├── server │ ├── config.ts │ ├── controllers │ │ ├── google-map-picker.ts │ │ └── index.ts │ ├── helpers │ │ └── pluginConfig.ts │ ├── index.ts │ ├── register.ts │ ├── routes │ │ ├── admin-api.ts │ │ └── index.ts │ ├── services │ │ ├── index.ts │ │ └── plugin.ts │ └── utils │ │ ├── get-service.ts │ │ ├── index.ts │ │ └── plugin-id.ts ├── tsconfig.json └── types │ ├── globals.d.ts │ ├── index.ts │ ├── strapi-design-system.d.ts │ ├── strapi-helper-plugin.d.ts │ ├── strapi-icons.d.ts │ ├── strapi-parts.d.ts │ └── strapi-utils.d.ts ├── strapi-admin.js ├── strapi-server.js ├── tsconfig.json ├── tsconfig.tsbuildinfo └── yarn.lock /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "es2021": true, 5 | "jest": true 6 | }, 7 | "extends": ["eslint:recommended", "plugin:react/recommended", "plugin:@typescript-eslint/recommended", "prettier"], 8 | "parser": "@typescript-eslint/parser", 9 | "parserOptions": { 10 | "ecmaFeatures": { 11 | "jsx": true 12 | }, 13 | "ecmaVersion": "latest", 14 | "sourceType": "module" 15 | }, 16 | "plugins": ["react", "@typescript-eslint", "react-hooks", "prettier"], 17 | "rules": { 18 | "react/react-in-jsx-scope": "off", 19 | "camelcase": "error", 20 | "spaced-comment": "error", 21 | "quotes": ["error", "double"], 22 | "no-duplicate-imports": "error" 23 | }, 24 | "settings": { 25 | "import/resolver": { 26 | "typescript": {} 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ############################ 2 | # OS X 3 | ############################ 4 | 5 | .DS_Store 6 | .AppleDouble 7 | .LSOverride 8 | Icon 9 | .Spotlight-V100 10 | .Trashes 11 | ._* 12 | 13 | 14 | ############################ 15 | # Linux 16 | ############################ 17 | 18 | *~ 19 | 20 | 21 | ############################ 22 | # Windows 23 | ############################ 24 | 25 | Thumbs.db 26 | ehthumbs.db 27 | Desktop.ini 28 | $RECYCLE.BIN/ 29 | *.cab 30 | *.msi 31 | *.msm 32 | *.msp 33 | 34 | 35 | ############################ 36 | # Packages 37 | ############################ 38 | 39 | *.7z 40 | *.csv 41 | *.dat 42 | *.dmg 43 | *.gz 44 | *.iso 45 | *.jar 46 | *.rar 47 | *.tar 48 | *.zip 49 | *.com 50 | *.class 51 | *.dll 52 | *.exe 53 | *.o 54 | *.seed 55 | *.so 56 | *.swo 57 | *.swp 58 | *.swn 59 | *.swm 60 | *.out 61 | *.pid 62 | 63 | 64 | 65 | ############################ 66 | # Node.js 67 | ############################ 68 | 69 | node_modules 70 | .node_history 71 | tsconfig.tsbuildinfo -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .eslintrc 2 | .gitignore 3 | .npmignore 4 | .prettierignore 5 | .prettierrc 6 | jest.config.front.js 7 | jest.config.js 8 | strapi-admin.js 9 | strapi-server.js 10 | tsconfig.json 11 | tsconfig.tsbuildinfo 12 | yarn.lock 13 | src 14 | assets -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 4, 4 | "semi": true, 5 | "singleQuote": false, 6 | "printWidth": 120 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023-2023 Yuriy Repin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | Logo - google map picker 3 |
4 |
5 |

Strapi v4 - google map picker

6 |

A simple plugin to add a point to the map, with the @react-google-maps/api 7 | package

8 |
9 | 10 | Logo - google map picker 11 | 12 | --- 13 | 14 | ## 🗿 How to install 15 | 16 | ```javascript 17 | # yarn 18 | yarn add strapi-plugin-google-map-picker 19 | 20 | # npm 21 | npm i strapi-plugin-google-map-picker 22 | ``` 23 | 24 | ## 🔧 Configuration 25 | 26 | #### 1. Add plugin in plugins.js 27 | ```javascript 28 | // config/plugins.js 29 | ... 30 | ... 31 | "google-map-picker": { 32 | config: { 33 | apiKey: env("GOOGLE_PUBLIC_KEY"), // required 34 | default_center: { lat: 54.106438, lng: 11.556940 }, // required 35 | favorites_places: [ 36 | { 37 | title: "Berlin", 38 | coordinates: { lat: 52.518536, lng: 52.518536 }, 39 | }, 40 | { 41 | title: "Zurich", 42 | coordinates: { lat: 47.384168, lng: 8.526831 }, 43 | }, 44 | { 45 | title: "Oslo", 46 | coordinates: { lat: 59.911002, lng: 10.756167}, 47 | }, 48 | ], 49 | }, 50 | }, 51 | ... 52 | ... 53 | ``` 54 | #### 2. Add "strapi::security" in middlewares.js 55 | ```javascript 56 | // config/middlewares.ts 57 | ... 58 | ... 59 | 'strapi::errors', 60 | { 61 | name: "strapi::security", 62 | config: { 63 | contentSecurityPolicy: { 64 | directives: { 65 | "script-src": ["'self'", "maps.googleapis.com", "maps.gstatic.com"], 66 | "img-src": ["'self'", "data:", "maps.googleapis.com", "maps.gstatic.com"], 67 | }, 68 | }, 69 | }, 70 | }, 71 | 'strapi::cors', 72 | ... 73 | ... 74 | ``` 75 | 76 | #### 3. Add custom field 77 | 78 | Logo - google map picker 79 | 80 | 81 | -------------------------------------------------------------------------------- /assets/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spalz/strapi-plugin-google-map-picker/bedf49dd77d82ab495570522562a789753cef560/assets/banner.jpg -------------------------------------------------------------------------------- /assets/instruction.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spalz/strapi-plugin-google-map-picker/bedf49dd77d82ab495570522562a789753cef560/assets/instruction.gif -------------------------------------------------------------------------------- /assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerComponent/index.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { MapPickerInputProps } from "../../../../types"; 3 | declare const MapPickerComponent: (props: MapPickerInputProps) => JSX.Element | null; 4 | export default MapPickerComponent; 5 | -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerComponent/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const react_1 = __importDefault(require("react")); 7 | const Box_1 = require("@strapi/design-system/Box"); 8 | const Link_1 = require("@strapi/design-system/Link"); 9 | const design_system_1 = require("@strapi/design-system"); 10 | const Typography_1 = require("@strapi/design-system/Typography"); 11 | const Field_1 = require("@strapi/design-system/Field"); 12 | const MapPickerInput_1 = __importDefault(require("../MapPickerInput")); 13 | const use_plugin_config_1 = __importDefault(require("../../../hooks/use-plugin-config")); 14 | const MapPickerComponent = (props) => { 15 | const { config, isLoading } = (0, use_plugin_config_1.default)(); 16 | return config && config.apiKey && config.defaultCenter ? (react_1.default.createElement(MapPickerInput_1.default, { ...props, config: config })) : (!isLoading && !config.apiKey) || (!isLoading && !config.defaultCenter) ? (react_1.default.createElement(react_1.default.Fragment, null, 17 | react_1.default.createElement(Field_1.FieldLabel, null, props.name), 18 | react_1.default.createElement(Box_1.Box, { paddingTop: "1" }, 19 | react_1.default.createElement(design_system_1.Status, { variant: "warning", size: "S", showBullet: false }, 20 | react_1.default.createElement(Typography_1.Typography, null, 21 | react_1.default.createElement(Typography_1.Typography, null, 22 | "Missing: ", 23 | !config.apiKey && react_1.default.createElement(Typography_1.Typography, { fontWeight: "bold" }, "apiKey"), 24 | !config.apiKey && !config.defaultCenter ? " and " : null, 25 | !config.defaultCenter && react_1.default.createElement(Typography_1.Typography, { fontWeight: "bold" }, "defaultCenter"))), 26 | react_1.default.createElement("br", null), 27 | react_1.default.createElement(Link_1.Link, { href: "https://github.com/spalz/strapi-plugin-google-map-picker", isExternal: true }, "Installation Instructions (GitHub)"))))) : null; 28 | }; 29 | exports.default = MapPickerComponent; 30 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerComponent/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/admin/components/MapPicker/MapPickerComponent/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAE1B,mDAAgD;AAChD,qDAAkD;AAClD,yDAA+C;AAC/C,iEAA8D;AAC9D,uDAAyD;AAEzD,uEAA+C;AAC/C,yFAA+D;AAG/D,MAAM,kBAAkB,GAAG,CAAC,KAA0B,EAAE,EAAE;IACtD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,2BAAe,GAAE,CAAC;IAEhD,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CACrD,8BAAC,wBAAc,OAAK,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CAChD,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAC1E;QACI,8BAAC,kBAAU,QAAE,KAAK,CAAC,IAAI,CAAc;QACrC,8BAAC,SAAG,IAAC,UAAU,EAAC,GAAG;YACf,8BAAC,sBAAM,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,GAAG,EAAC,UAAU,EAAE,KAAK;gBAChD,8BAAC,uBAAU;oBACP,8BAAC,uBAAU;;wBACG,CAAC,MAAM,CAAC,MAAM,IAAI,8BAAC,uBAAU,IAAC,UAAU,EAAC,MAAM,aAAoB;wBAC5E,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;wBACxD,CAAC,MAAM,CAAC,aAAa,IAAI,8BAAC,uBAAU,IAAC,UAAU,EAAC,MAAM,oBAA2B,CACzE,CACJ;gBACb,yCAAM;gBACN,8BAAC,WAAI,IAAC,IAAI,EAAC,0DAA0D,EAAC,UAAU,+CAEzE,CACF,CACP,CACP,CACN,CAAC,CAAC,CAAC,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC"} -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerIcon/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const MapPickerIcon: () => JSX.Element; 2 | export default MapPickerIcon; 3 | -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerIcon/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const react_1 = __importDefault(require("react")); 7 | const styled_components_1 = __importDefault(require("styled-components")); 8 | const Icon_1 = require("@strapi/design-system/Icon"); 9 | const Flex_1 = require("@strapi/design-system/Flex"); 10 | const icons_1 = require("@strapi/icons"); 11 | const IconBox = (0, styled_components_1.default)(Flex_1.Flex) ` 12 | background-color: #f0f0ff; 13 | border: 1px solid #d9d8ff; 14 | svg > path { 15 | fill: #4285f4; 16 | } 17 | `; 18 | const MapPickerIcon = () => { 19 | return (react_1.default.createElement(IconBox, { justifyContent: "center", alignItems: "center", width: 7, height: 6, hasRadius: true, "aria-hidden": true }, 20 | react_1.default.createElement(Icon_1.Icon, { as: icons_1.PinMap }))); 21 | }; 22 | exports.default = MapPickerIcon; 23 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerIcon/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/admin/components/MapPicker/MapPickerIcon/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,0EAAuC;AACvC,qDAAkD;AAClD,qDAAkD;AAClD,yCAAuC;AAEvC,MAAM,OAAO,GAAG,IAAA,2BAAM,EAAC,WAAI,CAAC,CAAA;;;;;;CAM3B,CAAC;AAEF,MAAM,aAAa,GAAG,GAAG,EAAE;IACvB,OAAO,CACH,8BAAC,OAAO,IAAC,cAAc,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS;QAC/E,8BAAC,WAAI,IAAC,EAAE,EAAE,cAAM,GAAI,CACd,CACb,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerInput/index.d.ts: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { MapPickerInputProps } from "../../../../types"; 3 | declare const MapPickerInput: React.FC; 4 | export default MapPickerInput; 5 | -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerInput/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { 14 | Object.defineProperty(o, "default", { enumerable: true, value: v }); 15 | }) : function(o, v) { 16 | o["default"] = v; 17 | }); 18 | var __importStar = (this && this.__importStar) || function (mod) { 19 | if (mod && mod.__esModule) return mod; 20 | var result = {}; 21 | if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); 22 | __setModuleDefault(result, mod); 23 | return result; 24 | }; 25 | var __importDefault = (this && this.__importDefault) || function (mod) { 26 | return (mod && mod.__esModule) ? mod : { "default": mod }; 27 | }; 28 | Object.defineProperty(exports, "__esModule", { value: true }); 29 | const react_1 = __importStar(require("react")); 30 | const react_intl_1 = require("react-intl"); 31 | const styled_components_1 = __importDefault(require("styled-components")); 32 | const Stack_1 = require("@strapi/design-system/Stack"); 33 | const Button_1 = require("@strapi/design-system/Button"); 34 | const Box_1 = require("@strapi/design-system/Box"); 35 | const Status_1 = require("@strapi/design-system/Status"); 36 | const Link_1 = require("@strapi/design-system/Link"); 37 | const Typography_1 = require("@strapi/design-system/Typography"); 38 | const Field_1 = require("@strapi/design-system/Field"); 39 | const api_1 = require("@react-google-maps/api"); 40 | const utils_1 = require("../../../utils"); 41 | const LIBRARIES = ["places", "geometry"]; 42 | const AUTOCOMPLETE_FIELDS = ["geometry"]; 43 | const mapContainerStyle = { 44 | height: "400px", 45 | width: "100%", 46 | }; 47 | const MapPickerInput = ({ attribute, description, error = null, intlLabel, labelAction = null, name, onChange, required = false, value, config: { apiKey, defaultCenter, favoritesPlaces }, }) => { 48 | const { isLoaded, loadError } = (0, api_1.useLoadScript)({ 49 | googleMapsApiKey: apiKey, 50 | libraries: LIBRARIES, 51 | }); 52 | const { formatMessage } = (0, react_intl_1.useIntl)(); 53 | const [searchResult, setSearchResult] = (0, react_1.useState)(); 54 | const [marker, setMarker] = (0, react_1.useState)(false); 55 | const [location, setLocation] = (0, react_1.useState)(defaultCenter); 56 | const [center, setCenter] = (0, react_1.useState)(defaultCenter); 57 | const [field, setField] = (0, react_1.useState)(false); 58 | const [fieldError, setFieldError] = (0, react_1.useState)(false); 59 | const onLoadAutocomplete = (autocomplete) => { 60 | setSearchResult(autocomplete); 61 | }; 62 | const onPlaceChanged = () => { 63 | if (searchResult != null) { 64 | setMarker(true); 65 | const place = searchResult.getPlace(); 66 | const geometry = place?.geometry?.location; 67 | if (geometry) { 68 | setCenter({ 69 | lat: geometry.lat(), 70 | lng: geometry.lng(), 71 | }); 72 | } 73 | } 74 | }; 75 | const onMarkerDraggable = (drag) => { 76 | setMarker(true); 77 | if (drag && drag.latLng) { 78 | setLocation({ 79 | lat: drag.latLng.lat(), 80 | lng: drag.latLng.lng(), 81 | }); 82 | onChange?.({ 83 | target: { 84 | name, 85 | value: JSON.stringify({ 86 | lat: drag.latLng.lat(), 87 | lng: drag.latLng.lng(), 88 | }), 89 | type: attribute.type, 90 | }, 91 | }); 92 | } 93 | }; 94 | const onChangeLocation = (coordinates) => { 95 | setCenter({ 96 | lat: coordinates.lat, 97 | lng: coordinates.lng, 98 | }); 99 | }; 100 | const onChangeField = (value) => { 101 | if (!marker) { 102 | setMarker(true); 103 | } 104 | const regexCoordinates = /^((\-?|\+?)?\d+(\.\d+)?),\s((\-?|\+?)?\d+(\.\d+)?)$/gi; 105 | const val = value.target.value; 106 | const checkVal = regexCoordinates.test(val); 107 | if (checkVal) { 108 | setFieldError(false); 109 | const [lat, lng] = val.split(","); 110 | setLocation({ lat: Number(lat), lng: Number(lng) }); 111 | setCenter({ lat: Number(lat), lng: Number(lng) }); 112 | onChange?.({ 113 | target: { 114 | name, 115 | value: JSON.stringify({ lat: Number(lat), lng: Number(lng) }), 116 | type: attribute.type, 117 | }, 118 | }); 119 | } 120 | else { 121 | setFieldError(true); 122 | } 123 | }; 124 | const onLoad = react_1.default.useCallback(function onLoad() { 125 | if (value) { 126 | setMarker(true); 127 | setLocation(JSON.parse(value)); 128 | setCenter(JSON.parse(value)); 129 | } 130 | }, []); 131 | const valDisplay = (value) => { 132 | if (value) { 133 | const val = JSON.parse(value); 134 | return `${val.lat.toFixed(6)}, ${val.lng.toFixed(6)}`; 135 | } 136 | else { 137 | return formatMessage({ 138 | id: (0, utils_1.getTrad)("google-map-picker.not-selected"), 139 | defaultMessage: "Not selected", 140 | }); 141 | } 142 | }; 143 | if (loadError?.target?.id === "script-loader") { 144 | return (react_1.default.createElement(react_1.default.Fragment, null, 145 | react_1.default.createElement(Field_1.FieldLabel, null, name), 146 | react_1.default.createElement(Box_1.Box, { paddingTop: "1" }, 147 | react_1.default.createElement(Status_1.Status, { variant: "warning", size: "S", showBullet: false }, 148 | react_1.default.createElement(Typography_1.Typography, null, 149 | react_1.default.createElement(Typography_1.Typography, null, 150 | "Possibly missing: ", 151 | react_1.default.createElement(Typography_1.Typography, { fontWeight: "bold" }, "middlewares"))), 152 | react_1.default.createElement("br", null), 153 | react_1.default.createElement(Link_1.Link, { href: "https://github.com/spalz/strapi-plugin-google-map-picker", isExternal: true }, "Installation Instructions (GitHub)"))))); 154 | } 155 | if (!isLoaded) { 156 | return react_1.default.createElement(SLoading, { style: mapContainerStyle }, "Loading..."); 157 | } 158 | return (react_1.default.createElement(Field_1.Field, { name: name, id: name, error: error, hint: description && formatMessage(description), required: required }, 159 | react_1.default.createElement(Stack_1.Stack, { spacing: 1 }, 160 | react_1.default.createElement(SFieldLabel, null, 161 | react_1.default.createElement(Field_1.FieldLabel, { action: labelAction }, 162 | formatMessage(intlLabel), 163 | react_1.default.createElement(SCoordinates, { onClick: () => setField(true), className: `${field ? "active" : ""}` }, valDisplay(value))), 164 | field && (react_1.default.createElement(SFieldInput, { type: "text", placeholder: "lat, lng", onChange: (val) => onChangeField(val), className: `${fieldError ? "error" : ""}` }))), 165 | isLoaded ? (react_1.default.createElement("div", null, 166 | favoritesPlaces && (react_1.default.createElement(SFavoritesPlaces, null, favoritesPlaces.map((item, idx) => { 167 | return (react_1.default.createElement(SFavoritesPlacesItem, { key: idx, onClick: () => onChangeLocation(item.coordinates) }, 168 | react_1.default.createElement(Button_1.Button, { size: "S", variant: "tertiary" }, item.title))); 169 | }))), 170 | react_1.default.createElement(SGoogleMap, null, 171 | react_1.default.createElement(api_1.GoogleMap, { id: name, mapContainerStyle: mapContainerStyle, zoom: 10, center: center, onClick: (MapMouseEvent) => onMarkerDraggable(MapMouseEvent), onLoad: () => onLoad(), options: { 172 | zoomControl: true, 173 | maxZoom: 18, 174 | } }, 175 | react_1.default.createElement(api_1.Autocomplete, { onLoad: (autocomplete) => onLoadAutocomplete(autocomplete), onPlaceChanged: () => onPlaceChanged(), fields: AUTOCOMPLETE_FIELDS }, 176 | react_1.default.createElement(SSearchField, { type: "text", placeholder: formatMessage({ 177 | id: (0, utils_1.getTrad)("google-map-picker.search"), 178 | defaultMessage: "Search", 179 | }) })), 180 | marker ? (react_1.default.createElement(api_1.MarkerF, { position: location, draggable: true, onDragEnd: (onDragEnd) => onMarkerDraggable(onDragEnd) })) : null)))) : (react_1.default.createElement(SLoading, { style: mapContainerStyle }, "Loading...")), 181 | react_1.default.createElement(Field_1.FieldHint, null), 182 | react_1.default.createElement(Field_1.FieldError, null)))); 183 | }; 184 | const SLoading = styled_components_1.default.div ` 185 | display: flex; 186 | background-color: ${({ theme }) => theme.colors.neutral300}; 187 | align-items: center; 188 | justify-content: center; 189 | `; 190 | const SGoogleMap = styled_components_1.default.div ` 191 | border-radius: ${({ theme }) => theme.borderRadius}; 192 | overflow: hidden; 193 | `; 194 | const SFieldLabel = styled_components_1.default.div ` 195 | display: flex; 196 | align-items: center; 197 | justify-content: space-between; 198 | gap: 20px; 199 | `; 200 | const SCoordinates = styled_components_1.default.span ` 201 | display: inline-flex; 202 | align-items: center; 203 | font-weight: 600; 204 | font-size: 0.75rem; 205 | margin-left: 0.2em; 206 | cursor: pointer; 207 | color: ${({ theme }) => theme.colors.neutral800}; 208 | height: 26px; 209 | &.active { 210 | cursor: default; 211 | } 212 | `; 213 | const SFieldInput = styled_components_1.default.input ` 214 | border: 1px solid ${({ theme }) => theme.colors.neutral200}; 215 | border-radius: ${({ theme }) => theme.borderRadius}; 216 | background: ${({ theme }) => theme.colors.neutral0}; 217 | 218 | padding: 0.2em 0.4em 0.3em; 219 | color: ${({ theme }) => theme.colors.neutral800}; 220 | font-weight: 400; 221 | flex: 1; 222 | font-size: ${12 / 14}rem; 223 | display: block; 224 | width: 100%; 225 | ::placeholder { 226 | color: ${({ theme }) => theme.colors.neutral500}; 227 | opacity: 1; 228 | } 229 | &:focus { 230 | outline: none; 231 | box-shadow: none; 232 | } 233 | &.error { 234 | border-color: ${({ theme }) => theme.colors.danger600}; 235 | } 236 | `; 237 | const SFavoritesPlaces = styled_components_1.default.div ` 238 | display: flex; 239 | gap: 10px; 240 | margin-bottom: 10px; 241 | color: ${({ theme }) => theme.colors.primary600}; 242 | &:hover { 243 | color: ${({ theme }) => theme.colors.primary500}; 244 | } 245 | &.active { 246 | color: ${({ theme }) => theme.colors.primary700}; 247 | } 248 | `; 249 | const SFavoritesPlacesItem = styled_components_1.default.div ``; 250 | const SSearchField = styled_components_1.default.input ` 251 | box-sizing: border-box; 252 | border: 1px solid transparent; 253 | width: 240px; 254 | height: 40px; 255 | padding: 0 12px; 256 | border-radius: 3px; 257 | box-shadow: rgb(0 0 0 / 30%) 0px 1px 4px -1px; 258 | font-size: 14px; 259 | outline: none; 260 | text-overflow: ellipses; 261 | position: absolute; 262 | left: 200px; 263 | margin-top: 10px; 264 | `; 265 | exports.default = MapPickerInput; 266 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/admin/components/MapPicker/MapPickerInput/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/admin/components/MapPicker/MapPickerInput/index.tsx"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /build/admin/constants.d.ts: -------------------------------------------------------------------------------- 1 | export declare const RESOLVE_CONFIG: string; 2 | -------------------------------------------------------------------------------- /build/admin/constants.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.RESOLVE_CONFIG = void 0; 4 | const utils_1 = require("./utils"); 5 | exports.RESOLVE_CONFIG = `${utils_1.pluginId}/resolve-config`; 6 | //# sourceMappingURL=constants.js.map -------------------------------------------------------------------------------- /build/admin/constants.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/admin/constants.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AAEtB,QAAA,cAAc,GAAG,GAAG,gBAAQ,iBAAiB,CAAC"} -------------------------------------------------------------------------------- /build/admin/hooks/index.d.ts: -------------------------------------------------------------------------------- 1 | export { default as usePluginConfig } from "./use-plugin-config"; 2 | -------------------------------------------------------------------------------- /build/admin/hooks/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.usePluginConfig = void 0; 7 | var use_plugin_config_1 = require("./use-plugin-config"); 8 | Object.defineProperty(exports, "usePluginConfig", { enumerable: true, get: function () { return __importDefault(use_plugin_config_1).default; } }); 9 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/admin/hooks/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/hooks/index.ts"],"names":[],"mappings":";;;;;;AAAA,yDAAiE;AAAxD,qIAAA,OAAO,OAAmB"} -------------------------------------------------------------------------------- /build/admin/hooks/use-plugin-config.d.ts: -------------------------------------------------------------------------------- 1 | declare const usePluginConfig: () => { 2 | config: any; 3 | isLoading: any; 4 | }; 5 | export default usePluginConfig; 6 | -------------------------------------------------------------------------------- /build/admin/hooks/use-plugin-config.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const react_1 = require("react"); 4 | const react_redux_1 = require("react-redux"); 5 | const helper_plugin_1 = require("@strapi/helper-plugin"); 6 | const constants_1 = require("../constants"); 7 | const utils_1 = require("../utils"); 8 | const usePluginConfig = () => { 9 | const dispatch = (0, react_redux_1.useDispatch)(); 10 | const toggleNotification = (0, helper_plugin_1.useNotification)(); 11 | const { config, isLoading } = (0, react_redux_1.useSelector)((state) => state[`${utils_1.pluginId}_config`]); 12 | (0, react_1.useEffect)(() => { 13 | if (!isLoading && !!config) { 14 | return; 15 | } 16 | const abortController = new AbortController(); 17 | const fetchData = async () => { 18 | try { 19 | const endpoint = `/${utils_1.pluginId}/config`; 20 | const data = await (0, helper_plugin_1.request)(endpoint, { 21 | method: "GET", 22 | signal: abortController.signal, 23 | }); 24 | return data ?? {}; 25 | } 26 | catch (err) { 27 | if (!abortController.signal.aborted) { 28 | toggleNotification({ 29 | type: "warning", 30 | message: { id: "notification.error" }, 31 | }); 32 | return err; 33 | } 34 | } 35 | }; 36 | fetchData().then((data) => dispatch({ type: constants_1.RESOLVE_CONFIG, data })); 37 | return () => abortController.abort(); 38 | }, [dispatch, toggleNotification]); 39 | return { config, isLoading }; 40 | }; 41 | exports.default = usePluginConfig; 42 | //# sourceMappingURL=use-plugin-config.js.map -------------------------------------------------------------------------------- /build/admin/hooks/use-plugin-config.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"use-plugin-config.js","sourceRoot":"","sources":["../../../src/admin/hooks/use-plugin-config.ts"],"names":[],"mappings":";;AAAA,iCAAkC;AAClC,6CAAuD;AACvD,yDAAiE;AAEjE,4CAA8C;AAC9C,oCAAoC;AAEpC,MAAM,eAAe,GAAG,GAAG,EAAE;IACzB,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAC;IAC/B,MAAM,kBAAkB,GAAG,IAAA,+BAAe,GAAE,CAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,yBAAW,EAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,gBAAQ,SAAS,CAAC,CAAC,CAAC;IAEvF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE;YACxB,OAAO;SACV;QAED,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAE9C,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;YACzB,IAAI;gBACA,MAAM,QAAQ,GAAG,IAAI,gBAAQ,SAAS,CAAC;gBACvC,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAO,EAAC,QAAQ,EAAE;oBACjC,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,eAAe,CAAC,MAAM;iBACjC,CAAC,CAAC;gBAEH,OAAO,IAAI,IAAI,EAAE,CAAC;aACrB;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;oBACjC,kBAAkB,CAAC;wBACf,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE;qBACxC,CAAC,CAAC;oBAEH,OAAO,GAAG,CAAC;iBACd;aACJ;QACL,CAAC,CAAC;QAEF,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,0BAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAErE,OAAO,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEnC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"} -------------------------------------------------------------------------------- /build/admin/index.d.ts: -------------------------------------------------------------------------------- 1 | import { StrapiAdminInstance } from "strapi-typed"; 2 | import { TranslationKey } from "./translations"; 3 | declare const _default: { 4 | register(app: StrapiAdminInstance): void; 5 | registerTrads({ locales }: { 6 | locales: Array; 7 | }): Promise<({ 8 | data: any; 9 | locale: string; 10 | } | { 11 | data: {}; 12 | locale: string; 13 | })[]>; 14 | }; 15 | export default _default; 16 | -------------------------------------------------------------------------------- /build/admin/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { 14 | Object.defineProperty(o, "default", { enumerable: true, value: v }); 15 | }) : function(o, v) { 16 | o["default"] = v; 17 | }); 18 | var __importStar = (this && this.__importStar) || function (mod) { 19 | if (mod && mod.__esModule) return mod; 20 | var result = {}; 21 | if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); 22 | __setModuleDefault(result, mod); 23 | return result; 24 | }; 25 | var __importDefault = (this && this.__importDefault) || function (mod) { 26 | return (mod && mod.__esModule) ? mod : { "default": mod }; 27 | }; 28 | Object.defineProperty(exports, "__esModule", { value: true }); 29 | const helper_plugin_1 = require("@strapi/helper-plugin"); 30 | const MapPickerIcon_1 = __importDefault(require("./components/MapPicker/MapPickerIcon")); 31 | const utils_1 = require("./utils"); 32 | const reducers_1 = __importDefault(require("./reducers")); 33 | exports.default = { 34 | register(app) { 35 | app.customFields.register({ 36 | name: "place", 37 | pluginId: utils_1.pluginId, 38 | type: "string", 39 | icon: MapPickerIcon_1.default, 40 | intlLabel: { 41 | id: (0, utils_1.getTrad)("google-map-picker.label"), 42 | defaultMessage: "Place", 43 | }, 44 | intlDescription: { 45 | id: (0, utils_1.getTrad)("google-map-picker.description"), 46 | defaultMessage: "Select place", 47 | }, 48 | components: { 49 | Input: async () => Promise.resolve().then(() => __importStar(require("./components/MapPicker/MapPickerComponent"))), 50 | }, 51 | options: { 52 | base: [], 53 | advanced: [ 54 | { 55 | intlLabel: { 56 | id: (0, utils_1.getTrad)("google-map-picker.options.advanced.regex"), 57 | defaultMessage: "RegExp pattern", 58 | }, 59 | name: "regex", 60 | type: "text", 61 | description: { 62 | id: (0, utils_1.getTrad)("google-map-picker.options.advanced.regex.description"), 63 | defaultMessage: "The text of the regular expression", 64 | }, 65 | }, 66 | { 67 | sectionTitle: { 68 | id: "global.settings", 69 | defaultMessage: "Settings", 70 | }, 71 | items: [ 72 | { 73 | name: "required", 74 | type: "checkbox", 75 | intlLabel: { 76 | id: (0, utils_1.getTrad)("google-map-picker.options.advanced.requiredField"), 77 | defaultMessage: "Required field", 78 | }, 79 | description: { 80 | id: (0, utils_1.getTrad)("google-map-picker.options.advanced.requiredField.description"), 81 | defaultMessage: "You won't be able to create an entry if this field is empty", 82 | }, 83 | }, 84 | ], 85 | }, 86 | ], 87 | validator: () => ({}), 88 | }, 89 | }); 90 | app.addReducers(reducers_1.default); 91 | }, 92 | async registerTrads({ locales }) { 93 | const importedTrads = await Promise.all(locales.map((locale) => { 94 | var _a; 95 | return (_a = `./translations/${locale}.json`, Promise.resolve().then(() => __importStar(require(_a)))).then(({ default: data }) => { 96 | return { 97 | data: (0, helper_plugin_1.prefixPluginTranslations)(data, utils_1.pluginId), 98 | locale, 99 | }; 100 | }) 101 | .catch(() => { 102 | return { 103 | data: {}, 104 | locale, 105 | }; 106 | }); 107 | })); 108 | return Promise.resolve(importedTrads); 109 | }, 110 | }; 111 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/admin/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAiE;AAIjE,yFAAiE;AACjE,mCAA4C;AAC5C,0DAAkC;AAGlC,kBAAe;IACX,QAAQ,CAAC,GAAwB;QAC7B,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;YACtB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,gBAAQ;YAClB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,uBAAa;YACnB,SAAS,EAAE;gBACP,EAAE,EAAE,IAAA,eAAO,EAAC,yBAAyB,CAAC;gBACtC,cAAc,EAAE,OAAO;aAC1B;YACD,eAAe,EAAE;gBACb,EAAE,EAAE,IAAA,eAAO,EAAC,+BAA+B,CAAC;gBAC5C,cAAc,EAAE,cAAc;aACjC;YACD,UAAU,EAAE;gBACR,KAAK,EAAE,KAAK,IAAI,EAAE,mDAAQ,2CAA2C,GAAC;aACzE;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,EAAE;gBACR,QAAQ,EAAE;oBACN;wBACI,SAAS,EAAE;4BACP,EAAE,EAAE,IAAA,eAAO,EAAC,0CAA0C,CAAC;4BACvD,cAAc,EAAE,gBAAgB;yBACnC;wBACD,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE;4BACT,EAAE,EAAE,IAAA,eAAO,EAAC,sDAAsD,CAAC;4BACnE,cAAc,EAAE,oCAAoC;yBACvD;qBACJ;oBACD;wBACI,YAAY,EAAE;4BACV,EAAE,EAAE,iBAAiB;4BACrB,cAAc,EAAE,UAAU;yBAC7B;wBACD,KAAK,EAAE;4BACH;gCACI,IAAI,EAAE,UAAU;gCAChB,IAAI,EAAE,UAAU;gCAChB,SAAS,EAAE;oCACP,EAAE,EAAE,IAAA,eAAO,EAAC,kDAAkD,CAAC;oCAC/D,cAAc,EAAE,gBAAgB;iCACnC;gCACD,WAAW,EAAE;oCACT,EAAE,EAAE,IAAA,eAAO,EAAC,8DAA8D,CAAC;oCAC3E,cAAc,EAAE,6DAA6D;iCAChF;6BACJ;yBACJ;qBACJ;iBACJ;gBACD,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;aACxB;SACJ,CAAC,CAAC;QACH,GAAG,CAAC,WAAW,CAAC,kBAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,KAAK,CAAC,aAAa,CAAC,EAAE,OAAO,EAAsC;QAC/D,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE;;YAC3B,OAAO,MAAO,kBAAkB,MAAM,OAAO,2DACxC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;gBACxB,OAAO;oBACH,IAAI,EAAE,IAAA,wCAAwB,EAAC,IAAI,EAAE,gBAAQ,CAAC;oBAC9C,MAAM;iBACT,CAAC;YACN,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACR,OAAO;oBACH,IAAI,EAAE,EAAE;oBACR,MAAM;iBACT,CAAC;YACN,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CACL,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;CACJ,CAAC"} -------------------------------------------------------------------------------- /build/admin/reducers/config.d.ts: -------------------------------------------------------------------------------- 1 | declare const configReducer: (base: any, action: any) => any; 2 | export default configReducer; 3 | -------------------------------------------------------------------------------- /build/admin/reducers/config.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const immer_1 = __importDefault(require("immer")); 7 | const constants_1 = require("../constants"); 8 | const initialState = { 9 | isLoading: true, 10 | config: { 11 | apiKey: null, 12 | defaultCenter: null, 13 | favoritesPlaces: null, 14 | }, 15 | }; 16 | const configReducer = (0, immer_1.default)((state = initialState, action) => { 17 | switch (action.type) { 18 | case constants_1.RESOLVE_CONFIG: { 19 | state.isLoading = false; 20 | state.config = action.data; 21 | break; 22 | } 23 | default: 24 | return state; 25 | } 26 | return state; 27 | }); 28 | exports.default = configReducer; 29 | //# sourceMappingURL=config.js.map -------------------------------------------------------------------------------- /build/admin/reducers/config.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/admin/reducers/config.ts"],"names":[],"mappings":";;;;;AAAA,kDAA4B;AAE5B,4CAA8C;AAE9C,MAAM,YAAY,GAAG;IACjB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE;QACJ,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;KACxB;CACJ,CAAC;AAEF,MAAM,aAAa,GAAG,IAAA,eAAO,EAAC,CAAC,KAAK,GAAG,YAAY,EAAE,MAAM,EAAE,EAAE;IAC3D,QAAQ,MAAM,CAAC,IAAI,EAAE;QACjB,KAAK,0BAAc,CAAC,CAAC;YACjB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;YACxB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3B,MAAM;SACT;QAED;YACI,OAAO,KAAK,CAAC;KACpB;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,kBAAe,aAAa,CAAC"} -------------------------------------------------------------------------------- /build/admin/reducers/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const reducers: { 2 | [x: string]: (base: any, action: any) => any; 3 | }; 4 | export default reducers; 5 | -------------------------------------------------------------------------------- /build/admin/reducers/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const utils_1 = require("../utils"); 7 | const config_1 = __importDefault(require("./config")); 8 | const reducers = { 9 | [`${utils_1.pluginId}_config`]: config_1.default, 10 | }; 11 | exports.default = reducers; 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/admin/reducers/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/reducers/index.ts"],"names":[],"mappings":";;;;;AAAA,oCAAoC;AACpC,sDAA8B;AAE9B,MAAM,QAAQ,GAAG;IACb,CAAC,GAAG,gBAAQ,SAAS,CAAC,EAAE,gBAAM;CACjC,CAAC;AAEF,kBAAe,QAAQ,CAAC"} -------------------------------------------------------------------------------- /build/admin/translations/index.d.ts: -------------------------------------------------------------------------------- 1 | export type TranslationKey = "ru" | "en"; 2 | -------------------------------------------------------------------------------- /build/admin/translations/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/admin/translations/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/translations/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /build/admin/utils/get-trad.d.ts: -------------------------------------------------------------------------------- 1 | declare const getTrad: (id: string) => string; 2 | export default getTrad; 3 | -------------------------------------------------------------------------------- /build/admin/utils/get-trad.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const _1 = require("./"); 4 | const getTrad = (id) => `${_1.pluginId}.${id}`; 5 | exports.default = getTrad; 6 | //# sourceMappingURL=get-trad.js.map -------------------------------------------------------------------------------- /build/admin/utils/get-trad.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"get-trad.js","sourceRoot":"","sources":["../../../src/admin/utils/get-trad.ts"],"names":[],"mappings":";;AAAA,yBAA8B;AAE9B,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,GAAG,WAAQ,IAAI,EAAE,EAAE,CAAC;AAEpD,kBAAe,OAAO,CAAC"} -------------------------------------------------------------------------------- /build/admin/utils/getMessage.d.ts: -------------------------------------------------------------------------------- 1 | export type ToBeFixed = any; 2 | declare const getMessage: (input: ToBeFixed, defaultMessage?: string, inPluginScope?: boolean) => string; 3 | export default getMessage; 4 | -------------------------------------------------------------------------------- /build/admin/utils/getMessage.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const react_intl_1 = require("react-intl"); 7 | const lodash_1 = require("lodash"); 8 | const plugin_id_1 = __importDefault(require("./plugin-id")); 9 | const getMessage = (input, defaultMessage = "", inPluginScope = true) => { 10 | const { formatMessage } = (0, react_intl_1.useIntl)(); 11 | let formattedId = ""; 12 | if ((0, lodash_1.isString)(input)) { 13 | formattedId = input; 14 | } 15 | else { 16 | formattedId = input?.id; 17 | } 18 | return formatMessage({ 19 | id: `${inPluginScope ? plugin_id_1.default : "app.components"}.${formattedId}`, 20 | defaultMessage, 21 | }, input?.props); 22 | }; 23 | exports.default = getMessage; 24 | //# sourceMappingURL=getMessage.js.map -------------------------------------------------------------------------------- /build/admin/utils/getMessage.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"getMessage.js","sourceRoot":"","sources":["../../../src/admin/utils/getMessage.ts"],"names":[],"mappings":";;;;;AAAA,2CAAqC;AACrC,mCAAkC;AAIlC,4DAAmC;AAEnC,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAE,cAAc,GAAG,EAAE,EAAE,aAAa,GAAG,IAAI,EAAE,EAAE;IAC/E,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,oBAAO,GAAE,CAAC;IACpC,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;QACjB,WAAW,GAAG,KAAK,CAAC;KACvB;SAAM;QACH,WAAW,GAAG,KAAK,EAAE,EAAE,CAAC;KAC3B;IAED,OAAO,aAAa,CAChB;QACI,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,mBAAQ,CAAC,CAAC,CAAC,gBAAgB,IAAI,WAAW,EAAE;QACnE,cAAc;KACjB,EACD,KAAK,EAAE,KAAK,CACf,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"} -------------------------------------------------------------------------------- /build/admin/utils/index.d.ts: -------------------------------------------------------------------------------- 1 | export { default as getTrad } from "./get-trad"; 2 | export { default as pluginId } from "./plugin-id"; 3 | export { default as pluginName } from "./plugin-name"; 4 | -------------------------------------------------------------------------------- /build/admin/utils/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | exports.pluginName = exports.pluginId = exports.getTrad = void 0; 7 | var get_trad_1 = require("./get-trad"); 8 | Object.defineProperty(exports, "getTrad", { enumerable: true, get: function () { return __importDefault(get_trad_1).default; } }); 9 | var plugin_id_1 = require("./plugin-id"); 10 | Object.defineProperty(exports, "pluginId", { enumerable: true, get: function () { return __importDefault(plugin_id_1).default; } }); 11 | var plugin_name_1 = require("./plugin-name"); 12 | Object.defineProperty(exports, "pluginName", { enumerable: true, get: function () { return __importDefault(plugin_name_1).default; } }); 13 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/admin/utils/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/utils/index.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAgD;AAAvC,oHAAA,OAAO,OAAW;AAC3B,yCAAkD;AAAzC,sHAAA,OAAO,OAAY;AAC5B,6CAAsD;AAA7C,0HAAA,OAAO,OAAc"} -------------------------------------------------------------------------------- /build/admin/utils/plugin-id.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: string; 2 | export default _default; 3 | -------------------------------------------------------------------------------- /build/admin/utils/plugin-id.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const package_json_1 = __importDefault(require("../../../package.json")); 7 | exports.default = package_json_1.default.strapi.name; 8 | //# sourceMappingURL=plugin-id.js.map -------------------------------------------------------------------------------- /build/admin/utils/plugin-id.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"plugin-id.js","sourceRoot":"","sources":["../../../src/admin/utils/plugin-id.ts"],"names":[],"mappings":";;;;;AAAA,yEAA8C;AAE9C,kBAAe,sBAAS,CAAC,MAAM,CAAC,IAAI,CAAC"} -------------------------------------------------------------------------------- /build/admin/utils/plugin-name.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: string; 2 | export default _default; 3 | -------------------------------------------------------------------------------- /build/admin/utils/plugin-name.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const package_json_1 = __importDefault(require("../../../package.json")); 7 | exports.default = package_json_1.default.strapi.displayName; 8 | //# sourceMappingURL=plugin-name.js.map -------------------------------------------------------------------------------- /build/admin/utils/plugin-name.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"plugin-name.js","sourceRoot":"","sources":["../../../src/admin/utils/plugin-name.ts"],"names":[],"mappings":";;;;;AAAA,yEAA8C;AAE9C,kBAAe,sBAAS,CAAC,MAAM,CAAC,WAAW,CAAC"} -------------------------------------------------------------------------------- /build/server/config.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | default: { 3 | apiKey: null; 4 | defaultCenter: null; 5 | favoritesPlaces: null; 6 | }; 7 | }; 8 | export default _default; 9 | -------------------------------------------------------------------------------- /build/server/config.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.default = { 4 | default: { 5 | apiKey: null, 6 | defaultCenter: null, 7 | favoritesPlaces: null, 8 | }, 9 | }; 10 | //# sourceMappingURL=config.js.map -------------------------------------------------------------------------------- /build/server/config.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,kBAAe;IACX,OAAO,EAAE;QACL,MAAM,EAAE,IAAI;QACZ,aAAa,EAAE,IAAI;QACnB,eAAe,EAAE,IAAI;KACxB;CACJ,CAAC"} -------------------------------------------------------------------------------- /build/server/controllers/google-map-picker.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | config(ctx: any): Promise; 3 | }; 4 | export default _default; 5 | -------------------------------------------------------------------------------- /build/server/controllers/google-map-picker.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const get_service_1 = __importDefault(require("../utils/get-service")); 7 | exports.default = { 8 | async config(ctx) { 9 | const config = await (0, get_service_1.default)("plugin").getConfig(); 10 | ctx.send(config); 11 | }, 12 | }; 13 | //# sourceMappingURL=google-map-picker.js.map -------------------------------------------------------------------------------- /build/server/controllers/google-map-picker.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"google-map-picker.js","sourceRoot":"","sources":["../../../src/server/controllers/google-map-picker.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,uEAA8C;AAE9C,kBAAe;IACX,KAAK,CAAC,MAAM,CAAC,GAAQ;QACjB,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAU,EAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;QAEtD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;CACJ,CAAC"} -------------------------------------------------------------------------------- /build/server/controllers/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | "google-map-picker": { 3 | config(ctx: any): Promise; 4 | }; 5 | }; 6 | export default _default; 7 | -------------------------------------------------------------------------------- /build/server/controllers/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const google_map_picker_1 = __importDefault(require("./google-map-picker")); 7 | exports.default = { 8 | "google-map-picker": google_map_picker_1.default, 9 | }; 10 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/server/controllers/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/controllers/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,4EAAkD;AAElD,kBAAe;IACX,mBAAmB,EAAE,2BAAe;CACvC,CAAC"} -------------------------------------------------------------------------------- /build/server/helpers/pluginConfig.d.ts: -------------------------------------------------------------------------------- 1 | declare const getPluginConfig: (strapi: any) => any; 2 | export default getPluginConfig; 3 | -------------------------------------------------------------------------------- /build/server/helpers/pluginConfig.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const plugin_id_1 = __importDefault(require("../utils/plugin-id")); 7 | const getPluginConfig = (strapi) => { 8 | return strapi.plugin(plugin_id_1.default).config; 9 | }; 10 | exports.default = getPluginConfig; 11 | //# sourceMappingURL=pluginConfig.js.map -------------------------------------------------------------------------------- /build/server/helpers/pluginConfig.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"pluginConfig.js","sourceRoot":"","sources":["../../../src/server/helpers/pluginConfig.ts"],"names":[],"mappings":";;;;;AAAA,mEAA0C;AAE1C,MAAM,eAAe,GAAG,CAAC,MAAW,EAAE,EAAE;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,mBAAQ,CAAC,CAAC,MAAM,CAAC;AAC1C,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"} -------------------------------------------------------------------------------- /build/server/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | register: ({ strapi }: { 3 | strapi: import("@strapi/strapi").Strapi; 4 | }) => void; 5 | config: { 6 | default: { 7 | apiKey: null; 8 | defaultCenter: null; 9 | favoritesPlaces: null; 10 | }; 11 | }; 12 | routes: { 13 | "admin-api": { 14 | type: string; 15 | routes: { 16 | method: string; 17 | path: string; 18 | handler: string; 19 | config: { 20 | policies: string[]; 21 | }; 22 | }[]; 23 | }; 24 | }; 25 | controllers: { 26 | "google-map-picker": { 27 | config(ctx: any): Promise; 28 | }; 29 | }; 30 | services: { 31 | plugin: ({ strapi }: { 32 | strapi: import("@strapi/strapi").Strapi; 33 | }) => { 34 | getConfig(): Promise; 35 | }; 36 | }; 37 | }; 38 | export default _default; 39 | -------------------------------------------------------------------------------- /build/server/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const register_1 = __importDefault(require("./register")); 7 | const config_1 = __importDefault(require("./config")); 8 | const routes_1 = __importDefault(require("./routes")); 9 | const controllers_1 = __importDefault(require("./controllers")); 10 | const services_1 = __importDefault(require("./services")); 11 | exports.default = { 12 | register: register_1.default, 13 | config: config_1.default, 14 | routes: routes_1.default, 15 | controllers: controllers_1.default, 16 | services: services_1.default, 17 | }; 18 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/server/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,0DAAkC;AAClC,sDAA8B;AAC9B,sDAA8B;AAC9B,gEAAwC;AACxC,0DAAkC;AAElC,kBAAe;IACX,QAAQ,EAAR,kBAAQ;IACR,MAAM,EAAN,gBAAM;IACN,MAAM,EAAN,gBAAM;IACN,WAAW,EAAX,qBAAW;IACX,QAAQ,EAAR,kBAAQ;CACX,CAAC"} -------------------------------------------------------------------------------- /build/server/register.d.ts: -------------------------------------------------------------------------------- 1 | import { Strapi } from "@strapi/strapi"; 2 | declare const _default: ({ strapi }: { 3 | strapi: Strapi; 4 | }) => void; 5 | export default _default; 6 | -------------------------------------------------------------------------------- /build/server/register.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const plugin_id_1 = __importDefault(require("./utils/plugin-id")); 7 | exports.default = ({ strapi }) => { 8 | strapi.customFields.register({ 9 | name: "place", 10 | plugin: plugin_id_1.default, 11 | type: "string", 12 | }); 13 | }; 14 | //# sourceMappingURL=register.js.map -------------------------------------------------------------------------------- /build/server/register.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/server/register.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAIb,kEAAyC;AAEzC,kBAAe,CAAC,EAAE,MAAM,EAAsB,EAAE,EAAE;IAC9C,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;QACzB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,mBAAQ;QAChB,IAAI,EAAE,QAAQ;KAIjB,CAAC,CAAC;AACP,CAAC,CAAC"} -------------------------------------------------------------------------------- /build/server/routes/admin-api.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | type: string; 3 | routes: { 4 | method: string; 5 | path: string; 6 | handler: string; 7 | config: { 8 | policies: string[]; 9 | }; 10 | }[]; 11 | }; 12 | export default _default; 13 | -------------------------------------------------------------------------------- /build/server/routes/admin-api.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.default = { 4 | type: "admin", 5 | routes: [ 6 | { 7 | method: "GET", 8 | path: "/config", 9 | handler: "google-map-picker.config", 10 | config: { 11 | policies: ["admin::isAuthenticatedAdmin"], 12 | }, 13 | }, 14 | ], 15 | }; 16 | //# sourceMappingURL=admin-api.js.map -------------------------------------------------------------------------------- /build/server/routes/admin-api.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"admin-api.js","sourceRoot":"","sources":["../../../src/server/routes/admin-api.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,kBAAe;IACX,IAAI,EAAE,OAAO;IACb,MAAM,EAAE;QACJ;YACI,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE;gBACJ,QAAQ,EAAE,CAAC,6BAA6B,CAAC;aAC5C;SACJ;KACJ;CACJ,CAAC"} -------------------------------------------------------------------------------- /build/server/routes/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | "admin-api": { 3 | type: string; 4 | routes: { 5 | method: string; 6 | path: string; 7 | handler: string; 8 | config: { 9 | policies: string[]; 10 | }; 11 | }[]; 12 | }; 13 | }; 14 | export default _default; 15 | -------------------------------------------------------------------------------- /build/server/routes/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const admin_api_1 = __importDefault(require("./admin-api")); 7 | exports.default = { 8 | "admin-api": admin_api_1.default, 9 | }; 10 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/server/routes/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,4DAAgC;AAEhC,kBAAe;IACX,WAAW,EAAE,mBAAK;CACrB,CAAC"} -------------------------------------------------------------------------------- /build/server/services/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | plugin: ({ strapi }: { 3 | strapi: import("@strapi/strapi").Strapi; 4 | }) => { 5 | getConfig(): Promise; 6 | }; 7 | }; 8 | export default _default; 9 | -------------------------------------------------------------------------------- /build/server/services/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const plugin_1 = __importDefault(require("./plugin")); 7 | exports.default = { 8 | plugin: plugin_1.default, 9 | }; 10 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/server/services/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,sDAA8B;AAE9B,kBAAe;IACX,MAAM,EAAN,gBAAM;CACT,CAAC"} -------------------------------------------------------------------------------- /build/server/services/plugin.d.ts: -------------------------------------------------------------------------------- 1 | import { Strapi } from "@strapi/strapi"; 2 | declare const _default: ({ strapi }: { 3 | strapi: Strapi; 4 | }) => { 5 | getConfig(): Promise; 6 | }; 7 | export default _default; 8 | -------------------------------------------------------------------------------- /build/server/services/plugin.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const config_1 = __importDefault(require("../config")); 7 | const plugin_id_1 = __importDefault(require("../utils/plugin-id")); 8 | exports.default = ({ strapi }) => ({ 9 | async getConfig() { 10 | const data = await strapi.config.get(`plugin.${plugin_id_1.default}`, config_1.default.default); 11 | return data; 12 | }, 13 | }); 14 | //# sourceMappingURL=plugin.js.map -------------------------------------------------------------------------------- /build/server/services/plugin.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/server/services/plugin.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAIb,uDAA+B;AAC/B,mEAA0C;AAE1C,kBAAe,CAAC,EAAE,MAAM,EAAsB,EAAE,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,SAAS;QACX,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,mBAAQ,EAAE,EAAE,gBAAM,CAAC,OAAO,CAAC,CAAC;QAE3E,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC,CAAC"} -------------------------------------------------------------------------------- /build/server/utils/get-service.d.ts: -------------------------------------------------------------------------------- 1 | declare const getService: (name: string) => any; 2 | export default getService; 3 | -------------------------------------------------------------------------------- /build/server/utils/get-service.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const plugin_id_1 = __importDefault(require("./plugin-id")); 7 | const getService = (name) => strapi.plugin(plugin_id_1.default).service(name); 8 | exports.default = getService; 9 | //# sourceMappingURL=get-service.js.map -------------------------------------------------------------------------------- /build/server/utils/get-service.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"get-service.js","sourceRoot":"","sources":["../../../src/server/utils/get-service.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,4DAAmC;AAEnC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3E,kBAAe,UAAU,CAAC"} -------------------------------------------------------------------------------- /build/server/utils/index.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: { 2 | getService: (name: string) => any; 3 | pluginId: string; 4 | }; 5 | export default _default; 6 | -------------------------------------------------------------------------------- /build/server/utils/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const get_service_1 = __importDefault(require("./get-service")); 7 | const plugin_id_1 = __importDefault(require("./plugin-id")); 8 | exports.default = { 9 | getService: get_service_1.default, 10 | pluginId: plugin_id_1.default, 11 | }; 12 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/server/utils/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/utils/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,gEAAuC;AACvC,4DAAmC;AAEnC,kBAAe;IACX,UAAU,EAAV,qBAAU;IACV,QAAQ,EAAR,mBAAQ;CACX,CAAC"} -------------------------------------------------------------------------------- /build/server/utils/plugin-id.d.ts: -------------------------------------------------------------------------------- 1 | declare const _default: string; 2 | export default _default; 3 | -------------------------------------------------------------------------------- /build/server/utils/plugin-id.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const package_json_1 = __importDefault(require("../../../package.json")); 7 | exports.default = package_json_1.default.strapi.name; 8 | //# sourceMappingURL=plugin-id.js.map -------------------------------------------------------------------------------- /build/server/utils/plugin-id.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"plugin-id.js","sourceRoot":"","sources":["../../../src/server/utils/plugin-id.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,yEAA8C;AAE9C,kBAAe,sBAAS,CAAC,MAAM,CAAC,IAAI,CAAC"} -------------------------------------------------------------------------------- /build/types/index.d.ts: -------------------------------------------------------------------------------- 1 | import { CustomFieldInputProps } from "strapi-typed"; 2 | export interface MapPickerInputProps extends CustomFieldInputProps { 3 | value: string | undefined; 4 | description?: any; 5 | config: { 6 | apiKey: string; 7 | defaultCenter: { 8 | lat: number; 9 | lng: number; 10 | }; 11 | favoritesPlaces?: Array<{ 12 | title: string; 13 | coordinates: { 14 | lat: number; 15 | lng: number; 16 | }; 17 | }>; 18 | }; 19 | } 20 | -------------------------------------------------------------------------------- /build/types/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /build/types/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "strapi-plugin-google-map-picker", 3 | "version": "1.0.8", 4 | "description": "Strapi maintained Custom Fields", 5 | "strapi": { 6 | "name": "google-map-picker", 7 | "description": "Google map picker custom field", 8 | "kind": "plugin", 9 | "displayName": "MapPicker" 10 | }, 11 | "peerDependencies": { 12 | "@strapi/strapi": "^4.4.0" 13 | }, 14 | "scripts": { 15 | "develop": "tsc --build -w src", 16 | "build": "tsc --build src", 17 | "prepublishOnly": "npm run build" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "https://github.com/spalz/strapi-plugin-google-map-picker.git" 22 | }, 23 | "license": "MIT", 24 | "author": { 25 | "name": "Yuriy Repin", 26 | "email": "spals@protonmail.com", 27 | "url": "https://dangercactus.io" 28 | }, 29 | "maintainers": [ 30 | { 31 | "name": "Yuriy Repin", 32 | "email": "spals@protonmail.com", 33 | "url": "https://dangercactus.io" 34 | } 35 | ], 36 | "engines": { 37 | "node": ">=14.19.1 <=18.x.x", 38 | "npm": ">=6.0.0" 39 | }, 40 | "keywords": [ 41 | "strapi", 42 | "plugin", 43 | "map", 44 | "picker", 45 | "place", 46 | "field", 47 | "google", 48 | "coordinates" 49 | ], 50 | "dependencies": { 51 | "@react-google-maps/api": "^2.13.1", 52 | "@strapi/design-system": "^1.5.0", 53 | "@strapi/helper-plugin": "^4.5.6", 54 | "@strapi/icons": "^1.5.0", 55 | "@strapi/strapi": "^4.5.6", 56 | "immer": "^9.0.18", 57 | "react-intl": "^6.2.5", 58 | "react-redux": "^8.0.5", 59 | "strapi-typed": "^1.0.15", 60 | "styled-components": "^5.3.6", 61 | "ts-node": "^10.9.1" 62 | }, 63 | "devDependencies": { 64 | "@types/node": "^18.11.18", 65 | "@types/react": "^18.0.27", 66 | "@types/react-router-dom": "^5.3.3", 67 | "@types/styled-components": "^5.1.26", 68 | "@typescript-eslint/eslint-plugin": "^5.49.0", 69 | "@typescript-eslint/parser": "^5.49.0", 70 | "eslint": "^8.32.0", 71 | "eslint-config-prettier": "^8.6.0", 72 | "eslint-import-resolver-typescript": "^3.5.3", 73 | "eslint-plugin-import": "^2.27.5", 74 | "eslint-plugin-prettier": "^4.2.1", 75 | "eslint-plugin-react": "^7.32.1", 76 | "prettier": "^2.8.3", 77 | "typescript": "^4.9.4" 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/admin/components/MapPicker/MapPickerComponent/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | import { Box } from "@strapi/design-system/Box"; 4 | import { Link } from "@strapi/design-system/Link"; 5 | import { Status } from "@strapi/design-system"; 6 | import { Typography } from "@strapi/design-system/Typography"; 7 | import { FieldLabel } from "@strapi/design-system/Field"; 8 | 9 | import MapPickerInput from "../MapPickerInput"; 10 | import usePluginConfig from "../../../hooks/use-plugin-config"; 11 | import { MapPickerInputProps } from "../../../../types"; 12 | 13 | const MapPickerComponent = (props: MapPickerInputProps) => { 14 | const { config, isLoading } = usePluginConfig(); 15 | 16 | return config && config.apiKey && config.defaultCenter ? ( 17 | 18 | ) : (!isLoading && !config.apiKey) || (!isLoading && !config.defaultCenter) ? ( 19 | <> 20 | {props.name} 21 | 22 | 23 | 24 | 25 | Missing: {!config.apiKey && apiKey} 26 | {!config.apiKey && !config.defaultCenter ? " and " : null} 27 | {!config.defaultCenter && defaultCenter} 28 | 29 | 30 |
31 | 32 | Installation Instructions (GitHub) 33 | 34 |
35 |
36 | 37 | ) : null; 38 | }; 39 | 40 | export default MapPickerComponent; 41 | -------------------------------------------------------------------------------- /src/admin/components/MapPicker/MapPickerIcon/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styled from "styled-components"; 3 | import { Icon } from "@strapi/design-system/Icon"; 4 | import { Flex } from "@strapi/design-system/Flex"; 5 | import { PinMap } from "@strapi/icons"; 6 | 7 | const IconBox = styled(Flex)` 8 | background-color: #f0f0ff; 9 | border: 1px solid #d9d8ff; 10 | svg > path { 11 | fill: #4285f4; 12 | } 13 | `; 14 | 15 | const MapPickerIcon = () => { 16 | return ( 17 | 18 | 19 | 20 | ); 21 | }; 22 | 23 | export default MapPickerIcon; 24 | -------------------------------------------------------------------------------- /src/admin/components/MapPicker/MapPickerInput/index.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import { useIntl } from "react-intl"; 3 | import styled from "styled-components"; 4 | import { Stack } from "@strapi/design-system/Stack"; 5 | import { Button } from "@strapi/design-system/Button"; 6 | import { Box } from "@strapi/design-system/Box"; 7 | import { Status } from "@strapi/design-system/Status"; 8 | import { Link } from "@strapi/design-system/Link"; 9 | import { Typography } from "@strapi/design-system/Typography"; 10 | import { Field, FieldError, FieldHint, FieldLabel } from "@strapi/design-system/Field"; 11 | import { GoogleMap, Autocomplete, MarkerF, useLoadScript } from "@react-google-maps/api"; 12 | 13 | import { getTrad } from "../../../utils"; 14 | import { MapPickerInputProps } from "../../../../types"; 15 | 16 | const LIBRARIES: Array<"places" | "geometry"> = ["places", "geometry"]; 17 | const AUTOCOMPLETE_FIELDS = ["geometry"]; 18 | 19 | const mapContainerStyle = { 20 | height: "400px", 21 | width: "100%", 22 | }; 23 | 24 | const MapPickerInput: React.FC = ({ 25 | attribute, 26 | description, 27 | error = null, 28 | intlLabel, 29 | labelAction = null, 30 | name, 31 | onChange, 32 | required = false, 33 | value, 34 | config: { apiKey, defaultCenter, favoritesPlaces }, 35 | }) => { 36 | const { isLoaded, loadError } = useLoadScript({ 37 | googleMapsApiKey: apiKey, 38 | libraries: LIBRARIES, 39 | }); 40 | 41 | const { formatMessage } = useIntl(); 42 | 43 | const [searchResult, setSearchResult] = useState(); 44 | const [marker, setMarker] = useState(false); 45 | const [location, setLocation] = useState(defaultCenter); 46 | const [center, setCenter] = useState<{ lat: number; lng: number }>(defaultCenter); 47 | const [field, setField] = useState(false); 48 | const [fieldError, setFieldError] = useState(false); 49 | 50 | const onLoadAutocomplete = (autocomplete: google.maps.places.Autocomplete) => { 51 | setSearchResult(autocomplete); 52 | }; 53 | 54 | const onPlaceChanged = () => { 55 | if (searchResult != null) { 56 | setMarker(true); 57 | const place = searchResult.getPlace(); 58 | const geometry = place?.geometry?.location; 59 | if (geometry) { 60 | setCenter({ 61 | lat: geometry.lat(), 62 | lng: geometry.lng(), 63 | }); 64 | } 65 | } 66 | }; 67 | 68 | const onMarkerDraggable = (drag: google.maps.MapMouseEvent) => { 69 | setMarker(true); 70 | if (drag && drag.latLng) { 71 | setLocation({ 72 | lat: drag.latLng.lat(), 73 | lng: drag.latLng.lng(), 74 | }); 75 | onChange?.({ 76 | target: { 77 | name, 78 | value: JSON.stringify({ 79 | lat: drag.latLng.lat(), 80 | lng: drag.latLng.lng(), 81 | }), 82 | type: attribute.type, 83 | }, 84 | }); 85 | } 86 | }; 87 | 88 | const onChangeLocation = (coordinates: { lat: number; lng: number }) => { 89 | setCenter({ 90 | lat: coordinates.lat, 91 | lng: coordinates.lng, 92 | }); 93 | }; 94 | 95 | const onChangeField = (value: { target: { value: string } }) => { 96 | if (!marker) { 97 | setMarker(true); 98 | } 99 | // eslint-disable-next-line no-useless-escape 100 | const regexCoordinates = /^((\-?|\+?)?\d+(\.\d+)?),\s((\-?|\+?)?\d+(\.\d+)?)$/gi; 101 | const val = value.target.value; 102 | const checkVal = regexCoordinates.test(val); 103 | 104 | if (checkVal) { 105 | setFieldError(false); 106 | const [lat, lng] = val.split(","); 107 | setLocation({ lat: Number(lat), lng: Number(lng) }); 108 | setCenter({ lat: Number(lat), lng: Number(lng) }); 109 | onChange?.({ 110 | target: { 111 | name, 112 | value: JSON.stringify({ lat: Number(lat), lng: Number(lng) }), 113 | type: attribute.type, 114 | }, 115 | }); 116 | } else { 117 | setFieldError(true); 118 | } 119 | }; 120 | 121 | const onLoad = React.useCallback(function onLoad() { 122 | if (value) { 123 | setMarker(true); 124 | setLocation(JSON.parse(value)); 125 | setCenter(JSON.parse(value)); 126 | } 127 | }, []); 128 | 129 | const valDisplay = (value?: string | null) => { 130 | if (value) { 131 | const val = JSON.parse(value); 132 | return `${val.lat.toFixed(6)}, ${val.lng.toFixed(6)}`; 133 | } else { 134 | return formatMessage({ 135 | id: getTrad("google-map-picker.not-selected"), 136 | defaultMessage: "Not selected", 137 | }); 138 | } 139 | }; 140 | 141 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 142 | // @ts-ignore 143 | if (loadError?.target?.id === "script-loader") { 144 | return ( 145 | <> 146 | {name} 147 | 148 | 149 | 150 | 151 | Possibly missing: middlewares 152 | 153 | 154 |
155 | 156 | Installation Instructions (GitHub) 157 | 158 |
159 |
160 | 161 | ); 162 | } 163 | 164 | if (!isLoaded) { 165 | return Loading...; 166 | } 167 | 168 | return ( 169 | 170 | 171 | 172 | 173 | {formatMessage(intlLabel)} 174 | setField(true)} className={`${field ? "active" : ""}`}> 175 | {valDisplay(value)} 176 | 177 | 178 | {field && ( 179 | onChangeField(val)} 183 | className={`${fieldError ? "error" : ""}`} 184 | /> 185 | )} 186 | 187 | 188 | {isLoaded ? ( 189 |
190 | {favoritesPlaces && ( 191 | 192 | {favoritesPlaces.map((item, idx) => { 193 | return ( 194 | onChangeLocation(item.coordinates)} 197 | > 198 | 201 | 202 | ); 203 | })} 204 | 205 | )} 206 | 207 | 208 | onMarkerDraggable(MapMouseEvent)} 214 | onLoad={() => onLoad()} 215 | options={{ 216 | zoomControl: true, 217 | maxZoom: 18, 218 | }} 219 | > 220 | 222 | onLoadAutocomplete(autocomplete) 223 | } 224 | onPlaceChanged={() => onPlaceChanged()} 225 | fields={AUTOCOMPLETE_FIELDS} 226 | > 227 | 234 | 235 | {marker ? ( 236 | onMarkerDraggable(onDragEnd)} 240 | /> 241 | ) : null} 242 | 243 | 244 |
245 | ) : ( 246 | Loading... 247 | )} 248 | 249 | 250 | 251 |
252 |
253 | ); 254 | }; 255 | 256 | const SLoading = styled.div` 257 | display: flex; 258 | background-color: ${({ theme }) => theme.colors.neutral300}; 259 | align-items: center; 260 | justify-content: center; 261 | `; 262 | 263 | const SGoogleMap = styled.div` 264 | border-radius: ${({ theme }) => theme.borderRadius}; 265 | overflow: hidden; 266 | `; 267 | 268 | const SFieldLabel = styled.div` 269 | display: flex; 270 | align-items: center; 271 | justify-content: space-between; 272 | gap: 20px; 273 | `; 274 | 275 | const SCoordinates = styled.span` 276 | display: inline-flex; 277 | align-items: center; 278 | font-weight: 600; 279 | font-size: 0.75rem; 280 | margin-left: 0.2em; 281 | cursor: pointer; 282 | color: ${({ theme }) => theme.colors.neutral800}; 283 | height: 26px; 284 | &.active { 285 | cursor: default; 286 | } 287 | `; 288 | 289 | const SFieldInput = styled.input` 290 | border: 1px solid ${({ theme }) => theme.colors.neutral200}; 291 | border-radius: ${({ theme }) => theme.borderRadius}; 292 | background: ${({ theme }) => theme.colors.neutral0}; 293 | 294 | padding: 0.2em 0.4em 0.3em; 295 | color: ${({ theme }) => theme.colors.neutral800}; 296 | font-weight: 400; 297 | flex: 1; 298 | font-size: ${12 / 14}rem; 299 | display: block; 300 | width: 100%; 301 | ::placeholder { 302 | color: ${({ theme }) => theme.colors.neutral500}; 303 | opacity: 1; 304 | } 305 | &:focus { 306 | outline: none; 307 | box-shadow: none; 308 | } 309 | &.error { 310 | border-color: ${({ theme }) => theme.colors.danger600}; 311 | } 312 | `; 313 | 314 | const SFavoritesPlaces = styled.div` 315 | display: flex; 316 | gap: 10px; 317 | margin-bottom: 10px; 318 | color: ${({ theme }) => theme.colors.primary600}; 319 | &:hover { 320 | color: ${({ theme }) => theme.colors.primary500}; 321 | } 322 | &.active { 323 | color: ${({ theme }) => theme.colors.primary700}; 324 | } 325 | `; 326 | 327 | const SFavoritesPlacesItem = styled.div``; 328 | 329 | const SSearchField = styled.input` 330 | box-sizing: border-box; 331 | border: 1px solid transparent; 332 | width: 240px; 333 | height: 40px; 334 | padding: 0 12px; 335 | border-radius: 3px; 336 | box-shadow: rgb(0 0 0 / 30%) 0px 1px 4px -1px; 337 | font-size: 14px; 338 | outline: none; 339 | text-overflow: ellipses; 340 | position: absolute; 341 | left: 200px; 342 | margin-top: 10px; 343 | `; 344 | 345 | export default MapPickerInput; 346 | -------------------------------------------------------------------------------- /src/admin/constants.ts: -------------------------------------------------------------------------------- 1 | import { pluginId } from "./utils"; 2 | 3 | export const RESOLVE_CONFIG = `${pluginId}/resolve-config`; 4 | -------------------------------------------------------------------------------- /src/admin/hooks/use-plugin-config.ts: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { useSelector, useDispatch } from "react-redux"; 3 | import { request, useNotification } from "@strapi/helper-plugin"; 4 | 5 | import { RESOLVE_CONFIG } from "../constants"; 6 | import { pluginId } from "../utils"; 7 | 8 | const usePluginConfig = () => { 9 | const dispatch = useDispatch(); 10 | const toggleNotification = useNotification(); 11 | const { config, isLoading } = useSelector((state: any) => state[`${pluginId}_config`]); 12 | 13 | useEffect(() => { 14 | if (!isLoading && !!config) { 15 | return; 16 | } 17 | 18 | const abortController = new AbortController(); 19 | 20 | const fetchData = async () => { 21 | try { 22 | const endpoint = `/${pluginId}/config`; 23 | const data = await request(endpoint, { 24 | method: "GET", 25 | signal: abortController.signal, 26 | }); 27 | 28 | return data ?? {}; 29 | } catch (err) { 30 | if (!abortController.signal.aborted) { 31 | toggleNotification({ 32 | type: "warning", 33 | message: { id: "notification.error" }, 34 | }); 35 | 36 | return err; 37 | } 38 | } 39 | }; 40 | 41 | fetchData().then((data) => dispatch({ type: RESOLVE_CONFIG, data })); 42 | 43 | return () => abortController.abort(); 44 | }, [dispatch, toggleNotification]); 45 | 46 | return { config, isLoading }; 47 | }; 48 | 49 | export default usePluginConfig; 50 | -------------------------------------------------------------------------------- /src/admin/index.tsx: -------------------------------------------------------------------------------- 1 | import { prefixPluginTranslations } from "@strapi/helper-plugin"; 2 | // import { get } from "lodash"; 3 | import { StrapiAdminInstance } from "strapi-typed"; 4 | 5 | import MapPickerIcon from "./components/MapPicker/MapPickerIcon"; 6 | import { getTrad, pluginId } from "./utils"; 7 | import reducers from "./reducers"; 8 | import { TranslationKey } from "./translations"; 9 | 10 | export default { 11 | register(app: StrapiAdminInstance) { 12 | app.customFields.register({ 13 | name: "place", 14 | pluginId: pluginId, 15 | type: "string", 16 | icon: MapPickerIcon, 17 | intlLabel: { 18 | id: getTrad("google-map-picker.label"), 19 | defaultMessage: "Place", 20 | }, 21 | intlDescription: { 22 | id: getTrad("google-map-picker.description"), 23 | defaultMessage: "Select place", 24 | }, 25 | components: { 26 | Input: async () => import("./components/MapPicker/MapPickerComponent"), 27 | }, 28 | options: { 29 | base: [], 30 | advanced: [ 31 | { 32 | intlLabel: { 33 | id: getTrad("google-map-picker.options.advanced.regex"), 34 | defaultMessage: "RegExp pattern", 35 | }, 36 | name: "regex", 37 | type: "text", 38 | description: { 39 | id: getTrad("google-map-picker.options.advanced.regex.description"), 40 | defaultMessage: "The text of the regular expression", 41 | }, 42 | }, 43 | { 44 | sectionTitle: { 45 | id: "global.settings", 46 | defaultMessage: "Settings", 47 | }, 48 | items: [ 49 | { 50 | name: "required", 51 | type: "checkbox", 52 | intlLabel: { 53 | id: getTrad("google-map-picker.options.advanced.requiredField"), 54 | defaultMessage: "Required field", 55 | }, 56 | description: { 57 | id: getTrad("google-map-picker.options.advanced.requiredField.description"), 58 | defaultMessage: "You won't be able to create an entry if this field is empty", 59 | }, 60 | }, 61 | ], 62 | }, 63 | ], 64 | validator: () => ({}), 65 | }, 66 | }); 67 | app.addReducers(reducers); 68 | }, 69 | async registerTrads({ locales }: { locales: Array }) { 70 | const importedTrads = await Promise.all( 71 | locales.map((locale: string) => { 72 | return import(`./translations/${locale}.json`) 73 | .then(({ default: data }) => { 74 | return { 75 | data: prefixPluginTranslations(data, pluginId), 76 | locale, 77 | }; 78 | }) 79 | .catch(() => { 80 | return { 81 | data: {}, 82 | locale, 83 | }; 84 | }); 85 | }) 86 | ); 87 | 88 | return Promise.resolve(importedTrads); 89 | }, 90 | }; 91 | -------------------------------------------------------------------------------- /src/admin/reducers/config.ts: -------------------------------------------------------------------------------- 1 | import produce from "immer"; 2 | 3 | import { RESOLVE_CONFIG } from "../constants"; 4 | 5 | const initialState = { 6 | isLoading: true, 7 | config: { 8 | apiKey: null, 9 | defaultCenter: null, 10 | favoritesPlaces: null, 11 | }, 12 | }; 13 | 14 | const configReducer = produce((state = initialState, action) => { 15 | switch (action.type) { 16 | case RESOLVE_CONFIG: { 17 | state.isLoading = false; 18 | state.config = action.data; 19 | break; 20 | } 21 | 22 | default: 23 | return state; 24 | } 25 | 26 | return state; 27 | }); 28 | 29 | export default configReducer; 30 | -------------------------------------------------------------------------------- /src/admin/reducers/index.ts: -------------------------------------------------------------------------------- 1 | import { pluginId } from "../utils"; 2 | import config from "./config"; 3 | 4 | const reducers = { 5 | [`${pluginId}_config`]: config, 6 | }; 7 | 8 | export default reducers; 9 | -------------------------------------------------------------------------------- /src/admin/translations/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "google-map-picker.label": "Place", 3 | "google-map-picker.description": "Select any place on google map", 4 | "google-map-picker.search": "Search", 5 | "google-map-picker.not-selected": "Not selected", 6 | "google-map-picker.settings": "Settings", 7 | "google-map-picker.options.advanced.regex": "RegExp pattern", 8 | "google-map-picker.options.advanced.regex.description": "Provide a regular expression to validate the coordinates", 9 | "google-map-picker.options.advanced.requiredField": "Required field", 10 | "google-map-picker.options.advanced.requiredField.description": "You won't be able to create an entry if this field is empty", 11 | "google-map-picker.toggle.aria-label": "Place picker toggle", 12 | "google-map-picker.input.aria-label": "Place picker input" 13 | } 14 | -------------------------------------------------------------------------------- /src/admin/translations/index.ts: -------------------------------------------------------------------------------- 1 | export type TranslationKey = "ru" | "en"; 2 | -------------------------------------------------------------------------------- /src/admin/translations/ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "google-map-picker.label": "Точка на карте", 3 | "google-map-picker.description": "Выбор точки на карте", 4 | "google-map-picker.search": "Поиск", 5 | "google-map-picker.not-selected": "Не выбрано", 6 | "google-map-picker.settings": "Настройки", 7 | "google-map-picker.options.advanced.regex": "Шаблон регулярного выражения", 8 | "google-map-picker.options.advanced.regex.description": "Добавьте регулярное выражение для проверки координат", 9 | "google-map-picker.options.advanced.requiredField": "Обязательное поле", 10 | "google-map-picker.options.advanced.requiredField.description": "Вы не сможете создать запись, если это поле пусто", 11 | "google-map-picker.toggle.aria-label": "Переключатель выбора места", 12 | "google-map-picker.input.aria-label": "Поле выбора места" 13 | } 14 | -------------------------------------------------------------------------------- /src/admin/utils/get-trad.ts: -------------------------------------------------------------------------------- 1 | import { pluginId } from "./"; 2 | 3 | const getTrad = (id: string) => `${pluginId}.${id}`; 4 | 5 | export default getTrad; 6 | -------------------------------------------------------------------------------- /src/admin/utils/index.ts: -------------------------------------------------------------------------------- 1 | export { default as getTrad } from "./get-trad"; 2 | export { default as pluginId } from "./plugin-id"; 3 | export { default as pluginName } from "./plugin-name"; 4 | -------------------------------------------------------------------------------- /src/admin/utils/plugin-id.ts: -------------------------------------------------------------------------------- 1 | import pluginPkg from "../../../package.json"; 2 | 3 | export default pluginPkg.strapi.name; 4 | -------------------------------------------------------------------------------- /src/admin/utils/plugin-name.ts: -------------------------------------------------------------------------------- 1 | import pluginPkg from "../../../package.json"; 2 | 3 | export default pluginPkg.strapi.displayName; 4 | -------------------------------------------------------------------------------- /src/server/config.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | export default { 4 | default: { 5 | apiKey: null, 6 | defaultCenter: null, 7 | favoritesPlaces: null, 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /src/server/controllers/google-map-picker.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import getService from "../utils/get-service"; 4 | 5 | export default { 6 | async config(ctx: any) { 7 | const config = await getService("plugin").getConfig(); 8 | 9 | ctx.send(config); 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /src/server/controllers/index.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import googleMapPicker from "./google-map-picker"; 4 | 5 | export default { 6 | "google-map-picker": googleMapPicker, 7 | }; 8 | -------------------------------------------------------------------------------- /src/server/helpers/pluginConfig.ts: -------------------------------------------------------------------------------- 1 | import pluginId from "../utils/plugin-id"; 2 | 3 | const getPluginConfig = (strapi: any) => { 4 | return strapi.plugin(pluginId).config; 5 | }; 6 | 7 | export default getPluginConfig; 8 | -------------------------------------------------------------------------------- /src/server/index.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import register from "./register"; 4 | import config from "./config"; 5 | import routes from "./routes"; 6 | import controllers from "./controllers"; 7 | import services from "./services"; 8 | 9 | export default { 10 | register, 11 | config, 12 | routes, 13 | controllers, 14 | services, 15 | }; 16 | -------------------------------------------------------------------------------- /src/server/register.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import { Strapi } from "@strapi/strapi"; 4 | 5 | import pluginId from "./utils/plugin-id"; 6 | 7 | export default ({ strapi }: { strapi: Strapi }) => { 8 | strapi.customFields.register({ 9 | name: "place", 10 | plugin: pluginId, 11 | type: "string", 12 | // apiKey: strapi.plugin(pluginId).config("apiKey"), 13 | // defaultCenter: strapi.plugin(pluginId).config("defaultCenter"), 14 | // favoritesPlaces: strapi.plugin(pluginId).config("favoritesPlaces"), 15 | }); 16 | }; 17 | -------------------------------------------------------------------------------- /src/server/routes/admin-api.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | export default { 4 | type: "admin", 5 | routes: [ 6 | { 7 | method: "GET", 8 | path: "/config", 9 | handler: "google-map-picker.config", 10 | config: { 11 | policies: ["admin::isAuthenticatedAdmin"], 12 | }, 13 | }, 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /src/server/routes/index.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import admin from "./admin-api"; 4 | 5 | export default { 6 | "admin-api": admin, 7 | }; 8 | -------------------------------------------------------------------------------- /src/server/services/index.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import plugin from "./plugin"; 4 | 5 | export default { 6 | plugin, 7 | }; 8 | -------------------------------------------------------------------------------- /src/server/services/plugin.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import { Strapi } from "@strapi/strapi"; 4 | 5 | import config from "../config"; 6 | import pluginId from "../utils/plugin-id"; 7 | 8 | export default ({ strapi }: { strapi: Strapi }) => ({ 9 | async getConfig() { 10 | const data = await strapi.config.get(`plugin.${pluginId}`, config.default); 11 | 12 | return data; 13 | }, 14 | }); 15 | -------------------------------------------------------------------------------- /src/server/utils/get-service.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import pluginId from "./plugin-id"; 4 | 5 | const getService = (name: string) => strapi.plugin(pluginId).service(name); 6 | 7 | export default getService; 8 | -------------------------------------------------------------------------------- /src/server/utils/index.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import getService from "./get-service"; 4 | import pluginId from "./plugin-id"; 5 | 6 | export default { 7 | getService, 8 | pluginId, 9 | }; 10 | -------------------------------------------------------------------------------- /src/server/utils/plugin-id.ts: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import pluginPkg from "../../../package.json"; 4 | 5 | export default pluginPkg.strapi.name; 6 | -------------------------------------------------------------------------------- /src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "commonjs", 5 | "lib": ["dom", "dom.iterable", "esnext"], 6 | "jsx": "react", 7 | "declaration": true, 8 | "declarationMap": false, 9 | "sourceMap": true, 10 | "isolatedModules": true, 11 | "strict": true, 12 | "moduleResolution": "node", 13 | "noUnusedLocals": true, 14 | "noUnusedParameters": true, 15 | "allowSyntheticDefaultImports": true, 16 | "esModuleInterop": true, 17 | "removeComments": true, 18 | "skipLibCheck": true, 19 | "forceConsistentCasingInFileNames": true, 20 | "rootDir": ".", 21 | "outDir": "../build/", 22 | "resolveJsonModule": true, 23 | "downlevelIteration": true, 24 | "incremental": true, 25 | "allowJs": true 26 | }, 27 | "references": [ 28 | { 29 | "path": "../" 30 | } 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /src/types/globals.d.ts: -------------------------------------------------------------------------------- 1 | declare var strapi: any; 2 | 3 | declare module "*.svg" { 4 | const content: any; 5 | export default content; 6 | } 7 | -------------------------------------------------------------------------------- /src/types/index.ts: -------------------------------------------------------------------------------- 1 | import { CustomFieldInputProps } from "strapi-typed"; 2 | 3 | export interface MapPickerInputProps extends CustomFieldInputProps { 4 | value: string | undefined; 5 | description?: any; 6 | config: { 7 | apiKey: string; 8 | defaultCenter: { 9 | lat: number; 10 | lng: number; 11 | }; 12 | favoritesPlaces?: Array<{ title: string; coordinates: { lat: number; lng: number } }>; 13 | }; 14 | } 15 | -------------------------------------------------------------------------------- /src/types/strapi-design-system.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@strapi/design-system"; 2 | // 3 | declare module "@strapi/design-system/Box"; 4 | declare module "@strapi/design-system/Button"; 5 | declare module "@strapi/design-system/FieldHint"; 6 | declare module "@strapi/design-system/FieldError"; 7 | declare module "@strapi/design-system/FieldLabel"; 8 | declare module "@strapi/design-system/Card"; 9 | declare module "@strapi/design-system/Dialog"; 10 | declare module "@strapi/design-system/Divider"; 11 | declare module "@strapi/design-system/Flex"; 12 | declare module "@strapi/design-system/FocusTrap"; 13 | declare module "@strapi/design-system/Grid"; 14 | declare module "@strapi/design-system/Icon"; 15 | declare module "@strapi/design-system/IconButton"; 16 | declare module "@strapi/design-system/Layout"; 17 | declare module "@strapi/design-system/Loader"; 18 | declare module "@strapi/design-system/Link"; 19 | declare module "@strapi/design-system/Main"; 20 | declare module "@strapi/design-system/ModalLayout"; 21 | declare module "@strapi/design-system/Pagination"; 22 | declare module "@strapi/design-system/Portal"; 23 | declare module "@strapi/design-system/ProgressBar"; 24 | declare module "@strapi/design-system/Searchbar"; 25 | declare module "@strapi/design-system/Select"; 26 | declare module "@strapi/design-system/Stack"; 27 | declare module "@strapi/design-system/Status"; 28 | declare module "@strapi/design-system/Tabs"; 29 | declare module "@strapi/design-system/Textarea"; 30 | declare module "@strapi/design-system/TextInput"; 31 | declare module "@strapi/design-system/ToggleInput"; 32 | declare module "@strapi/design-system/Tooltip"; 33 | declare module "@strapi/design-system/Typography"; 34 | declare module "@strapi/design-system/EmptyStateLayout"; 35 | declare module "@strapi/design-system/Tag"; 36 | declare module "@strapi/design-system/Badge"; 37 | declare module "@strapi/design-system/Table"; 38 | declare module "@strapi/design-system/VisuallyHidden"; 39 | declare module "@strapi/design-system/Field"; 40 | -------------------------------------------------------------------------------- /src/types/strapi-helper-plugin.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@strapi/helper-plugin"; 2 | -------------------------------------------------------------------------------- /src/types/strapi-icons.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@strapi/icons"; 2 | // 3 | declare module "@strapi/icons/ArrowRight"; 4 | declare module "@strapi/icons/Check"; 5 | declare module "@strapi/icons/CheckCircle"; 6 | declare module "@strapi/icons/Cross"; 7 | declare module "@strapi/icons/Duplicate"; 8 | declare module "@strapi/icons/ExclamationMarkCircle"; 9 | declare module "@strapi/icons/Information"; 10 | declare module "@strapi/icons/Plus"; 11 | declare module "@strapi/icons/Trash"; 12 | declare module "@strapi/icons/Pencil"; 13 | declare module "@strapi/icons/CloudUpload"; 14 | declare module "@strapi/icons/Link"; 15 | -------------------------------------------------------------------------------- /src/types/strapi-parts.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@strapi/parts/Icon"; 2 | -------------------------------------------------------------------------------- /src/types/strapi-utils.d.ts: -------------------------------------------------------------------------------- 1 | declare module "@strapi/utils"; 2 | -------------------------------------------------------------------------------- /strapi-admin.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./build/admin').default; 4 | -------------------------------------------------------------------------------- /strapi-server.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = require('./build/server'); 4 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "rootDir": ".", 4 | "outDir": ".", // if out path for a file is same as its src path, nothing will be emitted 5 | "resolveJsonModule": true, 6 | "composite": true // required on the dependency project for references to work 7 | }, 8 | "files": [ 9 | // by whitelisting the files to include, TS won't automatically 10 | "package.json" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /tsconfig.tsbuildinfo: -------------------------------------------------------------------------------- 1 | {"program":{"fileNames":["./node_modules/typescript/lib/lib.d.ts","./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.webworker.importscripts.d.ts","./node_modules/typescript/lib/lib.scripthost.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./package.json","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/accepts/index.d.ts","./node_modules/@types/argparse/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/bonjour/index.d.ts","./node_modules/keyv/src/index.d.ts","./node_modules/@types/http-cache-semantics/index.d.ts","./node_modules/@types/responselike/index.d.ts","./node_modules/@types/cacheable-request/index.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/connect-history-api-fallback/index.d.ts","./node_modules/@types/content-disposition/index.d.ts","./node_modules/@types/cookie/index.d.ts","./node_modules/@types/keygrip/index.d.ts","./node_modules/@types/mime/mime.d.ts","./node_modules/@types/mime/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/@types/cookies/index.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/eslint/helpers.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/eslint/index.d.ts","./node_modules/@types/eslint-scope/index.d.ts","./node_modules/@types/fined/index.d.ts","./node_modules/@types/formidable/formidable.d.ts","./node_modules/@types/formidable/parsers/index.d.ts","./node_modules/@types/formidable/persistentfile.d.ts","./node_modules/@types/formidable/volatilefile.d.ts","./node_modules/@types/formidable/formidableerror.d.ts","./node_modules/@types/formidable/index.d.ts","./node_modules/@types/minimatch/index.d.ts","./node_modules/@types/glob/index.d.ts","./node_modules/@types/google.maps/index.d.ts","./node_modules/@types/history/domutils.d.ts","./node_modules/@types/history/createbrowserhistory.d.ts","./node_modules/@types/history/createhashhistory.d.ts","./node_modules/@types/history/creatememoryhistory.d.ts","./node_modules/@types/history/locationutils.d.ts","./node_modules/@types/history/pathutils.d.ts","./node_modules/@types/history/index.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/hoist-non-react-statics/index.d.ts","./node_modules/@types/html-minifier-terser/index.d.ts","./node_modules/@types/http-assert/index.d.ts","./node_modules/@types/http-errors/index.d.ts","./node_modules/@types/http-proxy/index.d.ts","./node_modules/rxjs/internal/subscription.d.ts","./node_modules/rxjs/internal/types.d.ts","./node_modules/rxjs/internal/subscriber.d.ts","./node_modules/rxjs/internal/operator.d.ts","./node_modules/rxjs/internal/observable/iif.d.ts","./node_modules/rxjs/internal/observable/throwerror.d.ts","./node_modules/rxjs/internal/observable.d.ts","./node_modules/rxjs/internal/subject.d.ts","./node_modules/rxjs/internal/observable/connectableobservable.d.ts","./node_modules/rxjs/internal/operators/groupby.d.ts","./node_modules/rxjs/internal/symbol/observable.d.ts","./node_modules/rxjs/internal/behaviorsubject.d.ts","./node_modules/rxjs/internal/replaysubject.d.ts","./node_modules/rxjs/internal/asyncsubject.d.ts","./node_modules/rxjs/internal/scheduler.d.ts","./node_modules/rxjs/internal/scheduler/action.d.ts","./node_modules/rxjs/internal/scheduler/asyncscheduler.d.ts","./node_modules/rxjs/internal/scheduler/asyncaction.d.ts","./node_modules/rxjs/internal/scheduler/asapscheduler.d.ts","./node_modules/rxjs/internal/scheduler/asap.d.ts","./node_modules/rxjs/internal/scheduler/async.d.ts","./node_modules/rxjs/internal/scheduler/queuescheduler.d.ts","./node_modules/rxjs/internal/scheduler/queue.d.ts","./node_modules/rxjs/internal/scheduler/animationframescheduler.d.ts","./node_modules/rxjs/internal/scheduler/animationframe.d.ts","./node_modules/rxjs/internal/scheduler/virtualtimescheduler.d.ts","./node_modules/rxjs/internal/notification.d.ts","./node_modules/rxjs/internal/util/pipe.d.ts","./node_modules/rxjs/internal/util/noop.d.ts","./node_modules/rxjs/internal/util/identity.d.ts","./node_modules/rxjs/internal/util/isobservable.d.ts","./node_modules/rxjs/internal/util/argumentoutofrangeerror.d.ts","./node_modules/rxjs/internal/util/emptyerror.d.ts","./node_modules/rxjs/internal/util/objectunsubscribederror.d.ts","./node_modules/rxjs/internal/util/unsubscriptionerror.d.ts","./node_modules/rxjs/internal/util/timeouterror.d.ts","./node_modules/rxjs/internal/observable/bindcallback.d.ts","./node_modules/rxjs/internal/observable/bindnodecallback.d.ts","./node_modules/rxjs/internal/innersubscriber.d.ts","./node_modules/rxjs/internal/outersubscriber.d.ts","./node_modules/rxjs/internal/observable/combinelatest.d.ts","./node_modules/rxjs/internal/observable/concat.d.ts","./node_modules/rxjs/internal/observable/defer.d.ts","./node_modules/rxjs/internal/observable/empty.d.ts","./node_modules/rxjs/internal/observable/forkjoin.d.ts","./node_modules/rxjs/internal/observable/from.d.ts","./node_modules/rxjs/internal/observable/fromevent.d.ts","./node_modules/rxjs/internal/observable/fromeventpattern.d.ts","./node_modules/rxjs/internal/observable/generate.d.ts","./node_modules/rxjs/internal/observable/interval.d.ts","./node_modules/rxjs/internal/observable/merge.d.ts","./node_modules/rxjs/internal/observable/never.d.ts","./node_modules/rxjs/internal/observable/of.d.ts","./node_modules/rxjs/internal/observable/onerrorresumenext.d.ts","./node_modules/rxjs/internal/observable/pairs.d.ts","./node_modules/rxjs/internal/observable/partition.d.ts","./node_modules/rxjs/internal/observable/race.d.ts","./node_modules/rxjs/internal/observable/range.d.ts","./node_modules/rxjs/internal/observable/timer.d.ts","./node_modules/rxjs/internal/observable/using.d.ts","./node_modules/rxjs/internal/observable/zip.d.ts","./node_modules/rxjs/internal/scheduled/scheduled.d.ts","./node_modules/rxjs/internal/config.d.ts","./node_modules/rxjs/index.d.ts","./node_modules/@types/through/index.d.ts","./node_modules/@types/inquirer/lib/objects/choice.d.ts","./node_modules/@types/inquirer/lib/objects/separator.d.ts","./node_modules/@types/inquirer/lib/objects/choices.d.ts","./node_modules/@types/inquirer/lib/utils/screen-manager.d.ts","./node_modules/@types/inquirer/lib/prompts/base.d.ts","./node_modules/@types/inquirer/lib/utils/paginator.d.ts","./node_modules/@types/inquirer/lib/prompts/checkbox.d.ts","./node_modules/@types/inquirer/lib/prompts/confirm.d.ts","./node_modules/@types/inquirer/lib/prompts/editor.d.ts","./node_modules/@types/inquirer/lib/prompts/expand.d.ts","./node_modules/@types/inquirer/lib/prompts/input.d.ts","./node_modules/@types/inquirer/lib/prompts/list.d.ts","./node_modules/@types/inquirer/lib/prompts/number.d.ts","./node_modules/@types/inquirer/lib/prompts/password.d.ts","./node_modules/@types/inquirer/lib/prompts/rawlist.d.ts","./node_modules/@types/inquirer/lib/ui/baseui.d.ts","./node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts","./node_modules/@types/inquirer/lib/ui/prompt.d.ts","./node_modules/@types/inquirer/lib/utils/events.d.ts","./node_modules/@types/inquirer/lib/utils/readline.d.ts","./node_modules/@types/inquirer/lib/utils/utils.d.ts","./node_modules/@types/inquirer/index.d.ts","./node_modules/@types/interpret/index.d.ts","./node_modules/@types/js-levenshtein/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/keyv/index.d.ts","./node_modules/@types/koa-compose/index.d.ts","./node_modules/@types/koa/index.d.ts","./node_modules/@types/koa-bodyparser/index.d.ts","./node_modules/@types/koa__cors/index.d.ts","./node_modules/@types/liftoff/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/@types/long/index.d.ts","./node_modules/@types/parse-json/index.d.ts","./node_modules/redux/index.d.ts","./node_modules/@types/react-redux/index.d.ts","./node_modules/@types/react-router/index.d.ts","./node_modules/@types/react-router-dom/index.d.ts","./node_modules/@types/react-transition-group/transition.d.ts","./node_modules/@types/react-transition-group/csstransition.d.ts","./node_modules/@types/react-transition-group/transitiongroup.d.ts","./node_modules/@types/react-transition-group/switchtransition.d.ts","./node_modules/@types/react-transition-group/config.d.ts","./node_modules/@types/react-transition-group/index.d.ts","./node_modules/@types/retry/index.d.ts","./node_modules/@types/scheduler/index.d.ts","./node_modules/@types/semver/classes/semver.d.ts","./node_modules/@types/semver/functions/parse.d.ts","./node_modules/@types/semver/functions/valid.d.ts","./node_modules/@types/semver/functions/clean.d.ts","./node_modules/@types/semver/functions/inc.d.ts","./node_modules/@types/semver/functions/diff.d.ts","./node_modules/@types/semver/functions/major.d.ts","./node_modules/@types/semver/functions/minor.d.ts","./node_modules/@types/semver/functions/patch.d.ts","./node_modules/@types/semver/functions/prerelease.d.ts","./node_modules/@types/semver/functions/compare.d.ts","./node_modules/@types/semver/functions/rcompare.d.ts","./node_modules/@types/semver/functions/compare-loose.d.ts","./node_modules/@types/semver/functions/compare-build.d.ts","./node_modules/@types/semver/functions/sort.d.ts","./node_modules/@types/semver/functions/rsort.d.ts","./node_modules/@types/semver/functions/gt.d.ts","./node_modules/@types/semver/functions/lt.d.ts","./node_modules/@types/semver/functions/eq.d.ts","./node_modules/@types/semver/functions/neq.d.ts","./node_modules/@types/semver/functions/gte.d.ts","./node_modules/@types/semver/functions/lte.d.ts","./node_modules/@types/semver/functions/cmp.d.ts","./node_modules/@types/semver/functions/coerce.d.ts","./node_modules/@types/semver/classes/comparator.d.ts","./node_modules/@types/semver/classes/range.d.ts","./node_modules/@types/semver/functions/satisfies.d.ts","./node_modules/@types/semver/ranges/max-satisfying.d.ts","./node_modules/@types/semver/ranges/min-satisfying.d.ts","./node_modules/@types/semver/ranges/to-comparators.d.ts","./node_modules/@types/semver/ranges/min-version.d.ts","./node_modules/@types/semver/ranges/valid.d.ts","./node_modules/@types/semver/ranges/outside.d.ts","./node_modules/@types/semver/ranges/gtr.d.ts","./node_modules/@types/semver/ranges/ltr.d.ts","./node_modules/@types/semver/ranges/intersects.d.ts","./node_modules/@types/semver/ranges/simplify.d.ts","./node_modules/@types/semver/ranges/subset.d.ts","./node_modules/@types/semver/internals/identifiers.d.ts","./node_modules/@types/semver/index.d.ts","./node_modules/@types/serve-index/index.d.ts","./node_modules/@types/set-cookie-parser/index.d.ts","./node_modules/@types/sockjs/index.d.ts","./node_modules/@types/styled-components/index.d.ts","./node_modules/@types/use-sync-external-store/index.d.ts","./node_modules/@types/ws/index.d.ts"],"fileInfos":["2dc8c927c9c162a773c6bb3cdc4f3286c23f10eedc67414028f9cb5951610f60",{"version":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},{"version":"d37dd63764ad93250b58e5941acd6587ecb6120e9f875a242fdd638ccea76719","signature":"d2fc4d1bfa792b7f2bfec90f7c92cfa1106ba5c8dcbbbc904eae089a4889e97c"},"7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"ca72190df0eb9b09d4b600821c8c7b6c9747b75a1c700c4d57dc0bb72abc074c","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"bb65c6267c5d6676be61acbf6604cf0a4555ac4b505df58ac15c831fcbff4e3e","affectsGlobalScope":true},"374ca798f244e464346f14301dc2a8b4b111af1a83b49fffef5906c338a1f922","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","dab86d9604fe40854ef3c0a6f9e8948873dc3509213418e5e457f410fd11200f","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","d903fafe96674bc0b2ac38a5be4a8fc07b14c2548d1cdb165a80ea24c44c0c54","5eec82ac21f84d83586c59a16b9b8502d34505d1393393556682fe7e7fde9ef2","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","8d3c583a07e0c37e876908c2d5da575019f689df8d9fa4c081d99119d53dba22","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"d076fede3cb042e7b13fc29442aaa03a57806bc51e2b26a67a01fbc66a7c0c12","7c013aa892414a7fdcfd861ae524a668eaa3ede8c7c0acafaf611948122c8d93","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","fd93cee2621ff42dabe57b7be402783fd1aa69ece755bcba1e0290547ae60513","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","223c37f62ce09a3d99e77498acdee7b2705a4ae14552fbdb4093600cd9164f3f",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"e10177274a35a9d07c825615340b2fcde2f610f53f3fb40269fd196b4288dda6","4c8525f256873c7ba3135338c647eaf0ca7115a1a2805ae2d0056629461186ce","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"4c50342e1b65d3bee2ed4ab18f84842d5724ad11083bd666d8705dc7a6079d80","affectsGlobalScope":true},"06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"8dbe725f8d237e70310977afcfa011629804d101ebaa0266cafda6b61ad72236","6738101ae8e56cd3879ab3f99630ada7d78097fc9fd334df7e766216778ca219","dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","d78e5898c8de5e0f934eee83f680262de005caa268d137101b833fd932f95e07","92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"c5dd1fef4cd4aaffc78786047bed5ae6fc1200d19a1946cbc4e2d3ed4d62c8fa","affectsGlobalScope":true},"56cbe80e6c42d7e6e66b6f048add8b01c663797b843a074d9f19c4a3d63a269a","204dbe6c72467fb14bbe8f06510b11fb541b6ce29580c6e10ebd3bdb2eb0c1f9","117ffeecf6c55e25b6446f449ad079029b5e7317399b0a693858faaaea5ca73e","ce013414484233b24f42c0fcfca48a60bb66ab4e13c82953662305e8f1ee4925","5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","eb96a2321f717bccc3e49e104e299152984b927ea4546b559ae631c06565819c","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","78828b06c0d3b586954015e9ebde5480b009e166c71244763bda328ec0920f41",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"946bd1737d9412395a8f24414c70f18660b84a75a12b0b448e6eb1a2161d06dd","f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","3adc8ac088388fd10b0e9cd3fa08abbebed9172577807394a241466ccb98f411","e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a","a3ca095da123d2d556d663733932d71874e6c4b4874c76118463dedea4b0d2ad","ac9788076b6b9e4514ff1286de37bf90f8e2c1dd7a772c2e746232eaa4184233","49d41b881040e728bc28d463806cdff98b64c69e9da721adcf0ec34345f691b5","0623c302651761724ec920bb95a27d9d47ea71f7e6ef7e4d6f60bd05c86cf50c","b6e465de1852a328392b432b13ee8334b209f3493053e85aa8f0b5f78368d634","afc87a77703487af971af992374f59a6cc729411cd8498a492eb14cce49f092b","2c26ca5810ebbf0129a279811816d6fd703b79b087c1bd723e3dd9bfe75681da","963d59066dd6742da1918a6213a209bcc205b8ee53b1876ee2b4e6d80f97c85e","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33",{"version":"f9f06da7b45c7b9f09ca6e76c73d6aa37af8cca9d4171573d3eb72476f012210","affectsGlobalScope":true},{"version":"271cde49dfd9b398ccc91bb3aaa43854cf76f4d14e10fed91cbac649aa6cbc63","affectsGlobalScope":true},"2bcecd31f1b4281710c666843fc55133a0ee25b143e59f35f49c62e168123f4b","a6273756fa05f794b64fe1aff45f4371d444f51ed0257f9364a8b25f3501915d","9c4e644fe9bf08d93c93bd892705842189fe345163f8896849d5964d21b56b78","25d91fb9ed77a828cc6c7a863236fb712dafcd52f816eec481bd0c1f589f4404","4cd14cea22eed1bfb0dc76183e56989f897ac5b14c0e2a819e5162eafdcfe243","8d32432f68ca4ce93ad717823976f2db2add94c70c19602bf87ee67fe51df48b",{"version":"bbdf156fea2fabed31a569445835aeedcc33643d404fcbaa54541f06c109df3f","affectsGlobalScope":true},"1c29793071152b207c01ea1954e343be9a44d85234447b2b236acae9e709a383","6a386ff939f180ae8ef064699d8b7b6e62bc2731a62d7fbf5e02589383838dea","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"d11a5d3967290ea6be7e6d7667c4673a7626cfaa32cfc68101000d2b218606ab","affectsGlobalScope":true},"bfe1b52cf71aea9bf8815810cc5d9490fa9617313e3d3c2ee3809a28b80d0bb4","ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","e98185f4249720ace1921d59c1ff4612fa5c633a183fc9bf28e2e7b8e3c7fd51","f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","c1d5cc0286eef54f6246a972ec1720efbba6b7b0a53a303e1f2067ca229ecd16","6cb35d83d21a7e72bd00398c93302749bcd38349d0cc5e76ff3a90c6d1498a4d",{"version":"369dd7668d0e6c91550bce0c325f37ce6402e5dd40ecfca66fbb5283e23e559d","affectsGlobalScope":true},"2632057d8b983ee33295566088c080384d7d69a492bc60b008d6a6dfd3508d6b","4bf71cf2a94492fc71e97800bdf2bcb0a9a0fa5fce921c8fe42c67060780cbfa","0996ff06f64cb05b6dac158a6ada2e16f8c2ccd20f9ff6f3c3e871f1ba5fb6d9","5c492d01a19fea5ebfff9d27e786bc533e5078909521ca17ae41236f16f9686a","a6ee930b81c65ec79aca49025b797817dde6f2d2e9b0e0106f0844e18e2cc819","84fce15473e993e6b656db9dd3c9196b80f545647458e6621675e840fd700d29","7d5336ee766aa72dffb1cc2a515f61d18a4fb61b7a2757cbccfb7b286b783dfb","63e96248ab63f6e7a86e31aa3e654ed6de1c3f99e3b668e04800df05874e8b77","80da0f61195385d22b666408f6cccbc261c066d401611a286f07dfddf7764017","06a20cc7d937074863861ea1159ac783ff97b13952b4b5d1811c7d8ab5c94776","ab6de4af0e293eae73b67dad251af097d7bcc0b8b62de84e3674e831514cb056","18cbd79079af97af66c9c07c61b481fce14a4e7282eca078c474b40c970ba1d0","e7b45405689d87e745a217b648d3646fb47a6aaba9c8d775204de90c7ea9ff35","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","bcfaca4a8ff50f57fd36df91fba5d34056883f213baff7192cbfc4d3805d2084","76a564b360b267502219a89514953058494713ee0923a63b2024e542c18b40e5","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","a20629551ed7923f35f7556c4c15d0c8b2ebe7afaa68ceaab079a1707ba64be2","d6de66600c97cd499526ddecea6e12166ab1c0e8d9bf36fb2339fd39c8b3372a","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","a8932876de2e3138a5a27f9426b225a4d27f0ba0a1e2764ba20930b4c3faf4b9","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","027d600e00c5f5e1816c207854285d736f2f5fa28276e2829db746d5d6811ba1","5443113a16ef378446e08d6500bb48b35de582426459abdb5c9704f5c7d327d9","0fb581ecb53304a3c95bb930160b4fa610537470cce850371cbaad5a458ca0d9","7da4e290c009d7967343a7f8c3f145a3d2c157c62483362183ba9f637a536489","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","914560d0c4c6aa947cfe7489fe970c94ba25383c414bbe0168b44fd20dbf0df4","4fb3405055b54566dea2135845c3a776339e7e170d692401d97fd41ad9a20e5d","8d607832a6ef0eac30657173441367dd76c96bf7800d77193428b922e060c3af","20ff7207f0bb5cdde5fee8e83315ade7e5b8100cfa2087d20d39069a3d7d06f4","7ca4c534eab7cff43d81327e369a23464bc37ef38ce5337ceff24a42c6c84eb2","5252dec18a34078398be4e321dee884dc7f47930e5225262543a799b591b36d2","23caed4dff98bd28157d2b798b43f1dfefe727f18641648c01ce4e0e929a1630","f67e013d5374826596d7c23dbae1cdb14375a27cd72e16c5fb46a4b445059329","ea3401b70e2302683bbf4c18b69ef2292b60f4d8f8e6d920413b81fb7bde0f65","71afe26642c0fb86b9f8b1af4af5deb5181b43b6542a3ff2314871b53d04c749","0d7f01634e6234d84cf0106508efdb8ae00e5ed126eff9606d37b031ac1de654","f8d209086bad78af6bd7fef063c1ed449c815e6f8d36058115f222d9f788b848","3ad003278d569d1953779e2f838f7798f02e793f6a1eceac8e0065f1a202669b","fb2c5eceffcd918dbb86332afa0199f5e7b6cf6ee42809e930a827b28ef25afe","f664aaff6a981eeca68f1ff2d9fd21b6664f47bf45f3ae19874df5a6683a8d8a","ce066f85d73e09e9adbd0049bcf6471c7eefbfc2ec4b5692b5bcef1e36babd2a","09d302513cacfbcc54b67088739bd8ac1c3c57917f83f510b2d1adcb99fd7d2a","3faa54e978b92a6f726440c13fe3ab35993dc74d697c7709681dc1764a25219f","2bd0489e968925eb0c4c0fb12ef090be5165c86bd088e1e803102c38d4a717d8","88924207132b9ba339c1adb1ed3ea07e47b3149ff8a2e21a3ea1f91cee68589d","b8800b93d8ab532f8915be73f8195b9d4ef06376d8a82e8cdc17c400553172d6","d7d469703b78beba76d511957f8c8b534c3bbb02bea7ab4705c65ef573532fb8","74c8c3057669c03264263d911d0f82e876cef50b05be21c54fef23c900de0420","b303eda2ff2d582a9c3c5ecb708fb57355cdc25e8c8197a9f66d4d1bf09fda19","4e5dc89fa22ff43da3dee1db97d5add0591ebaff9e4adef6c8b6f0b41f0f60f0","ec4e82cb42a902fe83dc13153c7a260bee95684541f8d7ef26cb0629a2f4ca31","5f36e24cd92b0ff3e2a243685a8a780c9413941c36739f04b428cc4e15de629d","40a26494e6ab10a91851791169582ab77fed4fbd799518968177e7eefe08c7a9","208e125b45bc561765a74f6f1019d88e44e94678769824cf93726e1bac457961","b3985971de086ef3aa698ef19009a53527b72e65851b782dc188ac341a1e1390","c81d421aabb6113cd98b9d4f11e9a03273b363b841f294b457f37c15d513151d","30063e3a184ff31254bbafa782c78a2d6636943dfe59e1a34f451827fd7a68dc","c05d4cae0bceed02c9d013360d3e65658297acb1b7a90252fe366f2bf4f9ccc9","6f14b92848889abba03a474e0750f7350cc91fc190c107408ca48679a03975ae","a588d0765b1d18bf00a498b75a83e095aef75a9300b6c1e91cbf39e408f2fe2f","656424ca784760c679bf2677d8aaf55d1cb8452cd0ac04bbe1c0f659f45f8c11","5d2651c679f59706bf484e7d423f0ec2d9c79897e2e68c91a3f582f21328d193","30d49e69cb62f350ff0bc5dda1c557429c425014955c19c557f101c0de9272e7","d3747dbed45540212e9a906c2fb8b5beb691f2cd0861af58a66dc01871004f38","05a21cbb7cbe1ec502e7baca1f4846a4e860d96bad112f3e316b995ba99715b7","1eaee2b52f1c0e1848845a79050c1d06ae554d8050c35e3bf479f13d6ee19dd5","fd219904eea67c470dfebbaf44129b0db858207c3c3b55514bdc84de547b1687","4de232968f584b960b4101b4cdae593456aff149c5d0c70c2389248e9eb9fbac","933c42f6ed2768265dfb42faa817ce8d902710c57a21a1859a9c3fe5e985080e","c5430542eeebb207d651e8b00a08e4bb680c47ecb73dd388d8fa597a1fc5de5b","a6c5c9906262cf10549989c0061e5a44afdc1f61da77d5e09418a9ecea0018fe","bc6e433cb982bf63eaa523dbbbd30fe12960a09861b352d77baf77ad6dd8886d","9af64ab00918f552388252977c1569fe31890686ca1fdb8e20f58d3401c9a50c","3d3cc03b5c6e056c24aac76789f4bc67caee98a4f0774ab82bc8ba34d16be916","747ce36fa27a750a05096f3610e59c9b5a55e13defec545c01a75fd13d67b620","1a8f503c64bdb36308f245960d9e4acac4cf65d8b6bd0534f88230ebf0be7883","a2c1f4012459547d62116d724e7ec820bb2e6848da40ea0747bf160ffd99b283","0dc197e52512a7cbea4823cc33c23b0337af97bd59b38bf83be047f37cd8c9a8","492c93ade227fe4545fabb3035b9dd5d57d8b4fde322e5217fdaef20aa1b80a8","83c54a3b3e836d1773b8c23ff76ce6e0aae1a2209fc772b75e9de173fec9eac0","475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527","5573ce7aa683a81c9a727294ffdb47d82d7715a148bfe9f4ddcf2f6cdfef1f0a","2cd9edbb4a6411a9f5258237dd73323db978d7aa9ebf1d1b0ac79771ac233e24","65719ccb75af7676665ee5a6f4d21d6a5f494ba5da26a4fcdad3b0788121e5c8","21bb8dda75eb025927e9d62d8fa619e349ebc5ba0b8b9dddd8fdfc9ff058e2b8","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","5006668996956580886022c05108e32c742823e1b5652aff7914917233731518","3a9b877f47119ac64aab98c61cae91a304ddeb6e8285ccd824a6aa665ffaeb95","488b0a139b5f35ded772136cf4b541f3babf22e4ce9056daf65736234e88355d","dcb9aa62f2662b999047096125adfa905cca0c988d7f5130e38ab41afeb96a3f","81af781a1d9eb264b8955538935874d6e60944e6285127d43ac07c6320d1d98f","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","d70c026dd2eeaa974f430ea229230a1897fdb897dc74659deebe2afd4feeb08f","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b",{"version":"fd624f7d7b264922476685870f08c5e1c6d6a0f05dee2429a9747b41f6b699d4","affectsGlobalScope":true},"bc0fcbd1d24fc838fbbadaef30b05ff0c49d3a1f4037e9534d0b93907a071bc5","1d4bc73751d6ec6285331d1ca378904f55d9e5e8aeaa69bc45b675c3df83e778","8017277c3843df85296d8730f9edf097d68d7d5f9bc9d8124fcacf17ecfd487e","30688eab034d1aa3bbe4d8f2c7f462ddaec9f30f1a38a306a4728a9a06a58b11","e03334588c63840b7054accd0b90f29c5890db6a6555ac0869a78a23297f1396","c3052485f32a96bfde75a2976c1238995522584ba464f04ff16a8a40af5e50d1","c220410b8e956fa157ce4e5e6ac871f0f433aa120c334d906ff1f5e2c7369e95","960a68ced7820108787135bdae5265d2cc4b511b7dcfd5b8f213432a8483daf1","5e8db4872785292074b394d821ae2fc10e4f8edc597776368aebbe8aefb24422","199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","74b0245c42990ed8a849df955db3f4362c81b13f799ebc981b7bec2d5b414a57","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","77c1d91a129ba60b8c405f9f539e42df834afb174fe0785f89d92a2c7c16b77a","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","6aee496bf0ecfbf6731aa8cca32f4b6e92cdc0a444911a7d88410408a45ecc5d","acebfe99678cf7cddcddc3435222cf132052b1226e902daac9fbb495c321a9b5","e5d49212b03abccc8df5098d379dc8350755b9ba53b515da4b1980494486ba78","82b1f9a6eefef7386aebe22ac49f23b806421e82dbf35c6e5b7132d79e4165da",{"version":"356701ea5df9eea3bf62b0f29857cb950d95eec9b9063f85c17be705926cdd2a","affectsGlobalScope":true},"61f41da9aaa809e5142b1d849d4e70f3e09913a5cb32c629bf6e61ef27967ff7","77c5c7f8578d139c74102a29384f5f4f0792a12d819ddcdcaf8307185ff2d45d"],"options":{"composite":true,"outDir":"./","rootDir":"./"},"fileIdsList":[[66,93,100],[93],[66,93,100,103],[57,93,100],[63,66,92,93,100,106,107,108],[92,93,100,112],[66,93,100,103,116,120],[93,122],[93,125,127],[93,124,125,126],[63,66,93,100,110,111],[93,104,111,112,119],[66,93,135],[81,93,100,130,131,132,133,134],[81,93,135],[63,93,135],[93,132],[63,64,93,100,136],[93,139,145],[93,140,141,142,143,144],[93,145],[93,150],[63,66,68,71,81,92,93,100],[78,93,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,237,238,239,240,241],[93,242],[93,221,222,242],[78,93,219,224,242],[78,93,225,226,242],[78,93,225,242],[78,93,219,225,242],[78,93,231,242],[78,93,242],[93,220,236,242],[93,219,236,242],[78,93,219],[93,224],[78,93],[93,219,242],[93,100],[63,93,100],[93,248],[63,66,67,71,77,92,93,100,101,114,116,121,153,154,247],[63,93,100,129,243],[93,252,254,255,256,257,258,259,260,261,262,263,264],[93,252,253,255,256,257,258,259,260,261,262,263,264],[93,253,254,255,256,257,258,259,260,261,262,263,264],[93,252,253,254,256,257,258,259,260,261,262,263,264],[93,252,253,254,255,257,258,259,260,261,262,263,264],[93,252,253,254,255,256,258,259,260,261,262,263,264],[93,252,253,254,255,256,257,259,260,261,262,263,264],[93,252,253,254,255,256,257,258,260,261,262,263,264],[93,252,253,254,255,256,257,258,259,261,262,263,264],[93,252,253,254,255,256,257,258,259,260,262,263,264],[93,252,253,254,255,256,257,258,259,260,261,263,264],[93,252,253,254,255,256,257,258,259,260,261,262,264],[93,252,253,254,255,256,257,258,259,260,261,262,263],[93,117],[93,118],[47,93],[50,93],[51,56,84,93],[52,63,64,71,81,92,93],[52,53,63,71,93],[54,93],[55,56,64,72,93],[56,81,89,93],[57,59,63,71,93],[58,93],[59,60,93],[63,93],[61,63,93],[63,64,65,81,92,93],[63,64,65,78,81,84,93],[93,97],[59,66,71,81,92,93],[63,64,66,67,71,81,89,92,93],[66,68,81,89,92,93],[47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99],[63,69,93],[70,92,93],[59,63,71,81,93],[72,93],[73,93],[50,74,93],[75,91,93,97],[76,93],[77,93],[63,78,79,93],[78,80,93,95],[51,63,81,82,83,84,93],[51,81,83,93],[81,82,93],[84,93],[85,93],[63,87,88,93],[87,88,93],[56,71,81,89,93],[90,93],[71,91,93],[51,66,77,92,93],[56,93],[81,93,94],[93,95],[93,96],[51,56,63,65,74,81,92,93,95,97],[81,93,98],[93,150,151,267],[93,145,150,269],[93,145,150],[93,150,271],[93,271,272,273,274,275],[93,146,147,148,149],[66,81,93,100],[93,279,318],[93,279,303,318],[93,318],[93,279],[93,279,304,318],[93,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317],[93,304,318],[64,93,120],[66,93,100,118],[93,147,150,151],[81,93,100],[63,66,68,81,89,92,93,98,100],[93,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,175,176,178,180,181,182,183,184,185,186,187,188,189,190,191,192,193,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218],[93,156,158,163],[93,158,195],[93,157,162],[93,156,157,158,159,160,161],[93,157,158,159,162,195],[93,156,158,162,163],[93,162],[93,162,202],[93,156,157,158,162],[93,157,158,159,162],[93,157,158],[93,156,157,158,162,163],[93,158,194],[93,156,157,158,163],[93,219],[93,156,157,171],[93,156,157,170],[93,179],[93,172,173],[93,174],[93,172],[93,156,157,171,172],[93,156,157,170,171,173],[93,177],[93,156,157,172,173],[93,156,157,158,159,162],[93,156,157],[93,157],[93,156,162],[139,145],[140,141,142,143,144],[145],[150],[145,150,269],[145,150],[150,271],[271,272,273,274,275],[146,147,148,149],[147,150,151]],"referencedMap":[[101,1],[102,2],[104,3],[105,4],[109,5],[113,6],[103,1],[114,2],[115,2],[121,7],[123,8],[128,9],[124,2],[127,10],[125,2],[112,11],[120,12],[129,2],[130,13],[134,2],[135,14],[131,15],[132,16],[133,17],[137,18],[138,2],[140,19],[141,19],[142,19],[139,2],[145,20],[143,21],[144,21],[151,22],[152,2],[153,2],[107,2],[154,2],[155,23],[242,24],[221,25],[223,26],[222,25],[225,27],[227,28],[228,29],[229,30],[230,28],[231,29],[232,28],[233,31],[234,29],[235,28],[236,32],[237,33],[238,34],[239,35],[226,36],[240,37],[224,37],[241,38],[243,39],[244,2],[126,2],[245,2],[116,2],[246,40],[249,41],[247,41],[248,42],[250,41],[251,43],[253,44],[254,45],[252,46],[255,47],[256,48],[257,49],[258,50],[259,51],[260,52],[261,53],[262,54],[263,55],[264,56],[265,2],[118,57],[117,58],[136,2],[122,2],[47,59],[48,59],[50,60],[51,61],[52,62],[53,63],[54,64],[55,65],[56,66],[57,67],[58,68],[59,69],[60,69],[62,70],[61,71],[63,70],[64,72],[65,73],[49,74],[99,2],[66,75],[67,76],[68,77],[100,78],[69,79],[70,80],[71,81],[72,82],[73,83],[74,84],[75,85],[76,86],[77,87],[78,88],[79,88],[80,89],[81,90],[83,91],[82,92],[84,93],[85,94],[86,2],[87,95],[88,96],[89,97],[90,98],[91,99],[92,100],[93,101],[94,102],[95,103],[96,104],[97,105],[98,106],[266,2],[148,2],[111,2],[110,2],[268,107],[270,108],[269,109],[275,2],[272,110],[276,111],[274,22],[271,22],[273,110],[146,2],[150,112],[108,113],[277,2],[278,2],[149,2],[303,114],[304,115],[279,116],[282,116],[301,114],[302,114],[292,114],[291,117],[289,114],[284,114],[297,114],[295,114],[299,114],[283,114],[296,114],[300,114],[285,114],[286,114],[298,114],[280,114],[287,114],[288,114],[290,114],[294,114],[305,118],[293,114],[281,114],[318,119],[317,2],[312,118],[314,120],[313,118],[306,118],[307,118],[309,118],[311,118],[315,120],[316,120],[308,120],[310,120],[319,121],[119,122],[320,1],[321,1],[322,123],[220,124],[323,2],[324,125],[147,2],[106,70],[267,2],[219,126],[169,127],[167,127],[218,2],[194,128],[182,129],[162,130],[192,129],[193,129],[196,131],[197,129],[164,132],[198,129],[199,129],[200,129],[201,129],[202,133],[203,134],[204,129],[160,129],[205,129],[206,129],[207,133],[208,129],[209,129],[210,135],[211,129],[212,131],[213,129],[161,129],[214,129],[215,129],[216,136],[159,137],[165,138],[195,139],[168,140],[217,141],[170,142],[171,143],[180,144],[179,145],[175,146],[174,145],[176,147],[173,148],[172,149],[178,150],[177,147],[181,151],[163,152],[158,153],[156,154],[166,2],[157,155],[187,2],[188,2],[185,2],[186,133],[184,2],[189,2],[183,154],[191,2],[190,2],[1,2],[9,2],[13,2],[12,2],[3,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[4,2],[5,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[6,2],[29,2],[30,2],[31,2],[32,2],[7,2],[36,2],[33,2],[34,2],[35,2],[37,2],[8,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[2,2],[45,2],[11,2],[10,2],[46,2]],"exportedModulesMap":[[101,1],[102,2],[104,3],[105,4],[109,5],[113,6],[103,1],[114,2],[115,2],[121,7],[123,8],[128,9],[124,2],[127,10],[125,2],[112,11],[120,12],[129,2],[130,13],[134,2],[135,14],[131,15],[132,16],[133,17],[137,18],[138,2],[140,156],[141,156],[142,156],[145,157],[143,158],[144,158],[151,159],[152,2],[153,2],[107,2],[154,2],[155,23],[242,24],[221,25],[223,26],[222,25],[225,27],[227,28],[228,29],[229,30],[230,28],[231,29],[232,28],[233,31],[234,29],[235,28],[236,32],[237,33],[238,34],[239,35],[226,36],[240,37],[224,37],[241,38],[243,39],[244,2],[126,2],[245,2],[116,2],[246,40],[249,41],[247,41],[248,42],[250,41],[251,43],[253,44],[254,45],[252,46],[255,47],[256,48],[257,49],[258,50],[259,51],[260,52],[261,53],[262,54],[263,55],[264,56],[265,2],[118,57],[117,58],[136,2],[122,2],[47,59],[48,59],[50,60],[51,61],[52,62],[53,63],[54,64],[55,65],[56,66],[57,67],[58,68],[59,69],[60,69],[62,70],[61,71],[63,70],[64,72],[65,73],[49,74],[99,2],[66,75],[67,76],[68,77],[100,78],[69,79],[70,80],[71,81],[72,82],[73,83],[74,84],[75,85],[76,86],[77,87],[78,88],[79,88],[80,89],[81,90],[83,91],[82,92],[84,93],[85,94],[86,2],[87,95],[88,96],[89,97],[90,98],[91,99],[92,100],[93,101],[94,102],[95,103],[96,104],[97,105],[98,106],[111,2],[110,2],[268,107],[270,160],[269,161],[272,162],[276,163],[274,159],[271,159],[273,162],[150,164],[108,113],[277,2],[303,114],[304,115],[279,116],[282,116],[301,114],[302,114],[292,114],[291,117],[289,114],[284,114],[297,114],[295,114],[299,114],[283,114],[296,114],[300,114],[285,114],[286,114],[298,114],[280,114],[287,114],[288,114],[290,114],[294,114],[305,118],[293,114],[281,114],[318,119],[317,2],[312,118],[314,120],[313,118],[306,118],[307,118],[309,118],[311,118],[315,120],[316,120],[308,120],[310,120],[319,121],[119,122],[320,1],[321,1],[322,165],[220,124],[323,2],[324,125],[106,70],[267,2],[219,126],[169,127],[167,127],[218,2],[194,128],[182,129],[162,130],[192,129],[193,129],[196,131],[197,129],[164,132],[198,129],[199,129],[200,129],[201,129],[202,133],[203,134],[204,129],[160,129],[205,129],[206,129],[207,133],[208,129],[209,129],[210,135],[211,129],[212,131],[213,129],[161,129],[214,129],[215,129],[216,136],[159,137],[165,138],[195,139],[168,140],[217,141],[170,142],[171,143],[180,144],[179,145],[175,146],[174,145],[176,147],[173,148],[172,149],[178,150],[177,147],[181,151],[163,152],[158,153],[156,154],[166,2],[157,155],[187,2],[188,2],[185,2],[186,133],[184,2],[189,2],[183,154],[191,2],[190,2],[13,2],[12,2],[3,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[4,2],[5,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[6,2],[29,2],[30,2],[31,2],[32,2],[7,2],[36,2],[33,2],[34,2],[35,2],[37,2],[8,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[45,2]],"semanticDiagnosticsPerFile":[101,102,104,105,109,113,103,114,115,121,123,128,124,127,125,112,120,129,130,134,135,131,132,133,137,138,140,141,142,139,145,143,144,151,152,153,107,154,155,242,221,223,222,225,227,228,229,230,231,232,233,234,235,236,237,238,239,226,240,224,241,243,244,126,245,116,246,249,247,248,250,251,253,254,252,255,256,257,258,259,260,261,262,263,264,265,118,117,136,122,47,48,50,51,52,53,54,55,56,57,58,59,60,62,61,63,64,65,49,99,66,67,68,100,69,70,71,72,73,74,75,76,77,78,79,80,81,83,82,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,266,148,111,110,268,270,269,275,272,276,274,271,273,146,150,108,277,278,149,303,304,279,282,301,302,292,291,289,284,297,295,299,283,296,300,285,286,298,280,287,288,290,294,305,293,281,318,317,312,314,313,306,307,309,311,315,316,308,310,319,119,320,321,322,220,323,324,147,106,267,219,169,167,218,194,182,162,192,193,196,197,164,198,199,200,201,202,203,204,160,205,206,207,208,209,210,211,212,213,161,214,215,216,159,165,195,168,217,170,171,180,179,175,174,176,173,172,178,177,181,163,158,156,166,157,187,188,185,186,184,189,183,191,190,1,9,13,12,3,14,15,16,17,18,19,20,21,4,5,25,22,23,24,26,27,28,6,29,30,31,32,7,36,33,34,35,37,8,38,43,44,39,40,41,42,2,45,11,10,46]},"version":"4.9.4"} --------------------------------------------------------------------------------