cortex-react-ui 0.2.30 → 0.2.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/utils/forwardRef.ts","../../src/DomContainer/DomContainer.tsx","../../src/utils/setRef.ts","../../src/utils/classNames.ts","../../src/Popper/Popper.tsx","../../src/Transition/CSSTransition.tsx","../../src/Spinner/Spinner.tsx","../../src/BarLoader/BarLoader.tsx","../../src/Selected/Selected.tsx","../../src/Button/Button.tsx","../../src/Scanner/DialogMask.tsx","../../src/Scanner/DialogBody.tsx","../../src/Scanner/Dialog.tsx","../../src/Scanner/ScanConfirmationDialog.tsx","../../src/Scanner/Scanner.tsx","../../src/Camera/FileStorageDb.ts","../../src/Camera/Camera.tsx","../../src/Camera/useTimer.ts","../../src/ToggleButton/ToggleButton.tsx","../../src/Transition/Fade.tsx","../../src/Tooltip/Tooltip.tsx","../../src/utils/useClickOutside.ts","../../src/TagInput/TagItem.tsx","../../node_modules/leaflet-active-area/src/leaflet.activearea.js","../../src/TagInput/TagSearchInput.tsx","../../src/TagInput/TagSuggestionItem.tsx","../../src/TagInput/TagSuggestionGroup.tsx","../../src/TagInput/TagSuggestion.tsx","../../src/TagInput/TagInput.tsx","../../src/Map/components/LocationContext.ts","../../src/Map/components/CenterActiveAreaControl.tsx","../../src/Map/components/MapFullscreenControl.tsx","../../src/Map/components/DrawTools.tsx","../../src/Map/components/Maps.tsx","../../src/Map/hooks/useLocationContext.ts","../../src/Map/Map.tsx","../../src/Menu/Menu.tsx","../../src/utils/useElement.ts","../../src/Menu/ContextMenu.tsx","../../src/Menu/Divider.tsx","../../src/Icons/ChevronDownIcon.tsx","../../src/Icons/ChevronRightIcon.tsx","../../src/Icons/ChevronLeftIcon.tsx","../../src/Icons/CrossIcon.tsx","../../src/Menu/MenuItem.tsx","../../src/Menu/PopupMenu.tsx","../../src/Menu/MenuGroup.tsx","../../src/Menu/AuthDownloadLink.tsx","../../src/Dialog/Dialog.tsx","../../src/Dialog/DialogContent.tsx","../../src/Dialog/DialogFooter.tsx","../../src/Dialog/DialogHeader.tsx","../../src/Dialog/DialogTitle.tsx","../../src/Dialog/DialogActions.tsx","../../src/Dialog/ConfirmDialog.tsx","../../src/Dialog/ErrorDialog.tsx","../../src/Dialog/WarningDialog.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import * as React from 'react';\r\n\r\n/**\r\n * Utility type pour créer des props avec ref pour la compatibilité React 18/19\r\n * En React 19, ref est passé directement dans les props\r\n * En React 18, ref est passé séparément via forwardRef\r\n */\r\nexport type ForwardRefProps<T, P = object> = P & {\r\n ref?: React.Ref<T>;\r\n};\r\n\r\n/**\r\n * Type pour la fonction de rendu compatible React 18/19\r\n */\r\nexport type ForwardRefRenderFunction<T, P> = (\r\n props: P,\r\n ref: React.ForwardedRef<T>\r\n) => React.ReactElement | null;\r\n\r\n/**\r\n * Composant wrapper compatible React 18 et React 19\r\n *\r\n * Utilise la signature standard de React.forwardRef qui est compatible\r\n * avec les deux versions de React.\r\n *\r\n * @example\r\n * ```tsx\r\n * interface MyComponentProps {\r\n * className?: string;\r\n * children?: React.ReactNode;\r\n * }\r\n *\r\n * const MyComponent = forwardRef<HTMLDivElement, MyComponentProps>(\r\n * (props, ref) => (\r\n * <div ref={ref} className={props.className}>{props.children}</div>\r\n * )\r\n * );\r\n * ```\r\n */\r\nexport function forwardRef<T, P>(render: ForwardRefRenderFunction<T, P>): React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<T>> {\r\n // Wrapper la fonction de rendu pour passer les props correctement\r\n // Cela permet de supporter les signatures React 18 et React 19\r\n function forwardRefWrapper(props: React.PropsWithoutRef<P>, ref: React.ForwardedRef<T>) {\r\n return render(props as P, ref);\r\n }\r\n\r\n return React.forwardRef(forwardRefWrapper);\r\n}\r\n\r\nexport default forwardRef;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\ntype Props = {\r\n children?: React.ReactNode;\r\n container?: HTMLElement | (() => HTMLElement);\r\n};\r\n\r\nfunction getContainer(container: HTMLElement | (() => HTMLElement)) {\r\n return typeof container === 'function' ? container() : container;\r\n}\r\n\r\nconst DomContainer = forwardRef<HTMLElement, Props>(({\r\n children,\r\n container = document.body\r\n}, ref) => {\r\n const target = React.useRef<HTMLDivElement>();\r\n\r\n React.useEffect(() => {\r\n const containerNode = getContainer(container);\r\n\r\n if (target.current && containerNode) {\r\n containerNode.appendChild(target.current);\r\n }\r\n return () => {\r\n if (target.current) {\r\n target.current.remove();\r\n }\r\n };\r\n }, [target.current]);\r\n\r\n if (!target.current) {\r\n target.current = document.createElement('div');\r\n }\r\n\r\n return ReactDOM.createPortal(children, target.current);\r\n});\r\n\r\nexport default DomContainer;\r\n","import * as React from 'react';\r\n\r\n/**\r\n * Helper pour assigner une valeur à une ref React\r\n * Compatible avec React 18 et React 19\r\n *\r\n * @param ref - La ref React (callback ref, MutableRefObject, ou RefObject)\r\n * @param value - La valeur à assigner\r\n */\r\nexport default function setRef<T>(\r\n ref: React.Ref<T> | null | undefined,\r\n value: T | null,\r\n): void {\r\n if (!ref) return;\r\n\r\n if (typeof ref === 'function') {\r\n ref(value);\r\n }\r\n else if ('current' in ref) {\r\n // Type assertion nécessaire car RefObject.current est readonly\r\n // mais nous devons pouvoir l'assigner dans ce contexte\r\n (ref as React.MutableRefObject<T | null>).current = value;\r\n }\r\n}","export default function classNames(...values: any[]): string {\r\n const classes = [];\r\n\r\n for (let idx = 0; idx < values.length; idx += 1) {\r\n const arg = values[idx];\r\n if (!arg) continue;\r\n\r\n const argType = typeof arg;\r\n\r\n if (argType === 'string' || argType === 'number') {\r\n // @ts-ignore\r\n classes.push(arg);\r\n }\r\n else if (Array.isArray(arg)) {\r\n if (arg.length) {\r\n const inner = classNames(...arg);\r\n if (inner) {\r\n // @ts-ignore\r\n classes.push(inner);\r\n }\r\n }\r\n }\r\n else if (argType === 'object') {\r\n if (arg.toString === Object.prototype.toString) {\r\n Object.keys(arg).forEach(key => {\r\n // @ts-ignore\r\n if (arg[key]) classes.push(key);\r\n });\r\n }\r\n }\r\n else {\r\n // @ts-ignore\r\n classes.push(arg.toString());\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n}","import React from 'react';\r\nimport propTypes from 'prop-types';\r\nimport DomContainer from '../DomContainer';\r\nimport setRef from '../utils/setRef';\r\nimport classNames from '../utils/classNames';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\ntype Rect = {\r\n left: number,\r\n top: number,\r\n height: number,\r\n width: number\r\n}\r\n\r\nconst getAnchorElement = (anchorEl: string | HTMLElement | React.RefObject<HTMLElement> | undefined): HTMLElement => {\r\n if (!anchorEl) return document.body;\r\n if (Object.prototype.toString.call(anchorEl) === '[object String]') {\r\n const element = document.getElementById(anchorEl as string);\r\n return element ?? document.body;\r\n }\r\n\r\n const ref = anchorEl as React.RefObject<HTMLElement>;\r\n if (ref && ref.current) return ref.current ?? document.body;\r\n\r\n return anchorEl as HTMLElement;\r\n};\r\n\r\nfunction getAbsoluteBoundingRect(el: HTMLElement) {\r\n const win = window;\r\n const { body } = document;\r\n\r\n // pageXOffset and pageYOffset work everywhere except IE <9.\r\n const offsetX = win.pageXOffset !== undefined ? win.pageXOffset :\r\n (document.documentElement || body.parentNode || body).scrollLeft;\r\n const offsetY = win.pageYOffset !== undefined ? win.pageYOffset :\r\n (document.documentElement || body.parentNode || body).scrollTop;\r\n\r\n const rect = el.getBoundingClientRect();\r\n\r\n // if (el !== body) {\r\n // let parent = el.parentNode as HTMLElement;\r\n\r\n // while (parent !== body && parent !== null) {\r\n // offsetX += parent.scrollLeft;\r\n // offsetY += parent.scrollTop;\r\n // parent = parent.parentNode as HTMLElement;\r\n // }\r\n // }\r\n\r\n return {\r\n bottom: rect.bottom + offsetY,\r\n height: rect.height,\r\n left: rect.left + offsetX,\r\n right: rect.right + offsetX,\r\n top: rect.top + offsetY,\r\n width: rect.width\r\n };\r\n}\r\n\r\nfunction getContentPosition(\r\n placement: string | undefined,\r\n container: HTMLElement,\r\n anchorPosition: { top: number, left: number } | undefined,\r\n content: HTMLElement\r\n) {\r\n let left = 0;\r\n let top = 0;\r\n\r\n const containerRect = !anchorPosition\r\n ? getAbsoluteBoundingRect(container)\r\n : {\r\n bottom: anchorPosition.top,\r\n height: 0,\r\n left: anchorPosition.left,\r\n right: anchorPosition.left,\r\n top: anchorPosition.top,\r\n width: 0\r\n };\r\n const contentRect = getAbsoluteBoundingRect(content);\r\n\r\n switch (placement) {\r\n case PopperPlacement.Center:\r\n left = containerRect.left + (containerRect.width / 2) - (contentRect.width / 2);\r\n top = containerRect.top + (containerRect.height / 2) - (contentRect.height / 2);\r\n break;\r\n case PopperPlacement.BottomLeft:\r\n left = containerRect.left;\r\n top = containerRect.bottom;\r\n break;\r\n case PopperPlacement.BottomRight:\r\n left = containerRect.left - contentRect.width + containerRect.width;\r\n top = containerRect.bottom;\r\n break;\r\n case PopperPlacement.BottomCenter:\r\n left = containerRect.left + (containerRect.width / 2) - (contentRect.width / 2);\r\n top = containerRect.bottom;\r\n break;\r\n case PopperPlacement.TopLeft:\r\n left = containerRect.left;\r\n top = containerRect.top - contentRect.height;\r\n break;\r\n case PopperPlacement.TopRight:\r\n left = containerRect.left - contentRect.width + containerRect.width;\r\n top = containerRect.top - contentRect.height;\r\n break;\r\n case PopperPlacement.TopCenter:\r\n left = containerRect.left + (containerRect.width / 2) - (contentRect.width / 2);\r\n top = containerRect.top - contentRect.height;\r\n break;\r\n case PopperPlacement.LeftTop:\r\n left = containerRect.left - contentRect.width;\r\n top = containerRect.top;\r\n break;\r\n case PopperPlacement.LeftBottom:\r\n left = containerRect.left - contentRect.width;\r\n top = containerRect.bottom - contentRect.height;\r\n break;\r\n case PopperPlacement.LeftCenter:\r\n left = containerRect.left - contentRect.width;\r\n top = containerRect.top + (containerRect.height / 2) - (contentRect.height / 2);\r\n break;\r\n case PopperPlacement.RightTop:\r\n left = containerRect.right;\r\n top = containerRect.top;\r\n break;\r\n case PopperPlacement.RightBottom:\r\n left = containerRect.right;\r\n top = containerRect.bottom - contentRect.height;\r\n break;\r\n case PopperPlacement.RightCenter:\r\n left = containerRect.right;\r\n top = containerRect.top + (containerRect.height / 2) - (contentRect.height / 2);\r\n break;\r\n }\r\n\r\n return { left, top };\r\n}\r\n\r\nfunction fixPositionInRect(containerRect: Rect, content: HTMLElement, left: number, top: number, flexible: boolean) {\r\n if (!containerRect) return null;\r\n if (!content) return null;\r\n\r\n const contentRect = content.getBoundingClientRect();\r\n const newCoord = {\r\n left,\r\n top,\r\n height: 0,\r\n width: 0\r\n };\r\n\r\n if (left < containerRect.left) {\r\n newCoord.left = containerRect.left;\r\n }\r\n if (top < containerRect.top) {\r\n newCoord.top = containerRect.top;\r\n }\r\n\r\n if (!flexible) {\r\n if (left + contentRect.width >= containerRect.left + containerRect.width) {\r\n newCoord.left = containerRect.left + containerRect.width - contentRect.width;\r\n }\r\n if (top + contentRect.height >= containerRect.top + containerRect.height) {\r\n newCoord.top = containerRect.top + containerRect.height - contentRect.height;\r\n }\r\n }\r\n else {\r\n newCoord.width = containerRect.left + containerRect.width - left;\r\n newCoord.height = containerRect.top + containerRect.height - top;\r\n }\r\n\r\n return newCoord;\r\n}\r\n\r\nexport const PopperPlacement = {\r\n Center: 'center',\r\n BottomCenter: 'bottom-center',\r\n BottomRight: 'bottom-right',\r\n BottomLeft: 'bottom-left',\r\n TopCenter: 'top-center',\r\n TopRight: 'top-right',\r\n TopLeft: 'top-left',\r\n LeftTop: 'left-top',\r\n LeftBottom: 'left-bottom',\r\n LeftCenter: 'left-center',\r\n RightTop: 'right-top',\r\n RightBottom: 'right-bottom',\r\n RightCenter: 'right-center'\r\n} as const;\r\n\r\ntype Props = {\r\n anchorEl?: string | HTMLElement | React.RefObject<HTMLElement>;\r\n anchorPosition?: { top: number, left: number };\r\n placement?: ObjectValues<typeof PopperPlacement>;\r\n open?: boolean;\r\n role?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n overflow?: boolean;\r\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\r\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\r\n onMouseMove?: React.MouseEventHandler<HTMLDivElement>;\r\n onMouseOut?: React.MouseEventHandler<HTMLDivElement>;\r\n onMouseOver?: React.MouseEventHandler<HTMLDivElement>;\r\n onTouchStart?: React.TouchEventHandler<HTMLDivElement>;\r\n onTouchEnd?: React.TouchEventHandler<HTMLDivElement>;\r\n};\r\n\r\nconst Popper = forwardRef<HTMLElement, Props>(({\r\n anchorEl,\r\n anchorPosition,\r\n placement = PopperPlacement.BottomLeft,\r\n open = false,\r\n overflow = false,\r\n role,\r\n children,\r\n className,\r\n ...other\r\n}, ref) => {\r\n const popperRef = React.useRef<HTMLDivElement | null>(null);\r\n const containerRef = React.useRef(null);\r\n\r\n // const [anchorElement, setAnchorElement] = React.useState<string | HTMLElement | React.RefObject<HTMLElement> | undefined | null>(null);\r\n const [documentDimensions, setDimensions] = React.useState<Rect>({\r\n left: window.scrollX,\r\n top: window.scrollY,\r\n height: window.innerHeight,\r\n width: window.innerWidth\r\n });\r\n\r\n const [popperStyle, setPopperStyle] = React.useState<React.CSSProperties>({\r\n position: 'absolute',\r\n margin: '0',\r\n inset: '0px auto auto 0px',\r\n transform: 'translate3d(0px, 0px, 0px)',\r\n opacity: 0\r\n });\r\n\r\n // React.useEffect(() => {\r\n // setAnchorElement(anchorEl);\r\n // }, [anchorEl]);\r\n\r\n React.useEffect(() => {\r\n if (ref && popperRef) {\r\n setRef(ref, popperRef.current);\r\n\r\n return () => {\r\n setRef(ref, null);\r\n };\r\n }\r\n\r\n return undefined;\r\n }, [ref, popperRef.current]);\r\n\r\n React.useEffect(() => {\r\n const onDisplayWindowResize = () => {\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n left: window.scrollX,\r\n top: window.scrollY\r\n });\r\n };\r\n\r\n const onDocumentScroll = () => {\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n left: window.scrollX,\r\n top: window.scrollY\r\n });\r\n };\r\n\r\n if (open) {\r\n window.addEventListener('resize', onDisplayWindowResize);\r\n window.addEventListener('scroll', onDocumentScroll);\r\n\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n left: window.scrollX,\r\n top: window.scrollY\r\n });\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('resize', onDisplayWindowResize);\r\n window.removeEventListener('scroll', onDocumentScroll);\r\n };\r\n }, [open]);\r\n\r\n React.useEffect(() => {\r\n let observer: MutationObserver | undefined;\r\n const anchor = getAnchorElement(anchorEl);\r\n if (open && popperRef.current && anchor) {\r\n const updatePosition = () => {\r\n let { left, top } = getContentPosition(placement, anchor, anchorPosition, popperRef.current!);\r\n let height: number = 0;\r\n let width: number = 0;\r\n if (overflow === false) {\r\n const fixPosition = fixPositionInRect(documentDimensions, popperRef.current!, left, top, false);\r\n if (fixPosition !== null) {\r\n left = fixPosition.left;\r\n top = fixPosition.top;\r\n height = fixPosition.height;\r\n width = fixPosition.width;\r\n }\r\n }\r\n\r\n setPopperStyle({\r\n position: 'absolute',\r\n margin: '0',\r\n inset: '0px auto auto 0px',\r\n transform: `translate3d(${left}px, ${top}px, 0px)`,\r\n opacity: 1,\r\n maxHeight: height > 0 ? `${height.toFixed()}px` : undefined,\r\n maxWidth: width > 0 ? `${width.toFixed()}px` : undefined\r\n });\r\n };\r\n observer = new MutationObserver(() => {\r\n updatePosition();\r\n });\r\n observer.observe(popperRef.current, { attributes: false, childList: true, subtree: true });\r\n\r\n updatePosition();\r\n }\r\n\r\n return () => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n };\r\n }, [popperRef, open, placement, anchorPosition, overflow, documentDimensions, anchorEl]);\r\n\r\n if (open !== true) return null;\r\n\r\n return (\r\n <DomContainer ref={containerRef}>\r\n <div\r\n ref={popperRef}\r\n style={popperStyle}\r\n role={role}\r\n className={classNames(\r\n 'ui-popper',\r\n className\r\n )}\r\n {...other}\r\n >\r\n {children}\r\n </div>\r\n </DomContainer>\r\n );\r\n});\r\n\r\n// Popper.propTypes = {\r\n// anchorEl: propTypes.oneOfType([\r\n// propTypes.string.isRequired,\r\n// propTypes.instanceOf(HTMLElement).isRequired,\r\n// propTypes.shape({ current: propTypes.instanceOf(HTMLElement).isRequired }).isRequired\r\n// ]),\r\n// placement: propTypes.oneOf(Object.values(PopperPlacement)),\r\n// open: propTypes.bool,\r\n// role: propTypes.string,\r\n// children: propTypes.node,\r\n// overflow: propTypes.bool\r\n// };\r\n\r\n// Popper.defaultProps = {\r\n// anchorEl: undefined,\r\n// placement: PopperPlacement.BottomLeft,\r\n// open: false,\r\n// role: undefined,\r\n// children: undefined,\r\n// overflow: false\r\n// };\r\n\r\nexport default Popper;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\nenum TransitionState {\r\n Enter,\r\n Entering,\r\n Entered,\r\n Exit,\r\n Exiting,\r\n Exited\r\n}\r\n\r\ntype Props = {\r\n trigger: boolean,\r\n mode: 'appear' | 'disappear',\r\n children?: React.ReactElement;\r\n enterTimeout?: number;\r\n exitTimeout?: number;\r\n className?: string;\r\n onEnter?: () => void;\r\n onEntering?: () => void;\r\n onEntered?: () => void;\r\n onExit?: () => void;\r\n onExiting?: () => void;\r\n onExited?: () => void;\r\n};\r\n\r\nconst CSSTransition = forwardRef<HTMLElement, Props>(({\r\n trigger,\r\n mode = 'appear',\r\n children,\r\n enterTimeout,\r\n exitTimeout,\r\n className,\r\n onEnter,\r\n onEntering,\r\n onEntered,\r\n onExit,\r\n onExiting,\r\n onExited\r\n}, ref) => {\r\n const nodeRef = React.useRef<HTMLElement>(null);\r\n const timeout = React.useRef<number>();\r\n const [transitionState, setTransitionState] = React.useState<TransitionState>(() => {\r\n if (mode === 'appear') return TransitionState.Exited;\r\n return TransitionState.Entered;\r\n });\r\n\r\n const perfomEnter = () => {\r\n if (timeout.current) window.clearTimeout(timeout.current);\r\n\r\n nodeRef.current!.classList.remove(`${className}-exit`);\r\n nodeRef.current!.classList.remove(`${className}-exiting`);\r\n nodeRef.current!.classList.remove(`${className}-exited`);\r\n\r\n if (onEnter) onEnter();\r\n nodeRef.current!.classList.add(`${className}-enter`);\r\n\r\n timeout.current = window.setTimeout(() => {\r\n if (onEntering) onEntering();\r\n if (nodeRef.current) {\r\n nodeRef.current!.classList.add(`${className}-entering`);\r\n }\r\n\r\n // setTransitionState(() => {\r\n // if (onEntering) onEntering();\r\n\r\n // return TransitionState.Entering;\r\n // });\r\n\r\n timeout.current = window.setTimeout(() => {\r\n if (onEntered) onEntered();\r\n if (nodeRef.current) {\r\n nodeRef.current!.classList.add(`${className}-entered`);\r\n }\r\n\r\n // setTransitionState(() => {\r\n // if (onEntered) onEntered();\r\n // nodeRef.current!.classList.add(`${className}-entered`);\r\n // return TransitionState.Entered;\r\n // });\r\n }, enterTimeout || 1000);\r\n }, 10);\r\n };\r\n\r\n const perfomExit = () => {\r\n if (timeout.current) window.clearTimeout(timeout.current);\r\n\r\n nodeRef.current!.classList.remove(`${className}-enter`);\r\n nodeRef.current!.classList.remove(`${className}-entering`);\r\n nodeRef.current!.classList.remove(`${className}-entered`);\r\n\r\n if (onExit) onExit();\r\n nodeRef.current!.classList.add(`${className}-exit`);\r\n\r\n timeout.current = window.setTimeout(() => {\r\n if (onExiting) onExiting();\r\n if (nodeRef.current) {\r\n nodeRef.current!.classList.add(`${className}-exiting`);\r\n }\r\n\r\n // setTransitionState(() => {\r\n // if (onExiting) onExiting();\r\n // nodeRef.current!.classList.add(`${className}-exiting`);\r\n // return TransitionState.Exiting;\r\n // });\r\n\r\n timeout.current = window.setTimeout(() => {\r\n if (onExited) onExited();\r\n if (nodeRef.current) {\r\n nodeRef.current!.classList.add(`${className}-exited`);\r\n }\r\n\r\n // setTransitionState(() => {\r\n // if (onExited) onExited();\r\n // nodeRef.current!.classList.add(`${className}-exited`);\r\n // return TransitionState.Exited;\r\n // });\r\n }, exitTimeout || 1000);\r\n });\r\n };\r\n\r\n React.useEffect(() => () => {\r\n if (timeout.current) {\r\n window.clearTimeout(timeout.current);\r\n }\r\n }, [timeout]);\r\n\r\n React.useEffect(() => {\r\n if (trigger) {\r\n perfomEnter();\r\n }\r\n else {\r\n perfomExit();\r\n }\r\n }, [trigger]);\r\n\r\n const childrenNode: React.ReactElement | undefined = React.useMemo(() => {\r\n if (!children) return undefined;\r\n\r\n const childrenProps = {\r\n ...children.props,\r\n className: classNames(className, children.props.className),\r\n ref: nodeRef\r\n };\r\n\r\n return React.cloneElement(children, childrenProps);\r\n }, [children, nodeRef]);\r\n\r\n return (\r\n <>\r\n {childrenNode}\r\n </>\r\n );\r\n});\r\n\r\nexport default CSSTransition;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface SpinnerProps {\r\n className?: string;\r\n variant?: 'indeterminate' | 'determinate';\r\n}\r\n\r\nconst Spinner: React.FC<SpinnerProps> = ({\r\n className,\r\n variant = 'indeterminate'\r\n}) => (\r\n <div\r\n className={classNames(\r\n 'ui-spinner',\r\n variant === 'indeterminate' ? 'ui-spinner-indeterminate' : 'ui-spinner-determinate',\r\n className\r\n )}\r\n >\r\n loading...\r\n </div>\r\n);\r\n\r\nexport default Spinner;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface BarLoaderProps {\r\n title?: string;\r\n color?: 'red' | 'blue' | 'yellow' | 'orange' | 'green'\r\n className?: string;\r\n isComplete: boolean;\r\n}\r\n\r\nconst BarLoader: React.FC<BarLoaderProps> = ({ title, color, className, isComplete }) => (\r\n <>\r\n <div className={classNames('loader', color != null ? `loader-color-${color}` : 'loader-color-blue', isComplete === true ? 'completed' : '', className)}>\r\n <div className={classNames('loaderBar', color != null ? `loaderBar-color-${color}` : 'loaderBar-color-blue')}>\r\n </div>\r\n </div>\r\n <div className={classNames('loaderBar-title')}>\r\n <span>{title}</span>\r\n </div>\r\n </>\r\n);\r\n\r\nexport default BarLoader;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface SelectedProps {\r\n title?: string;\r\n data: any[];\r\n onClick: (elt: any) => void;\r\n}\r\n\r\nconst Selected: React.FC<SelectedProps> = ({ title, data, onClick }) => {\r\n const handleClick = (elt: any) => {\r\n onClick(elt);\r\n };\r\n\r\n return (\r\n <>\r\n <div className={classNames('ui-selected-params')}>\r\n <div className={classNames('ui-selected-title')}>\r\n {title}\r\n </div>\r\n <div className={classNames('ui-selected-content')}>\r\n <>\r\n {\r\n Array.isArray(data) && data.map((item, index) => (\r\n <>\r\n <div key={index} className={classNames('ui-selected-button')}>\r\n <button type=\"button\" onClick={() => handleClick(item)} className={item.selected === 1 ? 'ui-selected-btn' : item.selected === 0 ? 'ui-not-selected' : 'ui-new-selected'}>{item.name}</button>\r\n </div>\r\n </>\r\n ))\r\n }\r\n </>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Selected;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface ButtonProps {\r\n variant?: 'text' | 'contained' | 'outlined',\r\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark'\r\n className?: string;\r\n disable?: boolean;\r\n children?: React.ReactNode;\r\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\r\n}\r\n\r\nconst Button: React.FC<ButtonProps> = ({\r\n variant,\r\n color,\r\n children,\r\n disable,\r\n className,\r\n onClick\r\n}: ButtonProps) => {\r\n const handleClick = React.useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\r\n if (onClick && disable !== true) {\r\n onClick(event);\r\n }\r\n }, [onClick, disable]);\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n className={classNames(\r\n 'ui-btn',\r\n disable === true ? 'ui-btn-disable' : null,\r\n variant != null ? `ui-btn-${variant}` : 'ui-btn-text',\r\n color != null ? `ui-btn-color-${color}` : 'ui-btn-color-primary',\r\n className\r\n )}\r\n onClick={handleClick}\r\n >\r\n {children}\r\n </button>\r\n );\r\n};\r\n\r\nexport default Button;","import React, { HTMLAttributes, useMemo } from 'react';\r\n\r\nexport const DialogMask = (props: DialogMaskProps) => {\r\n const zIndex = useMemo(() => {\r\n const adr = document.querySelectorAll('.dialog-mask');\r\n const initialZIndex = 1300;\r\n return initialZIndex + adr.length;\r\n }, []);\r\n\r\n return (\r\n <div\r\n {...props}\r\n className={`dialog-mask ${props.className}`}\r\n style={{ ...props.style, zIndex }}\r\n >\r\n <style>{'body { overflow: hidden; }'}</style>\r\n {props.children}\r\n </div>\r\n );\r\n};\r\n\r\nexport type DialogMaskProps = HTMLAttributes<HTMLDivElement>\r\n","import React, { HTMLAttributes } from 'react';\r\n\r\nexport const DialogBody: React.FC<DialogBodyProps> = props => (\r\n <div {...props} className={`dialog-body ${props.className}`}>\r\n </div>\r\n);\r\n\r\nexport type DialogBodyProps = HTMLAttributes<HTMLDivElement>\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { DialogMask } from './DialogMask';\r\nimport { DialogBody } from './DialogBody';\r\n\r\nexport const Dialog = (props: DialogProps) => {\r\n useEffect(() => {\r\n window.addEventListener('keyup', handleKeyUp);\r\n return () => {\r\n window.removeEventListener('keyup', handleKeyUp);\r\n };\r\n }, []);\r\n\r\n const handleKeyUp = useCallback((e: KeyboardEvent) => {\r\n if (['Esc', 'Escape'].includes(e.key)) {\r\n props.onClose?.();\r\n }\r\n }, []);\r\n\r\n if (!props.open) {\r\n return (<></>);\r\n }\r\n\r\n return ReactDOM.createPortal(\r\n (\r\n <>\r\n <DialogMask>\r\n <DialogBody\r\n style={{\r\n position: 'relative',\r\n fontFamily: 'sans-serif',\r\n width: '100%',\r\n maxWidth: '500px'\r\n }}\r\n >\r\n {\r\n props.title &&\r\n (\r\n <div className=\"dialog-header\">\r\n <h4\r\n style={{\r\n fontWeight: '600',\r\n fontSize: '1.25rem'\r\n }}\r\n >{props.title}\r\n </h4>\r\n </div>\r\n )\r\n }\r\n <button\r\n type=\"button\"\r\n style={{\r\n position: 'absolute',\r\n top: '0.5rem',\r\n right: '0.5rem',\r\n zIndex: 20,\r\n fontSize: '1.375rem',\r\n fontWeight: '700',\r\n background: 'transparent',\r\n border: 'none',\r\n padding: '5px 10px'\r\n }}\r\n onClick={props.onClose}\r\n >\r\n &times;\r\n </button>\r\n <div>\r\n </div>\r\n </DialogBody>\r\n </DialogMask>\r\n </>\r\n ),\r\n document.body\r\n );\r\n};\r\n\r\nexport type DialogTitleProps = {\r\n title?: string\r\n};\r\n\r\nexport type DialogProps = DialogTitleProps & {\r\n open: boolean\r\n onClose?: () => void\r\n};\r\n","import React from 'react';\r\nimport { Dialog } from './Dialog';\r\n\r\nexport const ScanConfirmationDialog: React.FC<TScanConfirmDialogProps> = props => (\r\n\r\n // @ts-ignore\r\n <Dialog\r\n open={props.open}\r\n title={props?.title || \"confirmation de l'évènement\"}\r\n onClose={props.onClose}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}\r\n >\r\n <p>\r\n {props?.message || 'Voulez-vous vraiment confirmer le scan ?'}\r\n </p>\r\n <div\r\n style={{\r\n marginTop: '1.25rem',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n marginTop: '1rem'\r\n }}\r\n >\r\n <button\r\n type=\"button\"\r\n className=\"btn\"\r\n style={{\r\n backgroundColor: '#e5e7eb',\r\n color: 'black',\r\n ...props?.btnCancel?.style\r\n }}\r\n onClick={props.onClose}\r\n >\r\n { props?.btnCancel?.label || 'annuler' }\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"btn\"\r\n style={{\r\n backgroundColor: '#22c55e',\r\n color: 'white',\r\n ...props?.btnOk?.style\r\n }}\r\n onClick={props.onConfirm}\r\n >\r\n { props?.btnOk?.label || 'confirmer' }\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </Dialog>\r\n);\r\n\r\nexport type TScanConfirmDialogLabels = {\r\n title?: string,\r\n message?: string,\r\n btnOk?: {\r\n label: string,\r\n style?: React.CSSProperties,\r\n },\r\n btnCancel?: {\r\n label: string,\r\n style?: React.CSSProperties,\r\n }\r\n};\r\n\r\nexport type TScanConfirmDialogProps = {\r\n open: boolean\r\n onConfirm: () => void\r\n onClose: () => void\r\n} & TScanConfirmDialogLabels;\r\n","import React, { useCallback, useMemo, useState } from 'react';\r\nimport { IDetectedBarcode, IScannerProps, Scanner as QrScanner, boundingBox, centerText, outline } from '@yudiel/react-qr-scanner';\r\nimport { ScanConfirmationDialog, TScanConfirmDialogLabels } from './ScanConfirmationDialog';\r\n\r\nconst Scanner: React.FC<ScannerProps> = ({ scanConfirmation = true, scanTrackerType = 'centerText', ...props }) => {\r\n const [open, setOpen] = useState<boolean>(false);\r\n const [onConfirm, setOnConfirm] = useState<boolean>(false);\r\n const [currentResult, setCurrentResult] = useState<IDetectedBarcode[]>([]);\r\n\r\n const handleCloseDialog = () => {\r\n setOpen(false);\r\n setOnConfirm(false);\r\n };\r\n\r\n const getTracker = useMemo(() => {\r\n switch (scanTrackerType) {\r\n case 'outline':\r\n return outline;\r\n case 'boundingBox':\r\n return boundingBox;\r\n case 'centerText':\r\n return centerText;\r\n default:\r\n return undefined;\r\n }\r\n }, [scanTrackerType]);\r\n\r\n const handleConfirmScan = useCallback(() => {\r\n handleCloseDialog();\r\n props.onScan(currentResult);\r\n }, [props, currentResult]);\r\n\r\n const handleOnScan = useCallback((result: IDetectedBarcode[]) => {\r\n if (!scanConfirmation) return;\r\n\r\n setOpen(true);\r\n setOnConfirm(true);\r\n setCurrentResult(result);\r\n }, [props]);\r\n\r\n const containerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n width: '100%',\r\n gap: '15px',\r\n margin: '20px'\r\n };\r\n\r\n return (\r\n <>\r\n <div style={containerStyle}>\r\n <QrScanner\r\n formats={[\r\n 'qr_code',\r\n 'micro_qr_code',\r\n 'rm_qr_code',\r\n 'maxi_code',\r\n 'pdf417',\r\n 'aztec',\r\n 'data_matrix',\r\n 'matrix_codes',\r\n 'dx_film_edge',\r\n 'databar',\r\n 'databar_expanded',\r\n 'codabar',\r\n 'code_39',\r\n 'code_93',\r\n 'code_128',\r\n 'ean_8',\r\n 'ean_13',\r\n 'itf',\r\n 'linear_codes',\r\n 'upc_a',\r\n 'upc_e'\r\n ]}\r\n components={{\r\n onOff: true,\r\n torch: true,\r\n tracker: getTracker,\r\n finder: false\r\n }}\r\n scanDelay={2000}\r\n allowMultiple={false}\r\n {...props}\r\n onScan={handleOnScan}\r\n paused={onConfirm}\r\n />\r\n </div>\r\n <ScanConfirmationDialog\r\n open={open}\r\n onClose={handleCloseDialog}\r\n onConfirm={handleConfirmScan}\r\n {...props?.scanConfirmDialog}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport type TScanTrackerType = 'outline' | 'boundingBox' | 'centerText';\r\n\r\ntype ScannerProps = {\r\n scanConfirmation?: boolean,\r\n scanConfirmDialog?: TScanConfirmDialogLabels,\r\n scanTrackerType?: TScanTrackerType;\r\n onScan?: (detectedCodes: IDetectedBarcode[]) => void;\r\n} & IScannerProps;\r\n\r\nexport default Scanner;","class FileStorageDB {\r\n private dbName = 'cortex-react-media';\r\n private storeName = 'capturedFiles';\r\n private db: IDBDatabase | null = null;\r\n\r\n async openDatabase(): Promise<IDBDatabase> {\r\n return new Promise((resolve, reject) => {\r\n const request = indexedDB.open(this.dbName, 1);\r\n\r\n request.onupgradeneeded = event => {\r\n const db = request.result;\r\n db.createObjectStore(this.storeName, {\r\n keyPath: 'id',\r\n autoIncrement: true\r\n });\r\n };\r\n\r\n request.onsuccess = () => {\r\n this.db = request.result;\r\n resolve(this.db);\r\n };\r\n\r\n request.onerror = () => reject(request.error);\r\n });\r\n }\r\n\r\n async storeFile(file: File): Promise<number> {\r\n if (!this.db) {\r\n await this.openDatabase();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const transaction = this.db!.transaction(this.storeName, 'readwrite');\r\n const store = transaction.objectStore(this.storeName);\r\n const request = store.add({\r\n file,\r\n timestamp: Date.now(),\r\n name: file.name\r\n });\r\n\r\n request.onsuccess = () => resolve(request.result as number);\r\n request.onerror = () => reject(request.error);\r\n });\r\n }\r\n\r\n async retrieveFile(id: number): Promise<File | null> {\r\n if (!this.db) {\r\n await this.openDatabase();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const transaction = this.db!.transaction([this.storeName], 'readonly');\r\n const store = transaction.objectStore(this.storeName);\r\n const request = store.get(id);\r\n\r\n request.onsuccess = () => {\r\n const record = request.result;\r\n resolve(record ? record.file : null);\r\n };\r\n\r\n request.onerror = () => reject(request.error);\r\n });\r\n }\r\n}\r\n\r\nexport default FileStorageDB;\r\n","import React, { useState, useRef, useCallback, useEffect } from 'react';\r\nimport Webcam, { WebcamProps } from 'react-webcam';\r\nimport { FaCamera, FaPlay, FaPause, FaStop } from 'react-icons/fa';\r\nimport { MdCameraswitch } from 'react-icons/md';\r\nimport { BsFillRecordFill } from 'react-icons/bs';\r\nimport { useTimer } from './useTimer';\r\nimport FileStorageDB from './FileStorageDb';\r\nimport Button from '../Button';\r\n\r\nconst Camera: React.FC<CameraProps> = ({\r\n onCapture,\r\n isOffline = false,\r\n mode = 'photo',\r\n validateText = 'Valider',\r\n resetText = 'Annuler',\r\n isShowOffline = false,\r\n isShowVideoButton = false,\r\n isShowSwitchButton = false,\r\n ...props\r\n}) => {\r\n const webcamRef = useRef<Webcam>(null);\r\n const mediaRecorderRef = useRef<MediaRecorder | null>(null);\r\n const fileStorageRef = useRef(new FileStorageDB());\r\n const [mode_, setMode] = useState(mode);\r\n const [playing, setPlaying] = useState(false);\r\n const [isFrontCamera, setIsFrontCamera] = useState(false);\r\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent) || navigator.maxTouchPoints > 0 || 'ontouchstart' in document.documentElement;\r\n const MdCameraswitchItem = MdCameraswitch as React.FC<{ size?: number }>;\r\n const FaCameraItem = FaCamera as React.FC<{ size?: number }>;\r\n const BsFillRecordFillItem = BsFillRecordFill as React.FC<{ size?: number }>;\r\n const FaStopItem = FaStop as React.FC<{ size?: number }>;\r\n const FaPlayItem = FaPlay as React.FC;\r\n const FaPauseItem = FaPause as React.FC;\r\n\r\n const { formatedTime, startTimer, stopTimer } = useTimer();\r\n\r\n const [mediaState, setMediaState] = useState<MediaState>({\r\n imageUrl: null,\r\n videoUrl: null,\r\n isRecording: false,\r\n storedFileId: null,\r\n file: null\r\n });\r\n\r\n const [videoConstraints, setVideoConstraints] = useState<boolean | MediaTrackConstraints | undefined>({\r\n facingMode: 'environment',\r\n width: { min: 200 },\r\n height: { min: 300 }\r\n });\r\n\r\n useEffect(() => {\r\n setVideoConstraints({\r\n facingMode: isMobile ? 'environment' : 'user',\r\n width: { min: 200 },\r\n height: { min: 300 }\r\n });\r\n\r\n return () => {\r\n resetCapture();\r\n stopTimer();\r\n stopVideoRecording();\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (mode_ === 'video') {\r\n setPlaying(false);\r\n }\r\n }, [mediaState]);\r\n\r\n const capturePhoto = useCallback(async () => {\r\n const imageSrc = webcamRef.current?.getScreenshot();\r\n if (imageSrc) {\r\n const byteCharacters = atob(imageSrc.split(',')[1]);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const blob = new Blob([byteArray], { type: 'image/jpeg' });\r\n\r\n const fileName = `captured_image_${Date.now().toString().slice(-7)}.jpg`;\r\n const file = new File([blob], fileName, { type: 'image/jpeg' });\r\n\r\n const fileUrl = URL.createObjectURL(file);\r\n\r\n setMediaState(prev => ({\r\n ...prev,\r\n imageUrl: fileUrl,\r\n file\r\n }));\r\n }\r\n }, [webcamRef, isOffline, onCapture]);\r\n\r\n const handlePlay = () => {\r\n const video = document.getElementById('video') as HTMLVideoElement;\r\n try {\r\n if (video.paused) {\r\n video.play();\r\n }\r\n else {\r\n video.pause();\r\n }\r\n setPlaying(!playing);\r\n }\r\n catch (e) { }\r\n };\r\n\r\n const startVideoRecording = useCallback(() => {\r\n if (webcamRef.current && webcamRef.current.stream) {\r\n let ext = 'webm';\r\n let mimeType = `video/${ext}`;\r\n\r\n if (MediaRecorder.isTypeSupported('video/mp4')) {\r\n ext = 'mp4';\r\n mimeType = 'video/mp4';\r\n }\r\n\r\n const mediaRecorder = new MediaRecorder(webcamRef.current.stream, { mimeType });\r\n\r\n const chunks: Blob[] = [];\r\n\r\n mediaRecorder.ondataavailable = e => {\r\n if (e.data.size > 0) {\r\n chunks.push(e.data);\r\n }\r\n };\r\n\r\n mediaRecorder.onstop = async () => {\r\n const blob = new Blob(chunks, { type: mimeType });\r\n\r\n const fileName = `captured_video_${Date.now()}.${ext}`;\r\n const file = new File([blob], fileName, { type: mimeType });\r\n\r\n const fileUrl = URL.createObjectURL(file);\r\n\r\n setMediaState(prev => ({\r\n ...prev,\r\n videoUrl: fileUrl,\r\n isRecording: false,\r\n file\r\n }));\r\n stopTimer();\r\n };\r\n\r\n mediaRecorder.start();\r\n mediaRecorderRef.current = mediaRecorder;\r\n startTimer();\r\n setMediaState(prev => ({ ...prev, isRecording: true }));\r\n }\r\n }, [webcamRef, isOffline, startTimer, stopTimer, onCapture]);\r\n\r\n const resetCapture = () => {\r\n setMediaState({\r\n imageUrl: null,\r\n videoUrl: null,\r\n isRecording: false,\r\n storedFileId: null,\r\n file: null\r\n });\r\n };\r\n\r\n const switchMode = (val: any) => {\r\n setMode(val);\r\n resetCapture();\r\n };\r\n\r\n const validateCapture = async () => {\r\n if (isOffline) {\r\n const storedFileId = await fileStorageRef.current.storeFile(mediaState.file!);\r\n onCapture({\r\n fileRowId: storedFileId,\r\n fileStoreName: 'capturedFiles'\r\n });\r\n }\r\n if (!isOffline && mode_ === 'photo') {\r\n onCapture({\r\n file: mediaState.file,\r\n imageSrc: mediaState.imageUrl\r\n });\r\n }\r\n if (!isOffline && mode_ === 'video') {\r\n onCapture({\r\n file: mediaState.file,\r\n videoSrc: mediaState.videoUrl\r\n });\r\n }\r\n resetCapture();\r\n };\r\n\r\n return (\r\n <div className=\"camera-container\">\r\n {!mediaState.imageUrl && !mediaState.videoUrl ? (\r\n <div className=\"camera-preview\">\r\n {\r\n mediaState.isRecording && (\r\n <div className=\"camera-recording-timer\" style={{ display: mode_ === 'video' ? 'flex' : 'none' }}>\r\n <span className=\"camera-recording-dot\" />\r\n <span>{formatedTime}</span>\r\n </div>\r\n )\r\n }\r\n {\r\n !mediaState.isRecording && isShowVideoButton && (\r\n <button\r\n type=\"button\"\r\n onClick={() => switchMode(mode_ === 'photo' ? 'video' : 'photo')}\r\n className=\"camera-button camera-mode\"\r\n >\r\n <span>{mode_ === 'photo' ? 'Video' : 'Photo'}</span>\r\n </button>\r\n )\r\n }\r\n {\r\n isMobile && !mediaState.isRecording && isShowSwitchButton && (\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsFrontCamera(!isFrontCamera);\r\n setVideoConstraints({\r\n facingMode: !isFrontCamera ? 'user' : 'environment',\r\n width: { min: 200 },\r\n height: { min: 300 }\r\n });\r\n }}\r\n className=\"camera-button camera-switch\"\r\n >\r\n <MdCameraswitchItem size={18} />\r\n </button>\r\n )\r\n }\r\n {\r\n isOffline && isShowOffline && (\r\n <div className=\"camera-offline-mode\">\r\n Offline mode\r\n </div>\r\n )\r\n }\r\n <Webcam\r\n ref={webcamRef}\r\n videoConstraints={{\r\n facingMode: 'environment',\r\n width: { min: 200 },\r\n height: { min: 300 }\r\n }}\r\n {...props}\r\n style={{\r\n height: '90% !important',\r\n objectFit: 'contain',\r\n overflowClipMargin: 'content-box',\r\n overflow: 'clip',\r\n aspectRatio: '16/9',\r\n display: 'flex',\r\n justifySelf: 'center',\r\n margin: '0 auto'\r\n }}\r\n screenshotFormat=\"image/jpeg\"\r\n allowFullScreen\r\n />\r\n <div className=\"camera-controls\">\r\n {mode_ === 'photo' && (\r\n <Button\r\n variant=\"contained\"\r\n className=\"camera-button camera-button--capture\"\r\n onClick={capturePhoto}\r\n >\r\n <FaCameraItem size={28} />\r\n </Button>\r\n )}\r\n {mode_ === 'video' && !mediaState.isRecording && (\r\n <Button\r\n variant=\"contained\"\r\n onClick={startVideoRecording}\r\n className=\"camera-button camera-button--record\"\r\n >\r\n <BsFillRecordFillItem size={30} />\r\n </Button>\r\n )}\r\n {mode_ === 'video' && mediaState.isRecording && (\r\n <Button\r\n variant=\"contained\"\r\n onClick={stopVideoRecording}\r\n className=\"camera-button camera-button--record\"\r\n >\r\n <FaStopItem size={28} />\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\"camera-preview camera-screen-animation\">\r\n {mediaState.imageUrl && (\r\n <img\r\n src={mediaState.imageUrl}\r\n alt=\"Capturé\"\r\n style={{\r\n height: '90%',\r\n objectFit: 'contain',\r\n overflowClipMargin: 'content-box',\r\n overflow: 'clip',\r\n aspectRatio: '16/9',\r\n display: 'flex',\r\n justifySelf: 'center'\r\n }}\r\n />\r\n )}\r\n {mediaState.videoUrl && (\r\n <video\r\n width=\"100%\"\r\n height=\"90%\"\r\n id=\"video\"\r\n style={{\r\n height: '90%',\r\n objectFit: 'contain',\r\n overflowClipMargin: 'content-box',\r\n overflow: 'clip',\r\n aspectRatio: '16/9',\r\n display: 'flex',\r\n justifySelf: 'center'\r\n }}\r\n onEnded={() => setPlaying(false)}\r\n >\r\n <source src={mediaState.videoUrl} type=\"video/mp4\" />\r\n <source src={mediaState.videoUrl} type=\"video/webm\" />\r\n <track kind=\"captions\" src=\"\" lang=\"en\" label=\"English\" default />\r\n Your browser does not support the video.\r\n </video>\r\n )}\r\n {mediaState.videoUrl && (\r\n <Button\r\n variant=\"contained\"\r\n className=\"video-play-btn\"\r\n onClick={handlePlay}\r\n >\r\n {!playing ? <FaPlayItem /> : <FaPauseItem />}\r\n </Button>\r\n )}\r\n <div className=\"camera-controls\">\r\n <Button\r\n variant=\"contained\"\r\n onClick={validateCapture}\r\n className=\"camera-button camera-button--download\"\r\n >\r\n {validateText}\r\n </Button>\r\n <Button\r\n variant=\"outlined\"\r\n onClick={resetCapture}\r\n className=\"camera-button camera-button--reset\"\r\n >\r\n {resetText}\r\n </Button>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n\r\n function stopVideoRecording() {\r\n if (mediaRecorderRef.current) {\r\n mediaRecorderRef.current.stop();\r\n }\r\n }\r\n};\r\n\r\ntype MediaState = {\r\n imageUrl: string | null;\r\n videoUrl: string | null;\r\n isRecording: boolean;\r\n file: File | null;\r\n storedFileId: number | null;\r\n}\r\n\r\nexport type CameraProps = {\r\n onCapture: ({ fileStoreName, fileRowId, file }: TfileCapturedProps) => void;\r\n mode?: 'photo' | 'video';\r\n isOffline?: boolean;\r\n isShowOffline?: boolean;\r\n validateText?: string;\r\n resetText?:string;\r\n isShowVideoButton?: boolean;\r\n isShowSwitchButton?: boolean;\r\n} & Partial<WebcamProps>;\r\n\r\nexport type TfileCapturedProps = {\r\n fileStoreName?: string | null,\r\n fileRowId?: number | null,\r\n file?: File | null,\r\n imageSrc?: string | null,\r\n videoSrc?: string | null\r\n}\r\n\r\nexport default Camera;","import { useCallback, useMemo, useRef, useState } from 'react';\r\n\r\nexport const useTimer = () => {\r\n const timerIntervalRef = useRef<any>(null);\r\n const [recordingTime, setRecordingTime] = useState(0);\r\n\r\n const formatTime = (totalSeconds: number) => {\r\n const days = Math.floor(totalSeconds / (24 * 3600));\r\n const hours = Math.floor((totalSeconds % (24 * 3600)) / 3600);\r\n const minutes = Math.floor((totalSeconds % 3600) / 60);\r\n const seconds = totalSeconds % 60;\r\n return `${days > 0 ? days.toString().padStart(2, '0').concat(':') : ''}${hours > 0 ? hours.toString().padStart(2, '0').concat(':') : ''}${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n };\r\n\r\n const formatedTime = useMemo(() => formatTime(recordingTime), [recordingTime]);\r\n\r\n const startTimer = useCallback(() => {\r\n setRecordingTime(0);\r\n timerIntervalRef.current = setInterval(() => {\r\n setRecordingTime(prev => prev + 1);\r\n }, 1000);\r\n }, []);\r\n\r\n const stopTimer = useCallback(() => {\r\n if (timerIntervalRef.current) {\r\n clearInterval(timerIntervalRef.current);\r\n timerIntervalRef.current = null;\r\n }\r\n }, []);\r\n\r\n return {\r\n formatTime,\r\n startTimer,\r\n stopTimer,\r\n formatedTime\r\n };\r\n};","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface ToggleButtonProps {\r\n selected?: boolean;\r\n value?: string;\r\n className?: string;\r\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n children?: React.ReactNode;\r\n onChange?: (value: string | undefined) => void;\r\n}\r\n\r\nconst ToggleButton: React.FC<ToggleButtonProps> = ({\r\n selected,\r\n value,\r\n size,\r\n children,\r\n className,\r\n onChange\r\n}: ToggleButtonProps) => {\r\n const handleBtnClick = React.useCallback(() => {\r\n if (onChange) {\r\n onChange(value);\r\n }\r\n }, [onChange, value]);\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n className={classNames(\r\n 'ui-toggleBtn',\r\n size !== undefined ? `ui-toggleBtn-size-${size}` : 'ui-toggleBtn-size-md',\r\n selected === true ? 'ui-toggleBtn-selected' : null,\r\n className\r\n )}\r\n onClick={handleBtnClick}\r\n >\r\n {children}\r\n </button>\r\n );\r\n};\r\n\r\nexport default ToggleButton;","import React from 'react';\r\nimport CSSTransition from './CSSTransition';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\ntype Props = {\r\n trigger: boolean,\r\n children?: React.ReactElement;\r\n onEnter?: () => void;\r\n onEntering?: () => void;\r\n onEntered?: () => void;\r\n onExit?: () => void;\r\n onExiting?: () => void;\r\n onExited?: () => void;\r\n};\r\n\r\nconst Fade = forwardRef<HTMLElement, Props>(({\r\n trigger,\r\n children,\r\n onEnter,\r\n onEntering,\r\n onEntered,\r\n onExit,\r\n onExiting,\r\n onExited\r\n}, ref) => (\r\n <CSSTransition\r\n ref={ref}\r\n trigger={trigger}\r\n mode=\"appear\"\r\n className=\"ui-fade\"\r\n enterTimeout={160}\r\n exitTimeout={160}\r\n onEnter={onEnter}\r\n onExit={onExit}\r\n onEntering={onEntering}\r\n onEntered={onEntered}\r\n onExiting={onExiting}\r\n onExited={onExited}\r\n >\r\n {children}\r\n </CSSTransition>\r\n));\r\n\r\nexport default Fade;\r\n","import React from 'react';\r\nimport Popper from '../Popper';\r\nimport Fade from '../Transition/Fade';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface TooltipProps {\r\n children?: React.ReactElement;\r\n anchorEl?: string | HTMLElement | React.RefObject<HTMLElement>;\r\n title: React.ReactNode;\r\n enterDelay?: number;\r\n leaveDelay?: number;\r\n className?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst Tooltip: React.FC<TooltipProps> = ({\r\n children,\r\n title,\r\n anchorEl,\r\n enterDelay = 0,\r\n leaveDelay = 0,\r\n className,\r\n disabled\r\n}) => {\r\n const [childNode, setChildNode] = React.useState<HTMLElement | undefined>(undefined);\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const [isTransitionExited, setTransitionExited] = React.useState(true);\r\n const [isTouchDevice, setIsTouchDevice] = React.useState(false);\r\n const mouseEnterTimer = React.useRef<number>();\r\n const mouseLeaveTimer = React.useRef<number>();\r\n const transition = true;\r\n\r\n React.useEffect(() => {\r\n if (disabled === true) {\r\n setIsOpen(false);\r\n }\r\n }, [disabled]);\r\n\r\n const openTooltip = () => {\r\n setIsOpen(true);\r\n };\r\n\r\n const closeTooltip = () => {\r\n setIsOpen(false);\r\n };\r\n\r\n const handleFocus = (event: React.MouseEvent<HTMLElement>) => {\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n\r\n mouseEnterTimer.current = setTimeout(\r\n () => {\r\n openTooltip();\r\n },\r\n enterDelay\r\n );\r\n };\r\n\r\n const handleMouseEnter = (event: React.MouseEvent<HTMLElement>) => {\r\n if (isTouchDevice) return;\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n if (disabled !== true) {\r\n mouseEnterTimer.current = setTimeout(\r\n () => {\r\n openTooltip();\r\n },\r\n enterDelay\r\n );\r\n }\r\n };\r\n\r\n const handleMouseLeave = (event: React.MouseEvent<HTMLElement>) => {\r\n if (isTouchDevice) return;\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n mouseLeaveTimer.current = setTimeout(\r\n () => {\r\n closeTooltip();\r\n },\r\n leaveDelay\r\n );\r\n };\r\n\r\n const handleMouseOver = (event: React.MouseEvent<HTMLElement>) => {\r\n if (isTouchDevice) return;\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n if (disabled !== true) {\r\n mouseEnterTimer.current = setTimeout(\r\n () => {\r\n openTooltip();\r\n },\r\n enterDelay\r\n );\r\n }\r\n };\r\n\r\n const handleTouchStart = (event: React.TouchEvent<HTMLDivElement>) => {\r\n setIsTouchDevice(true);\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n if (disabled !== true) {\r\n mouseEnterTimer.current = setTimeout(\r\n () => {\r\n openTooltip();\r\n },\r\n 2000\r\n );\r\n }\r\n };\r\n\r\n const handleTouchEnd = (event: React.TouchEvent<HTMLDivElement>) => {\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n mouseLeaveTimer.current = setTimeout(\r\n () => {\r\n closeTooltip();\r\n },\r\n 3000\r\n );\r\n };\r\n\r\n let childrenNode: React.ReactElement | undefined;\r\n if (children) {\r\n const childrenProps = {\r\n ...children.props,\r\n onFocus: handleFocus,\r\n onMouseEnter: handleMouseEnter,\r\n onMouseLeave: handleMouseLeave,\r\n onMouseOver: handleMouseOver,\r\n onTouchStart: handleTouchStart,\r\n onTouchEnd: handleTouchEnd\r\n };\r\n\r\n childrenNode = React.cloneElement(children, childrenProps);\r\n }\r\n\r\n const handleTransitionEnter = () => {\r\n setTransitionExited(false);\r\n };\r\n\r\n const handleTransitionExited = () => {\r\n setTransitionExited(true);\r\n };\r\n\r\n const computeOpen = isOpen || (transition && !isTransitionExited);\r\n return (\r\n <>\r\n {childrenNode}\r\n\r\n <Popper\r\n role=\"tooltip\"\r\n anchorEl={childNode}\r\n open={computeOpen}\r\n className={classNames(\r\n 'ui-tooltip',\r\n className\r\n )}\r\n onMouseOver={!isTouchDevice ? handleMouseOver : undefined}\r\n onMouseLeave={!isTouchDevice ? handleMouseLeave : undefined}\r\n onTouchStart={handleTouchStart}\r\n onTouchEnd={handleTouchEnd}\r\n >\r\n <Fade\r\n trigger={isOpen}\r\n onEnter={handleTransitionEnter}\r\n onExited={handleTransitionExited}\r\n >\r\n <div className=\"ui-tooltip-content\">\r\n {title}\r\n </div>\r\n </Fade>\r\n </Popper>\r\n\r\n </>\r\n );\r\n};\r\n\r\nexport default Tooltip;","import * as React from 'react';\r\n\r\nconst getAnchorElement = (anchorEl: string | HTMLElement | React.RefObject<HTMLElement> | undefined): HTMLElement | undefined => {\r\n if (!anchorEl) return document.body;\r\n if (Object.prototype.toString.call(anchorEl) === '[object String]') {\r\n const element = document.getElementById(anchorEl as string);\r\n return element ?? document.body;\r\n }\r\n\r\n const ref = anchorEl as React.RefObject<HTMLElement>;\r\n if (ref && ref.current !== undefined) {\r\n return ref.current ?? undefined;\r\n }\r\n\r\n return anchorEl as HTMLElement;\r\n};\r\n\r\nexport default function useClickOutside(\r\n callback: () => void,\r\n nodes: (string | HTMLElement | React.RefObject<HTMLElement>)[],\r\n): void {\r\n const handleDocumentMouseDown = React.useCallback((event: MouseEvent) => {\r\n const { target } = event;\r\n\r\n const isOutside = nodes.reduce((acc, item) => {\r\n if (!item) return acc;\r\n const element = getAnchorElement(item);\r\n if (acc === false || !element || element === null) return acc;\r\n\r\n return !element.contains(target as Node);\r\n }, true);\r\n\r\n if (callback && isOutside) {\r\n callback();\r\n }\r\n }, [callback]);\r\n\r\n React.useEffect(() => {\r\n document.addEventListener('mousedown', handleDocumentMouseDown);\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', handleDocumentMouseDown);\r\n };\r\n }, [nodes, handleDocumentMouseDown]);\r\n}","import React from 'react';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TooltipProps {\r\n tag: Cortex.Tag;\r\n className?: string;\r\n onDelete?: () => void;\r\n}\r\n\r\nconst TagItem: React.FC<TooltipProps> = ({ tag, className, onDelete }) => (\r\n <span className=\"ui-taginputItem\">\r\n <span className=\"ui-taginputItemLabel\">{tag.label}</span>\r\n <button\r\n type=\"button\"\r\n className=\"ui-taginputItemRemove\"\r\n onClick={onDelete}\r\n >\r\n x\r\n </button>\r\n </span>\r\n);\r\n\r\nexport default TagItem;","(function(previousMethods){\nif (typeof previousMethods === 'undefined') {\n // Defining previously that object allows you to use that plugin even if you have overridden L.map\n previousMethods = {\n getCenter: L.Map.prototype.getCenter,\n setView: L.Map.prototype.setView,\n flyTo: L.Map.prototype.flyTo,\n setZoomAround: L.Map.prototype.setZoomAround,\n getBoundsZoom: L.Map.prototype.getBoundsZoom,\n PopupAdjustPan: L.Popup.prototype._adjustPan,\n RendererUpdate: L.Renderer.prototype._update\n };\n}\n\nL.Map.include({\n\n // Overrides L.Map.getBounds\n getBounds: function() {\n if (this._viewport) {\n return this.getViewportLatLngBounds()\n } else {\n var bounds = this.getPixelBounds(),\n sw = this.unproject(bounds.getBottomLeft()),\n ne = this.unproject(bounds.getTopRight());\n\n return new L.LatLngBounds(sw, ne);\n }\n },\n\n // Extends L.Map\n getViewport: function() {\n return this._viewport;\n },\n\n // Extends L.Map\n getViewportBounds: function() {\n var vp = this._viewport,\n topleft = L.point(vp.offsetLeft, vp.offsetTop),\n vpsize = L.point(vp.clientWidth, vp.clientHeight);\n\n if (vpsize.x === 0 || vpsize.y === 0) {\n //Our own viewport has no good size - so we fallback to the container size:\n vp = this.getContainer();\n if(vp){\n topleft = L.point(0, 0);\n vpsize = L.point(vp.clientWidth, vp.clientHeight);\n }\n\n }\n\n return L.bounds(topleft, topleft.add(vpsize));\n },\n\n // Extends L.Map\n getViewportLatLngBounds: function() {\n var bounds = this.getViewportBounds();\n return L.latLngBounds(this.containerPointToLatLng(bounds.min), this.containerPointToLatLng(bounds.max));\n },\n\n // Extends L.Map\n getOffset: function() {\n var mCenter = this.getSize().divideBy(2),\n vCenter = this.getViewportBounds().getCenter();\n\n return mCenter.subtract(vCenter);\n },\n\n // Overrides L.Map.getCenter\n getCenter: function (withoutViewport) {\n var center = previousMethods.getCenter.call(this);\n\n if (this.getViewport() && !withoutViewport) {\n var zoom = this.getZoom(),\n point = this.project(center, zoom);\n point = point.subtract(this.getOffset());\n\n center = this.unproject(point, zoom);\n }\n\n return center;\n },\n\n // Overrides L.Map.setView\n setView: function (center, zoom, options) {\n center = L.latLng(center);\n zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\n\n if (this.getViewport()) {\n var point = this.project(center, this._limitZoom(zoom));\n point = point.add(this.getOffset());\n center = this.unproject(point, this._limitZoom(zoom));\n }\n\n return previousMethods.setView.call(this, center, zoom, options);\n },\n\n // Overrides L.Map.flyTo\n flyTo: function (targetCenter, targetZoom, options) {\n targetCenter = L.latLng(targetCenter);\n targetZoom = targetZoom === undefined ? startZoom : targetZoom;\n\n if (this.getViewport()) {\n var point = this.project(targetCenter, this._limitZoom(targetZoom));\n point = point.add(this.getOffset());\n targetCenter = this.unproject(point, this._limitZoom(targetZoom));\n }\n\n options = options || {};\n if (options.animate === false || !L.Browser.any3d) {\n return this.setView(targetCenter, targetZoom, options);\n }\n\n this._stop();\n\n var from = this.project(previousMethods.getCenter.call(this)),\n to = this.project(targetCenter),\n size = this.getSize(),\n startZoom = this._zoom;\n\n\n var w0 = Math.max(size.x, size.y),\n w1 = w0 * this.getZoomScale(startZoom, targetZoom),\n u1 = (to.distanceTo(from)) || 1,\n rho = 1.42,\n rho2 = rho * rho;\n\n function r(i) {\n var s1 = i ? -1 : 1,\n s2 = i ? w1 : w0,\n t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\n b1 = 2 * s2 * rho2 * u1,\n b = t1 / b1,\n sq = Math.sqrt(b * b + 1) - b;\n\n // workaround for floating point precision bug when sq = 0, log = -Infinite,\n // thus triggering an infinite loop in flyTo\n var log = sq < 0.000000001 ? -18 : Math.log(sq);\n\n return log;\n }\n\n function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\n function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\n function tanh(n) { return sinh(n) / cosh(n); }\n\n var r0 = r(0);\n\n function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\n function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\n\n function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\n\n var start = Date.now(),\n S = (r(1) - r0) / rho,\n duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\n\n function frame() {\n var t = (Date.now() - start) / duration,\n s = easeOut(t) * S;\n\n if (t <= 1) {\n this._flyToFrame = L.Util.requestAnimFrame(frame, this);\n\n this._move(\n this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\n this.getScaleZoom(w0 / w(s), startZoom),\n {flyTo: true});\n\n } else {\n this\n ._move(targetCenter, targetZoom)\n ._moveEnd(true);\n }\n }\n\n this._moveStart(true, options.noMoveStart);\n\n frame.call(this);\n return this;\n },\n\n // Overrides L.Map.setZoomAround\n setZoomAround: function (latlng, zoom, options) {\n var vp = this.getViewport();\n\n if (vp) {\n var scale = this.getZoomScale(zoom),\n viewHalf = this.getViewportBounds().getCenter(),\n containerPoint = latlng instanceof L.Point ? latlng : this.latLngToContainerPoint(latlng),\n\n centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\n newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\n\n return this.setView(newCenter, zoom, {zoom: options});\n } else {\n return previousMethods.setZoomAround.call(this, latlng, zoom, options);\n }\n },\n\n // Overrides L.Map.getBoundsZoom\n getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\n bounds = L.latLngBounds(bounds);\n padding = L.point(padding || [0, 0]);\n\n var zoom = this.getZoom() || 0,\n min = this.getMinZoom(),\n max = this.getMaxZoom(),\n nw = bounds.getNorthWest(),\n se = bounds.getSouthEast(),\n vp = this.getViewport(),\n size = (vp ? L.point(vp.clientWidth, vp.clientHeight) : this.getSize()).subtract(padding),\n boundsSize = this.project(se, zoom).subtract(this.project(nw, zoom)),\n snap = L.Browser.any3d ? this.options.zoomSnap : 1,\n scalex = size.x / boundsSize.x,\n scaley = size.y / boundsSize.y,\n scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\n\n zoom = this.getScaleZoom(scale, zoom);\n\n if (snap) {\n zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\n zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\n }\n\n return Math.max(min, Math.min(max, zoom));\n },\n\n // Extends L.Map\n setActiveArea: function (css, keepCenter, animate) {\n var center;\n if (keepCenter && this._zoom) {\n // save center if map is already initialized\n // and keepCenter is passed\n center = this.getCenter();\n }\n\n if( !this._viewport ){\n //Make viewport if not already made\n var container = this.getContainer();\n this._viewport = L.DomUtil.create('div', '');\n container.insertBefore(this._viewport, container.firstChild);\n }\n\n if (typeof css === 'string') {\n this._viewport.className = css;\n } else {\n L.extend(this._viewport.style, css);\n }\n\n if (center) {\n this.setView(center, this.getZoom(), { animate: !!animate });\n }\n return this;\n }\n});\n\nL.Renderer.include({\n\n // Overrides L.Renderer._onZoom\n _onZoom: function () {\n this._updateTransform(this._map.getCenter(true), this._map.getZoom());\n },\n\n // Overrides L.Renderer._update\n _update: function () {\n previousMethods.RendererUpdate.call(this);\n this._center = this._map.getCenter(true);\n }\n});\n\nL.GridLayer.include({\n\n // Overrides L.GridLayer._updateLevels\n _updateLevels: function () {\n\n var zoom = this._tileZoom,\n maxZoom = this.options.maxZoom;\n\n if (zoom === undefined) { return undefined; }\n\n for (var z in this._levels) {\n z = Number(z);\n if (this._levels[z].el.children.length || z === zoom) {\n this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n this._onUpdateLevel(z);\n } else {\n L.DomUtil.remove(this._levels[z].el);\n this._removeTilesAtZoom(z);\n this._onRemoveLevel(z);\n delete this._levels[z];\n }\n }\n\n var level = this._levels[zoom],\n map = this._map;\n\n if (!level) {\n level = this._levels[zoom] = {};\n\n level.el = L.DomUtil.create('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n level.el.style.zIndex = maxZoom;\n\n level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n level.zoom = zoom;\n\n this._setZoomTransform(level, map.getCenter(true), map.getZoom());\n\n // force the browser to consider the newly added element for transition\n L.Util.falseFn(level.el.offsetWidth);\n\n this._onCreateLevel(level);\n }\n\n this._level = level;\n\n return level;\n },\n\n // Overrides L.GridLayer._resetView\n _resetView: function (e) {\n var animating = e && (e.pinch || e.flyTo);\n this._setView(this._map.getCenter(true), this._map.getZoom(), animating, animating);\n },\n\n // Overrides L.GridLayer._update\n _update: function (center) {\n var map = this._map;\n if (!map) { return; }\n var zoom = this._clampZoom(map.getZoom());\n\n if (center === undefined) { center = map.getCenter(true); }\n if (this._tileZoom === undefined) { return; } // if out of minzoom/maxzoom\n\n var pixelBounds = this._getTiledPixelBounds(center),\n tileRange = this._pxBoundsToTileRange(pixelBounds),\n tileCenter = tileRange.getCenter(),\n queue = [],\n margin = this.options.keepBuffer,\n noPruneRange = new L.Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n tileRange.getTopRight().add([margin, -margin]));\n\n // Sanity check: panic if the tile range contains Infinity somewhere.\n if (!(isFinite(tileRange.min.x) &&\n isFinite(tileRange.min.y) &&\n isFinite(tileRange.max.x) &&\n isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n for (var key in this._tiles) {\n var c = this._tiles[key].coords;\n if (c.z !== this._tileZoom || !noPruneRange.contains(new L.Point(c.x, c.y))) {\n this._tiles[key].current = false;\n }\n }\n\n // _update just loads more tiles. If the tile zoom level differs too much\n // from the map's, let _setView reset levels and prune old tiles.\n if (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n // create a queue of coordinates to load tiles from\n for (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n for (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n var coords = new L.Point(i, j);\n coords.z = this._tileZoom;\n\n if (!this._isValidTile(coords)) { continue; }\n\n var tile = this._tiles[this._tileCoordsToKey(coords)];\n if (tile) {\n tile.current = true;\n } else {\n queue.push(coords);\n }\n }\n }\n\n // sort tile queue to load tiles in order of their distance to center\n queue.sort(function (a, b) {\n return a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n });\n\n if (queue.length !== 0) {\n // if it's the first batch of tiles to load\n if (!this._loading) {\n this._loading = true;\n // @event loading: Event\n // Fired when the grid layer starts loading tiles.\n this.fire('loading');\n }\n\n // create DOM fragment to append tiles in one batch\n var fragment = document.createDocumentFragment();\n\n for (i = 0; i < queue.length; i++) {\n this._addTile(queue[i], fragment);\n }\n\n this._level.el.appendChild(fragment);\n }\n }\n});\n\nL.Popup.include({\n\n // Overrides L.Popup._adjustPan\n _adjustPan: function () {\n if (!this._map._viewport) {\n previousMethods.PopupAdjustPan.call(this);\n } else {\n if (!this.options.autoPan) { return; }\n if (this._map._panAnim) { this._map._panAnim.stop(); }\n\n var map = this._map,\n vp = map._viewport,\n containerHeight = this._container.offsetHeight,\n containerWidth = this._containerWidth,\n vpTopleft = L.point(vp.offsetLeft, vp.offsetTop),\n\n layerPos = new L.Point(\n this._containerLeft - vpTopleft.x,\n - containerHeight - this._containerBottom - vpTopleft.y);\n\n layerPos._add(L.DomUtil.getPosition(this._container));\n\n var containerPos = map.layerPointToContainerPoint(layerPos),\n padding = L.point(this.options.autoPanPadding),\n paddingTL = L.point(this.options.autoPanPaddingTopLeft || padding),\n paddingBR = L.point(this.options.autoPanPaddingBottomRight || padding),\n size = L.point(vp.clientWidth, vp.clientHeight),\n dx = 0,\n dy = 0;\n\n if (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\n dx = containerPos.x + containerWidth - size.x + paddingBR.x;\n }\n if (containerPos.x - dx - paddingTL.x < 0) { // left\n dx = containerPos.x - paddingTL.x;\n }\n if (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\n dy = containerPos.y + containerHeight - size.y + paddingBR.y;\n }\n if (containerPos.y - dy - paddingTL.y < 0) { // top\n dy = containerPos.y - paddingTL.y;\n }\n\n // @namespace Map\n // @section Popup events\n // @event autopanstart: Event\n // Fired when the map starts autopanning when opening a popup.\n if (dx || dy) {\n map\n .fire('autopanstart')\n .panBy([dx, dy]);\n }\n }\n }\n});\n\n})(window.leafletActiveAreaPreviousMethods);\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport setRef from '../utils/setRef';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\nexport interface TagSearchInputProps {\r\n className?: string;\r\n value: string;\r\n onClick?: () => void;\r\n onChange?: (value: string) => void;\r\n}\r\n\r\nconst TagSearchInput = forwardRef<HTMLElement, TagSearchInputProps>(({\r\n className,\r\n value,\r\n onClick,\r\n onChange\r\n}, ref) => {\r\n const inputRef = React.useRef(null);\r\n\r\n const handleInputChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (!onChange) return;\r\n onChange(event.target.value);\r\n }, [onChange]);\r\n\r\n React.useEffect(() => {\r\n if (ref && inputRef) {\r\n setRef(ref, inputRef.current);\r\n\r\n return () => {\r\n setRef(ref, null);\r\n };\r\n }\r\n\r\n return undefined;\r\n }, [ref, inputRef]);\r\n\r\n return (\r\n <>\r\n <input\r\n ref={inputRef}\r\n value={value}\r\n className={classNames('ui-taginputFilter', className)}\r\n autoComplete=\"off\"\r\n spellCheck=\"false\"\r\n data-form-type=\"other\"\r\n onChange={handleInputChange}\r\n onClick={onClick}\r\n />\r\n </>\r\n );\r\n});\r\n\r\nexport default TagSearchInput;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TagSuggestionItemProps {\r\n suggestion: Cortex.TagSuggestion;\r\n onClick?: (suggestion: Cortex.TagSuggestion, event: React.MouseEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nconst TagSuggestionItem: React.FC<TagSuggestionItemProps> = ({\r\n suggestion,\r\n onClick\r\n}: TagSuggestionItemProps) => {\r\n const handleClick = React.useCallback((event: React.MouseEvent<HTMLDivElement>) => {\r\n if (!onClick) return;\r\n onClick(suggestion, event);\r\n }, [onClick]);\r\n\r\n return (\r\n <div\r\n role=\"button\"\r\n className=\"ui-taginputSelectItem\"\r\n tabIndex={0}\r\n onClick={handleClick}\r\n >\r\n {suggestion.label}\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagSuggestionItem;","import React from 'react';\r\nimport TagSuggestionItem from './TagSuggestionItem';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TagSuggestionGroupProps {\r\n group: Cortex.TagSuggestion;\r\n onClick?: (suggestion: Cortex.TagSuggestion, event: React.MouseEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nconst TagSuggestionGroup: React.FC<TagSuggestionGroupProps> = ({\r\n group,\r\n onClick\r\n}: TagSuggestionGroupProps) => {\r\n const suggestionElements = Array.isArray(group.suggestions) ? group.suggestions.map((sugItem, idx) => {\r\n if (sugItem.group === true) {\r\n return (\r\n <TagSuggestionGroup\r\n key={idx}\r\n group={sugItem}\r\n onClick={onClick}\r\n />\r\n );\r\n }\r\n return (\r\n <TagSuggestionItem\r\n key={idx}\r\n suggestion={sugItem}\r\n onClick={onClick}\r\n />\r\n );\r\n }) : null;\r\n\r\n return (\r\n <div className=\"ui-taginputSelectGroup\">\r\n <span className=\"ui-taginputSelectGroupLabel\">{group.label}</span>\r\n <div className=\"ui-taginputSelectGroupItems\">\r\n {suggestionElements}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagSuggestionGroup;","import React from 'react';\r\nimport Popper from '../Popper';\r\nimport { PopperPlacement } from '../Popper/Popper';\r\nimport TagSuggestionGroup from './TagSuggestionGroup';\r\nimport TagSuggestionItem from './TagSuggestionItem';\r\nimport { forwardRef } from '../utils/forwardRef';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TagSuggestionProps {\r\n open: boolean;\r\n tags?: Cortex.Tag[];\r\n disableFilter?: boolean;\r\n suggestions?: Cortex.TagSuggestion[];\r\n anchorEl?: React.RefObject<HTMLElement>;\r\n filter?: string;\r\n onSuggestionClick?: (suggestion: Cortex.TagSuggestion) => void;\r\n}\r\n\r\nconst TagSuggestion = forwardRef<HTMLElement, TagSuggestionProps>(({\r\n open,\r\n tags,\r\n disableFilter,\r\n suggestions,\r\n anchorEl,\r\n filter,\r\n onSuggestionClick\r\n}, ref) => {\r\n const filteredSuggestions = React.useMemo<Cortex.TagSuggestion[]>(() => {\r\n if (!Array.isArray(suggestions)) return [];\r\n if (disableFilter) return suggestions;\r\n\r\n const haveTags = Array.isArray(tags) && tags.length > 0;\r\n const haveFilter = filter && filter.length > 0;\r\n\r\n const result: Cortex.TagSuggestion[] = [];\r\n\r\n suggestions.forEach(sugItem => {\r\n if (sugItem.group === true) {\r\n if (Array.isArray(sugItem.suggestions)) {\r\n const childSug: Cortex.TagSuggestion = {\r\n ...sugItem,\r\n suggestions: []\r\n };\r\n sugItem.suggestions.forEach(sugChildItem => {\r\n if (haveTags && tags.some(tagItem => tagItem.id === sugChildItem.id)) return;\r\n if (haveFilter && sugChildItem.label.toUpperCase().indexOf(filter.toUpperCase()) < 0) return;\r\n childSug.suggestions!.push({ ...sugChildItem });\r\n });\r\n\r\n if (childSug.suggestions!.length > 0) {\r\n result.push(childSug);\r\n }\r\n }\r\n return;\r\n }\r\n if (haveTags && tags.some(tagItem => tagItem.id === sugItem.id)) return;\r\n if (haveFilter && sugItem.label.toUpperCase().indexOf(filter.toUpperCase()) < 0) return;\r\n result.push({ ...sugItem });\r\n });\r\n\r\n return result;\r\n }, [suggestions, filter, tags]);\r\n\r\n const handleItemClick = React.useCallback((suggestion: Cortex.TagSuggestion) => {\r\n if (!onSuggestionClick) return;\r\n onSuggestionClick(suggestion);\r\n }, [onSuggestionClick]);\r\n\r\n const isOpen = open && filteredSuggestions.length > 0;\r\n const suggestionElements = filteredSuggestions.map((sugItem, idx) => {\r\n if (sugItem.group === true) {\r\n return (\r\n <TagSuggestionGroup\r\n key={idx}\r\n group={sugItem}\r\n onClick={handleItemClick}\r\n />\r\n );\r\n }\r\n return (\r\n <TagSuggestionItem\r\n key={idx}\r\n suggestion={sugItem}\r\n onClick={handleItemClick}\r\n />\r\n );\r\n });\r\n\r\n return (\r\n <Popper\r\n ref={ref}\r\n open={isOpen}\r\n anchorEl={anchorEl}\r\n placement={PopperPlacement.BottomLeft}\r\n >\r\n <div className=\"ui-taginputSelect\">\r\n {suggestionElements}\r\n </div>\r\n </Popper>\r\n );\r\n});\r\n\r\nexport default TagSuggestion;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport useClickOutside from '../utils/useClickOutside';\r\nimport TagItem from './TagItem';\r\nimport TagSearchInput from './TagSearchInput';\r\nimport TagSuggestion from './TagSuggestion';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TooltipProps {\r\n tags?: Cortex.Tag[];\r\n className?: string;\r\n suggestions?: Cortex.TagSuggestion[];\r\n disableFilter?: boolean;\r\n onTextChange?: (text: string) => void;\r\n onChange?: (tags: Cortex.Tag[]) => void;\r\n}\r\n\r\nconst TagInput: React.FC<TooltipProps> = ({\r\n tags,\r\n className,\r\n suggestions,\r\n disableFilter,\r\n onTextChange,\r\n onChange\r\n}: TooltipProps) => {\r\n const inputRef = React.useRef(null);\r\n const suggestionRef = React.useRef(null);\r\n const nodeRef = React.useRef<HTMLDivElement>(null);\r\n const [inputValue, setInputValue] = React.useState<string>('');\r\n const [suggestionOpen, setSuggestionOpen] = React.useState<boolean>(false);\r\n\r\n useClickOutside(() => {\r\n setSuggestionOpen(false);\r\n }, [inputRef, suggestionRef]);\r\n\r\n const handleDeleteTag = React.useCallback((tag: Cortex.Tag) => {\r\n if (!onChange || !Array.isArray(tags)) return;\r\n\r\n const tagIndex = tags.findIndex(tagItem => tagItem.id === tag.id);\r\n if (tagIndex < 0) return;\r\n\r\n const newTags = [...tags];\r\n newTags.splice(tagIndex, 1);\r\n onChange(newTags);\r\n }, [tags, onChange]);\r\n\r\n const handleSuggestionClick = React.useCallback((suggestion: Cortex.TagSuggestion) => {\r\n if (!suggestion) return;\r\n\r\n const newTag: Cortex.Tag = {\r\n id: suggestion.id,\r\n label: suggestion.label,\r\n value: suggestion.value\r\n };\r\n\r\n const newTags = Array.isArray(tags) ? [...tags, newTag] : [newTag];\r\n setSuggestionOpen(false);\r\n if (onChange) {\r\n onChange(newTags);\r\n }\r\n setInputValue('');\r\n if (onTextChange) {\r\n onTextChange('');\r\n }\r\n }, [tags, onChange, onTextChange]);\r\n\r\n const handleSearchInputChange = React.useCallback((newValue: string) => {\r\n setInputValue(newValue);\r\n if (onTextChange) {\r\n onTextChange(newValue);\r\n }\r\n }, [onTextChange]);\r\n\r\n const handleSearchInputClick = () => {\r\n setSuggestionOpen(true);\r\n };\r\n\r\n const tagElements = Array.isArray(tags) ?\r\n tags.map((tagItem, idx) => (\r\n <TagItem\r\n key={idx}\r\n tag={tagItem}\r\n onDelete={() => handleDeleteTag(tagItem)}\r\n />\r\n )) : [];\r\n\r\n return (\r\n <div\r\n ref={nodeRef}\r\n className=\"ui-taginput\"\r\n >\r\n {tagElements}\r\n <TagSearchInput\r\n ref={inputRef}\r\n value={inputValue}\r\n onChange={handleSearchInputChange}\r\n onClick={handleSearchInputClick}\r\n />\r\n <TagSuggestion\r\n ref={suggestionRef}\r\n open={suggestionOpen}\r\n anchorEl={inputRef}\r\n filter={inputValue}\r\n tags={tags}\r\n suggestions={suggestions}\r\n disableFilter={disableFilter}\r\n onSuggestionClick={handleSuggestionClick}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagInput;","import { createContext } from 'react';\r\nimport { Location } from '../models';\r\n\r\nexport type LocationContent = {\r\n locations: Location[]\r\n setLocations: React.Dispatch<React.SetStateAction<Location[]>>\r\n}\r\n\r\nexport const LocationContext = createContext<LocationContent>({\r\n locations: [], // set a default value\r\n setLocations: () => {}\r\n});\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport L from 'leaflet';\r\nimport { useMap } from 'react-leaflet';\r\n\r\n// @ts-ignore\r\nimport * as LeafletActiveArea from 'leaflet-active-area';\r\n\r\nexport const CenterActiveAreaControl: React.FC<CenterActiveAreaControlProps> = props => {\r\n const map = useMap();\r\n\r\n // @ts-ignore\r\n const initActiveArea = () => LeafletActiveArea;\r\n\r\n useEffect(() => {\r\n initActiveArea();\r\n\r\n // @ts-ignore\r\n map.setActiveArea('cortex-widget-viewport', true, true);\r\n\r\n // @ts-ignore\r\n L.Control.CenterActiveArea = L.Control.extend({\r\n onAdd() {\r\n let container = null;\r\n\r\n // @ts-ignore\r\n // eslint-disable-next-line\r\n if (map.zoomControl && !this.options.forceSeparateButton) {\r\n // @ts-ignore\r\n container = map.zoomControl._container;\r\n }\r\n else {\r\n // @ts-ignore\r\n container = L.DomUtil.create('div', 'leaflet-bar');\r\n }\r\n\r\n // @ts-ignore\r\n L.DomEvent.disableClickPropagation(container);\r\n\r\n // @ts-ignore\r\n const link = L.DomUtil.create('a', '', container);\r\n link.href = '#';\r\n link.title = 'Centrer';\r\n link.innerHTML = `\r\n <img src=\"${icon}\" width=\"15px\" style=\"margin-top: 7px; filter: brightness(0%)\" />\r\n `;\r\n link.setAttribute('role', 'button');\r\n link.setAttribute('aria-label', link.title);\r\n\r\n L.DomEvent\r\n .on(link, 'click', L.DomEvent.stop)\r\n .on(link, 'click', handleButtonClick);\r\n\r\n return container;\r\n }\r\n });\r\n\r\n // @ts-ignore\r\n L.control.centerActiveArea = opts => new L.Control.CenterActiveArea(opts);\r\n\r\n // @ts-ignore\r\n L.control.centerActiveArea({ position: 'topleft' }).addTo(map);\r\n\r\n if (props.autoCenter) {\r\n centerMap();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.autoCenter) {\r\n centerMap();\r\n }\r\n }, [props.autoCenter]);\r\n\r\n const getMarkers = useCallback(() => {\r\n const layerGroup = L.featureGroup();\r\n map.eachLayer(layer => {\r\n if (layer instanceof L.Marker) {\r\n layerGroup.addLayer(layer);\r\n }\r\n });\r\n return layerGroup;\r\n }, [map]);\r\n\r\n const getPolygons = useCallback(() => {\r\n const layerGroup = L.featureGroup();\r\n map.eachLayer(layer => {\r\n if (layer instanceof L.Polygon) {\r\n layerGroup.addLayer(layer);\r\n }\r\n });\r\n return layerGroup;\r\n }, [map]);\r\n\r\n const centerMap = useCallback(() => {\r\n const markers = getMarkers();\r\n const bounds = markers.getBounds();\r\n\r\n const polygons = getPolygons();\r\n polygons.eachLayer(layer => {\r\n // @ts-ignore\r\n bounds.extend(layer.getBounds());\r\n });\r\n\r\n if (!bounds.isValid()) {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n map.fitBounds(bounds, { animate: true });\r\n }, []);\r\n\r\n const handleButtonClick = useCallback(() => {\r\n centerMap();\r\n }, [map]);\r\n\r\n return <></>;\r\n};\r\n\r\nexport type CenterActiveAreaControlProps = {\r\n autoCenter?: boolean;\r\n};\r\n\r\nconst icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABcRAAAXEQHKJvM/AAAAB3RJTUUH4wMIFTgXULHJFAAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAhUlEQVRo3u3asQ2AIBAF0MO4p42FI1nYOKlugAUnJvL+BLzwcxGw7Md5RUO2dSmRkNZ1TPGTgICADAIptbGXNVqzUluraoGADAKZv/rIy56UqvVFartVVEu1QEBAQEBAQEBAQEAaz+xuGlXrpWr1PlvbERAQEJCIhzfEnqPYLxwgICBjQW7ewSYPr/zk7gAAAABJRU5ErkJggg==';\r\n","/* eslint-disable react/no-unused-prop-types */\r\nimport L from 'leaflet.fullscreen';\r\nimport React, { useEffect } from 'react';\r\nimport { useMap } from 'react-leaflet';\r\nimport 'leaflet.fullscreen/Control.FullScreen.css';\r\nimport { ControlPosition } from 'leaflet';\r\n\r\nexport const MapFullscreenControl = (props: MapFullscreenControlProps) => {\r\n const map = useMap();\r\n\r\n useEffect(() => {\r\n // @ts-ignore\r\n L.leaflet.control.fullscreen({\r\n position: 'topleft',\r\n ...(props || {})\r\n }).addTo(map);\r\n }, []);\r\n\r\n return (\r\n <></>\r\n );\r\n};\r\n\r\n/** Props interface for MapFullscreenControl component */\r\nexport type MapFullscreenControlProps = {\r\n\r\n /** Change the content of the button, can be HTML, default null */\r\n content?: string | undefined;\r\n\r\n /** Change the position of the button can be topleft, topright, bottomright or bottomleft, default topleft */\r\n position?: ControlPosition | undefined;\r\n\r\n /** Change the title of the button, default Full Screen */\r\n title?: string | undefined;\r\n\r\n /** Change the title of the button when fullscreen is on, default Exit Full Screen */\r\n titleCancel?: string | undefined;\r\n\r\n /** Force separate button to detach from zoom buttons, default false */\r\n forceSeparateButton?: boolean | undefined;\r\n\r\n /** Force use of pseudo full screen even if full screen API is available, default false */\r\n forcePseudoFullscreen?: boolean | undefined;\r\n\r\n /** Use pseudo fullscreen */\r\n pseudoFullscreen?: boolean | undefined;\r\n\r\n /** Dom element to render in full screen, false by default, fallback to map._container */\r\n fullscreenElement?: false | HTMLElement | undefined;\r\n};","import React from 'react';\r\nimport { Control, ControlPosition, DrawEvents } from 'leaflet';\r\nimport { EditControl } from 'react-leaflet-draw';\r\n\r\nexport const DrawTools = (props: DrawToolsProps) => {\r\n const buildedEditProps: Omit<Control.EditOptions, 'featureGroup'> | undefined = { edit: props?.editable ? {} : false };\r\n\r\n return (\r\n <EditControl\r\n onCreated={props.handleOnCreated}\r\n onDeleted={props.handleOnDeleted}\r\n onEdited={props.handleOnEdited}\r\n position={props.position ?? 'topright'}\r\n draw={props.draw ?? {\r\n rectangle: false,\r\n circle: false,\r\n circlemarker: false,\r\n polyline: false\r\n }}\r\n edit={buildedEditProps}\r\n />\r\n );\r\n};\r\n\r\nexport type DrawToolsProps = {\r\n position?: ControlPosition | undefined;\r\n handleOnCreated?: (v: DrawEvents.Created) => void;\r\n handleOnDeleted?: (v: DrawEvents.Deleted) => void;\r\n handleOnEdited?: (v: DrawEvents.Edited) => void;\r\n draw?: drawType;\r\n editable?: boolean;\r\n};\r\n\r\nexport type drawType = {\r\n polyline?: boolean;\r\n polygon?: boolean;\r\n rectangle?: boolean;\r\n circle?: boolean;\r\n marker?: boolean;\r\n circlemarker?: boolean;\r\n};","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { MapContainer, TileLayer, MapContainerProps, Marker, FeatureGroup, Polygon } from 'react-leaflet';\r\nimport L, { LatLngTuple } from 'leaflet';\r\n\r\nimport markerIcon2x from 'leaflet-draw/dist/images/marker-icon-2x.png';\r\nimport markerShadow from 'leaflet-draw/dist/images/marker-shadow.png';\r\nimport { useLocationContext } from '../hooks/useLocationContext';\r\nimport { Location, Point } from '../models';\r\nimport { CenterActiveAreaControl, CenterActiveAreaControlProps } from './CenterActiveAreaControl';\r\nimport { MapFullscreenControl, MapFullscreenControlProps } from './MapFullscreenControl';\r\nimport { DrawTools, DrawToolsProps, drawType } from './DrawTools';\r\n\r\nconst Maps = (props: MapsProps) => {\r\n const initialDrawState = {\r\n polygon: true,\r\n marker: true,\r\n rectangle: false,\r\n circle: false,\r\n circlemarker: false,\r\n polyline: false\r\n };\r\n const [draw, setDraw] = useState<drawType>(initialDrawState);\r\n const [mapType, setMapType] = useState<'standard' | 'satellite'>('standard');\r\n\r\n const { locations, setLocations } = useLocationContext();\r\n\r\n useEffect(() => {\r\n props?.onChange?.(locations);\r\n }, [locations]);\r\n\r\n useEffect(() => {\r\n // Reset default icon\r\n L.Icon.Default.mergeOptions({\r\n iconRetinaUrl: markerIcon2x,\r\n shadowUrl: markerShadow,\r\n iconSize: [25, 41],\r\n iconAnchor: [12, 41],\r\n popupAnchor: [1, -34],\r\n shadowSize: [41, 41]\r\n });\r\n\r\n if (locations && locations.length > 0) {\r\n setDraw((d: { [key: string]: boolean }) => {\r\n const newState = { ...d };\r\n Object.keys(newState).forEach(key => {\r\n newState[key] = false;\r\n });\r\n return newState;\r\n });\r\n }\r\n }, []);\r\n\r\n const handleOnCreated = (e: any) => {\r\n const { layerType, layer } = e;\r\n setDraw((d: { [key: string]: boolean }) => {\r\n const newState = { ...d };\r\n Object.keys(newState).forEach(key => {\r\n newState[key] = false;\r\n });\r\n return newState;\r\n });\r\n\r\n let points: Point[] = [];\r\n\r\n if (layerType === 'polygon' || layerType === 'rectangle') {\r\n // @ts-ignore\r\n points = layer._latlngs?.[0]?.map((item: any, index: number) => ({ latitude: item.lat, longitude: item.lng, order: index + 1 }));\r\n }\r\n\r\n if (layerType === 'marker' || layerType === 'circle' || layerType === 'circlemarker') {\r\n points.push({ order: 1, latitude: layer._latlng.lat, longitude: layer._latlng.lng, id: layer._leaflet_id });\r\n }\r\n\r\n if (layerType === 'polyline') {\r\n // @ts-ignore\r\n points = layer._latlngs?.map((item: any, index: number) => ({ latitude: item.lat, longitude: item.lng, order: index + 1 }));\r\n }\r\n\r\n setLocations((v: Location[]) => ([...v, {\r\n points,\r\n id: layer._leaflet_id\r\n } as Location]));\r\n };\r\n\r\n const handleOnDeleted = (e: any) => {\r\n if (Object.keys(e.layers._layers).length === 0) {\r\n return;\r\n }\r\n\r\n // this workaround property fix a bug in react-leaflet-draw that doesn't update the draw polygon state\r\n // https://github.com/alex3165/react-leaflet-draw/issues/151\r\n setDraw((d: any) => ({ ...initialDrawState, workaround: Math.random() }));\r\n setLocations(locations);\r\n };\r\n\r\n const handleOnEdited = (e: any) => {\r\n const { layers } = e;\r\n\r\n setLocations((prevLocations: any[]) => {\r\n const editedLayers = Object.values(layers.getLayers());\r\n\r\n const updatedLocations = prevLocations\r\n .filter(location => location?.points && location.points.length === 1)\r\n .map(location => {\r\n const matchedEditedLayer = (editedLayers as Array<any>).find((layer: any) => layer._leaflet_id === location.points[0].id);\r\n\r\n if (matchedEditedLayer) {\r\n const originalPoint = { ...location.points[0] };\r\n const newLatLng = matchedEditedLayer.getLatLng();\r\n\r\n const hasMovedSignificantly = Math.abs(originalPoint.latitude - newLatLng.lat) > 1e-6 ||\r\n Math.abs(originalPoint.longitude - newLatLng.lng) > 1e-6;\r\n\r\n if (!hasMovedSignificantly) {\r\n return location;\r\n }\r\n return {\r\n points: [{\r\n id: location.id, // Use new layer's ID\r\n latitude: (editedLayers as any)[0]._latlng.lat,\r\n longitude: (editedLayers as any)[0]._latlng.lng,\r\n order: location.points[0].order\r\n }],\r\n id: location.id,\r\n objId: location.objId\r\n };\r\n }\r\n\r\n return location;\r\n });\r\n\r\n return updatedLocations;\r\n });\r\n };\r\n\r\n const drawTools = useMemo(() => {\r\n if (props?.singlePosition && locations.length > (props?.data?.length ?? 0)) {\r\n let draw = {\r\n draw: {\r\n marker: false,\r\n polygon: false,\r\n rectangle: false,\r\n circle: false,\r\n circlemarker: false,\r\n polyline: false\r\n }\r\n };\r\n if (typeof props?.drawTools !== 'boolean') {\r\n draw = { ...props?.drawTools, ...draw };\r\n }\r\n return draw;\r\n }\r\n\r\n if (typeof props?.drawTools !== 'boolean') {\r\n return props?.drawTools;\r\n }\r\n\r\n if (props?.drawTools === true) {\r\n return {\r\n draw: {\r\n marker: true,\r\n polygon: true,\r\n rectangle: true,\r\n circle: true,\r\n circlemarker: true,\r\n polyline: true\r\n }\r\n };\r\n }\r\n\r\n return undefined;\r\n }, [props?.singlePosition, props?.drawTools, locations, props?.data]);\r\n\r\n return (\r\n <>\r\n <style>{'.leaflet-container { min-height: 80px; min-width: 80px; height: 100%; width: 100% }'}</style>\r\n <MapContainer\r\n center={props.center || [0, 0]}\r\n zoom={props.zoom || 13}\r\n maxZoom={props.maxZoom}\r\n minZoom={props.minZoom}\r\n {...props.MapContainerProps}\r\n >\r\n <TileLayer\r\n key={mapType}\r\n attribution={\r\n mapType === 'standard'\r\n ? '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\r\n : '&copy; <a href=\"https://www.google.com/maps\">Google Maps</a>'\r\n }\r\n url={\r\n mapType === 'standard'\r\n ? 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'\r\n : 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}'\r\n }\r\n />\r\n {props.toggleSatelliteView && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n bottom: '10px',\r\n left: '10px',\r\n zIndex: 1000,\r\n background: 'white',\r\n padding: '7px 10px',\r\n borderRadius: '5px'\r\n }}\r\n >\r\n <label\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '5px'\r\n }}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n checked={mapType === 'satellite'}\r\n onChange={() => setMapType(mapType === 'standard' ? 'satellite' : 'standard')}\r\n />\r\n Satellite View\r\n </label>\r\n </div>\r\n )}\r\n {\r\n props.fullscreen &&\r\n <MapFullscreenControl {...(typeof props.fullscreen === 'boolean' ? {} : props.fullscreen)} />\r\n }\r\n <FeatureGroup>\r\n {\r\n props.drawTools && locations.length > 0 && (\r\n <DrawTools\r\n {...drawTools}\r\n handleOnCreated={handleOnCreated}\r\n handleOnEdited={handleOnEdited}\r\n />\r\n )\r\n }\r\n {\r\n locations.length === 0 && (\r\n <DrawTools\r\n {...drawTools}\r\n handleOnCreated={handleOnCreated}\r\n handleOnDeleted={handleOnDeleted}\r\n handleOnEdited={handleOnEdited}\r\n />\r\n )\r\n }\r\n {\r\n props?.data && props?.data?.map((location: Location) => {\r\n if (location.points.length > 1) {\r\n return (\r\n <Polygon\r\n key={`marker-${location.objId}`}\r\n positions={location.points.map((p: Point) => [p.latitude, p.longitude])}\r\n >\r\n </Polygon>\r\n );\r\n }\r\n return (\r\n <Marker\r\n key={`marker-${location.id}`}\r\n position={[location.points[0].latitude, location.points[0].longitude]}\r\n />\r\n );\r\n })\r\n }\r\n </FeatureGroup>\r\n {\r\n props.centerActiveArea &&\r\n <CenterActiveAreaControl autoCenter={locations && locations.length > 0} {...(typeof props.centerActiveArea === 'boolean' ? {} : props.centerActiveArea)} />\r\n }\r\n </MapContainer>\r\n </>\r\n );\r\n};\r\n\r\nexport type MapsProps = {\r\n MapContainerProps?: MapContainerProps\r\n center?: LatLngTuple\r\n fullscreen?: MapFullscreenControlProps | boolean\r\n centerActiveArea?: CenterActiveAreaControlProps | boolean\r\n drawTools?: DrawToolsProps | boolean\r\n minZoom?: number\r\n maxZoom?: number\r\n zoom?: number\r\n data?: Location[]\r\n toggleSatelliteView?: boolean\r\n singlePosition?: boolean\r\n onChange?: (locations: Location[]) => void\r\n}\r\n\r\nexport default Maps;","import { useContext } from 'react';\r\nimport { LocationContext } from '../components/LocationContext';\r\n\r\nexport const useLocationContext = () => useContext(LocationContext);\r\n","import React, { useEffect, useState } from 'react';\r\nimport Maps, { MapsProps } from './components/Maps';\r\nimport 'leaflet/dist/leaflet.css';\r\nimport 'leaflet-draw/dist/leaflet.draw.css';\r\nimport { Location, Point } from './models';\r\nimport { LocationContext } from './components/LocationContext';\r\n\r\nconst Map: React.FC<AppProps> = ({ customButtons, onClose, onSave, ...props }) => {\r\n const [locations, setLocations] = useState<Location[]>(props.data ? props.data : []);\r\n\r\n const handleSaveClick = async () => {\r\n onSave?.(locations);\r\n };\r\n\r\n const handleCloseClick = async () => {\r\n onClose?.();\r\n };\r\n\r\n useEffect(() => {\r\n const buttonSaveEvent = customButtons?.saveButton?.addEventListener('click', () => {\r\n handleSaveClick();\r\n });\r\n\r\n const buttonCancelEvent = customButtons?.cancelButton?.addEventListener('click', () => {\r\n handleCloseClick();\r\n });\r\n\r\n return () => {\r\n customButtons?.saveButton?.removeEventListener('click', buttonSaveEvent!);\r\n customButtons?.cancelButton?.removeEventListener('click', buttonCancelEvent!);\r\n };\r\n }, [locations]);\r\n\r\n const containerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n width: '90%',\r\n height: '400px',\r\n margin: '20px'\r\n };\r\n\r\n return (\r\n <div style={containerStyle}>\r\n <LocationContext.Provider\r\n value={{\r\n locations,\r\n setLocations\r\n }}\r\n >\r\n <Maps {...props} />\r\n {\r\n !customButtons && (\r\n <div className=\"cortex-widget-buttons\">\r\n <button\r\n className=\"cortex-widget-btn cortex-widget-btn-cancel\"\r\n type=\"button\"\r\n onClick={handleCloseClick}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n className=\"cortex-widget-btn cortex-widget-btn-save\"\r\n type=\"button\"\r\n onClick={handleSaveClick}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n )\r\n }\r\n </LocationContext.Provider>\r\n </div>\r\n );\r\n};\r\n\r\nexport type AppProps = MapsProps & {\r\n onClose?: (() => void);\r\n onSave?: ((locations: Location[]) => void);\r\n onChange?: ((locations: Location[]) => void);\r\n customButtons?: {\r\n cancelButton?: HTMLElement;\r\n saveButton?: HTMLElement;\r\n };\r\n};\r\n\r\nexport default Map;","import React from 'react';\r\n\r\nexport interface MenuProps {\r\n containerRef: React.RefObject<HTMLElement>;\r\n className?: string;\r\n children?: React.ReactNode;\r\n onClose?: () => void;\r\n onClick?: (event: React.MouseEvent<HTMLUListElement> | undefined) => void;\r\n}\r\n\r\nconst Menu: React.FC<MenuProps> = ({\r\n containerRef,\r\n className,\r\n children,\r\n onClick,\r\n onClose\r\n}) => {\r\n const menuRef = React.useRef<HTMLDivElement>(null);\r\n\r\n React.useEffect(() => {\r\n if (!menuRef || !containerRef || !menuRef.current || !containerRef.current) {\r\n return;\r\n }\r\n const containerRect = containerRef.current.getBoundingClientRect();\r\n\r\n const contentRect = menuRef.current.getBoundingClientRect();\r\n let left = containerRect.width;\r\n let top = '0px';\r\n let bottom = 'unset';\r\n if (containerRect.right + contentRect.width >= window.innerWidth) {\r\n left = -contentRect.width;\r\n }\r\n\r\n // si la liste dépasse la hauteur de la fenetre alors on fixe la liste à partir du bas de la page\r\n if (contentRect.bottom >= window.innerHeight) {\r\n bottom = `${-((window.innerHeight - containerRect.bottom) - 15).toFixed()}px`;\r\n top = 'unset';\r\n }\r\n\r\n menuRef.current.setAttribute('style', `opacity: 1; left: ${left.toFixed()}px; bottom: ${bottom}; top: ${top};`);\r\n }, [menuRef, containerRef]);\r\n\r\n return (\r\n <div\r\n ref={menuRef}\r\n className=\"ui-menu\"\r\n >\r\n <ul\r\n className=\"ui-menuList\"\r\n onClick={onClick}\r\n onContextMenu={onClick}\r\n >\r\n {children}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Menu;","import * as React from 'react';\r\n\r\nconst getAnchorElement = (anchorEl: string | HTMLElement | React.RefObject<HTMLElement> | undefined): HTMLElement | undefined => {\r\n if (!anchorEl) return undefined;\r\n if (Object.prototype.toString.call(anchorEl) === '[object String]') {\r\n const element = document.getElementById(anchorEl as string);\r\n return element ?? undefined;\r\n }\r\n\r\n const ref = anchorEl as React.RefObject<HTMLElement>;\r\n if (ref && ref.current !== undefined) {\r\n return ref.current ?? undefined;\r\n }\r\n\r\n return anchorEl as HTMLElement;\r\n};\r\n\r\nexport default function useElement(element: string | HTMLElement | React.RefObject<HTMLElement> | undefined): HTMLElement | undefined {\r\n const [elNode, setElNode] = React.useState<HTMLElement | undefined>();\r\n React.useEffect(() => {\r\n setElNode(getAnchorElement(element));\r\n }, [element]);\r\n\r\n return elNode;\r\n}","import React from 'react';\r\nimport Popper from '../Popper';\r\nimport { PopperPlacement } from '../Popper/Popper';\r\nimport useClickOutside from '../utils/useClickOutside';\r\nimport Menu from './Menu';\r\nimport useElement from '../utils/useElement';\r\n\r\nexport interface ContextMenuProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n open?: boolean;\r\n placement?: ObjectValues<typeof PopperPlacement>;\r\n container?: string | HTMLElement | React.RefObject<HTMLElement>;\r\n onOpen?: () => void;\r\n onClose?: () => void;\r\n}\r\n\r\nconst ContextMenu: React.FC<ContextMenuProps> = ({\r\n className,\r\n children,\r\n placement,\r\n open,\r\n container,\r\n onOpen,\r\n onClose\r\n}) => {\r\n const popperRef = React.useRef(null);\r\n\r\n const containerEl = useElement(container);\r\n const [contextMenu, setContextMenu] = React.useState<{ mouseX: number, mouseY: number } | null>(null);\r\n\r\n useClickOutside(() => {\r\n if (open && onClose) onClose();\r\n }, [popperRef]);\r\n\r\n const handleContextMenu = React.useCallback((event: Event) => {\r\n const mouseEvent = event as MouseEvent;\r\n mouseEvent.preventDefault();\r\n if (mouseEvent.ctrlKey) return;\r\n setContextMenu({\r\n mouseX: mouseEvent.pageX - 2,\r\n mouseY: mouseEvent.pageY - 4\r\n });\r\n\r\n if (onOpen) onOpen();\r\n }, [onOpen]);\r\n\r\n const handleDocumentContextMenu = (event: MouseEvent) => {\r\n event.preventDefault();\r\n };\r\n\r\n React.useEffect(() => {\r\n const rootEl = (containerEl ?? document) as Document | HTMLElement;\r\n rootEl.addEventListener('contextmenu', handleContextMenu);\r\n\r\n if (rootEl !== document) {\r\n document.addEventListener('contextmenu', handleDocumentContextMenu);\r\n }\r\n\r\n return () => {\r\n rootEl.removeEventListener('contextmenu', handleContextMenu);\r\n document.removeEventListener('contextmenu', handleDocumentContextMenu);\r\n };\r\n }, [containerEl, handleContextMenu]);\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLUListElement> | undefined) => {\r\n if (!event) return;\r\n\r\n if (event.button === 2) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n };\r\n\r\n return (\r\n <Popper\r\n ref={popperRef}\r\n anchorPosition={\r\n contextMenu !== null\r\n ? { top: contextMenu.mouseY, left: contextMenu.mouseX }\r\n : undefined\r\n }\r\n placement={placement}\r\n open={open}\r\n overflow={false}\r\n >\r\n <Menu\r\n className={className}\r\n onClose={onClose}\r\n onClick={handleClick}\r\n containerRef={popperRef}\r\n >\r\n {children}\r\n </Menu>\r\n </Popper>\r\n );\r\n};\r\n\r\nexport default ContextMenu;","import React from 'react';\r\n\r\nexport interface DividerProps {\r\n className?: string;\r\n}\r\n\r\nconst Divider: React.FC<DividerProps> = ({ className }) => (\r\n <hr></hr>\r\n);\r\n\r\nexport default Divider;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface Props {\r\n className?: string;\r\n}\r\n\r\nconst ChevronDownIcon: React.FC<Props> = ({ className }: Props) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" className={classNames('ui-icon', className)} transform=\"rotate(180 0 0)\">\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M11.2929 8.29289C11.6834 7.90237 12.3166 7.90237 12.7071 8.29289L17.7071 13.2929C18.0976 13.6834 18.0976 14.3166 17.7071 14.7071C17.3166 15.0976 16.6834 15.0976 16.2929 14.7071L12 10.4142L7.70711 14.7071C7.31658 15.0976 6.68342 15.0976 6.29289 14.7071C5.90237 14.3166 5.90237 13.6834 6.29289 13.2929L11.2929 8.29289Z\" />\r\n </svg>\r\n);\r\n\r\nexport default ChevronDownIcon;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface Props {\r\n className?: string;\r\n}\r\n\r\nconst ChevronRightIcon: React.FC<Props> = ({ className }: Props) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 7\" fill=\"none\" className={classNames('ui-icon', className)} transform=\"rotate(90 0 0)\" preserveAspectRatio=\"xMidYMid meet\">\r\n <path d=\"M5.3,0.3c0.4-0.4,1-0.4,1.4,0l5,5c0.4,0.4,0.4,1,0,1.4c-0.4,0.4-1,0.4-1.4,0L6,2.4L1.7,6.7c-0.4,0.4-1,0.4-1.4,0c-0.4-0.4-0.4-1,0-1.4L5.3,0.3z\" />\r\n </svg>\r\n);\r\n\r\nexport default ChevronRightIcon;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface Props {\r\n className?: string;\r\n}\r\n\r\nconst ChevronLeftIcon: React.FC<Props> = ({ className }: Props) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 7\" fill=\"none\" className={classNames('ui-icon', className)} transform=\"rotate(270 0 0)\" preserveAspectRatio=\"xMidYMid meet\">\r\n <path d=\"M5.3,0.3c0.4-0.4,1-0.4,1.4,0l5,5c0.4,0.4,0.4,1,0,1.4c-0.4,0.4-1,0.4-1.4,0L6,2.4L1.7,6.7c-0.4,0.4-1,0.4-1.4,0c-0.4-0.4-0.4-1,0-1.4L5.3,0.3z\" />\r\n </svg>\r\n);\r\n\r\nexport default ChevronLeftIcon;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface Props {\r\n className?: string;\r\n}\r\n\r\nconst CrossIcon: React.FC<Props> = ({ className }: Props) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" className={classNames('ui-icon', className)}>\r\n <path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\r\n </svg>\r\n);\r\n\r\nexport default CrossIcon;\r\n","import React, { CSSProperties } from 'react';\r\nimport Menu from './Menu';\r\nimport { ChevronRightIcon } from '../Icons';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface MenuItemProps {\r\n className?: string;\r\n style?: CSSProperties | undefined;\r\n children?: React.ReactNode;\r\n label?: string;\r\n icon?: React.ReactNode;\r\n active?: boolean;\r\n disable?: boolean;\r\n itemTemplate?: React.ReactNode;\r\n onClick?: (event: React.MouseEvent<HTMLButtonElement>| undefined) => void;\r\n}\r\n\r\nconst MenuItem: React.FC<MenuItemProps> = ({\r\n label,\r\n icon,\r\n className,\r\n style,\r\n active,\r\n disable,\r\n children,\r\n itemTemplate,\r\n onClick\r\n}) => {\r\n const [showMenu, setShowMenu] = React.useState(false);\r\n const containerRef = React.useRef<HTMLLIElement>(null);\r\n\r\n const handleMenuClick = React.useCallback((event: React.MouseEvent<HTMLButtonElement>| undefined) => {\r\n if (onClick && disable !== true) {\r\n onClick(event);\r\n }\r\n }, [onClick, disable]);\r\n\r\n const onMouseEnter = () => {\r\n setShowMenu(true);\r\n };\r\n\r\n const onMouseLeave = () => {\r\n setShowMenu(false);\r\n };\r\n\r\n const haveSubMenu = children != null;\r\n\r\n return (\r\n <li\r\n className={classNames(\r\n 'ui-menuItem',\r\n disable === true ? 'ui-menuItem-disable' : null,\r\n className\r\n )}\r\n style={style}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n ref={containerRef}\r\n >\r\n <button type=\"button\" className=\"ui-menuItem-btn\" onClick={handleMenuClick}>\r\n {icon && (\r\n <div className=\"ui-menuItem-icon\">{icon}</div>\r\n )}\r\n <span>{itemTemplate ?? label}</span>\r\n {haveSubMenu && (\r\n <div className=\"ui-menuItem-menuIconContainer\">\r\n <ChevronRightIcon className=\"ui-menuItem-menuIcon\" />\r\n </div>\r\n )}\r\n </button>\r\n {haveSubMenu && showMenu && (\r\n <Menu containerRef={containerRef}>\r\n {children}\r\n </Menu>\r\n )}\r\n </li>\r\n );\r\n};\r\n\r\nexport default MenuItem;","import React from 'react';\r\nimport Popper from '../Popper';\r\nimport { PopperPlacement } from '../Popper/Popper';\r\nimport useClickOutside from '../utils/useClickOutside';\r\nimport Menu from './Menu';\r\n\r\nexport interface PopupMenuProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n open?: boolean;\r\n placement?: ObjectValues<typeof PopperPlacement>;\r\n anchorPosition?: { top: number, left: number };\r\n anchorEl?: string | HTMLElement | React.RefObject<HTMLElement>;\r\n onClose?: () => void;\r\n}\r\n\r\nconst PopupMenu: React.FC<PopupMenuProps> = ({\r\n className,\r\n children,\r\n placement,\r\n open,\r\n anchorPosition,\r\n anchorEl,\r\n onClose\r\n}) => {\r\n const popperRef = React.useRef(null);\r\n\r\n useClickOutside(() => {\r\n if (open && onClose) onClose();\r\n }, [popperRef]);\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLUListElement> | undefined) => {\r\n if (!event) return;\r\n\r\n if (event.button === 2) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n };\r\n\r\n if (!open || (!anchorPosition && !anchorEl)) return null;\r\n\r\n return (\r\n <Popper\r\n ref={popperRef}\r\n anchorPosition={anchorPosition}\r\n anchorEl={anchorEl}\r\n placement={placement}\r\n open={open}\r\n overflow={false}\r\n className=\"ui-menu-popper\"\r\n >\r\n <Menu\r\n className={className}\r\n onClose={onClose}\r\n onClick={handleClick}\r\n containerRef={popperRef}\r\n >\r\n {children}\r\n </Menu>\r\n </Popper>\r\n );\r\n};\r\n\r\nexport default PopupMenu;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface MenuGroupProps {\r\n title?: string;\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst MenuGroup: React.FC<MenuGroupProps> = ({\r\n title,\r\n className,\r\n children\r\n}) => (\r\n <>\r\n <li\r\n className={classNames(\r\n 'ui-group-title',\r\n className\r\n )}\r\n >\r\n {title}\r\n </li>\r\n {children}\r\n </>\r\n);\r\n\r\nexport default MenuGroup;","import React from 'react';\r\nimport MenuItem from './MenuItem';\r\n\r\nexport interface AuthDownloadLinkProps {\r\n url: string;\r\n queryParams?: { [key: string]: string | number | boolean };\r\n token: string;\r\n label?: string;\r\n onStart?: (event: React.MouseEvent<HTMLButtonElement>| undefined) => void;\r\n onCompleted?: () => void;\r\n onError?: (error: Error) => void;\r\n}\r\n\r\nconst AuthDownloadLink: React.FC<AuthDownloadLinkProps> = ({\r\n url,\r\n queryParams,\r\n token,\r\n label,\r\n onStart,\r\n onCompleted,\r\n onError\r\n}) => {\r\n const handleAction = async (event: React.MouseEvent<HTMLButtonElement> | undefined) => {\r\n if (onStart) onStart(event);\r\n try {\r\n if (!token) throw new Error('INVALID_TOKEN');\r\n if (!url) throw new Error('INVALID_URL');\r\n\r\n const headers: Record<string, string> = {};\r\n headers.ContentType = 'application/json';\r\n headers.Authorization = `Bearer ${token}`;\r\n const initData: RequestInit = { method: 'get', headers };\r\n const urlObject: any = new URL(url);\r\n if (queryParams) {\r\n Object.keys(queryParams).forEach(key => urlObject.searchParams.append(key, queryParams[key]));\r\n }\r\n const result = await fetch(urlObject, initData);\r\n\r\n if (!result || result.status !== 200) {\r\n throw new Error('An error occured while generating file');\r\n }\r\n const blob = await result.blob();\r\n if (blob) {\r\n const generatedUrl = window.URL.createObjectURL(blob);\r\n\r\n // Create an anchor element to \"point\" to it\r\n const anchor = document.createElement('a');\r\n anchor.href = generatedUrl;\r\n\r\n // Get the suggested filename for the file from the response headers\r\n anchor.download = getFilenameFromHeaders(result.headers) || 'file';\r\n\r\n // Simulate a click on our anchor element\r\n anchor.click();\r\n\r\n // Discard the object data\r\n URL.revokeObjectURL(generatedUrl);\r\n\r\n anchor.remove();\r\n }\r\n }\r\n catch (error: any) {\r\n if (onError) onError(error);\r\n throw error;\r\n }\r\n if (onCompleted) onCompleted();\r\n };\r\n\r\n const getFilenameFromHeaders = (headers: Headers) => {\r\n const contentDisposition = headers.get('Content-Disposition');\r\n if (!contentDisposition) {\r\n return null;\r\n }\r\n\r\n /* Content-Disposition: attachment; filename=\"filename.ext\" */\r\n const infos = contentDisposition.split(';');\r\n const leadIn = 'filename=';\r\n const info = infos.find(f => f.indexOf(leadIn) > -1);\r\n if (info) {\r\n const start = info.search(leadIn);\r\n if (start < 0) {\r\n return null;\r\n }\r\n\r\n // Get the 'value' after the filename= part (which may be enclosed in quotes)\r\n const value = info.substring(start + leadIn.length).trim();\r\n if (value.length === 0) {\r\n return null;\r\n }\r\n\r\n // If it's not quoted, we can return the whole thing\r\n const firstCharacter = value.substring(0, 1);\r\n if (firstCharacter !== '\"' && firstCharacter !== '\\'') {\r\n return value;\r\n }\r\n\r\n // If it's quoted, it must have a matching end-quote\r\n if (value.length < 2) {\r\n return null;\r\n }\r\n\r\n // The end-quote must match the opening quote\r\n const lastCharacter = value[value.length - 1];\r\n if (lastCharacter !== firstCharacter) {\r\n return null;\r\n }\r\n\r\n // Return the content of the quotes\r\n return value.substring(1, value.length - 1);\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n <>\r\n <MenuItem\r\n label={label}\r\n onClick={handleAction}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default AuthDownloadLink;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport DomContainer from '../DomContainer';\r\n\r\nexport interface DialogProps {\r\n open: boolean;\r\n width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n children?: React.ReactNode;\r\n onClose?: (() => void);\r\n}\r\n\r\nconst Dialog: React.FC<DialogProps> = ({\r\n open,\r\n width,\r\n fullWidth,\r\n fullHeight,\r\n className,\r\n children,\r\n onClose\r\n}) => {\r\n const prevOverflowRef = React.useRef<string>();\r\n const containerRef = React.useRef(null);\r\n const dialogRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n React.useEffect(() => {\r\n prevOverflowRef.current = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n\r\n return () => {\r\n document.body.style.overflow = prevOverflowRef.current ?? 'initial';\r\n };\r\n }, []);\r\n\r\n const handleOverlayClick = React.useCallback(() => {\r\n if (onClose) {\r\n onClose();\r\n }\r\n }, [onClose]);\r\n\r\n const dialogStyle: React.CSSProperties = {\r\n position: 'fixed',\r\n margin: '0'\r\n };\r\n\r\n return (\r\n <DomContainer ref={containerRef}>\r\n <div\r\n ref={el => {\r\n dialogRef.current = el;\r\n }}\r\n style={dialogStyle}\r\n role=\"dialog\"\r\n className={classNames(\r\n 'ui-dialog',\r\n className\r\n )}\r\n >\r\n <div role=\"presentation\" className=\"ui-dialog-overlay\" onClick={handleOverlayClick}></div>\r\n <div\r\n className={classNames(\r\n 'ui-dialog-container',\r\n width ? `ui-dialog-size-${width}` : null,\r\n fullWidth === true ? 'ui-dialog-size-fullwidth' : null,\r\n fullHeight === true ? 'ui-dialog-size-fullheight' : null,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </DomContainer>\r\n );\r\n};\r\n\r\nexport default Dialog;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface DialogContentProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst DialogContent: React.FC<DialogContentProps> = ({\r\n className,\r\n children\r\n}) => (\r\n <div className={classNames('ui-dialog-content', className)}>\r\n {children}\r\n </div>\r\n);\r\n\r\nexport default DialogContent;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface DialogFooterProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst DialogFooter: React.FC<DialogFooterProps> = ({\r\n className,\r\n children\r\n}) => (\r\n <footer className={classNames('ui-dialog-footer', className)}>\r\n {children}\r\n </footer>\r\n);\r\n\r\nexport default DialogFooter;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface DialogHeaderProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst DialogHeader: React.FC<DialogHeaderProps> = ({\r\n className,\r\n children\r\n}) => (\r\n <header className={classNames('ui-dialog-header', className)}>\r\n {children}\r\n </header>\r\n);\r\n\r\nexport default DialogHeader;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport { CrossIcon } from '../Icons';\r\n\r\nexport interface DialogTitleProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n closeDisable?: boolean;\r\n onClose?: (() => void);\r\n}\r\n\r\nconst DialogTitle: React.FC<DialogTitleProps> = ({\r\n className,\r\n children,\r\n closeDisable,\r\n onClose\r\n}) => {\r\n const handleCloseClick = React.useCallback(() => {\r\n if (onClose && closeDisable !== true) {\r\n onClose();\r\n }\r\n }, [onClose, closeDisable]);\r\n\r\n const showCloseBtn = onClose !== undefined;\r\n\r\n return (\r\n <h3 className={classNames('ui-dialog-title', className)}>\r\n {children}\r\n {showCloseBtn && (\r\n <button\r\n type=\"button\"\r\n className={classNames(\r\n 'ui-dialog-close',\r\n closeDisable ? 'ui-dialog-close-disable' : null\r\n )}\r\n tabIndex={0}\r\n onClick={handleCloseClick}\r\n >\r\n <CrossIcon />\r\n </button>\r\n )}\r\n </h3>\r\n );\r\n};\r\n\r\nexport default DialogTitle;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface DialogActionsProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst DialogActions: React.FC<DialogActionsProps> = ({\r\n className,\r\n children\r\n}) => (\r\n <div className={classNames('ui-dialog-actions', className)}>\r\n {children}\r\n </div>\r\n);\r\n\r\nexport default DialogActions;","import React from 'react';\r\nimport Dialog from './Dialog';\r\nimport DialogHeader from './DialogHeader';\r\nimport DialogFooter from './DialogFooter';\r\nimport DialogContent from './DialogContent';\r\nimport classNames from '../utils/classNames';\r\nimport Button from '../Button';\r\n\r\nexport interface ConfirmDialogProps {\r\n title: string;\r\n ok?: string;\r\n cancel?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n onClose?: (isOk: boolean) => void;\r\n}\r\n\r\nconst ConfirmDialog: React.FC<ConfirmDialogProps> = ({\r\n title,\r\n ok,\r\n cancel,\r\n children,\r\n className,\r\n onClose\r\n}) => {\r\n const handleCloseClick = React.useCallback(() => {\r\n if (!onClose) return;\r\n\r\n onClose(false);\r\n }, [onClose]);\r\n\r\n const handleOkClick = React.useCallback(() => {\r\n if (!onClose) return;\r\n\r\n onClose(true);\r\n }, [onClose]);\r\n\r\n const okMessage = ok ?? 'oui';\r\n const cancelMessage = cancel ?? 'Annuler';\r\n\r\n return (\r\n <Dialog\r\n open\r\n className={classNames('ui-dialog-box', 'ui-dialog-confirm', className)}\r\n >\r\n <DialogHeader>\r\n <>\r\n <svg className=\"ui-dialog-icon\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 438.5 438.5\">\r\n <path d=\"M409.1,109.2c-19.6-33.6-46.2-60.2-79.8-79.8C295.7,9.8,259.1,0,219.3,0c-39.8,0-76.5,9.8-110.1,29.4\r\n C75.6,49,49,75.6,29.4,109.2C9.8,142.8,0,179.5,0,219.3c0,39.8,9.8,76.5,29.4,110.1c19.6,33.6,46.2,60.2,79.8,79.8\r\n c33.6,19.6,70.3,29.4,110.1,29.4s76.5-9.8,110.1-29.4c33.6-19.6,60.2-46.2,79.8-79.8c19.6-33.6,29.4-70.3,29.4-110.1\r\n C438.5,179.5,428.7,142.8,409.1,109.2z M387.4,290.2c-9.7,22.6-22.7,42-39,58.2c-16.3,16.3-35.7,29.3-58.2,39\r\n c-22.6,9.7-46.2,14.6-70.9,14.6s-48.4-4.9-70.9-14.6c-22.6-9.7-42-22.7-58.2-39c-16.3-16.3-29.3-35.7-39-58.2\r\n c-9.7-22.6-14.6-46.2-14.6-70.9c0-24.7,4.9-48.4,14.6-70.9c9.7-22.6,22.7-42,39-58.2c16.3-16.3,35.7-29.3,58.2-39\r\n c22.6-9.7,46.2-14.6,70.9-14.6c24.7,0,48.4,4.9,70.9,14.6c22.6,9.7,42,22.7,58.2,39c16.3,16.3,29.3,35.7,39,58.2\r\n c9.7,22.6,14.6,46.2,14.6,70.9C402,244,397.1,267.7,387.4,290.2z\"\r\n />\r\n <path d=\"M217,294c-14.6,0-26.5,12.2-26.5,26.8c0,14.3,11.5,26.8,26.5,26.8s26.8-12.5,26.8-26.8C243.8,306.2,231.6,294,217,294z\" />\r\n <path d=\"M221.5,90.8c-47.1,0-68.7,27.9-68.7,46.7c0,13.6,11.5,19.9,20.9,19.9c18.8,0,11.2-26.8,46.7-26.8c17.4,0,31.4,7.7,31.4,23.7\r\n c0,18.8-19.5,29.6-31,39.4c-10.1,8.7-23.4,23-23.4,53c0,18.1,4.9,23.4,19.2,23.4c17.1,0,20.6-7.7,20.6-14.3\r\n c0-18.1,0.4-28.6,19.5-43.6c9.4-7.3,39-31,39-63.8S266.1,90.8,221.5,90.8z\"\r\n />\r\n </svg>\r\n <h1 className=\"ui-dialog-title\">{title}</h1>\r\n </>\r\n </DialogHeader>\r\n <DialogContent>\r\n {children}\r\n </DialogContent>\r\n <DialogFooter>\r\n <Button\r\n className=\"dialog-action-ok dialog-action\"\r\n onClick={handleOkClick}\r\n >\r\n {okMessage}\r\n </Button>\r\n <Button\r\n className=\"dialog-action-close dialog-action\"\r\n onClick={handleCloseClick}\r\n >\r\n {cancelMessage}\r\n </Button>\r\n </DialogFooter>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default ConfirmDialog;","import React from 'react';\r\nimport Dialog from './Dialog';\r\nimport DialogHeader from './DialogHeader';\r\nimport DialogFooter from './DialogFooter';\r\nimport DialogContent from './DialogContent';\r\nimport classNames from '../utils/classNames';\r\nimport Button from '../Button';\r\n\r\nexport interface ErrorDialogProps {\r\n title: string;\r\n ok?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n onClose?: (isOk: boolean) => void;\r\n}\r\n\r\nconst ErrorDialog: React.FC<ErrorDialogProps> = ({\r\n title,\r\n ok,\r\n children,\r\n className,\r\n onClose\r\n}) => {\r\n const handleOkClick = React.useCallback(() => {\r\n if (!onClose) return;\r\n\r\n onClose(true);\r\n }, [onClose]);\r\n\r\n const okMessage = ok ?? 'fermer';\r\n\r\n return (\r\n <Dialog\r\n open\r\n className={classNames('ui-dialog-box', 'ui-dialog-error', className)}\r\n >\r\n <DialogHeader>\r\n <>\r\n <svg className=\"ui-dialog-icon\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 438.533 438.533\">\r\n <path d=\"M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0 c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267 c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407 s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062 C438.533,179.485,428.732,142.795,409.133,109.203z M387.434,290.213c-9.709,22.556-22.696,41.97-38.969,58.245 c-16.271,16.269-35.689,29.26-58.245,38.965c-22.555,9.712-46.202,14.564-70.946,14.564c-24.744,0-48.391-4.853-70.948-14.564 c-22.554-9.705-41.971-22.696-58.245-38.965c-16.269-16.275-29.259-35.687-38.97-58.245 c-9.707-22.552-14.562-46.206-14.562-70.946c0-24.744,4.854-48.391,14.562-70.948c9.707-22.554,22.697-41.968,38.97-58.245 c16.274-16.269,35.691-29.26,58.245-38.97c22.554-9.704,46.205-14.558,70.948-14.558c24.74,0,48.395,4.851,70.946,14.558 c22.556,9.707,41.97,22.698,58.245,38.97c16.272,16.274,29.26,35.688,38.969,58.245c9.709,22.554,14.564,46.201,14.564,70.948 C402.002,244.011,397.143,267.664,387.434,290.213z\" />\r\n <path d=\"M284.368,258.668c-19.219-14.086-40.926-21.129-65.095-21.129c-24.172,0-45.871,7.039-65.096,21.129 c-19.224,14.085-32.358,32.641-39.397,55.671c-1.521,4.757-1.143,9.381,1.141,13.847c2.286,4.469,5.898,7.467,10.85,8.993 c4.758,1.526,9.373,1.143,13.846-1.144c4.471-2.285,7.467-5.899,8.991-10.848c4.759-15.235,13.562-27.556,26.409-36.979 c12.847-9.418,27.263-14.127,43.252-14.127c15.987,0,30.412,4.712,43.251,14.127c12.854,9.424,21.655,21.744,26.412,36.979 c1.52,4.948,4.564,8.562,9.134,10.848c4.568,2.286,9.236,2.67,13.989,1.144c4.761-1.526,8.278-4.524,10.564-8.993 c2.286-4.466,2.669-9.09,1.14-13.847C316.729,291.312,303.591,272.75,284.368,258.668z\" />\r\n <path d=\"M146.181,182.725c10.085,0,18.699-3.576,25.837-10.709c7.139-7.135,10.708-15.749,10.708-25.837 c0-10.089-3.569-18.699-10.708-25.837s-15.752-10.709-25.837-10.709c-10.088,0-18.702,3.571-25.84,10.709 c-7.135,7.139-10.707,15.749-10.707,25.837c0,10.088,3.568,18.702,10.707,25.837C127.482,179.152,136.093,182.725,146.181,182.725 z\" />\r\n <path d=\"M292.359,109.631c-10.089,0-18.706,3.571-25.845,10.709c-7.132,7.139-10.708,15.749-10.708,25.837 c0,10.088,3.576,18.702,10.708,25.837c7.139,7.137,15.756,10.709,25.845,10.709c10.081,0,18.698-3.576,25.837-10.709 c7.139-7.135,10.708-15.749,10.708-25.837c0-10.089-3.569-18.699-10.708-25.837S302.44,109.631,292.359,109.631z\" />\r\n </svg>\r\n <h1 className=\"ui-dialog-title\">{title}</h1>\r\n </>\r\n </DialogHeader>\r\n <DialogContent>\r\n {children}\r\n </DialogContent>\r\n <DialogFooter>\r\n <Button\r\n className=\"dialog-action-ok dialog-action\"\r\n onClick={handleOkClick}\r\n >\r\n {okMessage}\r\n </Button>\r\n </DialogFooter>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default ErrorDialog;","import React from 'react';\r\nimport Dialog from './Dialog';\r\nimport DialogHeader from './DialogHeader';\r\nimport DialogFooter from './DialogFooter';\r\nimport DialogContent from './DialogContent';\r\nimport classNames from '../utils/classNames';\r\nimport Button from '../Button';\r\n\r\nexport interface WarningDialogProps {\r\n title: string;\r\n ok?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n onClose?: (isOk: boolean) => void;\r\n}\r\n\r\nconst WarningDialog: React.FC<WarningDialogProps> = ({\r\n title,\r\n ok,\r\n children,\r\n className,\r\n onClose\r\n}) => {\r\n const handleOkClick = React.useCallback(() => {\r\n if (!onClose) return;\r\n\r\n onClose(true);\r\n }, [onClose]);\r\n\r\n const okMessage = ok ?? 'fermer';\r\n\r\n return (\r\n <Dialog\r\n open\r\n className={classNames('ui-dialog-box', 'ui-dialog-warning', className)}\r\n >\r\n <DialogHeader>\r\n <>\r\n <svg className=\"ui-dialog-icon\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 512 512\">\r\n <polygon fill=\"#FFA418\" points=\"0,477.703 256,477.703 289.391,256 256,34.297\" />\r\n <polygon fill=\"#FF8A1E\" points=\"256,34.297 256,477.703 512,477.703\" />\r\n <circle fill=\"#324860\" cx=\"256\" cy=\"405.359\" r=\"16.696\" />\r\n <rect x=\"239.304\" y=\"177.185\" fill=\"#324860\" width=\"33.391\" height=\"178.087\" />\r\n </svg>\r\n <h1 className=\"ui-dialog-title\">{title}</h1>\r\n </>\r\n </DialogHeader>\r\n <DialogContent>\r\n {children}\r\n </DialogContent>\r\n <DialogFooter>\r\n <Button\r\n className=\"dialog-action-ok dialog-action\"\r\n onClick={handleOkClick}\r\n >\r\n {okMessage}\r\n </Button>\r\n </DialogFooter>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default WarningDialog;"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","create","Iterator","verb","Symbol","iterator","v","op","TypeError","pop","push","__spreadArray","to","from","pack","ar","l","Array","slice","concat","forwardRef","render","React","props","ref","SuppressedError","DomContainer","_a","children","_b","container","document","target","useRef","useEffect","containerNode","getContainer","current","appendChild","remove","createElement","ReactDOM","createPortal","setRef","classNames","values","_i","classes","idx","arg","argType","isArray","inner","toString","keys","forEach","key","join","getAbsoluteBoundingRect","el","win","window","offsetX","undefined","pageXOffset","documentElement","parentNode","scrollLeft","offsetY","pageYOffset","scrollTop","rect","getBoundingClientRect","bottom","height","left","right","top","width","TransitionState","PopperPlacement","Center","BottomCenter","BottomRight","BottomLeft","TopCenter","TopRight","TopLeft","LeftTop","LeftBottom","LeftCenter","RightTop","RightBottom","RightCenter","Popper","anchorEl","anchorPosition","placement","_c","open","_d","overflow","role","className","other","popperRef","containerRef","_e","useState","scrollX","scrollY","innerHeight","innerWidth","documentDimensions","setDimensions","_f","position","margin","inset","transform","opacity","popperStyle","setPopperStyle","onDisplayWindowResize","onDocumentScroll","addEventListener","removeEventListener","observer","anchor","element","getElementById","getAnchorElement","updatePosition_1","content","containerRect","contentRect","getContentPosition","fixPosition","newCoord","fixPositionInRect","maxHeight","toFixed","maxWidth","MutationObserver","observe","attributes","childList","subtree","disconnect","style","Spinner","variant","BarLoader","title","color","isComplete","Fragment","Selected","data","onClick","map","item","index","type","selected","name","Button","disable","handleClick","useCallback","event","DialogMask","zIndex","useMemo","querySelectorAll","DialogBody","Dialog","handleKeyUp","includes","onClose","fontFamily","fontWeight","fontSize","background","border","padding","ScanConfirmationDialog","display","flexDirection","message","marginTop","justifyContent","backgroundColor","btnCancel","btnOk","onConfirm","Scanner","scanConfirmation","scanTrackerType","setOpen","setOnConfirm","currentResult","setCurrentResult","handleCloseDialog","getTracker","outline","boundingBox","centerText","handleConfirmScan","onScan","handleOnScan","alignItems","gap","QrScanner","formats","components","onOff","torch","tracker","finder","scanDelay","allowMultiple","paused","scanConfirmDialog","FileStorageDB","dbName","storeName","db","openDatabase","request","indexedDB","_this","onupgradeneeded","createObjectStore","keyPath","autoIncrement","onsuccess","onerror","error","storeFile","file","transaction","objectStore","add","timestamp","Date","now","retrieveFile","id","get","record","Camera","onCapture","isOffline","mode","validateText","resetText","isShowOffline","_g","isShowVideoButton","_h","isShowSwitchButton","webcamRef","mediaRecorderRef","fileStorageRef","_j","mode_","setMode","_k","playing","setPlaying","_l","isFrontCamera","setIsFrontCamera","isMobile","test","navigator","userAgent","maxTouchPoints","MdCameraswitchItem","MdCameraswitch","FaCameraItem","FaCamera","BsFillRecordFillItem","BsFillRecordFill","FaStopItem","FaStop","FaPlayItem","FaPlay","FaPauseItem","FaPause","_m","timerIntervalRef","recordingTime","setRecordingTime","formatTime","totalSeconds","days","Math","floor","hours","minutes","seconds","padStart","formatedTime","startTimer","setInterval","prev","stopTimer","clearInterval","useTimer","_o","imageUrl","videoUrl","isRecording","storedFileId","mediaState","setMediaState","_p","facingMode","min","setVideoConstraints","resetCapture","stopVideoRecording","capturePhoto","imageSrc","getScreenshot","byteCharacters","atob","split","byteNumbers","charCodeAt","byteArray","Uint8Array","blob","Blob","fileName","file_1","File","fileUrl_1","URL","createObjectURL","startVideoRecording","stream","ext_1","mimeType_1","MediaRecorder","isTypeSupported","mediaRecorder","mimeType","chunks_1","ondataavailable","size","onstop","fileUrl","start","src","alt","objectFit","overflowClipMargin","aspectRatio","justifySelf","onEnded","kind","lang","default","video","play","pause","fileRowId","fileStoreName","videoSrc","Webcam","videoConstraints","screenshotFormat","allowFullScreen","stop","ToggleButton","onChange","handleBtnClick","CSSTransition","trigger","enterTimeout","exitTimeout","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef","timeout","Exited","Entered","clearTimeout","classList","setTimeout","childrenNode","childrenProps","cloneElement","Fade","Tooltip","enterDelay","leaveDelay","disabled","childNode","setChildNode","isOpen","setIsOpen","isTransitionExited","setTransitionExited","isTouchDevice","setIsTouchDevice","mouseEnterTimer","mouseLeaveTimer","openTooltip","closeTooltip","handleMouseLeave","currentTarget","handleMouseOver","handleTouchStart","handleTouchEnd","onFocus","onMouseEnter","onMouseLeave","onMouseOver","onTouchStart","onTouchEnd","computeOpen","useClickOutside","callback","nodes","handleDocumentMouseDown","isOutside","reduce","acc","contains","previousMethods","TagItem","tag","onDelete","TagSearchInput","inputRef","handleInputChange","autoComplete","spellCheck","TagSuggestionItem","suggestion","tabIndex","TagSuggestionGroup","group","suggestionElements","suggestions","sugItem","TagSuggestion","tags","disableFilter","filter","onSuggestionClick","filteredSuggestions","haveTags","haveFilter","some","tagItem","toUpperCase","childSug_1","sugChildItem","handleItemClick","TagInput","onTextChange","suggestionRef","inputValue","setInputValue","suggestionOpen","setSuggestionOpen","handleDeleteTag","tagIndex","findIndex","newTags","splice","handleSuggestionClick","newTag","handleSearchInputChange","newValue","tagElements","LocationContext","createContext","locations","setLocations","leafletActiveAreaPreviousMethods","getCenter","L","Map","setView","flyTo","setZoomAround","getBoundsZoom","PopupAdjustPan","Popup","_adjustPan","RendererUpdate","Renderer","_update","include","getBounds","_viewport","getViewportLatLngBounds","bounds","getPixelBounds","sw","unproject","getBottomLeft","ne","getTopRight","LatLngBounds","getViewport","getViewportBounds","vp","topleft","point","offsetLeft","offsetTop","vpsize","clientWidth","clientHeight","x","latLngBounds","containerPointToLatLng","max","getOffset","mCenter","getSize","divideBy","vCenter","subtract","withoutViewport","center","zoom","getZoom","project","options","latLng","_zoom","_limitZoom","targetCenter","targetZoom","startZoom","animate","Browser","any3d","_stop","w0","w1","getZoomScale","u1","distanceTo","rho","rho2","r","b","sq","sqrt","log","sinh","exp","cosh","r0","u","S","duration","_moveStart","noMoveStart","frame","pow","easeOut","_flyToFrame","Util","requestAnimFrame","_move","multiplyBy","getScaleZoom","w","_moveEnd","latlng","scale","viewHalf","centerOffset","Point","latLngToContainerPoint","newCenter","inside","getMinZoom","getMaxZoom","nw","getNorthWest","se","getSouthEast","boundsSize","snap","zoomSnap","scalex","scaley","round","ceil","setActiveArea","css","keepCenter","DomUtil","insertBefore","firstChild","extend","_onZoom","_updateTransform","_map","_center","GridLayer","_updateLevels","_tileZoom","maxZoom","z","_levels","Number","abs","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","level","_container","origin","getPixelOrigin","_setZoomTransform","falseFn","offsetWidth","_onCreateLevel","_level","_resetView","animating","pinch","_setView","_clampZoom","pixelBounds","_getTiledPixelBounds","tileRange","_pxBoundsToTileRange","tileCenter","queue","keepBuffer","noPruneRange","Bounds","isFinite","Error","_tiles","c","coords","j","_isValidTile","tile","_tileCoordsToKey","sort","a","_loading","fire","fragment","createDocumentFragment","_addTile","autoPan","_panAnim","containerHeight","offsetHeight","containerWidth","_containerWidth","vpTopleft","layerPos","_containerLeft","_containerBottom","_add","getPosition","containerPos","layerPointToContainerPoint","autoPanPadding","paddingTL","autoPanPaddingTopLeft","paddingBR","autoPanPaddingBottomRight","dx","dy","panBy","CenterActiveAreaControl","useMap","Control","CenterActiveArea","onAdd","zoomControl","forceSeparateButton","DomEvent","disableClickPropagation","link","href","innerHTML","icon","setAttribute","on","handleButtonClick","control","centerActiveArea","opts","addTo","autoCenter","centerMap","getMarkers","layerGroup","featureGroup","eachLayer","layer","Marker","addLayer","getPolygons","Polygon","isValid","fitBounds","MapFullscreenControl","leaflet","fullscreen","DrawTools","buildedEditProps","edit","editable","EditControl","onCreated","handleOnCreated","onDeleted","handleOnDeleted","onEdited","handleOnEdited","draw","rectangle","circle","circlemarker","polyline","Maps","initialDrawState","polygon","marker","setDraw","mapType","setMapType","useContext","Icon","Default","mergeOptions","iconRetinaUrl","markerIcon2x","shadowUrl","markerShadow","iconSize","iconAnchor","popupAnchor","shadowSize","d","newState","layerType","points","_latlngs","latitude","lat","longitude","lng","order","_latlng","_leaflet_id","layers","prevLocations","editedLayers","getLayers","location","matchedEditedLayer","find","originalPoint","newLatLng","getLatLng","objId","drawTools","singlePosition","draw_1","MapContainer","minZoom","MapContainerProps","TileLayer","attribution","url","toggleSatelliteView","borderRadius","checked","FeatureGroup","_layers","workaround","random","positions","customButtons","onSave","handleSaveClick","handleCloseClick","buttonSaveEvent","saveButton","buttonCancelEvent","cancelButton","Provider","Menu","menuRef","onContextMenu","useElement","elNode","setElNode","ContextMenu","onOpen","containerEl","contextMenu","setContextMenu","handleContextMenu","mouseEvent","preventDefault","ctrlKey","mouseX","pageX","mouseY","pageY","handleDocumentContextMenu","rootEl","button","stopPropagation","Divider","ChevronDownIcon","xmlns","viewBox","fill","fillRule","clipRule","ChevronRightIcon","preserveAspectRatio","ChevronLeftIcon","CrossIcon","MenuItem","itemTemplate","showMenu","setShowMenu","handleMenuClick","haveSubMenu","PopupMenu","MenuGroup","AuthDownloadLink","queryParams","token","onStart","onCompleted","onError","getFilenameFromHeaders","headers","contentDisposition","infos","leadIn","info","search","substring","trim","firstCharacter","ContentType","Authorization","initData","method","urlObject_1","searchParams","append","fetch","status","generatedUrl","download","click","revokeObjectURL","error_1","fullWidth","fullHeight","prevOverflowRef","dialogRef","handleOverlayClick","DialogContent","DialogFooter","DialogHeader","DialogTitle","closeDisable","showCloseBtn","DialogActions","ConfirmDialog","ok","cancel","handleOkClick","okMessage","cancelMessage","version","ErrorDialog","WarningDialog","xmlnsXlink","cx","cy"],"mappings":"+6BA+BO,IAAIA,EAAW,WAQlB,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,CACX,EACOH,EAASa,MAAMC,KAAMP,UAChC,EAEO,SAASQ,EAAOX,EAAGY,GACtB,IAAIb,EAAI,CAAA,EACR,IAAK,IAAIM,KAAKL,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,IAAMO,EAAEC,QAAQR,GAAK,IAC9EN,EAAEM,GAAKL,EAAEK,IACb,GAAS,MAALL,GAAqD,mBAAjCH,OAAOiB,sBACtB,KAAIb,EAAI,EAAb,IAAgBI,EAAIR,OAAOiB,sBAAsBd,GAAIC,EAAII,EAAED,OAAQH,IAC3DW,EAAEC,QAAQR,EAAEJ,IAAM,GAAKJ,OAAOS,UAAUS,qBAAqBP,KAAKR,EAAGK,EAAEJ,MACvEF,EAAEM,EAAEJ,IAAMD,EAAEK,EAAEJ,IAF4B,CAItD,OAAOF,CACX,CA8DO,SAASiB,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,UAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAS,CAAE,MAAOb,GAAKW,EAAOX,EAAI,CAAE,CAC1F,SAASgB,EAASH,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAS,CAAE,MAAOb,GAAKW,EAAOX,EAAI,CAAE,CAC7F,SAASc,EAAKG,GAJlB,IAAeJ,EAIaI,EAAOC,KAAOR,EAAQO,EAAOJ,QAJ1CA,EAIyDI,EAAOJ,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,EAAE,SAAUG,GAAWA,EAAQG,EAAQ,IAIjBM,KAAKP,EAAWI,EAAW,CAC7GF,GAAMN,EAAYA,EAAUX,MAAMQ,EAASC,GAAc,KAAKS,OAClE,EACJ,CAEO,SAASK,EAAYf,EAASgB,GACjC,IAAsGC,EAAGC,EAAGpC,EAAxGqC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPvC,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGwC,KAAM,GAAIC,IAAK,IAAeC,EAAI5C,OAAO6C,QAA4B,mBAAbC,SAA0BA,SAAW9C,QAAQS,WACtL,OAAOmC,EAAEd,KAAOiB,EAAK,GAAIH,EAAS,MAAIG,EAAK,GAAIH,EAAU,OAAIG,EAAK,GAAsB,mBAAXC,SAA0BJ,EAAEI,OAAOC,UAAY,WAAa,OAAOpC,IAAM,GAAI+B,EAC1J,SAASG,EAAK1C,GAAK,OAAO,SAAU6C,GAAK,OACzC,SAAcC,GACV,GAAId,EAAG,MAAM,IAAIe,UAAU,mCAC3B,KAAOR,IAAMA,EAAI,EAAGO,EAAG,KAAOZ,EAAI,IAAKA,OACnC,GAAIF,EAAI,EAAGC,IAAMpC,EAAY,EAARiD,EAAG,GAASb,EAAU,OAAIa,EAAG,GAAKb,EAAS,SAAOpC,EAAIoC,EAAU,SAAMpC,EAAES,KAAK2B,GAAI,GAAKA,EAAER,SAAW5B,EAAIA,EAAES,KAAK2B,EAAGa,EAAG,KAAKlB,KAAM,OAAO/B,EAE3J,OADIoC,EAAI,EAAGpC,IAAGiD,EAAK,CAAS,EAARA,EAAG,GAAQjD,EAAE0B,QACzBuB,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjD,EAAIiD,EAAI,MACxB,KAAK,EAAc,OAAXZ,EAAEC,QAAgB,CAAEZ,MAAOuB,EAAG,GAAIlB,MAAM,GAChD,KAAK,EAAGM,EAAEC,QAASF,EAAIa,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKZ,EAAEI,IAAIU,MAAOd,EAAEG,KAAKW,MAAO,SACxC,QACI,KAAMnD,EAAIqC,EAAEG,MAAMxC,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,KAAkB,IAAV4C,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEZ,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVY,EAAG,MAAcjD,GAAMiD,EAAG,GAAKjD,EAAE,IAAMiD,EAAG,GAAKjD,EAAE,IAAM,CAAEqC,EAAEC,MAAQW,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYZ,EAAEC,MAAQtC,EAAE,GAAI,CAAEqC,EAAEC,MAAQtC,EAAE,GAAIA,EAAIiD,EAAI,KAAO,CACpE,GAAIjD,GAAKqC,EAAEC,MAAQtC,EAAE,GAAI,CAAEqC,EAAEC,MAAQtC,EAAE,GAAIqC,EAAEI,IAAIW,KAAKH,GAAK,KAAO,CAC9DjD,EAAE,IAAIqC,EAAEI,IAAIU,MAChBd,EAAEG,KAAKW,MAAO,SAEtBF,EAAKf,EAAKzB,KAAKS,EAASmB,EAC5B,CAAE,MAAOxB,GAAKoC,EAAK,CAAC,EAAGpC,GAAIuB,EAAI,CAAG,CAAC,QAAWD,EAAInC,EAAI,CAAG,CACzD,GAAY,EAARiD,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEvB,MAAOuB,EAAG,GAAKA,EAAG,UAAalB,MAAM,EAC9E,CAtBgDJ,CAAK,CAACxB,EAAG6C,GAAK,CAAG,CAuBrE,CA+DO,SAASK,EAAcC,EAAIC,EAAMC,GACpC,GAAIA,GAA6B,IAArBpD,UAAUC,OAAc,IAAK,IAA4BoD,EAAxBvD,EAAI,EAAGwD,EAAIH,EAAKlD,OAAYH,EAAIwD,EAAGxD,KACxEuD,GAAQvD,KAAKqD,IACRE,IAAIA,EAAKE,MAAMpD,UAAUqD,MAAMnD,KAAK8C,EAAM,EAAGrD,IAClDuD,EAAGvD,GAAKqD,EAAKrD,IAGrB,OAAOoD,EAAGO,OAAOJ,GAAME,MAAMpD,UAAUqD,MAAMnD,KAAK8C,GACtD,CCtLM,SAAUO,EAAiBC,GAO7B,OAAOC,EAAMF,WAJb,SAA2BG,EAAiCC,GACxD,OAAOH,EAAOE,EAAYC,EAC9B,EAGJ,CDyRkD,mBAApBC,iBAAiCA,gBE3T/D,IAAMC,EAAeN,EAA+B,SAACO,EAGlDH,OAFCI,EAAQD,EAAAC,SACRC,EAAAF,EAAAG,UAAAA,OAAS,IAAAD,EAAGE,SAASvC,KAAIqC,EAEnBG,EAASV,EAAMW,SAmBrB,OAjBAX,EAAMY,UAAU,WACZ,IAAMC,EAXd,SAAsBL,GAClB,MAA4B,mBAAdA,EAA2BA,IAAcA,CAC3D,CAS8BM,CAAaN,GAKnC,OAHIE,EAAOK,SAAWF,GAClBA,EAAcG,YAAYN,EAAOK,SAE9B,WACCL,EAAOK,SACPL,EAAOK,QAAQE,QAEvB,CACJ,EAAG,CAACP,EAAOK,UAENL,EAAOK,UACRL,EAAOK,QAAUN,SAASS,cAAc,QAGrCC,EAASC,aAAad,EAAUI,EAAOK,QAClD,GC5Bc,SAAUM,EACpBnB,EACAxC,GAEKwC,IAEc,mBAARA,EACPA,EAAIxC,GAEC,YAAawC,IAGjBA,EAAyCa,QAAUrD,GAE5D,CCvBc,SAAU4D,QAAW,IAAAC,EAAA,GAAAC,EAAA,EAAAA,EAAApF,UAAAC,OAAAmF,IAAAD,EAAAC,GAAApF,UAAAoF,GAG/B,IAFA,IAAMC,EAAU,cAEPC,GACL,IAAMC,EAAMJ,EAAOG,GACnB,IAAKC,EAAc,MAAA,WAEnB,IAAMC,SAAiBD,EAEvB,GAAgB,WAAZC,GAAoC,WAAZA,EAExBH,EAAQrC,KAAKuC,QAEZ,GAAIhC,MAAMkC,QAAQF,IACnB,GAAIA,EAAItF,OAAQ,CACZ,IAAMyF,EAAQR,EAAU5E,WAAA,EAAIiF,GACxBG,GAEAL,EAAQrC,KAAK0C,EAErB,MAEiB,WAAZF,EACDD,EAAII,WAAajG,OAAOS,UAAUwF,UAClCjG,OAAOkG,KAAKL,GAAKM,QAAQ,SAAAC,GAEjBP,EAAIO,IAAMT,EAAQrC,KAAK8C,EAC/B,GAKJT,EAAQrC,KAAKuC,EAAII,aA7BhBL,EAAM,EAAGA,EAAMH,EAAOlF,OAAQqF,GAAO,IAArCA,GAiCT,OAAOD,EAAQU,KAAK,IACxB,CCVA,SAASC,EAAwBC,GAC7B,IAAMC,EAAMC,OACJrE,EAASuC,SAAQvC,KAGnBsE,OAA8BC,IAApBH,EAAII,YAA4BJ,EAAII,aAC/CjC,SAASkC,iBAAmBzE,EAAK0E,YAAc1E,GAAM2E,WACpDC,OAA8BL,IAApBH,EAAIS,YAA4BT,EAAIS,aAC/CtC,SAASkC,iBAAmBzE,EAAK0E,YAAc1E,GAAM8E,UAEpDC,EAAOZ,EAAGa,wBAYhB,MAAO,CACHC,OAAQF,EAAKE,OAASL,EACtBM,OAAQH,EAAKG,OACbC,KAAMJ,EAAKI,KAAOb,EAClBc,MAAOL,EAAKK,MAAQd,EACpBe,IAAKN,EAAKM,IAAMT,EAChBU,MAAOP,EAAKO,MAEpB,CAoHO,ICzKFC,EDyKQC,EAAkB,CAC3BC,OAAQ,SACRC,aAAc,gBACdC,YAAa,eACbC,WAAY,cACZC,UAAW,aACXC,SAAU,YACVC,QAAS,WACTC,QAAS,WACTC,WAAY,cACZC,WAAY,cACZC,SAAU,YACVC,YAAa,eACbC,YAAa,gBAqBXC,EAAS1E,EAA+B,SAACO,EAU5CH,GATC,IAAAuE,EAAQpE,EAAAoE,SACRC,EAAcrE,EAAAqE,eACdnE,cAAAoE,OAAS,IAAApE,EAAGmD,EAAgBI,WAAUvD,EACtCqE,EAAAvE,EAAAwE,KAAAA,OAAI,IAAAD,GAAQA,EACZE,aAAAC,cAAgBD,EAChBE,EAAI3E,EAAA2E,KACJ1E,EAAQD,EAAAC,SACR2E,EAAS5E,EAAA4E,UACNC,EAAKtI,EAAAyD,EATmC,2FAWrC8E,EAAYnF,EAAMW,OAA8B,MAChDyE,EAAepF,EAAMW,OAAO,MAG5B0E,EAAsCrF,EAAMsF,SAAe,CAC7DjC,KAAMd,OAAOgD,QACbhC,IAAKhB,OAAOiD,QACZpC,OAAQb,OAAOkD,YACfjC,MAAOjB,OAAOmD,aAJXC,EAAkBN,EAAA,GAAEO,OAOrBC,EAAgC7F,EAAMsF,SAA8B,CACtEQ,SAAU,WACVC,OAAQ,IACRC,MAAO,oBACPC,UAAW,6BACXC,QAAS,IALNC,EAAWN,EAAA,GAAEO,OAwGpB,OA5FApG,EAAMY,UAAU,WACZ,GAAIV,GAAOiF,EAGP,OAFA9D,EAAOnB,EAAKiF,EAAUpE,SAEf,WACHM,EAAOnB,EAAK,KAChB,CAIR,EAAG,CAACA,EAAKiF,EAAUpE,UAEnBf,EAAMY,UAAU,WACZ,IAAMyF,EAAwB,WAC1BT,EAAc,CACVxC,OAAQb,OAAOkD,YACfjC,MAAOjB,OAAOmD,WACdrC,KAAMd,OAAOgD,QACbhC,IAAKhB,OAAOiD,SAEpB,EAEMc,EAAmB,WACrBV,EAAc,CACVxC,OAAQb,OAAOkD,YACfjC,MAAOjB,OAAOmD,WACdrC,KAAMd,OAAOgD,QACbhC,IAAKhB,OAAOiD,SAEpB,EAcA,OAZIX,IACAtC,OAAOgE,iBAAiB,SAAUF,GAClC9D,OAAOgE,iBAAiB,SAAUD,GAElCV,EAAc,CACVxC,OAAQb,OAAOkD,YACfjC,MAAOjB,OAAOmD,WACdrC,KAAMd,OAAOgD,QACbhC,IAAKhB,OAAOiD,WAIb,WACHjD,OAAOiE,oBAAoB,SAAUH,GACrC9D,OAAOiE,oBAAoB,SAAUF,EACzC,CACJ,EAAG,CAACzB,IAEJ7E,EAAMY,UAAU,WACZ,IAAI6F,EACEC,EAtRW,SAACjC,SACtB,IAAKA,EAAU,OAAOhE,SAASvC,KAC/B,GAAiD,oBAA7CpC,OAAOS,UAAUwF,SAAStF,KAAKgI,GAAiC,CAChE,IAAMkC,EAAUlG,SAASmG,eAAenC,GACxC,OAAOkC,QAAAA,EAAWlG,SAASvC,IAC/B,CAEA,IAAMgC,EAAMuE,EACZ,OAAIvE,GAAOA,EAAIa,gBAAgBV,EAAAH,EAAIa,uBAAWN,SAASvC,KAEhDuG,CACX,CA2QuBoC,CAAiBpC,GAChC,GAAII,GAAQM,EAAUpE,SAAW2F,EAAQ,CACrC,IAAMI,EAAiB,WACf,IAAAzG,EA5OpB,SACIsE,EACAnE,EACAkE,EACAqC,GAEA,IAAI1D,EAAO,EACPE,EAAM,EAEJyD,EAAiBtC,EAEjB,CACEvB,OAAQuB,EAAenB,IACvBH,OAAQ,EACRC,KAAMqB,EAAerB,KACrBC,MAAOoB,EAAerB,KACtBE,IAAKmB,EAAenB,IACpBC,MAAO,GAPTpB,EAAwB5B,GASxByG,EAAc7E,EAAwB2E,GAE5C,OAAQpC,GACJ,KAAKjB,EAAgBC,OACjBN,EAAO2D,EAAc3D,KAAQ2D,EAAcxD,MAAQ,EAAMyD,EAAYzD,MAAQ,EAC7ED,EAAMyD,EAAczD,IAAOyD,EAAc5D,OAAS,EAAM6D,EAAY7D,OAAS,EAC7E,MACJ,KAAKM,EAAgBI,WACjBT,EAAO2D,EAAc3D,KACrBE,EAAMyD,EAAc7D,OACpB,MACJ,KAAKO,EAAgBG,YACjBR,EAAO2D,EAAc3D,KAAO4D,EAAYzD,MAAQwD,EAAcxD,MAC9DD,EAAMyD,EAAc7D,OACpB,MACJ,KAAKO,EAAgBE,aACjBP,EAAO2D,EAAc3D,KAAQ2D,EAAcxD,MAAQ,EAAMyD,EAAYzD,MAAQ,EAC7ED,EAAMyD,EAAc7D,OACpB,MACJ,KAAKO,EAAgBO,QACjBZ,EAAO2D,EAAc3D,KACrBE,EAAMyD,EAAczD,IAAM0D,EAAY7D,OACtC,MACJ,KAAKM,EAAgBM,SACjBX,EAAO2D,EAAc3D,KAAO4D,EAAYzD,MAAQwD,EAAcxD,MAC9DD,EAAMyD,EAAczD,IAAM0D,EAAY7D,OACtC,MACJ,KAAKM,EAAgBK,UACjBV,EAAO2D,EAAc3D,KAAQ2D,EAAcxD,MAAQ,EAAMyD,EAAYzD,MAAQ,EAC7ED,EAAMyD,EAAczD,IAAM0D,EAAY7D,OACtC,MACJ,KAAKM,EAAgBQ,QACjBb,EAAO2D,EAAc3D,KAAO4D,EAAYzD,MACxCD,EAAMyD,EAAczD,IACpB,MACJ,KAAKG,EAAgBS,WACjBd,EAAO2D,EAAc3D,KAAO4D,EAAYzD,MACxCD,EAAMyD,EAAc7D,OAAS8D,EAAY7D,OACzC,MACJ,KAAKM,EAAgBU,WACjBf,EAAO2D,EAAc3D,KAAO4D,EAAYzD,MACxCD,EAAMyD,EAAczD,IAAOyD,EAAc5D,OAAS,EAAM6D,EAAY7D,OAAS,EAC7E,MACJ,KAAKM,EAAgBW,SACjBhB,EAAO2D,EAAc1D,MACrBC,EAAMyD,EAAczD,IACpB,MACJ,KAAKG,EAAgBY,YACjBjB,EAAO2D,EAAc1D,MACrBC,EAAMyD,EAAc7D,OAAS8D,EAAY7D,OACzC,MACJ,KAAKM,EAAgBa,YACjBlB,EAAO2D,EAAc1D,MACrBC,EAAMyD,EAAczD,IAAOyD,EAAc5D,OAAS,EAAM6D,EAAY7D,OAAS,EAIrF,MAAO,CAAEC,KAAIA,EAAEE,IAAGA,EACtB,CA+JoC2D,CAAmBvC,EAAW+B,EAAQhC,EAAgBS,EAAUpE,SAA9EsC,SAAME,QACRH,EAAiB,EACjBI,EAAgB,EACpB,IAAiB,IAAbuB,EAAoB,CACpB,IAAMoC,EAjK1B,SAA2BH,EAAqBD,EAAsB1D,EAAcE,GAChF,IAAKyD,EAAe,OAAO,KAC3B,IAAKD,EAAS,OAAO,KAErB,IAAME,EAAcF,EAAQ7D,wBACtBkE,EAAW,CACb/D,KAAIA,EACJE,IAAGA,EACHH,OAAQ,EACRI,MAAO,GAuBX,OApBIH,EAAO2D,EAAc3D,OACrB+D,EAAS/D,KAAO2D,EAAc3D,MAE9BE,EAAMyD,EAAczD,MACpB6D,EAAS7D,IAAMyD,EAAczD,KAIzBF,EAAO4D,EAAYzD,OAASwD,EAAc3D,KAAO2D,EAAcxD,QAC/D4D,EAAS/D,KAAO2D,EAAc3D,KAAO2D,EAAcxD,MAAQyD,EAAYzD,OAEvED,EAAM0D,EAAY7D,QAAU4D,EAAczD,IAAMyD,EAAc5D,SAC9DgE,EAAS7D,IAAMyD,EAAczD,IAAMyD,EAAc5D,OAAS6D,EAAY7D,QAQvEgE,CACX,CAgIwCC,CAAkB1B,EAAoBR,EAAUpE,QAAUsC,EAAME,GAChE,OAAhB4D,IACA9D,EAAO8D,EAAY9D,KACnBE,EAAM4D,EAAY5D,IAClBH,EAAS+D,EAAY/D,OACrBI,EAAQ2D,EAAY3D,MAE5B,CAEA4C,EAAe,CACXN,SAAU,WACVC,OAAQ,IACRC,MAAO,oBACPC,UAAW,eAAApG,OAAewD,EAAI,QAAAxD,OAAO0D,EAAG,YACxC2C,QAAS,EACToB,UAAWlE,EAAS,EAAI,GAAAvD,OAAGuD,EAAOmE,UAAS,WAAO9E,EAClD+E,SAAUhE,EAAQ,EAAI,GAAA3D,OAAG2D,EAAM+D,UAAS,WAAO9E,GAEvD,GACAgE,EAAW,IAAIgB,iBAAiB,WAC5BX,GACJ,IACSY,QAAQvC,EAAUpE,QAAS,CAAE4G,YAAY,EAAOC,WAAW,EAAMC,SAAS,IAEnFf,GACJ,CAEA,OAAO,WACCL,GACAA,EAASqB,YAEjB,CACJ,EAAG,CAAC3C,EAAWN,EAAMF,EAAWD,EAAgBK,EAAUY,EAAoBlB,KAEjE,IAATI,EAAsB,KAGtB7E,EAAAkB,cAACd,EAAY,CAACF,IAAKkF,GACfpF,EAAAkB,cAAA,MAAArF,EAAA,CACIqE,IAAKiF,EACL4C,MAAO5B,EACPnB,KAAMA,EACNC,UAAW3D,EACP,YACA2D,IAEAC,GAEH5E,GAIjB,GEvVM0H,EAAkC,SAAC3H,GACrC,IAAA4E,cACA1E,EAAAF,EAAA4H,QAAAA,OAAO,IAAA1H,EAAG,gBAAeA,EACvB,OACFP,uBACIiF,UAAW3D,EACP,aACY,kBAAZ2G,EAA8B,2BAA6B,yBAC3DhD,IACH,aANH,ECDAiD,EAAsC,SAAC7H,OAAE8H,EAAK9H,EAAA8H,MAAEC,EAAK/H,EAAA+H,MAAEnD,EAAS5E,EAAA4E,UAAEoD,EAAUhI,EAAAgI,WAAO,OACrFrI,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,MAAA,CAAK+D,UAAW3D,EAAW,SAAmB,MAAT8G,EAAgB,gBAAAvI,OAAgBuI,GAAU,qBAAoC,IAAfC,EAAsB,YAAc,GAAIpD,IACxIjF,EAAAkB,cAAA,MAAA,CAAK+D,UAAW3D,EAAW,YAAsB,MAAT8G,EAAgB,mBAAAvI,OAAmBuI,GAAU,2BAGzFpI,EAAAkB,cAAA,MAAA,CAAK+D,UAAW3D,EAAW,oBACvBtB,EAAAkB,cAAA,OAAA,KAAOiH,IAPsE,ECDnFI,EAAoC,SAAClI,GAAE,IAAA8H,UAAOK,EAAInI,EAAAmI,KAAEC,EAAOpI,EAAAoI,QAK7D,OACIzI,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,MAAA,CAAK+D,UAAW3D,EAAW,uBACvBtB,EAAAkB,cAAA,MAAA,CAAK+D,UAAW3D,EAAW,sBACtB6G,GAELnI,EAAAkB,cAAA,MAAA,CAAK+D,UAAW3D,EAAW,wBACvBtB,EAAAkB,cAAAlB,EAAAsI,SAAA,KAEQ3I,MAAMkC,QAAQ2G,IAASA,EAAKE,IAAI,SAACC,EAAMC,GAAU,OAC7C5I,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,MAAA,CAAKgB,IAAK0G,EAAO3D,UAAW3D,EAAW,uBACnCtB,EAAAkB,cAAA,SAAA,CAAQ2H,KAAK,SAASJ,QAAS,WAf/DA,EAeiFE,EAAZ,EAAmB1D,UAA6B,IAAlB0D,EAAKG,SAAiB,kBAAsC,IAAlBH,EAAKG,SAAiB,kBAAoB,mBAAoBH,EAAKI,OAH3I,MAa7E,ECxBMC,EAAgC,SAAC3I,GACnC,IAAA4H,EAAO5H,EAAA4H,QACPG,EAAK/H,EAAA+H,MACL9H,EAAQD,EAAAC,SACR2I,YACAhE,EAAS5E,EAAA4E,UACTwD,EAAOpI,EAAAoI,QAEDS,EAAclJ,EAAMmJ,YAAY,SAACC,GAC/BX,IAAuB,IAAZQ,GACXR,EAAQW,EAEhB,EAAG,CAACX,EAASQ,IAEb,OACIjJ,EAAAkB,cAAA,SAAA,CACI2H,KAAK,SACL5D,UAAW3D,EACP,UACY,IAAZ2H,EAAmB,iBAAmB,KAC3B,MAAXhB,EAAkB,UAAApI,OAAUoI,GAAY,cAC/B,MAATG,EAAgB,gBAAAvI,OAAgBuI,GAAU,uBAC1CnD,GAEJwD,QAASS,GAER5I,EAGb,ECvCa+I,EAAa,SAACpJ,GACvB,IAAMqJ,EAASC,EAAQ,WAGnB,OADsB,KADV9I,SAAS+I,iBAAiB,gBAEXnN,MAC/B,EAAG,IAEH,OACI2D,EAAAkB,cAAA,MAAArF,EAAA,CAAA,EACQoE,GACJgF,UAAW,sBAAehF,EAAMgF,WAChC8C,MAAKlM,EAAAA,EAAA,GAAOoE,EAAM8H,OAAK,CAAEuB,OAAMA,MAE/BtJ,EAAAkB,cAAA,QAAA,KAAQ,8BACPjB,EAAMK,SAGnB,ECjBamJ,EAAwC,SAAAxJ,GAAS,OAC1DD,EAAAkB,cAAA,MAAArF,EAAA,CAAA,EAASoE,GAAOgF,UAAW,eAAApF,OAAeI,EAAMgF,aADU,ECGjDyE,EAAS,SAACzJ,GACnBW,EAAU,WAEN,OADA2B,OAAOgE,iBAAiB,QAASoD,GAC1B,WACHpH,OAAOiE,oBAAoB,QAASmD,EACxC,CACJ,EAAG,IAEH,IAAMA,EAAcR,EAAY,SAACtM,SACzB,CAAC,MAAO,UAAU+M,SAAS/M,EAAEqF,OAChB,QAAb7B,EAAAJ,EAAM4J,eAAO,IAAAxJ,GAAAA,EAAA5D,KAAAwD,GAErB,EAAG,IAEH,OAAKA,EAAM4E,KAIJ1D,EAASC,aAERpB,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAACmI,EAAU,KACPrJ,EAAAkB,cAACuI,EAAU,CACP1B,MAAO,CACHjC,SAAU,WACVgE,WAAY,aACZtG,MAAO,OACPgE,SAAU,UAIVvH,EAAMkI,OAEFnI,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,iBACXjF,EAAAkB,cAAA,KAAA,CACI6G,MAAO,CACHgC,WAAY,MACZC,SAAU,YAEhB/J,EAAMkI,QAKpBnI,EAAAkB,cAAA,SAAA,CACI2H,KAAK,SACLd,MAAO,CACHjC,SAAU,WACVvC,IAAK,SACLD,MAAO,SACPgG,OAAQ,GACRU,SAAU,WACVD,WAAY,MACZE,WAAY,cACZC,OAAQ,OACRC,QAAS,YAEb1B,QAASxI,EAAM4J,SAAO,KAI1B7J,EAAAkB,cAAA,MAAA,SAMhBT,SAASvC,MApDD8B,EAAAkB,cAAAlB,EAAAsI,SAAA,KAsDhB,ECvEa8B,EAA4D,SAAAnK,eAAS,OAG9ED,EAAAkB,cAACwI,EAAM,CACH7E,KAAM5E,EAAM4E,KACZsD,OAAOlI,aAAK,EAALA,EAAOkI,QAAS,8BACvB0B,QAAS5J,EAAM4J,SAEf7J,EAAAkB,cAAA,MAAA,CACI6G,MAAO,CACHsC,QAAS,OACTC,cAAe,WAGnBtK,EAAAkB,cAAA,IAAA,MACKjB,aAAK,EAALA,EAAOsK,UAAW,4CAEvBvK,EAAAkB,cAAA,MAAA,CACI6G,MAAO,CACHyC,UAAW,UACXH,QAAS,OACTC,cAAe,WAGnBtK,EAAAkB,cAAA,MAAA,CACI6G,MAAO,CACHsC,QAAS,OACTI,eAAgB,gBAChBD,UAAW,SAGfxK,EAAAkB,cAAA,SAAA,CACI2H,KAAK,SACL5D,UAAU,MACV8C,MAAKlM,EAAA,CACD6O,gBAAiB,UACjBtC,MAAO,SACY,QAAhB/H,EAAAJ,aAAK,EAALA,EAAO0K,iBAAS,IAAAtK,OAAA,EAAAA,EAAE0H,OAEzBU,QAASxI,EAAM4J,UAEG,QAAhBtJ,EAAAN,eAAAA,EAAO0K,iBAAS,IAAApK,OAAA,EAAAA,EAAEjC,QAAS,WAEjC0B,EAAAkB,cAAA,SAAA,CACI2H,KAAK,SACL5D,UAAU,MACV8C,MAAKlM,EAAA,CACD6O,gBAAiB,UACjBtC,MAAO,SACQ,QAAZxD,EAAA3E,eAAAA,EAAO2K,iBAAKhG,OAAA,EAAAA,EAAEmD,OAErBU,QAASxI,EAAM4K,YAED,QAAZ/F,EAAA7E,aAAK,EAALA,EAAO2K,aAAK,IAAA9F,OAAA,EAAAA,EAAExG,QAAS,kBCpD3CwM,GAAkC,SAACzK,GAAE,IAAAE,qBAAAwK,OAAgB,IAAAxK,KAASqE,EAAAvE,EAAA2K,gBAAAA,aAAkB,aAAYpG,EAAK3E,EAAKrD,EAAAyD,EAAnE,wCAC/ByE,EAAkBQ,GAAkB,GAAnCT,EAAIC,EAAA,GAAEmG,EAAOnG,EAAA,GACdO,EAA4BC,GAAkB,GAA7CuF,EAASxF,EAAA,GAAE6F,EAAY7F,EAAA,GACxBQ,EAAoCP,EAA6B,IAAhE6F,EAAatF,EAAA,GAAEuF,EAAgBvF,EAAA,GAEhCwF,EAAoB,WACtBJ,GAAQ,GACRC,GAAa,EACjB,EAEMI,EAAa/B,EAAQ,WACvB,OAAQyB,GACJ,IAAK,UACD,OAAOO,EACX,IAAK,cACD,OAAOC,EACX,IAAK,aACD,OAAOC,EACX,QACI,OAEZ,EAAG,CAACT,IAEEU,EAAoBvC,EAAY,WAClCkC,IACApL,EAAM0L,OAAOR,EACjB,EAAG,CAAClL,EAAOkL,IAELS,EAAezC,EAAY,SAACrL,GACzBiN,IAELE,GAAQ,GACRC,GAAa,GACbE,EAAiBtN,GACrB,EAAG,CAACmC,IAYJ,OACID,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,MAAA,CAAK6G,MAZ+B,CACxCsC,QAAS,OACTC,cAAe,SACfG,eAAgB,SAChBoB,WAAY,SACZrI,MAAO,OACPsI,IAAK,OACL/F,OAAQ,SAMA/F,EAAAkB,cAAC6K,EAASlQ,EAAA,CACNmQ,QAAS,CACL,UACA,gBACA,aACA,YACA,SACA,QACA,cACA,eACA,eACA,UACA,mBACA,UACA,UACA,UACA,WACA,QACA,SACA,MACA,eACA,QACA,SAEJC,WAAY,CACRC,OAAO,EACPC,OAAO,EACPC,QAASd,EACTe,QAAQ,GAEZC,UAAW,IACXC,eAAe,GACXtM,EAAK,CACT0L,OAAQC,EACRY,OAAQ3B,MAGhB7K,EAAAkB,cAACkJ,EAAsBvO,EAAA,CACnBgJ,KAAMA,EACNgF,QAASwB,EACTR,UAAWa,GACPzL,eAAAA,EAAOwM,oBAI3B,EClGAC,GAAA,WAAA,SAAAA,IACY/P,KAAAgQ,OAAS,qBACThQ,KAAAiQ,UAAY,gBACZjQ,KAAAkQ,GAAyB,IA4DrC,CAAA,OA1DUH,EAAAnQ,UAAAuQ,aAAN,uFACI,MAAA,CAAA,EAAO,IAAIxP,QAAQ,SAACC,EAASC,GACzB,IAAMuP,EAAUC,UAAUnI,KAAKoI,EAAKN,OAAQ,GAE5CI,EAAQG,gBAAkB,SAAA9D,GACX2D,EAAQjP,OAChBqP,kBAAkBF,EAAKL,UAAW,CACjCQ,QAAS,KACTC,eAAe,GAEvB,EAEAN,EAAQO,UAAY,WAChBL,EAAKJ,GAAKE,EAAQjP,OAClBP,EAAQ0P,EAAKJ,GACjB,EAEAE,EAAQQ,QAAU,WAAM,OAAA/P,EAAOuP,EAAQS,MAAf,CAC5B,OACH,EAEKd,EAAAnQ,UAAAkR,UAAN,SAAgBC,sGACR,OAAC/Q,KAAKkQ,GAAN,CAAA,EAAA,GACA,CAAA,EAAMlQ,KAAKmQ,uBAAXzM,EAAA9B,iBAGJ,KAAA,EAAA,MAAA,CAAA,EAAO,IAAIjB,QAAQ,SAACC,EAASC,GACzB,IAEMuP,EAFcE,EAAKJ,GAAIc,YAAYV,EAAKL,UAAW,aAC/BgB,YAAYX,EAAKL,WACrBiB,IAAI,CACtBH,KAAIA,EACJI,UAAWC,KAAKC,MAChBjF,KAAM2E,EAAK3E,OAGfgE,EAAQO,UAAY,WAAM,OAAA/P,EAAQwP,EAAQjP,OAAhB,EAC1BiP,EAAQQ,QAAU,WAAM,OAAA/P,EAAOuP,EAAQS,MAAf,CAC5B,QACH,EAEKd,EAAAnQ,UAAA0R,aAAN,SAAmBC,sGACX,OAACvR,KAAKkQ,GAAN,CAAA,EAAA,GACA,CAAA,EAAMlQ,KAAKmQ,uBAAXzM,EAAA9B,iBAGJ,KAAA,EAAA,MAAA,CAAA,EAAO,IAAIjB,QAAQ,SAACC,EAASC,GACzB,IAEMuP,EAFcE,EAAKJ,GAAIc,YAAY,CAACV,EAAKL,WAAY,YACjCgB,YAAYX,EAAKL,WACrBuB,IAAID,GAE1BnB,EAAQO,UAAY,WAChB,IAAMc,EAASrB,EAAQjP,OACvBP,EAAQ6Q,EAASA,EAAOV,KAAO,KACnC,EAEAX,EAAQQ,QAAU,WAAM,OAAA/P,EAAOuP,EAAQS,MAAf,CAC5B,QACH,EACLd,CAAA,ICtDM2B,GAAgC,SAAChO,GACnC,IAAAiO,EAASjO,EAAAiO,UACT/N,EAAAF,EAAAkO,UAAAA,OAAS,IAAAhO,GAAQA,EACjBqE,EAAAvE,EAAAmO,KAAAA,OAAI,IAAA5J,EAAG,QAAOA,EACdE,EAAAzE,EAAAoO,aAAAA,WAAY3J,EAAG,UAASA,EACxBO,EAAAhF,EAAAqO,UAAAA,aAAY,UAASrJ,EACrBQ,EAAAxF,EAAAsO,cAAAA,OAAa,IAAA9I,GAAQA,EACrB+I,EAAAvO,EAAAwO,kBAAAA,OAAiB,IAAAD,GAAQA,EACzBE,EAAAzO,EAAA0O,mBAAAA,WAAkBD,GAAQA,EACvB7O,EAAKrD,EAAAyD,EAT2B,CAAA,YAAA,YAAA,OAAA,eAAA,YAAA,gBAAA,oBAAA,uBAW7B2O,EAAYrO,EAAe,MAC3BsO,EAAmBtO,EAA6B,MAChDuO,EAAiBvO,EAAO,IAAI+L,IAC5ByC,EAAmB7J,EAASkJ,GAA3BY,EAAKD,EAAA,GAAEE,EAAOF,EAAA,GACfG,EAAwBhK,GAAS,GAAhCiK,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GACpBG,EAAoCnK,GAAS,GAA5CoK,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAChCG,EAAW,4BAA4BC,KAAKC,UAAUC,YAAcD,UAAUE,eAAiB,GAAK,iBAAkBvP,SAASkC,gBAC/HsN,EAAqBC,EACrBC,EAAeC,EACfC,EAAuBC,EACvBC,EAAaC,EACbC,EAAaC,EACbC,EAAcC,EAEdC,GChCc,WACpB,IAAMC,EAAmBnQ,EAAY,MAC/BN,EAAoCiF,EAAS,GAA5CyL,EAAa1Q,EAAA,GAAE2Q,EAAgB3Q,EAAA,GAEhC4Q,EAAa,SAACC,GAChB,IAAMC,EAAOC,KAAKC,MAAMH,EAAY,OAC9BI,EAAQF,KAAKC,MAAOH,EAAY,MAAkB,MAClDK,EAAUH,KAAKC,MAAOH,EAAe,KAAQ,IAC7CM,EAAUN,EAAe,GAC/B,MAAO,UAAGC,EAAO,EAAIA,EAAKpP,WAAW0P,SAAS,EAAG,KAAK5R,OAAO,KAAO,IAAEA,OAAGyR,EAAQ,EAAIA,EAAMvP,WAAW0P,SAAS,EAAG,KAAK5R,OAAO,KAAO,WAAK0R,EAAQxP,WAAW0P,SAAS,EAAG,KAAI,KAAA5R,OAAI2R,EAAQzP,WAAW0P,SAAS,EAAG,KACpN,EAEMC,EAAenI,EAAQ,WAAM,OAAA0H,EAAWF,EAAX,EAA2B,CAACA,IAEzDY,EAAaxI,EAAY,WAC3B6H,EAAiB,GACjBF,EAAiB/P,QAAU6Q,YAAY,WACnCZ,EAAiB,SAAAa,GAAQ,OAAAA,EAAO,CAAP,EAC7B,EAAG,IACP,EAAG,IAEGC,EAAY3I,EAAY,WACtB2H,EAAiB/P,UACjBgR,cAAcjB,EAAiB/P,SAC/B+P,EAAiB/P,QAAU,KAEnC,EAAG,IAEH,MAAO,CACHkQ,WAAUA,EACVU,WAAUA,EACVG,UAASA,EACTJ,aAAYA,EAEpB,CDFoDM,GAAxCN,GAAYb,GAAAa,aAAEC,GAAUd,GAAAc,WAAEG,GAASjB,GAAAiB,UAErCG,GAA8B3M,EAAqB,CACrD4M,SAAU,KACVC,SAAU,KACVC,aAAa,EACbC,aAAc,KACd3E,KAAM,OALH4E,GAAUL,GAAA,GAAEM,SAQbC,GAA0ClN,EAAsD,CAClGmN,WAAY,cACZjP,MAAO,CAAEkP,IAAK,KACdtP,OAAQ,CAAEsP,IAAK,OAHIF,GAAA,GAAA,IAAEG,SAMzB/R,EAAU,WAON,OANA+R,GAAoB,CAChBF,WAAY7C,EAAW,cAAgB,OACvCpM,MAAO,CAAEkP,IAAK,KACdtP,OAAQ,CAAEsP,IAAK,OAGZ,WACHE,KACAd,KACAe,IACJ,CACJ,EAAG,IAEHjS,EAAU,WACQ,UAAVwO,GACAI,GAAW,EAEnB,EAAG,CAAC8C,KAEJ,IAAMQ,GAAe3J,EAAY,WAAA,OAAAlM,cAAA,OAAA,EAAA,6DAE7B,GADM8V,EAA4B,UAAjB/D,EAAUjO,mBAAOV,OAAA,EAAAA,EAAE2S,gBACtB,CAGV,IAFMC,EAAiBC,KAAKH,EAASI,MAAM,KAAK,IAC1CC,EAAc,IAAIzT,MAAMsT,EAAe5W,QACpCH,EAAI,EAAGA,EAAI+W,EAAe5W,OAAQH,IACvCkX,EAAYlX,GAAK+W,EAAeI,WAAWnX,GAEzCoX,EAAY,IAAIC,WAAWH,GAC3BI,EAAO,IAAIC,KAAK,CAACH,GAAY,CAAEzK,KAAM,eAErC6K,EAAW,kBAAA7T,OAAkBkO,KAAKC,MAAMjM,WAAWnC,kBACnD+T,EAAO,IAAIC,KAAK,CAACJ,GAAOE,EAAU,CAAE7K,KAAM,eAE1CgL,EAAUC,IAAIC,gBAAgBJ,GAEpCpB,GAAc,SAAAV,GAAQ,OAAAhW,EAAAA,EAAA,CAAA,EACfgW,GAAI,CACPK,SAAU2B,EACVnG,KAAIiG,GAHc,EAK1B,gBACD,CAAC3E,EAAWT,EAAWD,IAgBpB0F,GAAsB7K,EAAY,WACpC,GAAI6F,EAAUjO,SAAWiO,EAAUjO,QAAQkT,OAAQ,CAC/C,IAAIC,EAAM,OACNC,EAAW,SAAAtU,OAASqU,GAEpBE,cAAcC,gBAAgB,eAC9BH,EAAM,MACNC,EAAW,aAGf,IAAMG,EAAgB,IAAIF,cAAcpF,EAAUjO,QAAQkT,OAAQ,CAAEM,SAAQJ,IAEtEK,EAAiB,GAEvBF,EAAcG,gBAAkB,SAAA5X,GACxBA,EAAE2L,KAAKkM,KAAO,GACdF,EAAOpV,KAAKvC,EAAE2L,KAEtB,EAEA8L,EAAcK,OAAS,WAAA,OAAA1X,cAAA,OAAA,EAAA,wDACbuW,EAAO,IAAIC,KAAKe,EAAQ,CAAE3L,KAAMsL,IAEhCT,EAAW,yBAAkB3F,KAAKC,MAAK,KAAAnO,OAAIqU,GAC3CxG,EAAO,IAAIkG,KAAK,CAACJ,GAAOE,EAAU,CAAE7K,KAAMsL,IAE1CS,EAAUd,IAAIC,gBAAgBrG,GAEpC6E,GAAc,SAAAV,GAAQ,OAAAhW,EAAAA,EAAA,CAAA,EACfgW,GAAI,CACPM,SAAUyC,EACVxC,aAAa,EACb1E,QAJkB,GAMtBoE,cAGJwC,EAAcO,QACd5F,EAAiBlO,QAAUuT,EAC3B3C,KACAY,GAAc,SAAAV,GAAQ,OAAAhW,EAAAA,EAAA,CAAA,EAAMgW,GAAI,CAAEO,aAAa,GAAzB,EAC1B,CACJ,EAAG,CAACpD,EAAWT,EAAWoD,GAAYG,GAAWxD,IAE3CsE,GAAe,WACjBL,GAAc,CACVL,SAAU,KACVC,SAAU,KACVC,aAAa,EACbC,aAAc,KACd3E,KAAM,MAEd,EA8BA,OACI1N,uBAAKiF,UAAU,oBACTqN,GAAWJ,UAAaI,GAAWH,SAkGjCnS,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,0CACVqN,GAAWJ,UACRlS,EAAAkB,cAAA,MAAA,CACI4T,IAAKxC,GAAWJ,SAChB6C,IAAI,UACJhN,MAAO,CACH3E,OAAQ,MACR4R,UAAW,UACXC,mBAAoB,cACpBlQ,SAAU,OACVmQ,YAAa,OACb7K,QAAS,OACT8K,YAAa,YAIxB7C,GAAWH,UACRnS,EAAAkB,cAAA,QAAA,CACIsC,MAAM,OACNJ,OAAO,MACP8K,GAAG,QACHnG,MAAO,CACH3E,OAAQ,MACR4R,UAAW,UACXC,mBAAoB,cACpBlQ,SAAU,OACVmQ,YAAa,OACb7K,QAAS,OACT8K,YAAa,UAEjBC,QAAS,WAAM,OAAA5F,GAAW,EAAX,GAEfxP,EAAAkB,cAAA,SAAA,CAAQ4T,IAAKxC,GAAWH,SAAUtJ,KAAK,cACvC7I,EAAAkB,cAAA,SAAA,CAAQ4T,IAAKxC,GAAWH,SAAUtJ,KAAK,eACvC7I,EAAAkB,cAAA,QAAA,CAAOmU,KAAK,WAAWP,IAAI,GAAGQ,KAAK,KAAKhX,MAAM,UAAUiX,SAAO,gDAItEjD,GAAWH,UACRnS,gBAACgJ,EAAM,CACHf,QAAQ,YACRhD,UAAU,iBACVwD,QA9OL,WACf,IAAM+M,EAAQ/U,SAASmG,eAAe,SACtC,IACQ4O,EAAMhJ,OACNgJ,EAAMC,OAGND,EAAME,QAEVlG,GAAYD,EAChB,CACA,MAAO1S,GAAK,CAChB,GAoO0B0S,EAA2BvP,EAAAkB,cAACyP,EAAW,MAA7B3Q,EAAAkB,cAACuP,EAAU,OAG/BzQ,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,mBACXjF,EAAAkB,cAAC8H,EAAM,CACHf,QAAQ,YACRQ,QA7KA,WAAA,OAAAxL,OAAA,OAAA,OAAA,EAAA,kEAChB,OAAAsR,EACqB,CAAA,EAAMW,EAAenO,QAAQ0M,UAAU6E,GAAW5E,OADvE,CAAA,EAAA,UACM2E,EAAehS,EAAA9B,OACrB+P,EAAU,CACNqH,UAAWtD,EACXuD,cAAe,0CAGlBrH,GAAuB,UAAVa,GACdd,EAAU,CACNZ,KAAM4E,GAAW5E,KACjBqF,SAAUT,GAAWJ,WAGxB3D,GAAuB,UAAVa,GACdd,EAAU,CACNZ,KAAM4E,GAAW5E,KACjBmI,SAAUvD,GAAWH,WAG7BS,eA0JoB3N,UAAU,yCAETwJ,GAELzO,EAAAkB,cAAC8H,GACGf,QAAQ,WACRQ,QAASmK,GACT3N,UAAU,sCAETyJ,KA7Jb1O,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,kBAEPqN,GAAWF,aACPpS,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,yBAAyB8C,MAAO,CAAEsC,QAAmB,UAAV+E,EAAoB,OAAS,SACnFpP,EAAAkB,cAAA,OAAA,CAAM+D,UAAU,yBAChBjF,EAAAkB,cAAA,OAAA,KAAOwQ,MAKdY,GAAWF,aAAevD,GACvB7O,EAAAkB,cAAA,SAAA,CACI2H,KAAK,SACLJ,QAAS,WAAM,OA3CvC4G,EA2C4D,UAAVD,EAAoB,QAAU,cA1ChFwD,IA0CuC,EACf3N,UAAU,6BAEVjF,EAAAkB,cAAA,OAAA,KAAiB,UAAVkO,EAAoB,QAAU,UAK7CQ,IAAa0C,GAAWF,aAAerD,GACnC/O,0BACI6I,KAAK,SACLJ,QAAS,WACLkH,GAAkBD,GAClBiD,GAAoB,CAChBF,WAAa/C,EAAyB,cAAT,OAC7BlM,MAAO,CAAEkP,IAAK,KACdtP,OAAQ,CAAEsP,IAAK,MAEvB,EACAzN,UAAU,+BAEVjF,EAAAkB,cAAC+O,EAAkB,CAACyE,KAAM,MAKlCnG,GAAaI,GACT3O,uBAAKiF,UAAU,uBAAqB,gBAK5CjF,EAAAkB,cAAC4U,EAAMja,EAAA,CACHqE,IAAK8O,EACL+G,iBAAkB,CACdtD,WAAY,cACZjP,MAAO,CAAEkP,IAAK,KACdtP,OAAQ,CAAEsP,IAAK,OAEfzS,EAAK,CACT8H,MAAO,CACH3E,OAAQ,iBACR4R,UAAW,UACXC,mBAAoB,cACpBlQ,SAAU,OACVmQ,YAAa,OACb7K,QAAS,OACT8K,YAAa,SACbpP,OAAQ,UAEZiQ,iBAAiB,aACjBC,iBAAe,KAEnBjW,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,mBACA,UAAVmK,GACGpP,EAAAkB,cAAC8H,EAAM,CACHf,QAAQ,YACRhD,UAAU,uCACVwD,QAASqK,IAET9S,EAAAkB,cAACiP,EAAY,CAACuE,KAAM,MAGjB,UAAVtF,IAAsBkD,GAAWF,aAC9BpS,EAAAkB,cAAC8H,GACGf,QAAQ,YACRQ,QAASuL,GACT/O,UAAU,uCAEVjF,EAAAkB,cAACmP,EAAoB,CAACqE,KAAM,MAGzB,UAAVtF,GAAqBkD,GAAWF,aAC7BpS,EAAAkB,cAAC8H,GACGf,QAAQ,YACRQ,QAASoK,GACT5N,UAAU,uCAEVjF,EAAAkB,cAACqP,EAAU,CAACmE,KAAM,SA0E9C,SAAS7B,KACD5D,EAAiBlO,SACjBkO,EAAiBlO,QAAQmV,MAEjC,CACJ,EE/VMC,GAA4C,SAAC9V,GAC/C,IAAAyI,EAAQzI,EAAAyI,SACRpL,EAAK2C,EAAA3C,MACLgX,EAAIrU,EAAAqU,KACJpU,aACA2E,EAAS5E,EAAA4E,UACTmR,EAAQ/V,EAAA+V,SAEFC,EAAiBrW,EAAMmJ,YAAY,WACjCiN,GACAA,EAAS1Y,EAEjB,EAAG,CAAC0Y,EAAU1Y,IAEd,OACIsC,0BACI6I,KAAK,SACL5D,UAAW3D,EACP,oBACSmB,IAATiS,EAAqB,qBAAA7U,OAAqB6U,GAAS,wBACtC,IAAb5L,EAAoB,wBAA0B,KAC9C7D,GAEJwD,QAAS4N,GAER/V,EAGb,GbpCA,SAAKmD,GACDA,EAAAA,EAAA,MAAA,GAAA,QACAA,EAAAA,EAAA,SAAA,GAAA,WACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,OAAA,GAAA,QACH,CAPD,CAAKA,IAAAA,EAAe,CAAA,IAwBpB,IAAM6S,GAAgBxW,EAA+B,SAACO,EAanDH,GAZC,IAAAqW,YACAhW,EAAAF,EAAAmO,KAAAA,aAAO,SAAQjO,EACfD,aACAkW,EAAYnW,EAAAmW,aACZC,EAAWpW,EAAAoW,YACXxR,EAAS5E,EAAA4E,UACTyR,EAAOrW,EAAAqW,QACPC,eACAC,EAASvW,EAAAuW,UACTC,EAAMxW,EAAAwW,OACNC,EAASzW,EAAAyW,UACTC,EAAQ1W,EAAA0W,SAEFC,EAAUhX,EAAMW,OAAoB,MACpCsW,EAAUjX,EAAMW,SAChBiE,EAAwC5E,EAAMsF,SAA0B,WAC1E,MAAa,WAATkJ,EAA0B/K,EAAgByT,OACvCzT,EAAgB0T,OAC3B,aA4EAnX,EAAMY,UAAU,WAAM,OAAA,WACdqW,EAAQlW,SACRwB,OAAO6U,aAAaH,EAAQlW,QAEpC,CAJsB,EAInB,CAACkW,IAEJjX,EAAMY,UAAU,WACR2V,GAhFAU,EAAQlW,SAASwB,OAAO6U,aAAaH,EAAQlW,SAEjDiW,EAAQjW,QAASsW,UAAUpW,OAAO,GAAApB,OAAGoF,EAAS,UAC9C+R,EAAQjW,QAASsW,UAAUpW,OAAO,GAAApB,OAAGoF,EAAS,aAC9C+R,EAAQjW,QAASsW,UAAUpW,OAAO,GAAApB,OAAGoF,EAAS,YAE1CyR,GAASA,IACbM,EAAQjW,QAASsW,UAAUxJ,IAAI,GAAAhO,OAAGoF,EAAS,WAE3CgS,EAAQlW,QAAUwB,OAAO+U,WAAW,WAC5BX,GAAYA,IACZK,EAAQjW,SACRiW,EAAQjW,QAASsW,UAAUxJ,IAAI,GAAAhO,OAAGoF,EAAS,cAS/CgS,EAAQlW,QAAUwB,OAAO+U,WAAW,WAC5BV,GAAWA,IACXI,EAAQjW,SACRiW,EAAQjW,QAASsW,UAAUxJ,IAAI,GAAAhO,OAAGoF,EAAS,YAQnD,EAAGuR,GAAgB,IACvB,EAAG,MAICS,EAAQlW,SAASwB,OAAO6U,aAAaH,EAAQlW,SAEjDiW,EAAQjW,QAASsW,UAAUpW,OAAO,GAAApB,OAAGoF,EAAS,WAC9C+R,EAAQjW,QAASsW,UAAUpW,OAAO,GAAApB,OAAGoF,EAAS,cAC9C+R,EAAQjW,QAASsW,UAAUpW,OAAO,GAAApB,OAAGoF,EAAS,aAE1C4R,GAAQA,IACZG,EAAQjW,QAASsW,UAAUxJ,IAAI,GAAAhO,OAAGoF,EAAS,UAE3CgS,EAAQlW,QAAUwB,OAAO+U,WAAW,WAC5BR,GAAWA,IACXE,EAAQjW,SACRiW,EAAQjW,QAASsW,UAAUxJ,IAAI,GAAAhO,OAAGoF,EAAS,aAS/CgS,EAAQlW,QAAUwB,OAAO+U,WAAW,WAC5BP,GAAUA,IACVC,EAAQjW,SACRiW,EAAQjW,QAASsW,UAAUxJ,IAAI,GAAAhO,OAAGoF,EAAS,WAQnD,EAAGwR,GAAe,IACtB,GAgBJ,EAAG,CAACF,IAEJ,IAAMgB,EAA+CvX,EAAMuJ,QAAQ,WAC/D,GAAKjJ,EAAL,CAEA,IAAMkX,SACClX,EAASL,OAAK,CACjBgF,UAAW3D,EAAW2D,EAAW3E,EAASL,MAAMgF,WAChD/E,IAAK8W,IAGT,OAAOhX,EAAMyX,aAAanX,EAAUkX,EARL,CASnC,EAAG,CAAClX,EAAU0W,IAEd,OACIhX,EAAAkB,cAAAlB,EAAAsI,SAAA,KACKiP,EAGb,Gc5IMG,GAAO5X,EAA+B,SAACO,EAS1CH,OARCqW,EAAOlW,EAAAkW,QACPjW,EAAQD,EAAAC,SACRoW,EAAOrW,EAAAqW,QACPC,EAAUtW,EAAAsW,WACVC,EAASvW,EAAAuW,UACTC,EAAMxW,EAAAwW,OACNC,EAASzW,EAAAyW,UACTC,EAAQ1W,EAAA0W,SACD,OACP/W,EAAAkB,cAACoV,GAAa,CACVpW,IAAKA,EACLqW,QAASA,EACT/H,KAAK,SACLvJ,UAAU,UACVuR,aAAc,IACdC,YAAa,IACbC,QAASA,EACTG,OAAQA,EACRF,WAAYA,EACZC,UAAWA,EACXE,UAAWA,EACXC,SAAUA,GAETzW,EAfE,GCTLqX,GAAkC,SAACtX,OACrCC,EAAQD,EAAAC,SACR6H,EAAK9H,EAAA8H,MACG9H,EAAAoE,SAAA,IACRlE,EAAAF,EAAAuX,WAAAA,OAAU,IAAArX,EAAG,IACbqE,EAAAvE,EAAAwX,WAAAA,OAAU,IAAAjT,EAAG,EAACA,EACdK,EAAS5E,EAAA4E,UACT6S,EAAQzX,EAAAyX,SAEFhT,EAA4B9E,EAAMsF,cAAkC7C,GAAnEsV,EAASjT,EAAA,GAAEkT,OACZ3S,EAAsBrF,EAAMsF,UAAS,GAApC2S,EAAM5S,EAAA,GAAE6S,OACTrS,EAA4C7F,EAAMsF,UAAS,GAA1D6S,EAAkBtS,EAAA,GAAEuS,OACrBxJ,EAAoC5O,EAAMsF,UAAS,GAAlD+S,EAAazJ,EAAA,GAAE0J,OAChBC,EAAkBvY,EAAMW,SACxB6X,EAAkBxY,EAAMW,SAG9BX,EAAMY,UAAU,YACK,IAAbkX,GACAI,GAAU,EAElB,EAAG,CAACJ,IAEJ,IA0GIP,EA1GEkB,EAAc,WAChBP,GAAU,EACd,EAEMQ,EAAe,WACjBR,GAAU,EACd,EAiCMS,EAAmB,SAACvP,GAClBiP,IACJjB,aAAamB,EAAgBxX,SAC7BqW,aAAaoB,EAAgBzX,SAExBgX,GACDC,EAAa5O,EAAMwP,eAEvBJ,EAAgBzX,QAAUuW,WACtB,WACIoB,GACJ,EACAb,GAER,EAEMgB,EAAkB,SAACzP,GACjBiP,IACJjB,aAAamB,EAAgBxX,SAC7BqW,aAAaoB,EAAgBzX,SAExBgX,GACDC,EAAa5O,EAAMwP,gBAEN,IAAbd,IACAS,EAAgBxX,QAAUuW,WACtB,WACImB,GACJ,EACAb,IAGZ,EAEMkB,EAAmB,SAAC1P,GACtBkP,GAAiB,GACjBlB,aAAamB,EAAgBxX,SAC7BqW,aAAaoB,EAAgBzX,SAExBgX,GACDC,EAAa5O,EAAMwP,gBAEN,IAAbd,IACAS,EAAgBxX,QAAUuW,WACtB,WACImB,GACJ,EACA,KAGZ,EAEMM,EAAiB,SAAC3P,GACpBgO,aAAamB,EAAgBxX,SAC7BqW,aAAaoB,EAAgBzX,SAExBgX,GACDC,EAAa5O,EAAMwP,eAEvBJ,EAAgBzX,QAAUuW,WACtB,WACIoB,GACJ,EACA,IAER,EAGA,GAAIpY,EAAU,CACV,IAAMkX,EAAa3b,EAAAA,EAAA,CAAA,EACZyE,EAASL,OAAK,CACjB+Y,QAtGY,SAAC5P,GACZ2O,GACDC,EAAa5O,EAAMwP,eAGvBL,EAAgBxX,QAAUuW,WACtB,WACImB,GACJ,EACAb,EAER,EA4FQqB,aA1FiB,SAAC7P,GAClBiP,IACJjB,aAAamB,EAAgBxX,SAC7BqW,aAAaoB,EAAgBzX,SAExBgX,GACDC,EAAa5O,EAAMwP,gBAEN,IAAbd,IACAS,EAAgBxX,QAAUuW,WACtB,WACImB,GACJ,EACAb,IAGZ,EA2EQsB,aAAcP,EACdQ,YAAaN,EACbO,aAAcN,EACdO,WAAYN,IAGhBxB,EAAevX,EAAMyX,aAAanX,EAAUkX,EAChD,CAEA,IAQM8B,EAAcrB,IAA0BE,EAC9C,OACInY,EAAAkB,cAAAlB,EAAAsI,SAAA,KACKiP,EAEDvX,EAAAkB,cAACsD,EAAM,CACHQ,KAAK,UACLP,SAAUsT,EACVlT,KAAMyU,EACNrU,UAAW3D,EACP,aACA2D,GAEJkU,YAAcd,OAAkC5V,EAAlBoW,EAC9BK,aAAeb,OAAmC5V,EAAnBkW,EAC/BS,aAAcN,EACdO,WAAYN,GAEZ/Y,EAAAkB,cAACwW,GAAI,CACDnB,QAAS0B,EACTvB,QA5Bc,WAC1B0B,GAAoB,EACxB,EA2BgBrB,SAzBe,WAC3BqB,GAAoB,EACxB,GAyBgBpY,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,sBACVkD,KAOzB,ECrLc,SAAUoR,GACpBC,EACAC,GAEA,IAAMC,EAA0B1Z,EAAMmJ,YAAY,SAACC,GACvC,IAAA1I,EAAW0I,EAAK1I,OAElBiZ,EAAYF,EAAMG,OAAO,SAACC,EAAKlR,GACjC,IAAKA,EAAM,OAAOkR,EAClB,IAAMlT,EAxBO,SAAClC,SACtB,IAAKA,EAAU,OAAOhE,SAASvC,KAC/B,GAAiD,oBAA7CpC,OAAOS,UAAUwF,SAAStF,KAAKgI,GAAiC,CAChE,IAAMkC,EAAUlG,SAASmG,eAAenC,GACxC,OAAOkC,QAAAA,EAAWlG,SAASvC,IAC/B,CAEA,IAAMgC,EAAMuE,EACZ,OAAIvE,QAAuBuC,IAAhBvC,EAAIa,QACO,UAAXb,EAAIa,eAAO,IAAAV,EAAAA,OAAIoC,EAGnBgC,CACX,CAW4BoC,CAAiB8B,GACjC,OAAY,IAARkR,GAAkBlT,GAAuB,OAAZA,GAEzBA,EAAQmT,SAASpZ,GAFiCmZ,CAG9D,GAAG,GAECL,GAAYG,GACZH,GAER,EAAG,CAACA,IAEJxZ,EAAMY,UAAU,WAGZ,OAFAH,SAAS8F,iBAAiB,YAAamT,GAEhC,WACHjZ,SAAS+F,oBAAoB,YAAakT,EAC9C,CACJ,EAAG,CAACD,EAAOC,GACf,CCnCA,ICTUK,GDSJC,GAAkC,SAAC3Z,GAAE,IAAA4Z,QAAc5Z,EAAA4E,UAAA,IAAEiV,EAAQ7Z,EAAA6Z,SAAO,OACtEla,EAAAkB,cAAA,OAAA,CAAM+D,UAAU,mBACZjF,EAAAkB,cAAA,OAAA,CAAM+D,UAAU,wBAAwBgV,EAAI3b,OAC5C0B,EAAAkB,cAAA,SAAA,CACI2H,KAAK,SACL5D,UAAU,wBACVwD,QAASyR,GAAQ,KAN6C,EEGpEC,GAAiBra,EAA6C,SAACO,EAKlEH,OAJC+E,EAAS5E,EAAA4E,UACTvH,EAAK2C,EAAA3C,MACL+K,EAAOpI,EAAAoI,QACP2N,EAAQ/V,EAAA+V,SAEFgE,EAAWpa,EAAMW,OAAO,MAExB0Z,EAAoBra,EAAMmJ,YAAY,SAACC,GACpCgN,GACLA,EAAShN,EAAM1I,OAAOhD,MAC1B,EAAG,CAAC0Y,IAcJ,OAZApW,EAAMY,UAAU,WACZ,GAAIV,GAAOka,EAGP,OAFA/Y,EAAOnB,EAAKka,EAASrZ,SAEd,WACHM,EAAOnB,EAAK,KAChB,CAIR,EAAG,CAACA,EAAKka,IAGLpa,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,QAAA,CACIhB,IAAKka,EACL1c,MAAOA,EACPuH,UAAW3D,EAAW,oBAAqB2D,GAC3CqV,aAAa,MACbC,WAAW,QAAO,iBACH,QACfnE,SAAUiE,EACV5R,QAASA,IAIzB,GC1CM+R,GAAsD,SAACna,OACzDoa,EAAUpa,EAAAoa,WACVhS,EAAOpI,EAAAoI,QAEDS,EAAclJ,EAAMmJ,YAAY,SAACC,GAC9BX,GACLA,EAAQgS,EAAYrR,EACxB,EAAG,CAACX,IAEJ,OACIzI,uBACIgF,KAAK,SACLC,UAAU,wBACVyV,SAAU,EACVjS,QAASS,GAERuR,EAAWnc,MAGxB,ECnBMqc,GAAwD,SAACta,OAC3Dua,EAAKva,EAAAua,MACLnS,EAAOpI,EAAAoI,QAEDoS,EAAqBlb,MAAMkC,QAAQ+Y,EAAME,aAAeF,EAAME,YAAYpS,IAAI,SAACqS,EAASrZ,GAC1F,OAAsB,IAAlBqZ,EAAQH,MAEJ5a,EAAAkB,cAACyZ,GAAkB,CACfzY,IAAKR,EACLkZ,MAAOG,EACPtS,QAASA,IAKjBzI,EAAAkB,cAACsZ,GAAiB,CACdtY,IAAKR,EACL+Y,WAAYM,EACZtS,QAASA,GAGrB,GAAK,KAEL,OACIzI,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,0BACXjF,EAAAkB,cAAA,OAAA,CAAM+D,UAAU,+BAA+B2V,EAAMtc,OACrD0B,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,+BACV4V,GAIjB,ECtBMG,GAAgBlb,EAA4C,SAACO,EAQhEH,GAPC,IAAA2E,SACAoW,SACAC,kBACAJ,EAAWza,EAAAya,YACXrW,EAAQpE,EAAAoE,SACR0W,EAAM9a,EAAA8a,OACNC,EAAiB/a,EAAA+a,kBAEXC,EAAsBrb,EAAMuJ,QAAgC,WAC9D,IAAK5J,MAAMkC,QAAQiZ,GAAc,MAAO,GACxC,GAAII,EAAe,OAAOJ,EAE1B,IAAMQ,EAAW3b,MAAMkC,QAAQoZ,IAASA,EAAK5e,OAAS,EAChDkf,EAAaJ,GAAUA,EAAO9e,OAAS,EAEvCyB,EAAiC,GA0BvC,OAxBAgd,EAAY7Y,QAAQ,SAAA8Y,GAChB,IAAsB,IAAlBA,EAAQH,MAkBRU,GAAYL,EAAKO,KAAK,SAAAC,GAAW,OAAAA,EAAQvN,KAAO6M,EAAQ7M,EAAvB,IACjCqN,GAAcR,EAAQzc,MAAMod,cAAc5e,QAAQqe,EAAOO,eAAiB,GAC9E5d,EAAOsB,KAAIvD,EAAA,CAAA,EAAMkf,SAnBb,GAAIpb,MAAMkC,QAAQkZ,EAAQD,aAAc,CACpC,IAAMa,SACCZ,GAAO,CACVD,YAAa,KAEjBC,EAAQD,YAAY7Y,QAAQ,SAAA2Z,GACpBN,GAAYL,EAAKO,KAAK,SAAAC,GAAW,OAAAA,EAAQvN,KAAO0N,EAAa1N,EAA5B,IACjCqN,GAAcK,EAAatd,MAAMod,cAAc5e,QAAQqe,EAAOO,eAAiB,GACnFC,EAASb,YAAa1b,KAAIvD,EAAA,CAAA,EAAM+f,GACpC,GAEID,EAASb,YAAaze,OAAS,GAC/ByB,EAAOsB,KAAKuc,EAEpB,CAMR,GAEO7d,CACX,EAAG,CAACgd,EAAaK,EAAQF,IAEnBY,EAAkB7b,EAAMmJ,YAAY,SAACsR,GAClCW,GACLA,EAAkBX,EACtB,EAAG,CAACW,IAEEnD,EAASpT,GAAQwW,EAAoBhf,OAAS,EAC9Cwe,EAAqBQ,EAAoB3S,IAAI,SAACqS,EAASrZ,GACzD,OAAsB,IAAlBqZ,EAAQH,MAEJ5a,EAAAkB,cAACyZ,GAAkB,CACfzY,IAAKR,EACLkZ,MAAOG,EACPtS,QAASoT,IAKjB7b,EAAAkB,cAACsZ,GAAiB,CACdtY,IAAKR,EACL+Y,WAAYM,EACZtS,QAASoT,GAGrB,GAEA,OACI7b,gBAACwE,EAAM,CACHtE,IAAKA,EACL2E,KAAMoT,EACNxT,SAAUA,EACVE,UAAWjB,EAAgBI,YAE3B9D,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,qBACV4V,GAIjB,GCnFMiB,GAAmC,SAACzb,GACtC,IAAA4a,EAAI5a,EAAA4a,KACK5a,EAAA4E,cACT6V,EAAWza,EAAAya,YACXI,kBACAa,EAAY1b,EAAA0b,aACZ3F,EAAQ/V,EAAA+V,SAEFgE,EAAWpa,EAAMW,OAAO,MACxBqb,EAAgBhc,EAAMW,OAAO,MAC7BqW,EAAUhX,EAAMW,OAAuB,MACvCJ,EAA8BP,EAAMsF,SAAiB,IAApD2W,EAAU1b,EAAA,GAAE2b,OACbtX,EAAsC5E,EAAMsF,UAAkB,GAA7D6W,EAAcvX,EAAA,GAAEwX,OAEvB7C,GAAgB,WACZ6C,GAAkB,EACtB,EAAG,CAAChC,EAAU4B,IAEd,IAAMK,EAAkBrc,EAAMmJ,YAAY,SAAC8Q,GACvC,GAAK7D,GAAazW,MAAMkC,QAAQoZ,GAAhC,CAEA,IAAMqB,EAAWrB,EAAKsB,UAAU,SAAAd,GAAW,OAAAA,EAAQvN,KAAO+L,EAAI/L,EAAnB,GAC3C,KAAIoO,EAAW,GAAf,CAEA,IAAME,EAAOnd,EAAA,GAAO4b,GAAI,GACxBuB,EAAQC,OAAOH,EAAU,GACzBlG,EAASoG,EAJS,CAHqB,CAQ3C,EAAG,CAACvB,EAAM7E,IAEJsG,EAAwB1c,EAAMmJ,YAAY,SAACsR,GAC7C,GAAKA,EAAL,CAEA,IAAMkC,EAAqB,CACvBzO,GAAIuM,EAAWvM,GACf5P,MAAOmc,EAAWnc,MAClBZ,MAAO+c,EAAW/c,OAGhB8e,EAAU7c,MAAMkC,QAAQoZ,UAAYA,GAAI,GAAA,CAAE0B,IAAM,GAAI,CAACA,GAC3DP,GAAkB,GACdhG,GACAA,EAASoG,GAEbN,EAAc,IACVH,GACAA,EAAa,GAfA,CAiBrB,EAAG,CAACd,EAAM7E,EAAU2F,IAEda,EAA0B5c,EAAMmJ,YAAY,SAAC0T,GAC/CX,EAAcW,GACVd,GACAA,EAAac,EAErB,EAAG,CAACd,IAMEe,EAAcnd,MAAMkC,QAAQoZ,GAC9BA,EAAKvS,IAAI,SAAC+S,EAAS/Z,GAAQ,OACvB1B,EAAAkB,cAAC8Y,GAAO,CACJ9X,IAAKR,EACLuY,IAAKwB,EACLvB,SAAU,WAAM,OAAAmC,EAAgBZ,EAAhB,GAJG,GAMtB,GAET,OACIzb,uBACIE,IAAK8W,EACL/R,UAAU,eAET6X,EACD9c,EAAAkB,cAACiZ,GAAc,CACXja,IAAKka,EACL1c,MAAOue,EACP7F,SAAUwG,EACVnU,QAvBmB,WAC3B2T,GAAkB,EACtB,IAuBQpc,EAAAkB,cAAC8Z,GAAa,CACV9a,IAAK8b,EACLnX,KAAMsX,EACN1X,SAAU2V,EACVe,OAAQc,EACRhB,KAAMA,EACNH,YAAaA,EACbI,cAAeA,EACfE,kBAAmBsB,IAInC,ECtGaK,GAAkBC,EAA+B,CAC1DC,UAAW,GACXC,aAAc,WAAO,SNTM,KADrBnD,GAycPxX,OAAO4a,oCAtcNpD,GAAkB,CACdqD,UAAWC,EAAEC,IAAI/gB,UAAU6gB,UAC3BG,QAASF,EAAEC,IAAI/gB,UAAUghB,QACzBC,MAAOH,EAAEC,IAAI/gB,UAAUihB,MACvBC,cAAeJ,EAAEC,IAAI/gB,UAAUkhB,cAC/BC,cAAeL,EAAEC,IAAI/gB,UAAUmhB,cAC/BC,eAAgBN,EAAEO,MAAMrhB,UAAUshB,WAClCC,eAAgBT,EAAEU,SAASxhB,UAAUyhB,UAI7CX,EAAEC,IAAIW,QAAQ,CAGVC,UAAW,WACP,GAAIvhB,KAAKwhB,UACL,OAAOxhB,KAAKyhB,0BAEZ,IAAIC,EAAS1hB,KAAK2hB,iBAClBC,EAAK5hB,KAAK6hB,UAAUH,EAAOI,iBAC3BC,EAAK/hB,KAAK6hB,UAAUH,EAAOM,eAE3B,OAAO,IAAItB,EAAEuB,aAAaL,EAAIG,EAEtC,EAGAG,YAAa,WACT,OAAOliB,KAAKwhB,SAChB,EAGAW,kBAAmB,WACf,IAAIC,EAAKpiB,KAAKwhB,UACVa,EAAU3B,EAAE4B,MAAMF,EAAGG,WAAYH,EAAGI,WACpCC,EAAS/B,EAAE4B,MAAMF,EAAGM,YAAaN,EAAGO,cAYxC,OAViB,IAAbF,EAAOG,GAAwB,IAAbH,EAAOhhB,IAEzB2gB,EAAKpiB,KAAKmE,kBAERke,EAAU3B,EAAE4B,MAAM,EAAG,GACrBG,EAAS/B,EAAE4B,MAAMF,EAAGM,YAAaN,EAAGO,eAKnCjC,EAAEgB,OAAOW,EAASA,EAAQnR,IAAIuR,GACzC,EAGAhB,wBAAyB,WACrB,IAAIC,EAAS1hB,KAAKmiB,oBAClB,OAAOzB,EAAEmC,aAAa7iB,KAAK8iB,uBAAuBpB,EAAO3L,KAAM/V,KAAK8iB,uBAAuBpB,EAAOqB,KACtG,EAGAC,UAAW,WACP,IAAIC,EAAUjjB,KAAKkjB,UAAUC,SAAS,GAClCC,EAAUpjB,KAAKmiB,oBAAoB1B,YAEvC,OAAOwC,EAAQI,SAASD,EAC5B,EAGA3C,UAAW,SAAU6C,GACjB,IAAIC,EAASnG,GAAgBqD,UAAU3gB,KAAKE,MAE5C,GAAIA,KAAKkiB,gBAAkBoB,EAAiB,CACxC,IAAIE,EAAOxjB,KAAKyjB,UACZnB,EAAQtiB,KAAK0jB,QAAQH,EAAQC,GACjClB,EAAQA,EAAMe,SAASrjB,KAAKgjB,aAE5BO,EAASvjB,KAAK6hB,UAAUS,EAAOkB,EACnC,CAEA,OAAOD,CACX,EAGA3C,QAAS,SAAU2C,EAAQC,EAAMG,GAI7B,GAHAJ,EAAS7C,EAAEkD,OAAOL,GAClBC,OAAgB1d,IAAT0d,EAAqBxjB,KAAK6jB,MAAQ7jB,KAAK8jB,WAAWN,GAErDxjB,KAAKkiB,cAAe,CACpB,IAAII,EAAQtiB,KAAK0jB,QAAQH,EAAQvjB,KAAK8jB,WAAWN,IACjDlB,EAAQA,EAAMpR,IAAIlR,KAAKgjB,aACvBO,EAASvjB,KAAK6hB,UAAUS,EAAOtiB,KAAK8jB,WAAWN,GACnD,CAEA,OAAOpG,GAAgBwD,QAAQ9gB,KAAKE,KAAMujB,EAAQC,EAAMG,EAC5D,EAGA9C,MAAO,SAAUkD,EAAcC,EAAYL,GAIvC,GAHAI,EAAerD,EAAEkD,OAAOG,GACxBC,OAA4Ble,IAAfke,EAA2BC,EAAYD,EAEhDhkB,KAAKkiB,cAAe,CACpB,IAAII,EAAQtiB,KAAK0jB,QAAQK,EAAc/jB,KAAK8jB,WAAWE,IACvD1B,EAAQA,EAAMpR,IAAIlR,KAAKgjB,aACvBe,EAAe/jB,KAAK6hB,UAAUS,EAAOtiB,KAAK8jB,WAAWE,GACzD,CAGA,IAAwB,KADxBL,EAAUA,GAAW,CAAA,GACTO,UAAsBxD,EAAEyD,QAAQC,MACxC,OAAOpkB,KAAK4gB,QAAQmD,EAAcC,EAAYL,GAGlD3jB,KAAKqkB,QAEL,IAAIzhB,EAAO5C,KAAK0jB,QAAQtG,GAAgBqD,UAAU3gB,KAAKE,OACnD2C,EAAK3C,KAAK0jB,QAAQK,GAClBhM,EAAO/X,KAAKkjB,UACZe,EAAYjkB,KAAK6jB,MAGjBS,EAAK7P,KAAKsO,IAAIhL,EAAK6K,EAAG7K,EAAKtW,GAC3B8iB,EAAKD,EAAKtkB,KAAKwkB,aAAaP,EAAWD,GACvCS,EAAM9hB,EAAG+hB,WAAW9hB,IAAU,EAC9B+hB,EAAM,KACNC,EAAOD,OAEX,SAASE,EAAEtlB,GACP,IAIIulB,GAFKP,EAAKA,EAAKD,EAAKA,GAFf/kB,GAAI,EAAK,GAEgBqlB,EAAOA,EAAOH,EAAKA,IAC5C,GAFAllB,EAAIglB,EAAKD,GAEAM,EAAOH,GAErBM,EAAKtQ,KAAKuQ,KAAKF,EAAIA,EAAI,GAAKA,EAMhC,OAFcC,EAAK,MAAc,GAAMtQ,KAAKwQ,IAAIF,EAGpD,CAEA,SAASG,EAAK1lB,GAAK,OAAQiV,KAAK0Q,IAAI3lB,GAAKiV,KAAK0Q,KAAK3lB,IAAM,CAAG,CAC5D,SAAS4lB,EAAK5lB,GAAK,OAAQiV,KAAK0Q,IAAI3lB,GAAKiV,KAAK0Q,KAAK3lB,IAAM,CAAG,CAG5D,IAAI6lB,EAAKR,EAAE,GAGX,SAASS,EAAEhmB,GAAK,OAAOglB,GAAMc,EAAKC,IALRH,EAAZ1lB,EAK+B6lB,EAAKV,EAAMrlB,GALpB8lB,EAAK5lB,IAKoB0lB,EAAKG,IAAOT,EALzE,IAAcplB,CAKiE,CAI/E,IAAI0Y,EAAQ9G,KAAKC,MACbkU,GAAKV,EAAE,GAAKQ,GAAMV,EAClBa,EAAW7B,EAAQ6B,SAAW,IAAO7B,EAAQ6B,SAAW,IAAOD,EAAI,GAwBvE,OAHAvlB,KAAKylB,YAAW,EAAM9B,EAAQ+B,aAnB9B,SAASC,IACL,IAAItmB,GAAK+R,KAAKC,MAAQ6G,GAASsN,EAC3BlmB,EARR,SAAiBD,GAAK,OAAO,EAAIoV,KAAKmR,IAAI,EAAIvmB,EAAG,IAAM,CAQ3CwmB,CAAQxmB,GAAKkmB,EAEjBlmB,GAAK,GACLW,KAAK8lB,YAAcpF,EAAEqF,KAAKC,iBAAiBL,EAAO3lB,MAElDA,KAAKimB,MACDjmB,KAAK6hB,UAAUjf,EAAKsO,IAAIvO,EAAG0gB,SAASzgB,GAAMsjB,WAAWZ,EAAEhmB,GAAKmlB,IAAMR,GAClEjkB,KAAKmmB,aAAa7B,EAlB9B,SAAWhlB,GAAK,OAAOglB,GAAMc,EAAKC,GAAMD,EAAKC,EAAKV,EAAMrlB,GAAK,CAkB1B8mB,CAAE9mB,GAAI2kB,GAC7B,CAACpD,OAAO,KAGZ7gB,KACKimB,MAAMlC,EAAcC,GACpBqC,UAAS,EAEtB,EAIMvmB,KAAKE,MACJA,IACX,EAGA8gB,cAAe,SAAUwF,EAAQ9C,EAAMG,GAGnC,GAFS3jB,KAAKkiB,cAEN,CACJ,IAAIqE,EAAQvmB,KAAKwkB,aAAahB,GAC1BgD,EAAWxmB,KAAKmiB,oBAAoB1B,YAGpCgG,GAFiBH,aAAkB5F,EAAEgG,MAAQJ,EAAStmB,KAAK2mB,uBAAuBL,IAEpDjD,SAASmD,GAAUN,WAAW,EAAI,EAAIK,GACpEK,EAAY5mB,KAAK8iB,uBAAuB0D,EAAStV,IAAIuV,IAEzD,OAAOzmB,KAAK4gB,QAAQgG,EAAWpD,EAAM,CAACA,KAAMG,GAChD,CACI,OAAOvG,GAAgB0D,cAAchhB,KAAKE,KAAMsmB,EAAQ9C,EAAMG,EAEtE,EAGA5C,cAAe,SAAUW,EAAQmF,EAAQrZ,GACrCkU,EAAShB,EAAEmC,aAAanB,GACxBlU,EAAUkT,EAAE4B,MAAM9U,GAAW,CAAC,EAAG,IAEjC,IAAIgW,EAAOxjB,KAAKyjB,WAAa,EACzB1N,EAAM/V,KAAK8mB,aACX/D,EAAM/iB,KAAK+mB,aACXC,EAAKtF,EAAOuF,eACZC,EAAKxF,EAAOyF,eACZ/E,EAAKpiB,KAAKkiB,cACVnK,GAAQqK,EAAK1B,EAAE4B,MAAMF,EAAGM,YAAaN,EAAGO,cAAgB3iB,KAAKkjB,WAAWG,SAAS7V,GACjF4Z,EAAapnB,KAAK0jB,QAAQwD,EAAI1D,GAAMH,SAASrjB,KAAK0jB,QAAQsD,EAAIxD,IAC9D6D,EAAO3G,EAAEyD,QAAQC,MAAQpkB,KAAK2jB,QAAQ2D,SAAW,EACjDC,EAASxP,EAAK6K,EAAIwE,EAAWxE,EAC7B4E,EAASzP,EAAKtW,EAAI2lB,EAAW3lB,EAC7B8kB,EAAQM,EAASpS,KAAKsO,IAAIwE,EAAQC,GAAU/S,KAAKsB,IAAIwR,EAAQC,GASjE,OAPAhE,EAAOxjB,KAAKmmB,aAAaI,EAAO/C,GAE5B6D,IACA7D,EAAO/O,KAAKgT,MAAMjE,GAAQ6D,EAAO,OAASA,EAAO,KACjD7D,EAAOqD,EAASpS,KAAKiT,KAAKlE,EAAO6D,GAAQA,EAAO5S,KAAKC,MAAM8O,EAAO6D,GAAQA,GAGvE5S,KAAKsO,IAAIhN,EAAKtB,KAAKsB,IAAIgN,EAAKS,GACvC,EAGAmE,cAAe,SAAUC,EAAKC,EAAY3D,GACtC,IAAIX,EAOJ,GANIsE,GAAc7nB,KAAK6jB,QAGnBN,EAASvjB,KAAKygB,cAGbzgB,KAAKwhB,UAAW,CAEjB,IAAI3d,EAAY7D,KAAKmE,eACrBnE,KAAKwhB,UAAYd,EAAEoH,QAAQ9lB,OAAO,MAAO,IACzC6B,EAAUkkB,aAAa/nB,KAAKwhB,UAAW3d,EAAUmkB,WACrD,CAWA,MATmB,iBAARJ,EACP5nB,KAAKwhB,UAAUlZ,UAAYsf,EAE3BlH,EAAEuH,OAAOjoB,KAAKwhB,UAAUpW,MAAOwc,GAG/BrE,GACAvjB,KAAK4gB,QAAQ2C,EAAQvjB,KAAKyjB,UAAW,CAAES,UAAWA,IAE/ClkB,IACX,IAGJ0gB,EAAEU,SAASE,QAAQ,CAGf4G,QAAS,WACLloB,KAAKmoB,iBAAiBnoB,KAAKooB,KAAK3H,WAAU,GAAOzgB,KAAKooB,KAAK3E,UAC/D,EAGApC,QAAS,WACLjE,GAAgB+D,eAAerhB,KAAKE,MACpCA,KAAKqoB,QAAUroB,KAAKooB,KAAK3H,WAAU,EACvC,IAGJC,EAAE4H,UAAUhH,QAAQ,CAGhBiH,cAAe,WAEX,IAAI/E,EAAOxjB,KAAKwoB,UACZC,EAAUzoB,KAAK2jB,QAAQ8E,QAE3B,QAAa3iB,IAAT0d,EAAJ,CAEA,IAAK,IAAIkF,KAAK1oB,KAAK2oB,QACfD,EAAIE,OAAOF,GACP1oB,KAAK2oB,QAAQD,GAAGhjB,GAAG/B,SAASjE,QAAUgpB,IAAMlF,GAC5CxjB,KAAK2oB,QAAQD,GAAGhjB,GAAG0F,MAAMuB,OAAS8b,EAAUhU,KAAKoU,IAAIrF,EAAOkF,GAC5D1oB,KAAK8oB,eAAeJ,KAEpBhI,EAAEoH,QAAQxjB,OAAOtE,KAAK2oB,QAAQD,GAAGhjB,IACjC1F,KAAK+oB,mBAAmBL,GACxB1oB,KAAKgpB,eAAeN,UACb1oB,KAAK2oB,QAAQD,IAI5B,IAAIO,EAAQjpB,KAAK2oB,QAAQnF,GACrBzX,EAAM/L,KAAKooB,KAqBf,OAnBKa,KACDA,EAAQjpB,KAAK2oB,QAAQnF,GAAQ,CAAA,GAEvB9d,GAAKgb,EAAEoH,QAAQ9lB,OAAO,MAAO,+CAAgDhC,KAAKkpB,YACxFD,EAAMvjB,GAAG0F,MAAMuB,OAAS8b,EAExBQ,EAAME,OAASpd,EAAI2X,QAAQ3X,EAAI8V,UAAU9V,EAAIqd,kBAAmB5F,GAAMiE,QACtEwB,EAAMzF,KAAOA,EAEbxjB,KAAKqpB,kBAAkBJ,EAAOld,EAAI0U,WAAU,GAAO1U,EAAI0X,WAGvD/C,EAAEqF,KAAKuD,QAAQL,EAAMvjB,GAAG6jB,aAExBvpB,KAAKwpB,eAAeP,IAGxBjpB,KAAKypB,OAASR,EAEPA,CArCqC,CAsChD,EAGAS,WAAY,SAAUxpB,GAClB,IAAIypB,EAAYzpB,IAAMA,EAAE0pB,OAAS1pB,EAAE2gB,OACnC7gB,KAAK6pB,SAAS7pB,KAAKooB,KAAK3H,WAAU,GAAOzgB,KAAKooB,KAAK3E,UAAWkG,EAAWA,EAC7E,EAGAtI,QAAS,SAAUkC,GACf,IAAIxX,EAAM/L,KAAKooB,KACf,GAAKrc,EAAL,CACA,IAAIyX,EAAOxjB,KAAK8pB,WAAW/d,EAAI0X,WAG/B,QADe3d,IAAXyd,IAAwBA,EAASxX,EAAI0U,WAAU,SAC5B3a,IAAnB9F,KAAKwoB,UAAT,CAEA,IAAIuB,EAAc/pB,KAAKgqB,qBAAqBzG,GACxC0G,EAAYjqB,KAAKkqB,qBAAqBH,GACtCI,EAAaF,EAAUxJ,YACvB2J,EAAQ,GACRhhB,EAASpJ,KAAK2jB,QAAQ0G,WACtBC,EAAe,IAAI5J,EAAE6J,OAAON,EAAUnI,gBAAgBuB,SAAS,CAACja,GAASA,IAC7C6gB,EAAUjI,cAAc9Q,IAAI,CAAC9H,GAASA,KAGtE,KAAMohB,SAASP,EAAUlU,IAAI6M,IACvB4H,SAASP,EAAUlU,IAAItU,IACvB+oB,SAASP,EAAUlH,IAAIH,IACvB4H,SAASP,EAAUlH,IAAIthB,IAAO,MAAM,IAAIgpB,MAAM,iDAEpD,IAAK,IAAIllB,KAAOvF,KAAK0qB,OAAQ,CACzB,IAAIC,EAAI3qB,KAAK0qB,OAAOnlB,GAAKqlB,OACrBD,EAAEjC,IAAM1oB,KAAKwoB,WAAc8B,EAAanN,SAAS,IAAIuD,EAAEgG,MAAMiE,EAAE/H,EAAG+H,EAAElpB,MACpEzB,KAAK0qB,OAAOnlB,GAAKnB,SAAU,EAEnC,CAIA,GAAIqQ,KAAKoU,IAAIrF,EAAOxjB,KAAKwoB,WAAa,EAAKxoB,KAAK6pB,SAAStG,EAAQC,OAAjE,CAGA,IAAK,IAAIqH,EAAIZ,EAAUlU,IAAItU,EAAGopB,GAAKZ,EAAUlH,IAAIthB,EAAGopB,IAChD,IAAK,IAAItrB,EAAI0qB,EAAUlU,IAAI6M,EAAGrjB,GAAK0qB,EAAUlH,IAAIH,EAAGrjB,IAAK,CACrD,IAAIqrB,EAAS,IAAIlK,EAAEgG,MAAMnnB,EAAGsrB,GAG5B,GAFAD,EAAOlC,EAAI1oB,KAAKwoB,UAEXxoB,KAAK8qB,aAAaF,GAAvB,CAEA,IAAIG,EAAO/qB,KAAK0qB,OAAO1qB,KAAKgrB,iBAAiBJ,IACzCG,EACAA,EAAK3mB,SAAU,EAEfgmB,EAAM3nB,KAAKmoB,EAN6B,CAQhD,CAQJ,GAJAR,EAAMa,KAAK,SAAUC,EAAGpG,GACpB,OAAOoG,EAAExG,WAAWyF,GAAcrF,EAAEJ,WAAWyF,EACnD,GAEqB,IAAjBC,EAAM1qB,OAAc,CAEfM,KAAKmrB,WACNnrB,KAAKmrB,UAAW,EAGhBnrB,KAAKorB,KAAK,YAId,IAAIC,EAAWvnB,SAASwnB,yBAExB,IAAK/rB,EAAI,EAAGA,EAAI6qB,EAAM1qB,OAAQH,IAC1BS,KAAKurB,SAASnB,EAAM7qB,GAAI8rB,GAG5BrrB,KAAKypB,OAAO/jB,GAAGrB,YAAYgnB,EAC/B,CAzCgF,CAzBpC,CAJxB,CAuExB,IAGJ3K,EAAEO,MAAMK,QAAQ,CAGZJ,WAAY,WACR,GAAKlhB,KAAKooB,KAAK5G,UAER,CACH,IAAKxhB,KAAK2jB,QAAQ6H,QAAW,OACzBxrB,KAAKooB,KAAKqD,UAAYzrB,KAAKooB,KAAKqD,SAASlS,OAE7C,IAAIxN,EAAM/L,KAAKooB,KACXhG,EAAKrW,EAAIyV,UACTkK,EAAkB1rB,KAAKkpB,WAAWyC,aAClCC,EAAiB5rB,KAAK6rB,gBACtBC,EAAYpL,EAAE4B,MAAMF,EAAGG,WAAYH,EAAGI,WAEtCuJ,EAAW,IAAIrL,EAAEgG,MACb1mB,KAAKgsB,eAAiBF,EAAUlJ,GAC9B8I,EAAkB1rB,KAAKisB,iBAAmBH,EAAUrqB,GAE9DsqB,EAASG,KAAKxL,EAAEoH,QAAQqE,YAAYnsB,KAAKkpB,aAEzC,IAAIkD,EAAergB,EAAIsgB,2BAA2BN,GAC9Cve,EAAUkT,EAAE4B,MAAMtiB,KAAK2jB,QAAQ2I,gBAC/BC,EAAY7L,EAAE4B,MAAMtiB,KAAK2jB,QAAQ6I,uBAAyBhf,GAC1Dif,EAAY/L,EAAE4B,MAAMtiB,KAAK2jB,QAAQ+I,2BAA6Blf,GAC9DuK,EAAO2I,EAAE4B,MAAMF,EAAGM,YAAaN,EAAGO,cAClCgK,EAAK,EACLC,EAAK,EAELR,EAAaxJ,EAAIgJ,EAAiBa,EAAU7J,EAAI7K,EAAK6K,IACrD+J,EAAKP,EAAaxJ,EAAIgJ,EAAiB7T,EAAK6K,EAAI6J,EAAU7J,GAE1DwJ,EAAaxJ,EAAI+J,EAAKJ,EAAU3J,EAAI,IACpC+J,EAAKP,EAAaxJ,EAAI2J,EAAU3J,GAEhCwJ,EAAa3qB,EAAIiqB,EAAkBe,EAAUhrB,EAAIsW,EAAKtW,IACtDmrB,EAAKR,EAAa3qB,EAAIiqB,EAAkB3T,EAAKtW,EAAIgrB,EAAUhrB,GAE3D2qB,EAAa3qB,EAAImrB,EAAKL,EAAU9qB,EAAI,IACpCmrB,EAAKR,EAAa3qB,EAAI8qB,EAAU9qB,IAOhCkrB,GAAMC,IACN7gB,EACKqf,KAAK,gBACLyB,MAAM,CAACF,EAAIC,GAExB,MA/CIxP,GAAgB4D,eAAelhB,KAAKE,KAgD5C,IO/bG,IAAM8sB,GAAkE,SAAAxpB,GAC3E,IAAMyI,EAAMghB,IAKZ9oB,EAAU,WAIN8H,EAAI4b,cAAc,0BAA0B,GAAM,GAGlDjH,EAAEsM,QAAQC,iBAAmBvM,EAAEsM,QAAQ/E,OAAO,CAC1CiF,MAAK,WACD,IAAIrpB,EAAY,KAMZA,EAFAkI,EAAIohB,cAAgBntB,KAAK2jB,QAAQyJ,oBAErBrhB,EAAIohB,YAAYjE,WAIhBxI,EAAEoH,QAAQ9lB,OAAO,MAAO,eAIxC0e,EAAE2M,SAASC,wBAAwBzpB,GAGnC,IAAM0pB,EAAO7M,EAAEoH,QAAQ9lB,OAAO,IAAK,GAAI6B,GAavC,OAZA0pB,EAAKC,KAAO,IACZD,EAAK/hB,MAAQ,UACb+hB,EAAKE,UAAY,mCAAAvqB,OACDwqB,0FAEhBH,EAAKI,aAAa,OAAQ,UAC1BJ,EAAKI,aAAa,aAAcJ,EAAK/hB,OAErCkV,EAAE2M,SACGO,GAAGL,EAAM,QAAS7M,EAAE2M,SAAS9T,MAC7BqU,GAAGL,EAAM,QAASM,GAEhBhqB,CACX,IAIJ6c,EAAEoN,QAAQC,iBAAmB,SAAAC,GAAQ,OAAA,IAAItN,EAAEsM,QAAQC,iBAAiBe,EAA/B,EAGrCtN,EAAEoN,QAAQC,iBAAiB,CAAE5kB,SAAU,YAAa8kB,MAAMliB,GAEtDzI,EAAM4qB,YACNC,GAER,EAAG,IAEHlqB,EAAU,WACFX,EAAM4qB,YACNC,GAER,EAAG,CAAC7qB,EAAM4qB,aAEV,IAAME,EAAa5hB,EAAY,WAC3B,IAAM6hB,EAAa3N,EAAE4N,eAMrB,OALAviB,EAAIwiB,UAAU,SAAAC,GACNA,aAAiB9N,EAAE+N,QACnBJ,EAAWK,SAASF,EAE5B,GACOH,CACX,EAAG,CAACtiB,IAEE4iB,EAAcniB,EAAY,WAC5B,IAAM6hB,EAAa3N,EAAE4N,eAMrB,OALAviB,EAAIwiB,UAAU,SAAAC,GACNA,aAAiB9N,EAAEkO,SACnBP,EAAWK,SAASF,EAE5B,GACOH,CACX,EAAG,CAACtiB,IAEEoiB,EAAY3hB,EAAY,WAC1B,IACMkV,EADU0M,IACO7M,YAENoN,IACRJ,UAAU,SAAAC,GAEf9M,EAAOuG,OAAOuG,EAAMjN,YACxB,GAEKG,EAAOmN,WAKZ9iB,EAAI+iB,UAAUpN,EAAQ,CAAEwC,SAAS,GACrC,EAAG,IAEG2J,EAAoBrhB,EAAY,WAClC2hB,GACJ,EAAG,CAACpiB,IAEJ,OAAO1I,gCACX,EAMMqqB,GAAO,6ZCnHAqB,GAAuB,SAACzrB,GACjC,IAAMyI,EAAMghB,IAUZ,OARA9oB,EAAU,WAENyc,EAAEsO,QAAQlB,QAAQmB,WAAU/vB,EAAA,CACxBiK,SAAU,WACN7F,GAAS,CAAA,IACd2qB,MAAMliB,EACb,EAAG,IAGC1I,EAAAkB,cAAAlB,EAAAsI,SAAA,KAER,ECjBaujB,GAAY,SAAC5rB,WAChB6rB,EAA0E,CAAEC,QAAM9rB,aAAK,EAALA,EAAO+rB,WAAW,CAAA,GAE1G,OACIhsB,EAAAkB,cAAC+qB,EAAW,CACRC,UAAWjsB,EAAMksB,gBACjBC,UAAWnsB,EAAMosB,gBACjBC,SAAUrsB,EAAMssB,eAChBzmB,SAAwB,QAAdzF,EAAAJ,EAAM6F,gBAAQ,IAAAzF,EAAAA,EAAI,WAC5BmsB,KAAgB,UAAVvsB,EAAMusB,YAAI,IAAAjsB,EAAAA,EAAI,CAChBksB,WAAW,EACXC,QAAQ,EACRC,cAAc,EACdC,UAAU,GAEdb,KAAMD,GAGlB,ECVMe,GAAO,SAAC5sB,SACJ6sB,EAAmB,CACrBC,SAAS,EACTC,QAAQ,EACRP,WAAW,EACXC,QAAQ,EACRC,cAAc,EACdC,UAAU,GAERrsB,EAAkB+E,EAAmBwnB,GAAhCvsB,EAAA,GAAA,IAAE0sB,EAAO1sB,EAAA,GACdqE,EAAwBU,EAAmC,YAA1D4nB,EAAOtoB,EAAA,GAAEuoB,EAAUvoB,EAAA,GAEpBE,ECrB8BsoB,EAAWrQ,IDqBvCE,EAASnY,EAAAmY,UAAEC,EAAYpY,EAAAoY,aAE/Btc,EAAU,iBACS,QAAfP,EAAAJ,aAAK,EAALA,EAAOmW,gBAAQ,IAAA/V,GAAAA,EAAA5D,KAAAwD,EAAGgd,EACtB,EAAG,CAACA,IAEJrc,EAAU,WAENyc,EAAEgQ,KAAKC,QAAQC,aAAa,CACxBC,cAAeC,EACfC,UAAWC,EACXC,SAAU,CAAC,GAAI,IACfC,WAAY,CAAC,GAAI,IACjBC,YAAa,CAAC,OACdC,WAAY,CAAC,GAAI,MAGjB9Q,GAAaA,EAAU5gB,OAAS,GAChC4wB,EAAQ,SAACe,GACL,IAAMC,EAAQpyB,EAAA,CAAA,EAAQmyB,GAItB,OAHAlyB,OAAOkG,KAAKisB,GAAUhsB,QAAQ,SAAAC,GAC1B+rB,EAAS/rB,IAAO,CACpB,GACO+rB,CACX,EAER,EAAG,IAEH,IAAM9B,EAAkB,SAACtvB,aACbqxB,EAAqBrxB,EAACqxB,UAAX/C,EAAUtuB,EAACsuB,MAC9B8B,EAAQ,SAACe,GACL,IAAMC,EAAQpyB,EAAA,CAAA,EAAQmyB,GAItB,OAHAlyB,OAAOkG,KAAKisB,GAAUhsB,QAAQ,SAAAC,GAC1B+rB,EAAS/rB,IAAO,CACpB,GACO+rB,CACX,GAEA,IAAIE,EAAkB,GAEJ,YAAdD,GAAyC,cAAdA,IAE3BC,UAAS5tB,UAAAF,EAAA8qB,EAAMiD,+BAAW,yBAAI1lB,IAAI,SAACC,EAAWC,GAAkB,MAAA,CAAGylB,SAAU1lB,EAAK2lB,IAAKC,UAAW5lB,EAAK6lB,IAAKC,MAAO7lB,EAAQ,EAA3D,IAGlD,WAAdslB,GAAwC,WAAdA,GAAwC,iBAAdA,GACpDC,EAAO/uB,KAAK,CAAEqvB,MAAO,EAAGJ,SAAUlD,EAAMuD,QAAQJ,IAAKC,UAAWpD,EAAMuD,QAAQF,IAAKtgB,GAAIid,EAAMwD,cAG/E,aAAdT,IAEAC,UAASvpB,EAAAumB,EAAMiD,+BAAU1lB,IAAI,SAACC,EAAWC,GAAkB,MAAA,CAAGylB,SAAU1lB,EAAK2lB,IAAKC,UAAW5lB,EAAK6lB,IAAKC,MAAO7lB,EAAQ,EAA3D,IAG/DsU,EAAa,SAACle,GAAkB,OAAAK,EAAAA,EAAA,GAAKL,GAAC,GAAA,CAAE,CACpCmvB,OAAMA,EACNjgB,GAAIid,EAAMwD,eACD,EAHmB,EAIpC,EAaMpC,EAAiB,SAAC1vB,GACZ,IAAA+xB,EAAW/xB,EAAC+xB,OAEpB1R,EAAa,SAAC2R,GACV,IAAMC,EAAehzB,OAAOyF,OAAOqtB,EAAOG,aAgC1C,OA9ByBF,EACpB1T,OAAO,SAAA6T,GAAY,OAAAA,aAAQ,EAARA,EAAUb,SAAqC,IAA3Ba,EAASb,OAAO9xB,MAApC,GACnBqM,IAAI,SAAAsmB,GACD,IAAMC,EAAsBH,EAA4BI,KAAK,SAAC/D,GAAe,OAAAA,EAAMwD,cAAgBK,EAASb,OAAO,GAAGjgB,EAAzC,GAE7E,GAAI+gB,EAAoB,CACpB,IAAME,OAAqBH,EAASb,OAAO,IACrCiB,EAAYH,EAAmBI,YAKrC,OAH8Bje,KAAKoU,IAAI2J,EAAcd,SAAWe,EAAUd,KAAO,MAC7Eld,KAAKoU,IAAI2J,EAAcZ,UAAYa,EAAUZ,KAAO,KAKjD,CACHL,OAAQ,CAAC,CACLjgB,GAAI8gB,EAAS9gB,GACbmgB,SAAWS,EAAqB,GAAGJ,QAAQJ,IAC3CC,UAAYO,EAAqB,GAAGJ,QAAQF,IAC5CC,MAAOO,EAASb,OAAO,GAAGM,QAE9BvgB,GAAI8gB,EAAS9gB,GACbohB,MAAON,EAASM,OAVTN,CAYf,CAEA,OAAOA,CACX,EAGR,EACJ,EAEMO,EAAYhmB,EAAQ,mBACtB,IAAItJ,aAAK,EAALA,EAAOuvB,iBAAkBvS,EAAU5gB,QAA6B,QAAnBkE,EAAW,QAAXF,EAAAJ,aAAK,EAALA,EAAOuI,YAAI,IAAAnI,OAAA,EAAAA,EAAEhE,cAAM,IAAAkE,EAAAA,EAAI,GAAI,CACxE,IAAIkvB,EAAO,CACPjD,KAAM,CACFQ,QAAQ,EACRD,SAAS,EACTN,WAAW,EACXC,QAAQ,EACRC,cAAc,EACdC,UAAU,IAMlB,MAHgC,kBAArB3sB,aAAK,EAALA,EAAOsvB,aACdE,EAAI5zB,EAAAA,EAAA,CAAA,EAAQoE,aAAK,EAALA,EAAOsvB,WAAcE,IAE9BA,CACX,CAEA,MAAgC,kBAArBxvB,aAAK,EAALA,EAAOsvB,WACPtvB,eAAAA,EAAOsvB,WAGO,KAArBtvB,eAAAA,EAAOsvB,WACA,CACH/C,KAAM,CACFQ,QAAQ,EACRD,SAAS,EACTN,WAAW,EACXC,QAAQ,EACRC,cAAc,EACdC,UAAU,SARtB,CAcJ,EAAG,CAAC3sB,aAAK,EAALA,EAAOuvB,eAAgBvvB,aAAK,EAALA,EAAOsvB,UAAWtS,EAAWhd,aAAK,EAALA,EAAOuI,OAE/D,OACIxI,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,QAAA,KAAQ,uFACRlB,EAAAkB,cAACwuB,EAAY7zB,EAAA,CACTqkB,OAAQjgB,EAAMigB,QAAU,CAAC,EAAG,GAC5BC,KAAMlgB,EAAMkgB,MAAQ,GACpBiF,QAASnlB,EAAMmlB,QACfuK,QAAS1vB,EAAM0vB,SACX1vB,EAAM2vB,mBAEV5vB,EAAAkB,cAAC2uB,EAAS,CACN3tB,IAAKgrB,EACL4C,YACgB,aAAZ5C,EACM,0FACA,+DAEV6C,IACgB,aAAZ7C,EACM,qDACA,uDAGbjtB,EAAM+vB,qBACHhwB,EAAAkB,cAAA,MAAA,CACI6G,MAAO,CACHjC,SAAU,WACV3C,OAAQ,OACRE,KAAM,OACNiG,OAAQ,IACRW,WAAY,QACZE,QAAS,WACT8lB,aAAc,QAGlBjwB,EAAAkB,cAAA,QAAA,CACI6G,MAAO,CACHsC,QAAS,OACTwB,WAAY,SACZpB,eAAgB,SAChBqB,IAAK,QAGT9L,EAAAkB,cAAA,QAAA,CACI2H,KAAK,WACLqnB,QAAqB,cAAZhD,EACT9W,SAAU,WAAM,OAAA+W,EAAuB,aAAZD,EAAyB,YAAc,WAAlD,IAGhB,mBAIZjtB,EAAM2rB,YACN5rB,EAAAkB,cAACwqB,QAAsD,kBAArBzrB,EAAM2rB,WAA2B,CAAA,EAAK3rB,EAAM2rB,aAElF5rB,EAAAkB,cAACivB,EAAY,KAELlwB,EAAMsvB,WAAatS,EAAU5gB,OAAS,GAClC2D,EAAAkB,cAAC2qB,GAAShwB,EAAA,CAAA,EACF0zB,EAAS,CACbpD,gBAAiBA,EACjBI,eAAgBA,KAKH,IAArBtP,EAAU5gB,QACN2D,EAAAkB,cAAC2qB,GAAShwB,EAAA,CAAA,EACF0zB,EAAS,CACbpD,gBAAiBA,EACjBE,gBAhKJ,SAACxvB,GACwB,IAAzCf,OAAOkG,KAAKnF,EAAE+xB,OAAOwB,SAAS/zB,SAMlC4wB,EAAQ,SAACe,GAAW,OAAAnyB,EAAAA,EAAA,CAAA,EAAMixB,GAAgB,CAAEuD,WAAYjf,KAAKkf,UAAzC,GACpBpT,EAAaD,GACjB,EAwJ4BsP,eAAgBA,MAKxBtsB,aAAK,EAALA,EAAOuI,gBAAQnI,EAAAJ,eAAAA,EAAOuI,2BAAME,IAAI,SAACsmB,GAC7B,OAAIA,EAASb,OAAO9xB,OAAS,EAErB2D,EAAAkB,cAACqqB,EAAO,CACJrpB,IAAK,UAAArC,OAAUmvB,EAASM,OACxBiB,UAAWvB,EAASb,OAAOzlB,IAAI,SAACpM,GAAa,MAAA,CAACA,EAAE+xB,SAAU/xB,EAAEiyB,UAAf,KAMrDvuB,EAAAkB,cAACkqB,EAAM,CACHlpB,IAAK,UAAArC,OAAUmvB,EAAS9gB,IACxBpI,SAAU,CAACkpB,EAASb,OAAO,GAAGE,SAAUW,EAASb,OAAO,GAAGI,YAGvE,KAIJtuB,EAAMyqB,kBACN1qB,EAAAkB,cAACuoB,GAAuB5tB,EAAA,CAACgvB,WAAY5N,GAAaA,EAAU5gB,OAAS,GAA0C,kBAA3B4D,EAAMyqB,iBAAiC,CAAA,EAAKzqB,EAAMyqB,oBAK1J,EE7QMpN,GAA0B,SAACjd,GAAE,IAAAmwB,EAAanwB,EAAAmwB,cAAE3mB,EAAOxJ,EAAAwJ,QAAE4mB,EAAMpwB,EAAAowB,OAAKxwB,EAAKrD,EAAAyD,EAA1C,CAAA,gBAAA,UAAA,WACvBE,EAA4B+E,EAAqBrF,EAAMuI,KAAOvI,EAAMuI,KAAO,IAA1EyU,EAAS1c,EAAA,GAAE2c,EAAY3c,EAAA,GAExBmwB,EAAkB,WAAA,OAAAzzB,OAAA,OAAA,OAAA,EAAA,4CACpBwzB,SAAAA,EAASxT,YAGP0T,EAAmB,WAAA,OAAA1zB,OAAA,OAAA,OAAA,EAAA,4CACrB4M,SAAAA,aAGJjJ,EAAU,mBACAgwB,EAA2C,QAAzBvwB,EAAAmwB,eAAAA,EAAeK,kBAAU,IAAAxwB,OAAA,EAAAA,EAAEkG,iBAAiB,QAAS,WACzEmqB,GACJ,GAEMI,EAA+C,QAA3BvwB,EAAAiwB,eAAAA,EAAeO,oBAAY,IAAAxwB,OAAA,EAAAA,EAAEgG,iBAAiB,QAAS,WAC7EoqB,GACJ,GAEA,OAAO,mBACsB,QAAzBtwB,EAAAmwB,aAAa,EAAbA,EAAeK,kBAAU,IAAAxwB,GAAAA,EAAEmG,oBAAoB,QAASoqB,GAC7B,QAA3BrwB,EAAAiwB,aAAa,EAAbA,EAAeO,oBAAY,IAAAxwB,GAAAA,EAAEiG,oBAAoB,QAASsqB,EAC9D,CACJ,EAAG,CAAC7T,IAYJ,OACIjd,EAAAkB,cAAA,MAAA,CAAK6G,MAXmC,CACxCsC,QAAS,OACTC,cAAe,SACfG,eAAgB,SAChBoB,WAAY,SACZrI,MAAO,MACPJ,OAAQ,QACR2C,OAAQ,SAKJ/F,EAAAkB,cAAC6b,GAAgBiU,SAAQ,CACrBtzB,MAAO,CACHuf,UAASA,EACTC,aAAYA,IAGhBld,EAAAkB,cAAC2rB,GAAIhxB,EAAA,CAAA,EAAKoE,KAELuwB,GACGxwB,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,yBACXjF,EAAAkB,cAAA,SAAA,CACI+D,UAAU,6CACV4D,KAAK,SACLJ,QAASkoB,GAAgB,UAI7B3wB,EAAAkB,cAAA,SAAA,CACI+D,UAAU,2CACV4D,KAAK,SACLJ,QAASioB,GAAe,UAUxD,ECjEMO,GAA4B,SAAC5wB,GAC/B,IAAA+E,EAAY/E,EAAA+E,aACH/E,EAAA4E,UAAA,IACT3E,EAAQD,EAAAC,SACRmI,EAAOpI,EAAAoI,QACApI,EAAAwJ,QAEP,IAAMqnB,EAAUlxB,EAAMW,OAAuB,MAyB7C,OAvBAX,EAAMY,UAAU,WACZ,GAAKswB,GAAY9rB,GAAiB8rB,EAAQnwB,SAAYqE,EAAarE,QAAnE,CAGA,IAAMiG,EAAgB5B,EAAarE,QAAQmC,wBAErC+D,EAAciqB,EAAQnwB,QAAQmC,wBAChCG,EAAO2D,EAAcxD,MACrBD,EAAM,MACNJ,EAAS,QACT6D,EAAc1D,MAAQ2D,EAAYzD,OAASjB,OAAOmD,aAClDrC,GAAQ4D,EAAYzD,OAIpByD,EAAY9D,QAAUZ,OAAOkD,cAC7BtC,EAAS,YAAMZ,OAAOkD,YAAcuB,EAAc7D,OAAU,IAAIoE,gBAChEhE,EAAM,SAGV2tB,EAAQnwB,QAAQupB,aAAa,QAAS,qBAAAzqB,OAAqBwD,EAAKkE,UAAS,gBAAA1H,OAAesD,oBAAgBI,EAAG,KAjB3G,CAkBJ,EAAG,CAAC2tB,EAAS9rB,IAGTpF,uBACIE,IAAKgxB,EACLjsB,UAAU,WAEVjF,EAAAkB,cAAA,KAAA,CACI+D,UAAU,cACVwD,QAASA,EACT0oB,cAAe1oB,GAEdnI,GAIjB,ECvCc,SAAU8wB,GAAWzqB,GACzB,IAAAtG,EAAsBL,EAAMsF,WAA3B+rB,EAAMhxB,EAAA,GAAEixB,EAASjxB,EAAA,GAKxB,OAJAL,EAAMY,UAAU,WACZ0wB,EAlBiB,SAAC7sB,SACtB,GAAKA,EAAL,CACA,GAAiD,oBAA7C3I,OAAOS,UAAUwF,SAAStF,KAAKgI,GAAiC,CAChE,IAAMkC,EAAUlG,SAASmG,eAAenC,GACxC,OAAOkC,QAAAA,OAAWlE,CACtB,CAEA,IAAMvC,EAAMuE,EACZ,OAAIvE,QAAuBuC,IAAhBvC,EAAIa,QACO,UAAXb,EAAIa,eAAO,IAAAV,EAAAA,OAAIoC,EAGnBgC,CAXwB,CAYnC,CAKkBoC,CAAiBF,GAC/B,EAAG,CAACA,IAEG0qB,CACX,CCPA,IAAME,GAA0C,SAAClxB,GAC7C,IAAA4E,cACA3E,aACAqE,cACAE,EAAIxE,EAAAwE,KACJrE,EAASH,EAAAG,UACTgxB,EAAMnxB,EAAAmxB,OACN3nB,EAAOxJ,EAAAwJ,QAED1E,EAAYnF,EAAMW,OAAO,MAEzB8wB,EAAcL,GAAW5wB,GACzBD,EAAgCP,EAAMsF,SAAoD,MAAzFosB,EAAWnxB,EAAA,GAAEoxB,OAEpBpY,GAAgB,WACR1U,GAAQgF,GAASA,GACzB,EAAG,CAAC1E,IAEJ,IAAMysB,EAAoB5xB,EAAMmJ,YAAY,SAACC,GACzC,IAAMyoB,EAAazoB,EACnByoB,EAAWC,iBACPD,EAAWE,UACfJ,EAAe,CACXK,OAAQH,EAAWI,MAAQ,EAC3BC,OAAQL,EAAWM,MAAQ,IAG3BX,GAAQA,IAChB,EAAG,CAACA,IAEEY,EAA4B,SAAChpB,GAC/BA,EAAM0oB,gBACV,EAEA9xB,EAAMY,UAAU,WACZ,IAAMyxB,EAAUZ,QAAAA,EAAehxB,SAO/B,OANA4xB,EAAO9rB,iBAAiB,cAAeqrB,GAEnCS,IAAW5xB,UACXA,SAAS8F,iBAAiB,cAAe6rB,GAGtC,WACHC,EAAO7rB,oBAAoB,cAAeorB,GAC1CnxB,SAAS+F,oBAAoB,cAAe4rB,EAChD,CACJ,EAAG,CAACX,EAAaG,IAWjB,OACI5xB,EAAAkB,cAACsD,EAAM,CACHtE,IAAKiF,EACLT,eACoB,OAAhBgtB,EACM,CAAEnuB,IAAKmuB,EAAYQ,OAAQ7uB,KAAMquB,EAAYM,aAC7CvvB,EAEVkC,UAAWA,EACXE,KAAMA,EACNE,UAAU,GAEV/E,EAAAkB,cAAC+vB,IACGhsB,UAAWA,EACX4E,QAASA,EACTpB,QAxBQ,SAACW,GACZA,GAEgB,IAAjBA,EAAMkpB,SACNlpB,EAAM0oB,iBACN1oB,EAAMmpB,kBAEd,EAkBYntB,aAAcD,GAEb7E,GAIjB,EC1FMkyB,GAAkC,SAACnyB,GAAkB,OAAPA,EAAA4E,UAChDjF,0BADuD,ECCrDyyB,GAAmC,SAACpyB,GAAE,IAAA4E,EAAS5E,EAAA4E,UAAc,OAC/DjF,EAAAkB,cAAA,MAAA,CAAKwxB,MAAM,6BAA6BC,QAAQ,YAAYC,KAAK,OAAO3tB,UAAW3D,EAAW,UAAW2D,GAAYgB,UAAU,mBAC3HjG,EAAAkB,cAAA,OAAA,CAAM2xB,SAAS,UAAUC,SAAS,UAAU9E,EAAE,iUAFa,ECA7D+E,GAAoC,SAAC1yB,GAAE,IAAA4E,EAAS5E,EAAA4E,UAAc,OAChEjF,EAAAkB,cAAA,MAAA,CAAKwxB,MAAM,6BAA6BC,QAAQ,WAAWC,KAAK,OAAO3tB,UAAW3D,EAAW,UAAW2D,GAAYgB,UAAU,iBAAiB+sB,oBAAoB,iBAC/JhzB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,+IAFoD,ECA9DiF,GAAmC,SAAC5yB,GAAE,IAAA4E,EAAS5E,EAAA4E,UAAc,OAC/DjF,EAAAkB,cAAA,MAAA,CAAKwxB,MAAM,6BAA6BC,QAAQ,WAAWC,KAAK,OAAO3tB,UAAW3D,EAAW,UAAW2D,GAAYgB,UAAU,kBAAkB+sB,oBAAoB,iBAChKhzB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,+IAFmD,ECA7DkF,GAA6B,SAAC7yB,GAAE,IAAA4E,EAAS5E,EAAA4E,UAAc,OACzDjF,EAAAkB,cAAA,MAAA,CAAKwxB,MAAM,6BAA6BC,QAAQ,YAAY1tB,UAAW3D,EAAW,UAAW2D,IACzFjF,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,0GAF6C,ECUvDmF,GAAoC,SAAC9yB,OACvC/B,EAAK+B,EAAA/B,MACL+rB,EAAIhqB,EAAAgqB,KACJplB,EAAS5E,EAAA4E,UACT8C,EAAK1H,EAAA0H,eACC,IACNkB,EAAO5I,EAAA4I,QACP3I,EAAQD,EAAAC,SACR8yB,EAAY/yB,EAAA+yB,aACZ3qB,EAAOpI,EAAAoI,QAEDlI,EAA0BP,EAAMsF,UAAS,GAAxC+tB,EAAQ9yB,EAAA,GAAE+yB,OACXluB,EAAepF,EAAMW,OAAsB,MAE3C4yB,EAAkBvzB,EAAMmJ,YAAY,SAACC,GACnCX,IAAuB,IAAZQ,GACXR,EAAQW,EAEhB,EAAG,CAACX,EAASQ,IAUPuqB,EAA0B,MAAZlzB,EAEpB,OACIN,EAAAkB,cAAA,KAAA,CACI+D,UAAW3D,EACP,eACY,IAAZ2H,EAAmB,sBAAwB,KAC3ChE,GAEJ8C,MAAOA,EACPkR,aAlBa,WACjBqa,GAAY,EAChB,EAiBQpa,aAfa,WACjBoa,GAAY,EAChB,EAcQpzB,IAAKkF,GAELpF,EAAAkB,cAAA,SAAA,CAAQ2H,KAAK,SAAS5D,UAAU,kBAAkBwD,QAAS8qB,GACtDlJ,GACGrqB,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,oBAAoBolB,GAEvCrqB,EAAAkB,cAAA,OAAA,KAAOkyB,QAAAA,EAAgB90B,GACtBk1B,GACGxzB,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,iCACXjF,EAAAkB,cAAC6xB,IAAiB9tB,UAAU,2BAIvCuuB,GAAeH,GACZrzB,EAAAkB,cAAC+vB,GAAI,CAAC7rB,aAAcA,GACf9E,GAKrB,EC7DMmzB,GAAsC,SAACpzB,GACzC,IAAA4E,cACA3E,aACAqE,cACAE,EAAIxE,EAAAwE,KACJH,EAAcrE,EAAAqE,eACdD,EAAQpE,EAAAoE,SACRoF,EAAOxJ,EAAAwJ,QAED1E,EAAYnF,EAAMW,OAAO,MAE/B4Y,GAAgB,WACR1U,GAAQgF,GAASA,GACzB,EAAG,CAAC1E,IAWJ,OAAKN,IAAUH,GAAmBD,GAG9BzE,EAAAkB,cAACsD,EAAM,CACHtE,IAAKiF,EACLT,eAAgBA,EAChBD,SAAUA,EACVE,UAAWA,EACXE,KAAMA,EACNE,UAAU,EACVE,UAAU,kBAEVjF,EAAAkB,cAAC+vB,IACGhsB,UAAWA,EACX4E,QAASA,EACTpB,QAxBQ,SAACW,GACZA,GAEgB,IAAjBA,EAAMkpB,SACNlpB,EAAM0oB,iBACN1oB,EAAMmpB,kBAEd,EAkBYntB,aAAcD,GAEb7E,IAlBuC,IAsBxD,ECrDMozB,GAAsC,SAACrzB,GACzC,IAAA8H,UACAlD,EAAS5E,EAAA4E,UACT3E,EAAQD,EAAAC,SACN,OACFN,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,KAAA,CACI+D,UAAW3D,EACP,iBACA2D,IAGHkD,GAEJ7H,EAVH,ECAAqzB,GAAoD,SAACtzB,GACvD,IAAA0vB,QACA6D,gBACAC,UACAv1B,EAAK+B,EAAA/B,MACLw1B,EAAOzzB,EAAAyzB,QACPC,EAAW1zB,EAAA0zB,YACXC,EAAO3zB,EAAA2zB,QAgDDC,EAAyB,SAACC,GAC5B,IAAMC,EAAqBD,EAAQ/lB,IAAI,uBACvC,IAAKgmB,EACD,OAAO,KAIX,IAAMC,EAAQD,EAAmBhhB,MAAM,KACjCkhB,EAAS,YACTC,EAAOF,EAAMlF,KAAK,SAAA/wB,GAAK,OAAAA,EAAErB,QAAQu3B,IAAU,CAApB,GAC7B,GAAIC,EAAM,CACN,IAAMzf,EAAQyf,EAAKC,OAAOF,GAC1B,GAAIxf,EAAQ,EACR,OAAO,KAIX,IAAMnX,EAAQ42B,EAAKE,UAAU3f,EAAQwf,GAAeI,OACpD,GAAqB,IAAjB/2B,EAAMrB,OACN,OAAO,KAIX,IAAMq4B,EAAiBh3B,EAAM82B,UAAU,EAAG,GAC1C,MAAuB,MAAnBE,GAA6C,MAAnBA,EACnBh3B,EAIPA,EAAMrB,OAAS,GAKGqB,EAAMA,EAAMrB,OAAS,KACrBq4B,EALX,KAUJh3B,EAAM82B,UAAU,EAAG92B,EAAMrB,OAAS,EAC7C,CACA,OAAO,IACX,EAEA,OACI2D,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAACiyB,GAAQ,CACL70B,MAAOA,EACPmK,QA/FS,SAAOW,GAAsD,OAAAnM,cAAA,OAAA,EAAA,gFAC1E62B,GAASA,EAAQ1qB,oBAEjB,0BAAKyqB,EAAO,MAAM,IAAIzM,MAAM,iBAC5B,IAAK2I,EAAK,MAAM,IAAI3I,MAAM,eAUX,OART8M,EAAkC,CAAA,GAChCS,YAAc,mBACtBT,EAAQU,cAAgB,UAAA/0B,OAAUg0B,GAC5BgB,EAAwB,CAAEC,OAAQ,MAAOZ,QAAOA,GAChDa,EAAiB,IAAIjhB,IAAIic,GAC3B6D,GACA93B,OAAOkG,KAAK4xB,GAAa3xB,QAAQ,SAAAC,GAAO,OAAA6yB,EAAUC,aAAaC,OAAO/yB,EAAK0xB,EAAY1xB,GAA/C,GAE7B,CAAA,EAAMgzB,MAAMH,EAAWF,WAEtC,KAFM/2B,EAASuC,EAAA9B,SAEkB,MAAlBT,EAAOq3B,OAClB,MAAM,IAAI/N,MAAM,0CAEP,MAAA,CAAA,EAAMtpB,EAAO0V,sBAApBA,EAAOnT,EAAA9B,UAEH62B,EAAe7yB,OAAOuR,IAAIC,gBAAgBP,IAG1C9M,EAASjG,SAASS,cAAc,MAC/BipB,KAAOiL,EAGd1uB,EAAO2uB,SAAWpB,EAAuBn2B,EAAOo2B,UAAY,OAG5DxtB,EAAO4uB,QAGPxhB,IAAIyhB,gBAAgBH,GAEpB1uB,EAAOzF,uBAKX,iBADI+yB,GAASA,EAAQwB,GACfA,gBAENzB,GAAaA,gBAwDzB,EC3GMrqB,GAAgC,SAACrJ,UAC/B,IACJmD,UACAiyB,cACAC,EAAUr1B,EAAAq1B,WACVzwB,EAAS5E,EAAA4E,UACT3E,EAAQD,EAAAC,SACRuJ,EAAOxJ,EAAAwJ,QAED8rB,EAAkB31B,EAAMW,SACxByE,EAAepF,EAAMW,OAAO,MAC5Bi1B,EAAY51B,EAAMW,OAA8B,MAEtDX,EAAMY,UAAU,WAIZ,OAHA+0B,EAAgB50B,QAAUN,SAASvC,KAAK6J,MAAMhD,SAC9CtE,SAASvC,KAAK6J,MAAMhD,SAAW,SAExB,iBACHtE,SAASvC,KAAK6J,MAAMhD,SAAkC,QAAvB1E,EAAAs1B,EAAgB50B,eAAO,IAAAV,EAAAA,EAAI,SAC9D,CACJ,EAAG,IAEH,IAAMw1B,EAAqB71B,EAAMmJ,YAAY,WACrCU,GACAA,GAER,EAAG,CAACA,IAOJ,OACI7J,EAAAkB,cAACd,EAAY,CAACF,IAAKkF,GACfpF,EAAAkB,cAAA,MAAA,CACIhB,IAAK,SAAAmC,GACDuzB,EAAU70B,QAAUsB,CACxB,EACA0F,MAX6B,CACrCjC,SAAU,QACVC,OAAQ,KAUAf,KAAK,SACLC,UAAW3D,EACP,YACA2D,IAGJjF,EAAAkB,cAAA,MAAA,CAAK8D,KAAK,eAAeC,UAAU,oBAAoBwD,QAASotB,IAChE71B,EAAAkB,cAAA,MAAA,CACI+D,UAAW3D,EACP,sBACAkC,EAAQ,kBAAA3D,OAAkB2D,GAAU,MACtB,IAAdiyB,EAAqB,2BAA6B,MACnC,IAAfC,EAAsB,4BAA8B,OAGvDp1B,IAKrB,EClEMw1B,GAA8C,SAACz1B,OACjD4E,EAAS5E,EAAA4E,UACT3E,EAAQD,EAAAC,SACN,OACFN,EAAAkB,cAAA,MAAA,CAAK+D,UAAW3D,EAAW,oBAAqB2D,IAC3C3E,EAFH,ECHAy1B,GAA4C,SAAC11B,OAC/C4E,EAAS5E,EAAA4E,UACT3E,EAAQD,EAAAC,SACN,OACFN,EAAAkB,cAAA,SAAA,CAAQ+D,UAAW3D,EAAW,mBAAoB2D,IAC7C3E,EAFH,ECHA01B,GAA4C,SAAC31B,OAC/C4E,EAAS5E,EAAA4E,UACT3E,EAAQD,EAAAC,SACN,OACFN,EAAAkB,cAAA,SAAA,CAAQ+D,UAAW3D,EAAW,mBAAoB2D,IAC7C3E,EAFH,ECAA21B,GAA0C,SAAC51B,OAC7C4E,EAAS5E,EAAA4E,UACT3E,EAAQD,EAAAC,SACR41B,EAAY71B,EAAA61B,aACZrsB,EAAOxJ,EAAAwJ,QAED8mB,EAAmB3wB,EAAMmJ,YAAY,WACnCU,IAA4B,IAAjBqsB,GACXrsB,GAER,EAAG,CAACA,EAASqsB,IAEPC,OAA2B1zB,IAAZoH,EAErB,OACI7J,sBAAIiF,UAAW3D,EAAW,kBAAmB2D,IACxC3E,EACA61B,GACGn2B,EAAAkB,cAAA,SAAA,CACI2H,KAAK,SACL5D,UAAW3D,EACP,kBACA40B,EAAe,0BAA4B,MAE/Cxb,SAAU,EACVjS,QAASkoB,GAET3wB,EAAAkB,cAACgyB,GAAS,OAK9B,ECnCMkD,GAA8C,SAAC/1B,OACjD4E,EAAS5E,EAAA4E,UACT3E,EAAQD,EAAAC,SACN,OACFN,EAAAkB,cAAA,MAAA,CAAK+D,UAAW3D,EAAW,oBAAqB2D,IAC3C3E,EAFH,ECMA+1B,GAA8C,SAACh2B,GACjD,IAAA8H,EAAK9H,EAAA8H,MACLmuB,EAAEj2B,EAAAi2B,GACFC,EAAMl2B,EAAAk2B,OACNj2B,aACA2E,EAAS5E,EAAA4E,UACT4E,EAAOxJ,EAAAwJ,QAED8mB,EAAmB3wB,EAAMmJ,YAAY,WAClCU,GAELA,GAAQ,EACZ,EAAG,CAACA,IAEE2sB,EAAgBx2B,EAAMmJ,YAAY,WAC/BU,GAELA,GAAQ,EACZ,EAAG,CAACA,IAEE4sB,EAAYH,QAAAA,EAAM,MAClBI,EAAgBH,QAAAA,EAAU,UAEhC,OACIv2B,EAAAkB,cAACwI,GAAM,CACH7E,MAAI,EACJI,UAAW3D,EAAW,gBAAiB,oBAAqB2D,IAE5DjF,EAAAkB,cAAC80B,GAAY,KACTh2B,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,iBAAiBytB,MAAM,6BAA6BiE,QAAQ,MAAMhE,QAAQ,mBACrF3yB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,6gCASRhuB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,uHACRhuB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,2WAKZhuB,EAAAkB,cAAA,KAAA,CAAI+D,UAAU,mBAAmBkD,KAGzCnI,EAAAkB,cAAC40B,GAAa,KACTx1B,GAELN,EAAAkB,cAAC60B,GAAY,KACT/1B,EAAAkB,cAAC8H,EAAM,CACH/D,UAAU,iCACVwD,QAAS+tB,GAERC,GAELz2B,EAAAkB,cAAC8H,EAAM,CACH/D,UAAU,oCACVwD,QAASkoB,GAER+F,IAKrB,ECrEME,GAA0C,SAACv2B,GAC7C,IAAA8H,EAAK9H,EAAA8H,MACLmuB,EAAEj2B,EAAAi2B,GACFh2B,EAAQD,EAAAC,SACR2E,EAAS5E,EAAA4E,UACT4E,EAAOxJ,EAAAwJ,QAED2sB,EAAgBx2B,EAAMmJ,YAAY,WAC/BU,GAELA,GAAQ,EACZ,EAAG,CAACA,IAEE4sB,EAAYH,QAAAA,EAAM,SAExB,OACIt2B,EAAAkB,cAACwI,GAAM,CACH7E,MAAI,EACJI,UAAW3D,EAAW,gBAAiB,kBAAmB2D,IAE1DjF,EAAAkB,cAAC80B,GAAY,KACTh2B,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,iBAAiBytB,MAAM,6BAA6BiE,QAAQ,MAAMhE,QAAQ,uBACrF3yB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,6qCACRhuB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,upBACRhuB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,gVACRhuB,EAAAkB,cAAA,OAAA,CAAM8sB,EAAE,wUAEZhuB,EAAAkB,cAAA,KAAA,CAAI+D,UAAU,mBAAmBkD,KAGzCnI,EAAAkB,cAAC40B,GAAa,KACTx1B,GAELN,EAAAkB,cAAC60B,GAAY,KACT/1B,EAAAkB,cAAC8H,EAAM,CACH/D,UAAU,iCACVwD,QAAS+tB,GAERC,IAKrB,EC5CMI,GAA8C,SAACx2B,GACjD,IAAA8H,EAAK9H,EAAA8H,MACLmuB,EAAEj2B,EAAAi2B,GACFh2B,EAAQD,EAAAC,SACR2E,EAAS5E,EAAA4E,UACT4E,EAAOxJ,EAAAwJ,QAED2sB,EAAgBx2B,EAAMmJ,YAAY,WAC/BU,GAELA,GAAQ,EACZ,EAAG,CAACA,IAEE4sB,EAAYH,QAAAA,EAAM,SAExB,OACIt2B,EAAAkB,cAACwI,GAAM,CACH7E,MAAI,EACJI,UAAW3D,EAAW,gBAAiB,oBAAqB2D,IAE5DjF,EAAAkB,cAAC80B,GAAY,KACTh2B,EAAAkB,cAAAlB,EAAAsI,SAAA,KACItI,EAAAkB,cAAA,MAAA,CAAK+D,UAAU,iBAAiBytB,MAAM,6BAA6BoE,WAAW,+BAA+BH,QAAQ,MAAMpX,EAAE,MAAMnhB,EAAE,MAAMu0B,QAAQ,eAC/I3yB,EAAAkB,cAAA,UAAA,CAAS0xB,KAAK,UAAUzE,OAAO,iDAC/BnuB,EAAAkB,cAAA,UAAA,CAAS0xB,KAAK,UAAUzE,OAAO,uCAC/BnuB,EAAAkB,cAAA,SAAA,CAAQ0xB,KAAK,UAAUmE,GAAG,MAAMC,GAAG,UAAUxV,EAAE,WAC/CxhB,EAAAkB,cAAA,OAAA,CAAMqe,EAAE,UAAUnhB,EAAE,UAAUw0B,KAAK,UAAUpvB,MAAM,SAASJ,OAAO,aAEvEpD,EAAAkB,cAAA,KAAA,CAAI+D,UAAU,mBAAmBkD,KAGzCnI,EAAAkB,cAAC40B,GAAa,KACTx1B,GAELN,EAAAkB,cAAC60B,GAAY,KACT/1B,EAAAkB,cAAC8H,EAAM,CACH/D,UAAU,iCACVwD,QAAS+tB,GAERC,IAKrB","x_google_ignoreList":[0,24]}
1
+ {"version":3,"file":"index.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/utils/forwardRef.ts","../../src/DomContainer/DomContainer.tsx","../../src/utils/setRef.ts","../../src/utils/classNames.ts","../../src/Popper/Popper.tsx","../../src/Transition/CSSTransition.tsx","../../src/Spinner/Spinner.tsx","../../src/BarLoader/BarLoader.tsx","../../src/Selected/Selected.tsx","../../src/Button/Button.tsx","../../src/Scanner/DialogMask.tsx","../../src/Scanner/DialogBody.tsx","../../src/Scanner/Dialog.tsx","../../src/Scanner/ScanConfirmationDialog.tsx","../../src/Scanner/Scanner.tsx","../../src/Camera/FileStorageDb.ts","../../src/Camera/Camera.tsx","../../src/Camera/useTimer.ts","../../src/ToggleButton/ToggleButton.tsx","../../src/Transition/Fade.tsx","../../src/Tooltip/Tooltip.tsx","../../src/utils/useClickOutside.ts","../../src/TagInput/TagItem.tsx","../../node_modules/leaflet-active-area/src/leaflet.activearea.js","../../src/TagInput/TagSearchInput.tsx","../../src/TagInput/TagSuggestionItem.tsx","../../src/TagInput/TagSuggestionGroup.tsx","../../src/TagInput/TagSuggestion.tsx","../../src/TagInput/TagInput.tsx","../../src/Map/components/LocationContext.ts","../../src/Map/components/CenterActiveAreaControl.tsx","../../src/Map/components/MapFullscreenControl.tsx","../../src/Map/components/DrawTools.tsx","../../src/Map/components/Maps.tsx","../../src/Map/hooks/useLocationContext.ts","../../src/Map/Map.tsx","../../src/Menu/Menu.tsx","../../src/utils/useElement.ts","../../src/Menu/ContextMenu.tsx","../../src/Menu/Divider.tsx","../../src/Icons/ChevronDownIcon.tsx","../../src/Icons/ChevronRightIcon.tsx","../../src/Icons/ChevronLeftIcon.tsx","../../src/Icons/CrossIcon.tsx","../../src/Menu/MenuItem.tsx","../../src/Menu/PopupMenu.tsx","../../src/Menu/MenuGroup.tsx","../../src/Menu/AuthDownloadLink.tsx","../../src/Dialog/Dialog.tsx","../../src/Dialog/DialogContent.tsx","../../src/Dialog/DialogFooter.tsx","../../src/Dialog/DialogHeader.tsx","../../src/Dialog/DialogTitle.tsx","../../src/Dialog/DialogActions.tsx","../../src/Dialog/ConfirmDialog.tsx","../../src/Dialog/ErrorDialog.tsx","../../src/Dialog/WarningDialog.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import * as React from 'react';\r\n\r\n/**\r\n * Utility type pour créer des props avec ref pour la compatibilité React 18/19\r\n * En React 19, ref est passé directement dans les props\r\n * En React 18, ref est passé séparément via forwardRef\r\n */\r\nexport type ForwardRefProps<T, P = object> = P & {\r\n ref?: React.Ref<T>;\r\n};\r\n\r\n/**\r\n * Type pour la fonction de rendu compatible React 18/19\r\n */\r\nexport type ForwardRefRenderFunction<T, P> = (\r\n props: P,\r\n ref: React.ForwardedRef<T>\r\n) => React.ReactElement | null;\r\n\r\n/**\r\n * Composant wrapper compatible React 18 et React 19\r\n *\r\n * Utilise la signature standard de React.forwardRef qui est compatible\r\n * avec les deux versions de React.\r\n *\r\n * @example\r\n * ```tsx\r\n * interface MyComponentProps {\r\n * className?: string;\r\n * children?: React.ReactNode;\r\n * }\r\n *\r\n * const MyComponent = forwardRef<HTMLDivElement, MyComponentProps>(\r\n * (props, ref) => (\r\n * <div ref={ref} className={props.className}>{props.children}</div>\r\n * )\r\n * );\r\n * ```\r\n */\r\nexport function forwardRef<T, P>(render: ForwardRefRenderFunction<T, P>): React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<T>> {\r\n // Wrapper la fonction de rendu pour passer les props correctement\r\n // Cela permet de supporter les signatures React 18 et React 19\r\n function forwardRefWrapper(props: React.PropsWithoutRef<P>, ref: React.ForwardedRef<T>) {\r\n return render(props as P, ref);\r\n }\r\n\r\n return React.forwardRef(forwardRefWrapper);\r\n}\r\n\r\nexport default forwardRef;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\ntype Props = {\r\n children?: React.ReactNode;\r\n container?: HTMLElement | (() => HTMLElement);\r\n};\r\n\r\nfunction getContainer(container: HTMLElement | (() => HTMLElement)) {\r\n return typeof container === 'function' ? container() : container;\r\n}\r\n\r\nconst DomContainer = forwardRef<HTMLElement, Props>(({\r\n children,\r\n container = document.body\r\n}, ref) => {\r\n const target = React.useRef<HTMLDivElement>();\r\n\r\n React.useEffect(() => {\r\n const containerNode = getContainer(container);\r\n\r\n if (target.current && containerNode) {\r\n containerNode.appendChild(target.current);\r\n }\r\n return () => {\r\n if (target.current) {\r\n target.current.remove();\r\n }\r\n };\r\n }, [target.current]);\r\n\r\n if (!target.current) {\r\n target.current = document.createElement('div');\r\n }\r\n\r\n return ReactDOM.createPortal(children, target.current);\r\n});\r\n\r\nexport default DomContainer;\r\n","import * as React from 'react';\r\n\r\n/**\r\n * Helper pour assigner une valeur à une ref React\r\n * Compatible avec React 18 et React 19\r\n *\r\n * @param ref - La ref React (callback ref, MutableRefObject, ou RefObject)\r\n * @param value - La valeur à assigner\r\n */\r\nexport default function setRef<T>(\r\n ref: React.Ref<T> | null | undefined,\r\n value: T | null,\r\n): void {\r\n if (!ref) return;\r\n\r\n if (typeof ref === 'function') {\r\n ref(value);\r\n }\r\n else if ('current' in ref) {\r\n // Type assertion nécessaire car RefObject.current est readonly\r\n // mais nous devons pouvoir l'assigner dans ce contexte\r\n (ref as React.MutableRefObject<T | null>).current = value;\r\n }\r\n}","export default function classNames(...values: any[]): string {\r\n const classes = [];\r\n\r\n for (let idx = 0; idx < values.length; idx += 1) {\r\n const arg = values[idx];\r\n if (!arg) continue;\r\n\r\n const argType = typeof arg;\r\n\r\n if (argType === 'string' || argType === 'number') {\r\n // @ts-ignore\r\n classes.push(arg);\r\n }\r\n else if (Array.isArray(arg)) {\r\n if (arg.length) {\r\n const inner = classNames(...arg);\r\n if (inner) {\r\n // @ts-ignore\r\n classes.push(inner);\r\n }\r\n }\r\n }\r\n else if (argType === 'object') {\r\n if (arg.toString === Object.prototype.toString) {\r\n Object.keys(arg).forEach(key => {\r\n // @ts-ignore\r\n if (arg[key]) classes.push(key);\r\n });\r\n }\r\n }\r\n else {\r\n // @ts-ignore\r\n classes.push(arg.toString());\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n}","import React from 'react';\r\nimport propTypes from 'prop-types';\r\nimport DomContainer from '../DomContainer';\r\nimport setRef from '../utils/setRef';\r\nimport classNames from '../utils/classNames';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\ntype Rect = {\r\n left: number,\r\n top: number,\r\n height: number,\r\n width: number\r\n}\r\n\r\nconst getAnchorElement = (anchorEl: string | HTMLElement | React.RefObject<HTMLElement> | undefined): HTMLElement => {\r\n if (!anchorEl) return document.body;\r\n if (Object.prototype.toString.call(anchorEl) === '[object String]') {\r\n const element = document.getElementById(anchorEl as string);\r\n return element ?? document.body;\r\n }\r\n\r\n const ref = anchorEl as React.RefObject<HTMLElement>;\r\n if (ref && ref.current) return ref.current ?? document.body;\r\n\r\n return anchorEl as HTMLElement;\r\n};\r\n\r\nfunction getAbsoluteBoundingRect(el: HTMLElement) {\r\n const win = window;\r\n const { body } = document;\r\n\r\n // pageXOffset and pageYOffset work everywhere except IE <9.\r\n const offsetX = win.pageXOffset !== undefined ? win.pageXOffset :\r\n (document.documentElement || body.parentNode || body).scrollLeft;\r\n const offsetY = win.pageYOffset !== undefined ? win.pageYOffset :\r\n (document.documentElement || body.parentNode || body).scrollTop;\r\n\r\n const rect = el.getBoundingClientRect();\r\n\r\n // if (el !== body) {\r\n // let parent = el.parentNode as HTMLElement;\r\n\r\n // while (parent !== body && parent !== null) {\r\n // offsetX += parent.scrollLeft;\r\n // offsetY += parent.scrollTop;\r\n // parent = parent.parentNode as HTMLElement;\r\n // }\r\n // }\r\n\r\n return {\r\n bottom: rect.bottom + offsetY,\r\n height: rect.height,\r\n left: rect.left + offsetX,\r\n right: rect.right + offsetX,\r\n top: rect.top + offsetY,\r\n width: rect.width\r\n };\r\n}\r\n\r\nfunction getContentPosition(\r\n placement: string | undefined,\r\n container: HTMLElement,\r\n anchorPosition: { top: number, left: number } | undefined,\r\n content: HTMLElement\r\n) {\r\n let left = 0;\r\n let top = 0;\r\n\r\n const containerRect = !anchorPosition\r\n ? getAbsoluteBoundingRect(container)\r\n : {\r\n bottom: anchorPosition.top,\r\n height: 0,\r\n left: anchorPosition.left,\r\n right: anchorPosition.left,\r\n top: anchorPosition.top,\r\n width: 0\r\n };\r\n const contentRect = getAbsoluteBoundingRect(content);\r\n\r\n switch (placement) {\r\n case PopperPlacement.Center:\r\n left = containerRect.left + (containerRect.width / 2) - (contentRect.width / 2);\r\n top = containerRect.top + (containerRect.height / 2) - (contentRect.height / 2);\r\n break;\r\n case PopperPlacement.BottomLeft:\r\n left = containerRect.left;\r\n top = containerRect.bottom;\r\n break;\r\n case PopperPlacement.BottomRight:\r\n left = containerRect.left - contentRect.width + containerRect.width;\r\n top = containerRect.bottom;\r\n break;\r\n case PopperPlacement.BottomCenter:\r\n left = containerRect.left + (containerRect.width / 2) - (contentRect.width / 2);\r\n top = containerRect.bottom;\r\n break;\r\n case PopperPlacement.TopLeft:\r\n left = containerRect.left;\r\n top = containerRect.top - contentRect.height;\r\n break;\r\n case PopperPlacement.TopRight:\r\n left = containerRect.left - contentRect.width + containerRect.width;\r\n top = containerRect.top - contentRect.height;\r\n break;\r\n case PopperPlacement.TopCenter:\r\n left = containerRect.left + (containerRect.width / 2) - (contentRect.width / 2);\r\n top = containerRect.top - contentRect.height;\r\n break;\r\n case PopperPlacement.LeftTop:\r\n left = containerRect.left - contentRect.width;\r\n top = containerRect.top;\r\n break;\r\n case PopperPlacement.LeftBottom:\r\n left = containerRect.left - contentRect.width;\r\n top = containerRect.bottom - contentRect.height;\r\n break;\r\n case PopperPlacement.LeftCenter:\r\n left = containerRect.left - contentRect.width;\r\n top = containerRect.top + (containerRect.height / 2) - (contentRect.height / 2);\r\n break;\r\n case PopperPlacement.RightTop:\r\n left = containerRect.right;\r\n top = containerRect.top;\r\n break;\r\n case PopperPlacement.RightBottom:\r\n left = containerRect.right;\r\n top = containerRect.bottom - contentRect.height;\r\n break;\r\n case PopperPlacement.RightCenter:\r\n left = containerRect.right;\r\n top = containerRect.top + (containerRect.height / 2) - (contentRect.height / 2);\r\n break;\r\n }\r\n\r\n return { left, top };\r\n}\r\n\r\nfunction fixPositionInRect(containerRect: Rect, content: HTMLElement, left: number, top: number, flexible: boolean) {\r\n if (!containerRect) return null;\r\n if (!content) return null;\r\n\r\n const contentRect = content.getBoundingClientRect();\r\n const newCoord = {\r\n left,\r\n top,\r\n height: 0,\r\n width: 0\r\n };\r\n\r\n if (left < containerRect.left) {\r\n newCoord.left = containerRect.left;\r\n }\r\n if (top < containerRect.top) {\r\n newCoord.top = containerRect.top;\r\n }\r\n\r\n if (!flexible) {\r\n if (left + contentRect.width >= containerRect.left + containerRect.width) {\r\n newCoord.left = containerRect.left + containerRect.width - contentRect.width;\r\n }\r\n if (top + contentRect.height >= containerRect.top + containerRect.height) {\r\n newCoord.top = containerRect.top + containerRect.height - contentRect.height;\r\n }\r\n }\r\n else {\r\n newCoord.width = containerRect.left + containerRect.width - left;\r\n newCoord.height = containerRect.top + containerRect.height - top;\r\n }\r\n\r\n return newCoord;\r\n}\r\n\r\nexport const PopperPlacement = {\r\n Center: 'center',\r\n BottomCenter: 'bottom-center',\r\n BottomRight: 'bottom-right',\r\n BottomLeft: 'bottom-left',\r\n TopCenter: 'top-center',\r\n TopRight: 'top-right',\r\n TopLeft: 'top-left',\r\n LeftTop: 'left-top',\r\n LeftBottom: 'left-bottom',\r\n LeftCenter: 'left-center',\r\n RightTop: 'right-top',\r\n RightBottom: 'right-bottom',\r\n RightCenter: 'right-center'\r\n} as const;\r\n\r\ntype Props = {\r\n anchorEl?: string | HTMLElement | React.RefObject<HTMLElement>;\r\n anchorPosition?: { top: number, left: number };\r\n placement?: ObjectValues<typeof PopperPlacement>;\r\n open?: boolean;\r\n role?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n overflow?: boolean;\r\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\r\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\r\n onMouseMove?: React.MouseEventHandler<HTMLDivElement>;\r\n onMouseOut?: React.MouseEventHandler<HTMLDivElement>;\r\n onMouseOver?: React.MouseEventHandler<HTMLDivElement>;\r\n onTouchStart?: React.TouchEventHandler<HTMLDivElement>;\r\n onTouchEnd?: React.TouchEventHandler<HTMLDivElement>;\r\n};\r\n\r\nconst Popper = forwardRef<HTMLElement, Props>(({\r\n anchorEl,\r\n anchorPosition,\r\n placement = PopperPlacement.BottomLeft,\r\n open = false,\r\n overflow = false,\r\n role,\r\n children,\r\n className,\r\n ...other\r\n}, ref) => {\r\n const popperRef = React.useRef<HTMLDivElement | null>(null);\r\n const containerRef = React.useRef(null);\r\n\r\n // const [anchorElement, setAnchorElement] = React.useState<string | HTMLElement | React.RefObject<HTMLElement> | undefined | null>(null);\r\n const [documentDimensions, setDimensions] = React.useState<Rect>({\r\n left: window.scrollX,\r\n top: window.scrollY,\r\n height: window.innerHeight,\r\n width: window.innerWidth\r\n });\r\n\r\n const [popperStyle, setPopperStyle] = React.useState<React.CSSProperties>({\r\n position: 'absolute',\r\n margin: '0',\r\n inset: '0px auto auto 0px',\r\n transform: 'translate3d(0px, 0px, 0px)',\r\n opacity: 0\r\n });\r\n\r\n // React.useEffect(() => {\r\n // setAnchorElement(anchorEl);\r\n // }, [anchorEl]);\r\n\r\n React.useEffect(() => {\r\n if (ref && popperRef) {\r\n setRef(ref, popperRef.current);\r\n\r\n return () => {\r\n setRef(ref, null);\r\n };\r\n }\r\n\r\n return undefined;\r\n }, [ref, popperRef.current]);\r\n\r\n React.useEffect(() => {\r\n const onDisplayWindowResize = () => {\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n left: window.scrollX,\r\n top: window.scrollY\r\n });\r\n };\r\n\r\n const onDocumentScroll = () => {\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n left: window.scrollX,\r\n top: window.scrollY\r\n });\r\n };\r\n\r\n if (open) {\r\n window.addEventListener('resize', onDisplayWindowResize);\r\n window.addEventListener('scroll', onDocumentScroll);\r\n\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth,\r\n left: window.scrollX,\r\n top: window.scrollY\r\n });\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('resize', onDisplayWindowResize);\r\n window.removeEventListener('scroll', onDocumentScroll);\r\n };\r\n }, [open]);\r\n\r\n React.useEffect(() => {\r\n let observer: MutationObserver | undefined;\r\n const anchor = getAnchorElement(anchorEl);\r\n if (open && popperRef.current && anchor) {\r\n const updatePosition = () => {\r\n let { left, top } = getContentPosition(placement, anchor, anchorPosition, popperRef.current!);\r\n let height: number = 0;\r\n let width: number = 0;\r\n if (overflow === false) {\r\n const fixPosition = fixPositionInRect(documentDimensions, popperRef.current!, left, top, false);\r\n if (fixPosition !== null) {\r\n left = fixPosition.left;\r\n top = fixPosition.top;\r\n height = fixPosition.height;\r\n width = fixPosition.width;\r\n }\r\n }\r\n\r\n setPopperStyle({\r\n position: 'absolute',\r\n margin: '0',\r\n inset: '0px auto auto 0px',\r\n transform: `translate3d(${left}px, ${top}px, 0px)`,\r\n opacity: 1,\r\n maxHeight: height > 0 ? `${height.toFixed()}px` : undefined,\r\n maxWidth: width > 0 ? `${width.toFixed()}px` : undefined\r\n });\r\n };\r\n observer = new MutationObserver(() => {\r\n updatePosition();\r\n });\r\n observer.observe(popperRef.current, { attributes: false, childList: true, subtree: true });\r\n\r\n updatePosition();\r\n }\r\n\r\n return () => {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n };\r\n }, [popperRef, open, placement, anchorPosition, overflow, documentDimensions, anchorEl]);\r\n\r\n if (open !== true) return null;\r\n\r\n return (\r\n <DomContainer ref={containerRef}>\r\n <div\r\n ref={popperRef}\r\n style={popperStyle}\r\n role={role}\r\n className={classNames(\r\n 'ui-popper',\r\n className\r\n )}\r\n {...other}\r\n >\r\n {children}\r\n </div>\r\n </DomContainer>\r\n );\r\n});\r\n\r\n// Popper.propTypes = {\r\n// anchorEl: propTypes.oneOfType([\r\n// propTypes.string.isRequired,\r\n// propTypes.instanceOf(HTMLElement).isRequired,\r\n// propTypes.shape({ current: propTypes.instanceOf(HTMLElement).isRequired }).isRequired\r\n// ]),\r\n// placement: propTypes.oneOf(Object.values(PopperPlacement)),\r\n// open: propTypes.bool,\r\n// role: propTypes.string,\r\n// children: propTypes.node,\r\n// overflow: propTypes.bool\r\n// };\r\n\r\n// Popper.defaultProps = {\r\n// anchorEl: undefined,\r\n// placement: PopperPlacement.BottomLeft,\r\n// open: false,\r\n// role: undefined,\r\n// children: undefined,\r\n// overflow: false\r\n// };\r\n\r\nexport default Popper;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\nenum TransitionState {\r\n Enter,\r\n Entering,\r\n Entered,\r\n Exit,\r\n Exiting,\r\n Exited\r\n}\r\n\r\ntype Props = {\r\n trigger: boolean,\r\n mode: 'appear' | 'disappear',\r\n children?: React.ReactElement;\r\n enterTimeout?: number;\r\n exitTimeout?: number;\r\n className?: string;\r\n onEnter?: () => void;\r\n onEntering?: () => void;\r\n onEntered?: () => void;\r\n onExit?: () => void;\r\n onExiting?: () => void;\r\n onExited?: () => void;\r\n};\r\n\r\nconst CSSTransition = forwardRef<HTMLElement, Props>(({\r\n trigger,\r\n mode = 'appear',\r\n children,\r\n enterTimeout,\r\n exitTimeout,\r\n className,\r\n onEnter,\r\n onEntering,\r\n onEntered,\r\n onExit,\r\n onExiting,\r\n onExited\r\n}, ref) => {\r\n const nodeRef = React.useRef<HTMLElement>(null);\r\n const timeout = React.useRef<number>();\r\n const [transitionState, setTransitionState] = React.useState<TransitionState>(() => {\r\n if (mode === 'appear') return TransitionState.Exited;\r\n return TransitionState.Entered;\r\n });\r\n\r\n const perfomEnter = () => {\r\n if (timeout.current) window.clearTimeout(timeout.current);\r\n\r\n nodeRef.current!.classList.remove(`${className}-exit`);\r\n nodeRef.current!.classList.remove(`${className}-exiting`);\r\n nodeRef.current!.classList.remove(`${className}-exited`);\r\n\r\n if (onEnter) onEnter();\r\n nodeRef.current!.classList.add(`${className}-enter`);\r\n\r\n timeout.current = window.setTimeout(() => {\r\n if (onEntering) onEntering();\r\n if (nodeRef.current) {\r\n nodeRef.current!.classList.add(`${className}-entering`);\r\n }\r\n\r\n // setTransitionState(() => {\r\n // if (onEntering) onEntering();\r\n\r\n // return TransitionState.Entering;\r\n // });\r\n\r\n timeout.current = window.setTimeout(() => {\r\n if (onEntered) onEntered();\r\n if (nodeRef.current) {\r\n nodeRef.current!.classList.add(`${className}-entered`);\r\n }\r\n\r\n // setTransitionState(() => {\r\n // if (onEntered) onEntered();\r\n // nodeRef.current!.classList.add(`${className}-entered`);\r\n // return TransitionState.Entered;\r\n // });\r\n }, enterTimeout || 1000);\r\n }, 10);\r\n };\r\n\r\n const perfomExit = () => {\r\n if (timeout.current) window.clearTimeout(timeout.current);\r\n\r\n nodeRef.current!.classList.remove(`${className}-enter`);\r\n nodeRef.current!.classList.remove(`${className}-entering`);\r\n nodeRef.current!.classList.remove(`${className}-entered`);\r\n\r\n if (onExit) onExit();\r\n nodeRef.current!.classList.add(`${className}-exit`);\r\n\r\n timeout.current = window.setTimeout(() => {\r\n if (onExiting) onExiting();\r\n if (nodeRef.current) {\r\n nodeRef.current!.classList.add(`${className}-exiting`);\r\n }\r\n\r\n // setTransitionState(() => {\r\n // if (onExiting) onExiting();\r\n // nodeRef.current!.classList.add(`${className}-exiting`);\r\n // return TransitionState.Exiting;\r\n // });\r\n\r\n timeout.current = window.setTimeout(() => {\r\n if (onExited) onExited();\r\n if (nodeRef.current) {\r\n nodeRef.current!.classList.add(`${className}-exited`);\r\n }\r\n\r\n // setTransitionState(() => {\r\n // if (onExited) onExited();\r\n // nodeRef.current!.classList.add(`${className}-exited`);\r\n // return TransitionState.Exited;\r\n // });\r\n }, exitTimeout || 1000);\r\n });\r\n };\r\n\r\n React.useEffect(() => () => {\r\n if (timeout.current) {\r\n window.clearTimeout(timeout.current);\r\n }\r\n }, [timeout]);\r\n\r\n React.useEffect(() => {\r\n if (trigger) {\r\n perfomEnter();\r\n }\r\n else {\r\n perfomExit();\r\n }\r\n }, [trigger]);\r\n\r\n const childrenNode: React.ReactElement | undefined = React.useMemo(() => {\r\n if (!children) return undefined;\r\n\r\n const childrenProps = {\r\n ...children.props,\r\n className: classNames(className, children.props.className),\r\n ref: nodeRef\r\n };\r\n\r\n return React.cloneElement(children, childrenProps);\r\n }, [children, nodeRef]);\r\n\r\n return (\r\n <>\r\n {childrenNode}\r\n </>\r\n );\r\n});\r\n\r\nexport default CSSTransition;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface SpinnerProps {\r\n className?: string;\r\n variant?: 'indeterminate' | 'determinate';\r\n}\r\n\r\nconst Spinner: React.FC<SpinnerProps> = ({\r\n className,\r\n variant = 'indeterminate'\r\n}) => (\r\n <div\r\n className={classNames(\r\n 'ui-spinner',\r\n variant === 'indeterminate' ? 'ui-spinner-indeterminate' : 'ui-spinner-determinate',\r\n className\r\n )}\r\n >\r\n loading...\r\n </div>\r\n);\r\n\r\nexport default Spinner;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface BarLoaderProps {\r\n title?: string;\r\n color?: 'red' | 'blue' | 'yellow' | 'orange' | 'green'\r\n className?: string;\r\n isComplete: boolean;\r\n}\r\n\r\nconst BarLoader: React.FC<BarLoaderProps> = ({ title, color, className, isComplete }) => (\r\n <>\r\n <div className={classNames('loader', color != null ? `loader-color-${color}` : 'loader-color-blue', isComplete === true ? 'completed' : '', className)}>\r\n <div className={classNames('loaderBar', color != null ? `loaderBar-color-${color}` : 'loaderBar-color-blue')}>\r\n </div>\r\n </div>\r\n <div className={classNames('loaderBar-title')}>\r\n <span>{title}</span>\r\n </div>\r\n </>\r\n);\r\n\r\nexport default BarLoader;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface SelectedProps {\r\n title?: string;\r\n data: any[];\r\n onClick: (elt: any) => void;\r\n}\r\n\r\nconst Selected: React.FC<SelectedProps> = ({ title, data, onClick }) => {\r\n const handleClick = (elt: any) => {\r\n onClick(elt);\r\n };\r\n\r\n return (\r\n <>\r\n <div className={classNames('ui-selected-params')}>\r\n <div className={classNames('ui-selected-title')}>\r\n {title}\r\n </div>\r\n <div className={classNames('ui-selected-content')}>\r\n <>\r\n {\r\n Array.isArray(data) && data.map((item, index) => (\r\n <>\r\n <div key={index} className={classNames('ui-selected-button')}>\r\n <button type=\"button\" onClick={() => handleClick(item)} className={item.selected === 1 ? 'ui-selected-btn' : item.selected === 0 ? 'ui-not-selected' : 'ui-new-selected'}>{item.name}</button>\r\n </div>\r\n </>\r\n ))\r\n }\r\n </>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Selected;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface ButtonProps {\r\n variant?: 'text' | 'contained' | 'outlined',\r\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark'\r\n className?: string;\r\n disable?: boolean;\r\n children?: React.ReactNode;\r\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\r\n}\r\n\r\nconst Button: React.FC<ButtonProps> = ({\r\n variant,\r\n color,\r\n children,\r\n disable,\r\n className,\r\n onClick\r\n}: ButtonProps) => {\r\n const handleClick = React.useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\r\n if (onClick && disable !== true) {\r\n onClick(event);\r\n }\r\n }, [onClick, disable]);\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n className={classNames(\r\n 'ui-btn',\r\n disable === true ? 'ui-btn-disable' : null,\r\n variant != null ? `ui-btn-${variant}` : 'ui-btn-text',\r\n color != null ? `ui-btn-color-${color}` : 'ui-btn-color-primary',\r\n className\r\n )}\r\n onClick={handleClick}\r\n >\r\n {children}\r\n </button>\r\n );\r\n};\r\n\r\nexport default Button;","import React, { HTMLAttributes, useMemo } from 'react';\r\n\r\nexport const DialogMask = (props: DialogMaskProps) => {\r\n const zIndex = useMemo(() => {\r\n const adr = document.querySelectorAll('.dialog-mask');\r\n const initialZIndex = 1300;\r\n return initialZIndex + adr.length;\r\n }, []);\r\n\r\n return (\r\n <div\r\n {...props}\r\n className={`dialog-mask ${props.className}`}\r\n style={{ ...props.style, zIndex }}\r\n >\r\n <style>{'body { overflow: hidden; }'}</style>\r\n {props.children}\r\n </div>\r\n );\r\n};\r\n\r\nexport type DialogMaskProps = HTMLAttributes<HTMLDivElement>\r\n","import React, { HTMLAttributes } from 'react';\r\n\r\nexport const DialogBody: React.FC<DialogBodyProps> = props => (\r\n <div {...props} className={`dialog-body ${props.className}`}>\r\n </div>\r\n);\r\n\r\nexport type DialogBodyProps = HTMLAttributes<HTMLDivElement>\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { DialogMask } from './DialogMask';\r\nimport { DialogBody } from './DialogBody';\r\n\r\nexport const Dialog = (props: DialogProps) => {\r\n useEffect(() => {\r\n window.addEventListener('keyup', handleKeyUp);\r\n return () => {\r\n window.removeEventListener('keyup', handleKeyUp);\r\n };\r\n }, []);\r\n\r\n const handleKeyUp = useCallback((e: KeyboardEvent) => {\r\n if (['Esc', 'Escape'].includes(e.key)) {\r\n props.onClose?.();\r\n }\r\n }, []);\r\n\r\n if (!props.open) {\r\n return (<></>);\r\n }\r\n\r\n return ReactDOM.createPortal(\r\n (\r\n <>\r\n <DialogMask>\r\n <DialogBody\r\n style={{\r\n position: 'relative',\r\n fontFamily: 'sans-serif',\r\n width: '100%',\r\n maxWidth: '500px'\r\n }}\r\n >\r\n {\r\n props.title &&\r\n (\r\n <div className=\"dialog-header\">\r\n <h4\r\n style={{\r\n fontWeight: '600',\r\n fontSize: '1.25rem'\r\n }}\r\n >{props.title}\r\n </h4>\r\n </div>\r\n )\r\n }\r\n <button\r\n type=\"button\"\r\n style={{\r\n position: 'absolute',\r\n top: '0.5rem',\r\n right: '0.5rem',\r\n zIndex: 20,\r\n fontSize: '1.375rem',\r\n fontWeight: '700',\r\n background: 'transparent',\r\n border: 'none',\r\n padding: '5px 10px'\r\n }}\r\n onClick={props.onClose}\r\n >\r\n &times;\r\n </button>\r\n <div>\r\n </div>\r\n </DialogBody>\r\n </DialogMask>\r\n </>\r\n ),\r\n document.body\r\n );\r\n};\r\n\r\nexport type DialogTitleProps = {\r\n title?: string\r\n};\r\n\r\nexport type DialogProps = DialogTitleProps & {\r\n open: boolean\r\n onClose?: () => void\r\n};\r\n","import React from 'react';\r\nimport { Dialog } from './Dialog';\r\n\r\nexport const ScanConfirmationDialog: React.FC<TScanConfirmDialogProps> = props => (\r\n\r\n // @ts-ignore\r\n <Dialog\r\n open={props.open}\r\n title={props?.title || \"confirmation de l'évènement\"}\r\n onClose={props.onClose}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}\r\n >\r\n <p>\r\n {props?.message || 'Voulez-vous vraiment confirmer le scan ?'}\r\n </p>\r\n <div\r\n style={{\r\n marginTop: '1.25rem',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n marginTop: '1rem'\r\n }}\r\n >\r\n <button\r\n type=\"button\"\r\n className=\"btn\"\r\n style={{\r\n backgroundColor: '#e5e7eb',\r\n color: 'black',\r\n ...props?.btnCancel?.style\r\n }}\r\n onClick={props.onClose}\r\n >\r\n { props?.btnCancel?.label || 'annuler' }\r\n </button>\r\n <button\r\n type=\"button\"\r\n className=\"btn\"\r\n style={{\r\n backgroundColor: '#22c55e',\r\n color: 'white',\r\n ...props?.btnOk?.style\r\n }}\r\n onClick={props.onConfirm}\r\n >\r\n { props?.btnOk?.label || 'confirmer' }\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </Dialog>\r\n);\r\n\r\nexport type TScanConfirmDialogLabels = {\r\n title?: string,\r\n message?: string,\r\n btnOk?: {\r\n label: string,\r\n style?: React.CSSProperties,\r\n },\r\n btnCancel?: {\r\n label: string,\r\n style?: React.CSSProperties,\r\n }\r\n};\r\n\r\nexport type TScanConfirmDialogProps = {\r\n open: boolean\r\n onConfirm: () => void\r\n onClose: () => void\r\n} & TScanConfirmDialogLabels;\r\n","import React, { useCallback, useMemo, useState } from 'react';\r\nimport { IDetectedBarcode, IScannerProps, Scanner as QrScanner, boundingBox, centerText, outline } from '@yudiel/react-qr-scanner';\r\nimport { ScanConfirmationDialog, TScanConfirmDialogLabels } from './ScanConfirmationDialog';\r\n\r\nconst Scanner: React.FC<ScannerProps> = ({ scanConfirmation = true, scanTrackerType = 'centerText', ...props }) => {\r\n const [open, setOpen] = useState<boolean>(false);\r\n const [onConfirm, setOnConfirm] = useState<boolean>(false);\r\n const [currentResult, setCurrentResult] = useState<IDetectedBarcode[]>([]);\r\n\r\n const handleCloseDialog = () => {\r\n setOpen(false);\r\n setOnConfirm(false);\r\n };\r\n\r\n const getTracker = useMemo(() => {\r\n switch (scanTrackerType) {\r\n case 'outline':\r\n return outline;\r\n case 'boundingBox':\r\n return boundingBox;\r\n case 'centerText':\r\n return centerText;\r\n default:\r\n return undefined;\r\n }\r\n }, [scanTrackerType]);\r\n\r\n const handleConfirmScan = useCallback(() => {\r\n handleCloseDialog();\r\n props.onScan(currentResult);\r\n }, [props, currentResult]);\r\n\r\n const handleOnScan = useCallback((result: IDetectedBarcode[]) => {\r\n if (scanConfirmation) {\r\n setOpen(true);\r\n setOnConfirm(true);\r\n setCurrentResult(result);\r\n }\r\n else {\r\n props?.onScan(result);\r\n }\r\n }, [props]);\r\n\r\n const containerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n width: '100%',\r\n gap: '15px',\r\n margin: '20px'\r\n };\r\n\r\n return (\r\n <>\r\n <div style={containerStyle}>\r\n <QrScanner\r\n formats={[\r\n 'qr_code',\r\n 'micro_qr_code',\r\n 'rm_qr_code',\r\n 'maxi_code',\r\n 'pdf417',\r\n 'aztec',\r\n 'data_matrix',\r\n 'matrix_codes',\r\n 'dx_film_edge',\r\n 'databar',\r\n 'databar_expanded',\r\n 'codabar',\r\n 'code_39',\r\n 'code_93',\r\n 'code_128',\r\n 'ean_8',\r\n 'ean_13',\r\n 'itf',\r\n 'linear_codes',\r\n 'upc_a',\r\n 'upc_e'\r\n ]}\r\n components={{\r\n onOff: true,\r\n torch: true,\r\n tracker: getTracker,\r\n finder: false\r\n }}\r\n scanDelay={2000}\r\n allowMultiple={false}\r\n {...props}\r\n onScan={handleOnScan}\r\n paused={onConfirm}\r\n />\r\n </div>\r\n <ScanConfirmationDialog\r\n open={open}\r\n onClose={handleCloseDialog}\r\n onConfirm={handleConfirmScan}\r\n {...props?.scanConfirmDialog}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport type TScanTrackerType = 'outline' | 'boundingBox' | 'centerText';\r\n\r\ntype ScannerProps = {\r\n scanConfirmation?: boolean,\r\n scanConfirmDialog?: TScanConfirmDialogLabels,\r\n scanTrackerType?: TScanTrackerType;\r\n onScan?: (detectedCodes: IDetectedBarcode[]) => void;\r\n} & IScannerProps;\r\n\r\nexport default Scanner;","class FileStorageDB {\r\n private dbName = 'cortex-react-media';\r\n private storeName = 'capturedFiles';\r\n private db: IDBDatabase | null = null;\r\n\r\n async openDatabase(): Promise<IDBDatabase> {\r\n return new Promise((resolve, reject) => {\r\n const request = indexedDB.open(this.dbName, 1);\r\n\r\n request.onupgradeneeded = event => {\r\n const db = request.result;\r\n db.createObjectStore(this.storeName, {\r\n keyPath: 'id',\r\n autoIncrement: true\r\n });\r\n };\r\n\r\n request.onsuccess = () => {\r\n this.db = request.result;\r\n resolve(this.db);\r\n };\r\n\r\n request.onerror = () => reject(request.error);\r\n });\r\n }\r\n\r\n async storeFile(file: File): Promise<number> {\r\n if (!this.db) {\r\n await this.openDatabase();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const transaction = this.db!.transaction(this.storeName, 'readwrite');\r\n const store = transaction.objectStore(this.storeName);\r\n const request = store.add({\r\n file,\r\n timestamp: Date.now(),\r\n name: file.name\r\n });\r\n\r\n request.onsuccess = () => resolve(request.result as number);\r\n request.onerror = () => reject(request.error);\r\n });\r\n }\r\n\r\n async retrieveFile(id: number): Promise<File | null> {\r\n if (!this.db) {\r\n await this.openDatabase();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const transaction = this.db!.transaction([this.storeName], 'readonly');\r\n const store = transaction.objectStore(this.storeName);\r\n const request = store.get(id);\r\n\r\n request.onsuccess = () => {\r\n const record = request.result;\r\n resolve(record ? record.file : null);\r\n };\r\n\r\n request.onerror = () => reject(request.error);\r\n });\r\n }\r\n}\r\n\r\nexport default FileStorageDB;\r\n","import React, { useState, useRef, useCallback, useEffect } from 'react';\r\nimport Webcam, { WebcamProps } from 'react-webcam';\r\nimport { FaCamera, FaPlay, FaPause, FaStop } from 'react-icons/fa';\r\nimport { MdCameraswitch } from 'react-icons/md';\r\nimport { BsFillRecordFill } from 'react-icons/bs';\r\nimport { useTimer } from './useTimer';\r\nimport FileStorageDB from './FileStorageDb';\r\nimport Button from '../Button';\r\n\r\nconst Camera: React.FC<CameraProps> = ({\r\n onCapture,\r\n isOffline = false,\r\n mode = 'photo',\r\n validateText = 'Valider',\r\n resetText = 'Annuler',\r\n isShowOffline = false,\r\n isShowVideoButton = false,\r\n isShowSwitchButton = false,\r\n ...props\r\n}) => {\r\n const webcamRef = useRef<Webcam>(null);\r\n const mediaRecorderRef = useRef<MediaRecorder | null>(null);\r\n const fileStorageRef = useRef(new FileStorageDB());\r\n const [mode_, setMode] = useState(mode);\r\n const [playing, setPlaying] = useState(false);\r\n const [isFrontCamera, setIsFrontCamera] = useState(false);\r\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent) || navigator.maxTouchPoints > 0 || 'ontouchstart' in document.documentElement;\r\n const MdCameraswitchItem = MdCameraswitch as React.FC<{ size?: number }>;\r\n const FaCameraItem = FaCamera as React.FC<{ size?: number }>;\r\n const BsFillRecordFillItem = BsFillRecordFill as React.FC<{ size?: number }>;\r\n const FaStopItem = FaStop as React.FC<{ size?: number }>;\r\n const FaPlayItem = FaPlay as React.FC;\r\n const FaPauseItem = FaPause as React.FC;\r\n\r\n const { formatedTime, startTimer, stopTimer } = useTimer();\r\n\r\n const [mediaState, setMediaState] = useState<MediaState>({\r\n imageUrl: null,\r\n videoUrl: null,\r\n isRecording: false,\r\n storedFileId: null,\r\n file: null\r\n });\r\n\r\n const [videoConstraints, setVideoConstraints] = useState<boolean | MediaTrackConstraints | undefined>({\r\n facingMode: 'environment',\r\n width: { min: 200 },\r\n height: { min: 300 }\r\n });\r\n\r\n useEffect(() => {\r\n setVideoConstraints({\r\n facingMode: isMobile ? 'environment' : 'user',\r\n width: { min: 200 },\r\n height: { min: 300 }\r\n });\r\n\r\n return () => {\r\n resetCapture();\r\n stopTimer();\r\n stopVideoRecording();\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (mode_ === 'video') {\r\n setPlaying(false);\r\n }\r\n }, [mediaState]);\r\n\r\n const capturePhoto = useCallback(async () => {\r\n const imageSrc = webcamRef.current?.getScreenshot();\r\n if (imageSrc) {\r\n const byteCharacters = atob(imageSrc.split(',')[1]);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const blob = new Blob([byteArray], { type: 'image/jpeg' });\r\n\r\n const fileName = `captured_image_${Date.now().toString().slice(-7)}.jpg`;\r\n const file = new File([blob], fileName, { type: 'image/jpeg' });\r\n\r\n const fileUrl = URL.createObjectURL(file);\r\n\r\n setMediaState(prev => ({\r\n ...prev,\r\n imageUrl: fileUrl,\r\n file\r\n }));\r\n }\r\n }, [webcamRef, isOffline, onCapture]);\r\n\r\n const handlePlay = () => {\r\n const video = document.getElementById('video') as HTMLVideoElement;\r\n try {\r\n if (video.paused) {\r\n video.play();\r\n }\r\n else {\r\n video.pause();\r\n }\r\n setPlaying(!playing);\r\n }\r\n catch (e) { }\r\n };\r\n\r\n const startVideoRecording = useCallback(() => {\r\n if (webcamRef.current && webcamRef.current.stream) {\r\n let ext = 'webm';\r\n let mimeType = `video/${ext}`;\r\n\r\n if (MediaRecorder.isTypeSupported('video/mp4')) {\r\n ext = 'mp4';\r\n mimeType = 'video/mp4';\r\n }\r\n\r\n const mediaRecorder = new MediaRecorder(webcamRef.current.stream, { mimeType });\r\n\r\n const chunks: Blob[] = [];\r\n\r\n mediaRecorder.ondataavailable = e => {\r\n if (e.data.size > 0) {\r\n chunks.push(e.data);\r\n }\r\n };\r\n\r\n mediaRecorder.onstop = async () => {\r\n const blob = new Blob(chunks, { type: mimeType });\r\n\r\n const fileName = `captured_video_${Date.now()}.${ext}`;\r\n const file = new File([blob], fileName, { type: mimeType });\r\n\r\n const fileUrl = URL.createObjectURL(file);\r\n\r\n setMediaState(prev => ({\r\n ...prev,\r\n videoUrl: fileUrl,\r\n isRecording: false,\r\n file\r\n }));\r\n stopTimer();\r\n };\r\n\r\n mediaRecorder.start();\r\n mediaRecorderRef.current = mediaRecorder;\r\n startTimer();\r\n setMediaState(prev => ({ ...prev, isRecording: true }));\r\n }\r\n }, [webcamRef, isOffline, startTimer, stopTimer, onCapture]);\r\n\r\n const resetCapture = () => {\r\n setMediaState({\r\n imageUrl: null,\r\n videoUrl: null,\r\n isRecording: false,\r\n storedFileId: null,\r\n file: null\r\n });\r\n };\r\n\r\n const switchMode = (val: any) => {\r\n setMode(val);\r\n resetCapture();\r\n };\r\n\r\n const validateCapture = async () => {\r\n if (isOffline) {\r\n const storedFileId = await fileStorageRef.current.storeFile(mediaState.file!);\r\n onCapture({\r\n fileRowId: storedFileId,\r\n fileStoreName: 'capturedFiles'\r\n });\r\n }\r\n if (!isOffline && mode_ === 'photo') {\r\n onCapture({\r\n file: mediaState.file,\r\n imageSrc: mediaState.imageUrl\r\n });\r\n }\r\n if (!isOffline && mode_ === 'video') {\r\n onCapture({\r\n file: mediaState.file,\r\n videoSrc: mediaState.videoUrl\r\n });\r\n }\r\n resetCapture();\r\n };\r\n\r\n return (\r\n <div className=\"camera-container\">\r\n {!mediaState.imageUrl && !mediaState.videoUrl ? (\r\n <div className=\"camera-preview\">\r\n {\r\n mediaState.isRecording && (\r\n <div className=\"camera-recording-timer\" style={{ display: mode_ === 'video' ? 'flex' : 'none' }}>\r\n <span className=\"camera-recording-dot\" />\r\n <span>{formatedTime}</span>\r\n </div>\r\n )\r\n }\r\n {\r\n !mediaState.isRecording && isShowVideoButton && (\r\n <button\r\n type=\"button\"\r\n onClick={() => switchMode(mode_ === 'photo' ? 'video' : 'photo')}\r\n className=\"camera-button camera-mode\"\r\n >\r\n <span>{mode_ === 'photo' ? 'Video' : 'Photo'}</span>\r\n </button>\r\n )\r\n }\r\n {\r\n isMobile && !mediaState.isRecording && isShowSwitchButton && (\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsFrontCamera(!isFrontCamera);\r\n setVideoConstraints({\r\n facingMode: !isFrontCamera ? 'user' : 'environment',\r\n width: { min: 200 },\r\n height: { min: 300 }\r\n });\r\n }}\r\n className=\"camera-button camera-switch\"\r\n >\r\n <MdCameraswitchItem size={18} />\r\n </button>\r\n )\r\n }\r\n {\r\n isOffline && isShowOffline && (\r\n <div className=\"camera-offline-mode\">\r\n Offline mode\r\n </div>\r\n )\r\n }\r\n <Webcam\r\n ref={webcamRef}\r\n videoConstraints={{\r\n facingMode: 'environment',\r\n width: { min: 200 },\r\n height: { min: 300 }\r\n }}\r\n {...props}\r\n style={{\r\n height: '90% !important',\r\n objectFit: 'contain',\r\n overflowClipMargin: 'content-box',\r\n overflow: 'clip',\r\n aspectRatio: '16/9',\r\n display: 'flex',\r\n justifySelf: 'center',\r\n margin: '0 auto'\r\n }}\r\n screenshotFormat=\"image/jpeg\"\r\n allowFullScreen\r\n />\r\n <div className=\"camera-controls\">\r\n {mode_ === 'photo' && (\r\n <Button\r\n variant=\"contained\"\r\n className=\"camera-button camera-button--capture\"\r\n onClick={capturePhoto}\r\n >\r\n <FaCameraItem size={28} />\r\n </Button>\r\n )}\r\n {mode_ === 'video' && !mediaState.isRecording && (\r\n <Button\r\n variant=\"contained\"\r\n onClick={startVideoRecording}\r\n className=\"camera-button camera-button--record\"\r\n >\r\n <BsFillRecordFillItem size={30} />\r\n </Button>\r\n )}\r\n {mode_ === 'video' && mediaState.isRecording && (\r\n <Button\r\n variant=\"contained\"\r\n onClick={stopVideoRecording}\r\n className=\"camera-button camera-button--record\"\r\n >\r\n <FaStopItem size={28} />\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\"camera-preview camera-screen-animation\">\r\n {mediaState.imageUrl && (\r\n <img\r\n src={mediaState.imageUrl}\r\n alt=\"Capturé\"\r\n style={{\r\n height: '90%',\r\n objectFit: 'contain',\r\n overflowClipMargin: 'content-box',\r\n overflow: 'clip',\r\n aspectRatio: '16/9',\r\n display: 'flex',\r\n justifySelf: 'center'\r\n }}\r\n />\r\n )}\r\n {mediaState.videoUrl && (\r\n <video\r\n width=\"100%\"\r\n height=\"90%\"\r\n id=\"video\"\r\n style={{\r\n height: '90%',\r\n objectFit: 'contain',\r\n overflowClipMargin: 'content-box',\r\n overflow: 'clip',\r\n aspectRatio: '16/9',\r\n display: 'flex',\r\n justifySelf: 'center'\r\n }}\r\n onEnded={() => setPlaying(false)}\r\n >\r\n <source src={mediaState.videoUrl} type=\"video/mp4\" />\r\n <source src={mediaState.videoUrl} type=\"video/webm\" />\r\n <track kind=\"captions\" src=\"\" lang=\"en\" label=\"English\" default />\r\n Your browser does not support the video.\r\n </video>\r\n )}\r\n {mediaState.videoUrl && (\r\n <Button\r\n variant=\"contained\"\r\n className=\"video-play-btn\"\r\n onClick={handlePlay}\r\n >\r\n {!playing ? <FaPlayItem /> : <FaPauseItem />}\r\n </Button>\r\n )}\r\n <div className=\"camera-controls\">\r\n <Button\r\n variant=\"contained\"\r\n onClick={validateCapture}\r\n className=\"camera-button camera-button--download\"\r\n >\r\n {validateText}\r\n </Button>\r\n <Button\r\n variant=\"outlined\"\r\n onClick={resetCapture}\r\n className=\"camera-button camera-button--reset\"\r\n >\r\n {resetText}\r\n </Button>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n\r\n function stopVideoRecording() {\r\n if (mediaRecorderRef.current) {\r\n mediaRecorderRef.current.stop();\r\n }\r\n }\r\n};\r\n\r\ntype MediaState = {\r\n imageUrl: string | null;\r\n videoUrl: string | null;\r\n isRecording: boolean;\r\n file: File | null;\r\n storedFileId: number | null;\r\n}\r\n\r\nexport type CameraProps = {\r\n onCapture: ({ fileStoreName, fileRowId, file }: TfileCapturedProps) => void;\r\n mode?: 'photo' | 'video';\r\n isOffline?: boolean;\r\n isShowOffline?: boolean;\r\n validateText?: string;\r\n resetText?:string;\r\n isShowVideoButton?: boolean;\r\n isShowSwitchButton?: boolean;\r\n} & Partial<WebcamProps>;\r\n\r\nexport type TfileCapturedProps = {\r\n fileStoreName?: string | null,\r\n fileRowId?: number | null,\r\n file?: File | null,\r\n imageSrc?: string | null,\r\n videoSrc?: string | null\r\n}\r\n\r\nexport default Camera;","import { useCallback, useMemo, useRef, useState } from 'react';\r\n\r\nexport const useTimer = () => {\r\n const timerIntervalRef = useRef<any>(null);\r\n const [recordingTime, setRecordingTime] = useState(0);\r\n\r\n const formatTime = (totalSeconds: number) => {\r\n const days = Math.floor(totalSeconds / (24 * 3600));\r\n const hours = Math.floor((totalSeconds % (24 * 3600)) / 3600);\r\n const minutes = Math.floor((totalSeconds % 3600) / 60);\r\n const seconds = totalSeconds % 60;\r\n return `${days > 0 ? days.toString().padStart(2, '0').concat(':') : ''}${hours > 0 ? hours.toString().padStart(2, '0').concat(':') : ''}${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n };\r\n\r\n const formatedTime = useMemo(() => formatTime(recordingTime), [recordingTime]);\r\n\r\n const startTimer = useCallback(() => {\r\n setRecordingTime(0);\r\n timerIntervalRef.current = setInterval(() => {\r\n setRecordingTime(prev => prev + 1);\r\n }, 1000);\r\n }, []);\r\n\r\n const stopTimer = useCallback(() => {\r\n if (timerIntervalRef.current) {\r\n clearInterval(timerIntervalRef.current);\r\n timerIntervalRef.current = null;\r\n }\r\n }, []);\r\n\r\n return {\r\n formatTime,\r\n startTimer,\r\n stopTimer,\r\n formatedTime\r\n };\r\n};","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface ToggleButtonProps {\r\n selected?: boolean;\r\n value?: string;\r\n className?: string;\r\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n children?: React.ReactNode;\r\n onChange?: (value: string | undefined) => void;\r\n}\r\n\r\nconst ToggleButton: React.FC<ToggleButtonProps> = ({\r\n selected,\r\n value,\r\n size,\r\n children,\r\n className,\r\n onChange\r\n}: ToggleButtonProps) => {\r\n const handleBtnClick = React.useCallback(() => {\r\n if (onChange) {\r\n onChange(value);\r\n }\r\n }, [onChange, value]);\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n className={classNames(\r\n 'ui-toggleBtn',\r\n size !== undefined ? `ui-toggleBtn-size-${size}` : 'ui-toggleBtn-size-md',\r\n selected === true ? 'ui-toggleBtn-selected' : null,\r\n className\r\n )}\r\n onClick={handleBtnClick}\r\n >\r\n {children}\r\n </button>\r\n );\r\n};\r\n\r\nexport default ToggleButton;","import React from 'react';\r\nimport CSSTransition from './CSSTransition';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\ntype Props = {\r\n trigger: boolean,\r\n children?: React.ReactElement;\r\n onEnter?: () => void;\r\n onEntering?: () => void;\r\n onEntered?: () => void;\r\n onExit?: () => void;\r\n onExiting?: () => void;\r\n onExited?: () => void;\r\n};\r\n\r\nconst Fade = forwardRef<HTMLElement, Props>(({\r\n trigger,\r\n children,\r\n onEnter,\r\n onEntering,\r\n onEntered,\r\n onExit,\r\n onExiting,\r\n onExited\r\n}, ref) => (\r\n <CSSTransition\r\n ref={ref}\r\n trigger={trigger}\r\n mode=\"appear\"\r\n className=\"ui-fade\"\r\n enterTimeout={160}\r\n exitTimeout={160}\r\n onEnter={onEnter}\r\n onExit={onExit}\r\n onEntering={onEntering}\r\n onEntered={onEntered}\r\n onExiting={onExiting}\r\n onExited={onExited}\r\n >\r\n {children}\r\n </CSSTransition>\r\n));\r\n\r\nexport default Fade;\r\n","import React from 'react';\r\nimport Popper from '../Popper';\r\nimport Fade from '../Transition/Fade';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface TooltipProps {\r\n children?: React.ReactElement;\r\n anchorEl?: string | HTMLElement | React.RefObject<HTMLElement>;\r\n title: React.ReactNode;\r\n enterDelay?: number;\r\n leaveDelay?: number;\r\n className?: string;\r\n disabled?: boolean;\r\n}\r\n\r\nconst Tooltip: React.FC<TooltipProps> = ({\r\n children,\r\n title,\r\n anchorEl,\r\n enterDelay = 0,\r\n leaveDelay = 0,\r\n className,\r\n disabled\r\n}) => {\r\n const [childNode, setChildNode] = React.useState<HTMLElement | undefined>(undefined);\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const [isTransitionExited, setTransitionExited] = React.useState(true);\r\n const [isTouchDevice, setIsTouchDevice] = React.useState(false);\r\n const mouseEnterTimer = React.useRef<number>();\r\n const mouseLeaveTimer = React.useRef<number>();\r\n const transition = true;\r\n\r\n React.useEffect(() => {\r\n if (disabled === true) {\r\n setIsOpen(false);\r\n }\r\n }, [disabled]);\r\n\r\n const openTooltip = () => {\r\n setIsOpen(true);\r\n };\r\n\r\n const closeTooltip = () => {\r\n setIsOpen(false);\r\n };\r\n\r\n const handleFocus = (event: React.MouseEvent<HTMLElement>) => {\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n\r\n mouseEnterTimer.current = setTimeout(\r\n () => {\r\n openTooltip();\r\n },\r\n enterDelay\r\n );\r\n };\r\n\r\n const handleMouseEnter = (event: React.MouseEvent<HTMLElement>) => {\r\n if (isTouchDevice) return;\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n if (disabled !== true) {\r\n mouseEnterTimer.current = setTimeout(\r\n () => {\r\n openTooltip();\r\n },\r\n enterDelay\r\n );\r\n }\r\n };\r\n\r\n const handleMouseLeave = (event: React.MouseEvent<HTMLElement>) => {\r\n if (isTouchDevice) return;\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n mouseLeaveTimer.current = setTimeout(\r\n () => {\r\n closeTooltip();\r\n },\r\n leaveDelay\r\n );\r\n };\r\n\r\n const handleMouseOver = (event: React.MouseEvent<HTMLElement>) => {\r\n if (isTouchDevice) return;\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n if (disabled !== true) {\r\n mouseEnterTimer.current = setTimeout(\r\n () => {\r\n openTooltip();\r\n },\r\n enterDelay\r\n );\r\n }\r\n };\r\n\r\n const handleTouchStart = (event: React.TouchEvent<HTMLDivElement>) => {\r\n setIsTouchDevice(true);\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n if (disabled !== true) {\r\n mouseEnterTimer.current = setTimeout(\r\n () => {\r\n openTooltip();\r\n },\r\n 2000\r\n );\r\n }\r\n };\r\n\r\n const handleTouchEnd = (event: React.TouchEvent<HTMLDivElement>) => {\r\n clearTimeout(mouseEnterTimer.current);\r\n clearTimeout(mouseLeaveTimer.current);\r\n\r\n if (!childNode) {\r\n setChildNode(event.currentTarget);\r\n }\r\n mouseLeaveTimer.current = setTimeout(\r\n () => {\r\n closeTooltip();\r\n },\r\n 3000\r\n );\r\n };\r\n\r\n let childrenNode: React.ReactElement | undefined;\r\n if (children) {\r\n const childrenProps = {\r\n ...children.props,\r\n onFocus: handleFocus,\r\n onMouseEnter: handleMouseEnter,\r\n onMouseLeave: handleMouseLeave,\r\n onMouseOver: handleMouseOver,\r\n onTouchStart: handleTouchStart,\r\n onTouchEnd: handleTouchEnd\r\n };\r\n\r\n childrenNode = React.cloneElement(children, childrenProps);\r\n }\r\n\r\n const handleTransitionEnter = () => {\r\n setTransitionExited(false);\r\n };\r\n\r\n const handleTransitionExited = () => {\r\n setTransitionExited(true);\r\n };\r\n\r\n const computeOpen = isOpen || (transition && !isTransitionExited);\r\n return (\r\n <>\r\n {childrenNode}\r\n\r\n <Popper\r\n role=\"tooltip\"\r\n anchorEl={childNode}\r\n open={computeOpen}\r\n className={classNames(\r\n 'ui-tooltip',\r\n className\r\n )}\r\n onMouseOver={!isTouchDevice ? handleMouseOver : undefined}\r\n onMouseLeave={!isTouchDevice ? handleMouseLeave : undefined}\r\n onTouchStart={handleTouchStart}\r\n onTouchEnd={handleTouchEnd}\r\n >\r\n <Fade\r\n trigger={isOpen}\r\n onEnter={handleTransitionEnter}\r\n onExited={handleTransitionExited}\r\n >\r\n <div className=\"ui-tooltip-content\">\r\n {title}\r\n </div>\r\n </Fade>\r\n </Popper>\r\n\r\n </>\r\n );\r\n};\r\n\r\nexport default Tooltip;","import * as React from 'react';\r\n\r\nconst getAnchorElement = (anchorEl: string | HTMLElement | React.RefObject<HTMLElement> | undefined): HTMLElement | undefined => {\r\n if (!anchorEl) return document.body;\r\n if (Object.prototype.toString.call(anchorEl) === '[object String]') {\r\n const element = document.getElementById(anchorEl as string);\r\n return element ?? document.body;\r\n }\r\n\r\n const ref = anchorEl as React.RefObject<HTMLElement>;\r\n if (ref && ref.current !== undefined) {\r\n return ref.current ?? undefined;\r\n }\r\n\r\n return anchorEl as HTMLElement;\r\n};\r\n\r\nexport default function useClickOutside(\r\n callback: () => void,\r\n nodes: (string | HTMLElement | React.RefObject<HTMLElement>)[],\r\n): void {\r\n const handleDocumentMouseDown = React.useCallback((event: MouseEvent) => {\r\n const { target } = event;\r\n\r\n const isOutside = nodes.reduce((acc, item) => {\r\n if (!item) return acc;\r\n const element = getAnchorElement(item);\r\n if (acc === false || !element || element === null) return acc;\r\n\r\n return !element.contains(target as Node);\r\n }, true);\r\n\r\n if (callback && isOutside) {\r\n callback();\r\n }\r\n }, [callback]);\r\n\r\n React.useEffect(() => {\r\n document.addEventListener('mousedown', handleDocumentMouseDown);\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', handleDocumentMouseDown);\r\n };\r\n }, [nodes, handleDocumentMouseDown]);\r\n}","import React from 'react';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TooltipProps {\r\n tag: Cortex.Tag;\r\n className?: string;\r\n onDelete?: () => void;\r\n}\r\n\r\nconst TagItem: React.FC<TooltipProps> = ({ tag, className, onDelete }) => (\r\n <span className=\"ui-taginputItem\">\r\n <span className=\"ui-taginputItemLabel\">{tag.label}</span>\r\n <button\r\n type=\"button\"\r\n className=\"ui-taginputItemRemove\"\r\n onClick={onDelete}\r\n >\r\n x\r\n </button>\r\n </span>\r\n);\r\n\r\nexport default TagItem;","(function(previousMethods){\nif (typeof previousMethods === 'undefined') {\n // Defining previously that object allows you to use that plugin even if you have overridden L.map\n previousMethods = {\n getCenter: L.Map.prototype.getCenter,\n setView: L.Map.prototype.setView,\n flyTo: L.Map.prototype.flyTo,\n setZoomAround: L.Map.prototype.setZoomAround,\n getBoundsZoom: L.Map.prototype.getBoundsZoom,\n PopupAdjustPan: L.Popup.prototype._adjustPan,\n RendererUpdate: L.Renderer.prototype._update\n };\n}\n\nL.Map.include({\n\n // Overrides L.Map.getBounds\n getBounds: function() {\n if (this._viewport) {\n return this.getViewportLatLngBounds()\n } else {\n var bounds = this.getPixelBounds(),\n sw = this.unproject(bounds.getBottomLeft()),\n ne = this.unproject(bounds.getTopRight());\n\n return new L.LatLngBounds(sw, ne);\n }\n },\n\n // Extends L.Map\n getViewport: function() {\n return this._viewport;\n },\n\n // Extends L.Map\n getViewportBounds: function() {\n var vp = this._viewport,\n topleft = L.point(vp.offsetLeft, vp.offsetTop),\n vpsize = L.point(vp.clientWidth, vp.clientHeight);\n\n if (vpsize.x === 0 || vpsize.y === 0) {\n //Our own viewport has no good size - so we fallback to the container size:\n vp = this.getContainer();\n if(vp){\n topleft = L.point(0, 0);\n vpsize = L.point(vp.clientWidth, vp.clientHeight);\n }\n\n }\n\n return L.bounds(topleft, topleft.add(vpsize));\n },\n\n // Extends L.Map\n getViewportLatLngBounds: function() {\n var bounds = this.getViewportBounds();\n return L.latLngBounds(this.containerPointToLatLng(bounds.min), this.containerPointToLatLng(bounds.max));\n },\n\n // Extends L.Map\n getOffset: function() {\n var mCenter = this.getSize().divideBy(2),\n vCenter = this.getViewportBounds().getCenter();\n\n return mCenter.subtract(vCenter);\n },\n\n // Overrides L.Map.getCenter\n getCenter: function (withoutViewport) {\n var center = previousMethods.getCenter.call(this);\n\n if (this.getViewport() && !withoutViewport) {\n var zoom = this.getZoom(),\n point = this.project(center, zoom);\n point = point.subtract(this.getOffset());\n\n center = this.unproject(point, zoom);\n }\n\n return center;\n },\n\n // Overrides L.Map.setView\n setView: function (center, zoom, options) {\n center = L.latLng(center);\n zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom);\n\n if (this.getViewport()) {\n var point = this.project(center, this._limitZoom(zoom));\n point = point.add(this.getOffset());\n center = this.unproject(point, this._limitZoom(zoom));\n }\n\n return previousMethods.setView.call(this, center, zoom, options);\n },\n\n // Overrides L.Map.flyTo\n flyTo: function (targetCenter, targetZoom, options) {\n targetCenter = L.latLng(targetCenter);\n targetZoom = targetZoom === undefined ? startZoom : targetZoom;\n\n if (this.getViewport()) {\n var point = this.project(targetCenter, this._limitZoom(targetZoom));\n point = point.add(this.getOffset());\n targetCenter = this.unproject(point, this._limitZoom(targetZoom));\n }\n\n options = options || {};\n if (options.animate === false || !L.Browser.any3d) {\n return this.setView(targetCenter, targetZoom, options);\n }\n\n this._stop();\n\n var from = this.project(previousMethods.getCenter.call(this)),\n to = this.project(targetCenter),\n size = this.getSize(),\n startZoom = this._zoom;\n\n\n var w0 = Math.max(size.x, size.y),\n w1 = w0 * this.getZoomScale(startZoom, targetZoom),\n u1 = (to.distanceTo(from)) || 1,\n rho = 1.42,\n rho2 = rho * rho;\n\n function r(i) {\n var s1 = i ? -1 : 1,\n s2 = i ? w1 : w0,\n t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1,\n b1 = 2 * s2 * rho2 * u1,\n b = t1 / b1,\n sq = Math.sqrt(b * b + 1) - b;\n\n // workaround for floating point precision bug when sq = 0, log = -Infinite,\n // thus triggering an infinite loop in flyTo\n var log = sq < 0.000000001 ? -18 : Math.log(sq);\n\n return log;\n }\n\n function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; }\n function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; }\n function tanh(n) { return sinh(n) / cosh(n); }\n\n var r0 = r(0);\n\n function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); }\n function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; }\n\n function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); }\n\n var start = Date.now(),\n S = (r(1) - r0) / rho,\n duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8;\n\n function frame() {\n var t = (Date.now() - start) / duration,\n s = easeOut(t) * S;\n\n if (t <= 1) {\n this._flyToFrame = L.Util.requestAnimFrame(frame, this);\n\n this._move(\n this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom),\n this.getScaleZoom(w0 / w(s), startZoom),\n {flyTo: true});\n\n } else {\n this\n ._move(targetCenter, targetZoom)\n ._moveEnd(true);\n }\n }\n\n this._moveStart(true, options.noMoveStart);\n\n frame.call(this);\n return this;\n },\n\n // Overrides L.Map.setZoomAround\n setZoomAround: function (latlng, zoom, options) {\n var vp = this.getViewport();\n\n if (vp) {\n var scale = this.getZoomScale(zoom),\n viewHalf = this.getViewportBounds().getCenter(),\n containerPoint = latlng instanceof L.Point ? latlng : this.latLngToContainerPoint(latlng),\n\n centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale),\n newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset));\n\n return this.setView(newCenter, zoom, {zoom: options});\n } else {\n return previousMethods.setZoomAround.call(this, latlng, zoom, options);\n }\n },\n\n // Overrides L.Map.getBoundsZoom\n getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number\n bounds = L.latLngBounds(bounds);\n padding = L.point(padding || [0, 0]);\n\n var zoom = this.getZoom() || 0,\n min = this.getMinZoom(),\n max = this.getMaxZoom(),\n nw = bounds.getNorthWest(),\n se = bounds.getSouthEast(),\n vp = this.getViewport(),\n size = (vp ? L.point(vp.clientWidth, vp.clientHeight) : this.getSize()).subtract(padding),\n boundsSize = this.project(se, zoom).subtract(this.project(nw, zoom)),\n snap = L.Browser.any3d ? this.options.zoomSnap : 1,\n scalex = size.x / boundsSize.x,\n scaley = size.y / boundsSize.y,\n scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley);\n\n zoom = this.getScaleZoom(scale, zoom);\n\n if (snap) {\n zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level\n zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap;\n }\n\n return Math.max(min, Math.min(max, zoom));\n },\n\n // Extends L.Map\n setActiveArea: function (css, keepCenter, animate) {\n var center;\n if (keepCenter && this._zoom) {\n // save center if map is already initialized\n // and keepCenter is passed\n center = this.getCenter();\n }\n\n if( !this._viewport ){\n //Make viewport if not already made\n var container = this.getContainer();\n this._viewport = L.DomUtil.create('div', '');\n container.insertBefore(this._viewport, container.firstChild);\n }\n\n if (typeof css === 'string') {\n this._viewport.className = css;\n } else {\n L.extend(this._viewport.style, css);\n }\n\n if (center) {\n this.setView(center, this.getZoom(), { animate: !!animate });\n }\n return this;\n }\n});\n\nL.Renderer.include({\n\n // Overrides L.Renderer._onZoom\n _onZoom: function () {\n this._updateTransform(this._map.getCenter(true), this._map.getZoom());\n },\n\n // Overrides L.Renderer._update\n _update: function () {\n previousMethods.RendererUpdate.call(this);\n this._center = this._map.getCenter(true);\n }\n});\n\nL.GridLayer.include({\n\n // Overrides L.GridLayer._updateLevels\n _updateLevels: function () {\n\n var zoom = this._tileZoom,\n maxZoom = this.options.maxZoom;\n\n if (zoom === undefined) { return undefined; }\n\n for (var z in this._levels) {\n z = Number(z);\n if (this._levels[z].el.children.length || z === zoom) {\n this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z);\n this._onUpdateLevel(z);\n } else {\n L.DomUtil.remove(this._levels[z].el);\n this._removeTilesAtZoom(z);\n this._onRemoveLevel(z);\n delete this._levels[z];\n }\n }\n\n var level = this._levels[zoom],\n map = this._map;\n\n if (!level) {\n level = this._levels[zoom] = {};\n\n level.el = L.DomUtil.create('div', 'leaflet-tile-container leaflet-zoom-animated', this._container);\n level.el.style.zIndex = maxZoom;\n\n level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round();\n level.zoom = zoom;\n\n this._setZoomTransform(level, map.getCenter(true), map.getZoom());\n\n // force the browser to consider the newly added element for transition\n L.Util.falseFn(level.el.offsetWidth);\n\n this._onCreateLevel(level);\n }\n\n this._level = level;\n\n return level;\n },\n\n // Overrides L.GridLayer._resetView\n _resetView: function (e) {\n var animating = e && (e.pinch || e.flyTo);\n this._setView(this._map.getCenter(true), this._map.getZoom(), animating, animating);\n },\n\n // Overrides L.GridLayer._update\n _update: function (center) {\n var map = this._map;\n if (!map) { return; }\n var zoom = this._clampZoom(map.getZoom());\n\n if (center === undefined) { center = map.getCenter(true); }\n if (this._tileZoom === undefined) { return; } // if out of minzoom/maxzoom\n\n var pixelBounds = this._getTiledPixelBounds(center),\n tileRange = this._pxBoundsToTileRange(pixelBounds),\n tileCenter = tileRange.getCenter(),\n queue = [],\n margin = this.options.keepBuffer,\n noPruneRange = new L.Bounds(tileRange.getBottomLeft().subtract([margin, -margin]),\n tileRange.getTopRight().add([margin, -margin]));\n\n // Sanity check: panic if the tile range contains Infinity somewhere.\n if (!(isFinite(tileRange.min.x) &&\n isFinite(tileRange.min.y) &&\n isFinite(tileRange.max.x) &&\n isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); }\n\n for (var key in this._tiles) {\n var c = this._tiles[key].coords;\n if (c.z !== this._tileZoom || !noPruneRange.contains(new L.Point(c.x, c.y))) {\n this._tiles[key].current = false;\n }\n }\n\n // _update just loads more tiles. If the tile zoom level differs too much\n // from the map's, let _setView reset levels and prune old tiles.\n if (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; }\n\n // create a queue of coordinates to load tiles from\n for (var j = tileRange.min.y; j <= tileRange.max.y; j++) {\n for (var i = tileRange.min.x; i <= tileRange.max.x; i++) {\n var coords = new L.Point(i, j);\n coords.z = this._tileZoom;\n\n if (!this._isValidTile(coords)) { continue; }\n\n var tile = this._tiles[this._tileCoordsToKey(coords)];\n if (tile) {\n tile.current = true;\n } else {\n queue.push(coords);\n }\n }\n }\n\n // sort tile queue to load tiles in order of their distance to center\n queue.sort(function (a, b) {\n return a.distanceTo(tileCenter) - b.distanceTo(tileCenter);\n });\n\n if (queue.length !== 0) {\n // if it's the first batch of tiles to load\n if (!this._loading) {\n this._loading = true;\n // @event loading: Event\n // Fired when the grid layer starts loading tiles.\n this.fire('loading');\n }\n\n // create DOM fragment to append tiles in one batch\n var fragment = document.createDocumentFragment();\n\n for (i = 0; i < queue.length; i++) {\n this._addTile(queue[i], fragment);\n }\n\n this._level.el.appendChild(fragment);\n }\n }\n});\n\nL.Popup.include({\n\n // Overrides L.Popup._adjustPan\n _adjustPan: function () {\n if (!this._map._viewport) {\n previousMethods.PopupAdjustPan.call(this);\n } else {\n if (!this.options.autoPan) { return; }\n if (this._map._panAnim) { this._map._panAnim.stop(); }\n\n var map = this._map,\n vp = map._viewport,\n containerHeight = this._container.offsetHeight,\n containerWidth = this._containerWidth,\n vpTopleft = L.point(vp.offsetLeft, vp.offsetTop),\n\n layerPos = new L.Point(\n this._containerLeft - vpTopleft.x,\n - containerHeight - this._containerBottom - vpTopleft.y);\n\n layerPos._add(L.DomUtil.getPosition(this._container));\n\n var containerPos = map.layerPointToContainerPoint(layerPos),\n padding = L.point(this.options.autoPanPadding),\n paddingTL = L.point(this.options.autoPanPaddingTopLeft || padding),\n paddingBR = L.point(this.options.autoPanPaddingBottomRight || padding),\n size = L.point(vp.clientWidth, vp.clientHeight),\n dx = 0,\n dy = 0;\n\n if (containerPos.x + containerWidth + paddingBR.x > size.x) { // right\n dx = containerPos.x + containerWidth - size.x + paddingBR.x;\n }\n if (containerPos.x - dx - paddingTL.x < 0) { // left\n dx = containerPos.x - paddingTL.x;\n }\n if (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom\n dy = containerPos.y + containerHeight - size.y + paddingBR.y;\n }\n if (containerPos.y - dy - paddingTL.y < 0) { // top\n dy = containerPos.y - paddingTL.y;\n }\n\n // @namespace Map\n // @section Popup events\n // @event autopanstart: Event\n // Fired when the map starts autopanning when opening a popup.\n if (dx || dy) {\n map\n .fire('autopanstart')\n .panBy([dx, dy]);\n }\n }\n }\n});\n\n})(window.leafletActiveAreaPreviousMethods);\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport setRef from '../utils/setRef';\r\nimport { forwardRef } from '../utils/forwardRef';\r\n\r\nexport interface TagSearchInputProps {\r\n className?: string;\r\n value: string;\r\n onClick?: () => void;\r\n onChange?: (value: string) => void;\r\n}\r\n\r\nconst TagSearchInput = forwardRef<HTMLElement, TagSearchInputProps>(({\r\n className,\r\n value,\r\n onClick,\r\n onChange\r\n}, ref) => {\r\n const inputRef = React.useRef(null);\r\n\r\n const handleInputChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (!onChange) return;\r\n onChange(event.target.value);\r\n }, [onChange]);\r\n\r\n React.useEffect(() => {\r\n if (ref && inputRef) {\r\n setRef(ref, inputRef.current);\r\n\r\n return () => {\r\n setRef(ref, null);\r\n };\r\n }\r\n\r\n return undefined;\r\n }, [ref, inputRef]);\r\n\r\n return (\r\n <>\r\n <input\r\n ref={inputRef}\r\n value={value}\r\n className={classNames('ui-taginputFilter', className)}\r\n autoComplete=\"off\"\r\n spellCheck=\"false\"\r\n data-form-type=\"other\"\r\n onChange={handleInputChange}\r\n onClick={onClick}\r\n />\r\n </>\r\n );\r\n});\r\n\r\nexport default TagSearchInput;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TagSuggestionItemProps {\r\n suggestion: Cortex.TagSuggestion;\r\n onClick?: (suggestion: Cortex.TagSuggestion, event: React.MouseEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nconst TagSuggestionItem: React.FC<TagSuggestionItemProps> = ({\r\n suggestion,\r\n onClick\r\n}: TagSuggestionItemProps) => {\r\n const handleClick = React.useCallback((event: React.MouseEvent<HTMLDivElement>) => {\r\n if (!onClick) return;\r\n onClick(suggestion, event);\r\n }, [onClick]);\r\n\r\n return (\r\n <div\r\n role=\"button\"\r\n className=\"ui-taginputSelectItem\"\r\n tabIndex={0}\r\n onClick={handleClick}\r\n >\r\n {suggestion.label}\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagSuggestionItem;","import React from 'react';\r\nimport TagSuggestionItem from './TagSuggestionItem';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TagSuggestionGroupProps {\r\n group: Cortex.TagSuggestion;\r\n onClick?: (suggestion: Cortex.TagSuggestion, event: React.MouseEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nconst TagSuggestionGroup: React.FC<TagSuggestionGroupProps> = ({\r\n group,\r\n onClick\r\n}: TagSuggestionGroupProps) => {\r\n const suggestionElements = Array.isArray(group.suggestions) ? group.suggestions.map((sugItem, idx) => {\r\n if (sugItem.group === true) {\r\n return (\r\n <TagSuggestionGroup\r\n key={idx}\r\n group={sugItem}\r\n onClick={onClick}\r\n />\r\n );\r\n }\r\n return (\r\n <TagSuggestionItem\r\n key={idx}\r\n suggestion={sugItem}\r\n onClick={onClick}\r\n />\r\n );\r\n }) : null;\r\n\r\n return (\r\n <div className=\"ui-taginputSelectGroup\">\r\n <span className=\"ui-taginputSelectGroupLabel\">{group.label}</span>\r\n <div className=\"ui-taginputSelectGroupItems\">\r\n {suggestionElements}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagSuggestionGroup;","import React from 'react';\r\nimport Popper from '../Popper';\r\nimport { PopperPlacement } from '../Popper/Popper';\r\nimport TagSuggestionGroup from './TagSuggestionGroup';\r\nimport TagSuggestionItem from './TagSuggestionItem';\r\nimport { forwardRef } from '../utils/forwardRef';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TagSuggestionProps {\r\n open: boolean;\r\n tags?: Cortex.Tag[];\r\n disableFilter?: boolean;\r\n suggestions?: Cortex.TagSuggestion[];\r\n anchorEl?: React.RefObject<HTMLElement>;\r\n filter?: string;\r\n onSuggestionClick?: (suggestion: Cortex.TagSuggestion) => void;\r\n}\r\n\r\nconst TagSuggestion = forwardRef<HTMLElement, TagSuggestionProps>(({\r\n open,\r\n tags,\r\n disableFilter,\r\n suggestions,\r\n anchorEl,\r\n filter,\r\n onSuggestionClick\r\n}, ref) => {\r\n const filteredSuggestions = React.useMemo<Cortex.TagSuggestion[]>(() => {\r\n if (!Array.isArray(suggestions)) return [];\r\n if (disableFilter) return suggestions;\r\n\r\n const haveTags = Array.isArray(tags) && tags.length > 0;\r\n const haveFilter = filter && filter.length > 0;\r\n\r\n const result: Cortex.TagSuggestion[] = [];\r\n\r\n suggestions.forEach(sugItem => {\r\n if (sugItem.group === true) {\r\n if (Array.isArray(sugItem.suggestions)) {\r\n const childSug: Cortex.TagSuggestion = {\r\n ...sugItem,\r\n suggestions: []\r\n };\r\n sugItem.suggestions.forEach(sugChildItem => {\r\n if (haveTags && tags.some(tagItem => tagItem.id === sugChildItem.id)) return;\r\n if (haveFilter && sugChildItem.label.toUpperCase().indexOf(filter.toUpperCase()) < 0) return;\r\n childSug.suggestions!.push({ ...sugChildItem });\r\n });\r\n\r\n if (childSug.suggestions!.length > 0) {\r\n result.push(childSug);\r\n }\r\n }\r\n return;\r\n }\r\n if (haveTags && tags.some(tagItem => tagItem.id === sugItem.id)) return;\r\n if (haveFilter && sugItem.label.toUpperCase().indexOf(filter.toUpperCase()) < 0) return;\r\n result.push({ ...sugItem });\r\n });\r\n\r\n return result;\r\n }, [suggestions, filter, tags]);\r\n\r\n const handleItemClick = React.useCallback((suggestion: Cortex.TagSuggestion) => {\r\n if (!onSuggestionClick) return;\r\n onSuggestionClick(suggestion);\r\n }, [onSuggestionClick]);\r\n\r\n const isOpen = open && filteredSuggestions.length > 0;\r\n const suggestionElements = filteredSuggestions.map((sugItem, idx) => {\r\n if (sugItem.group === true) {\r\n return (\r\n <TagSuggestionGroup\r\n key={idx}\r\n group={sugItem}\r\n onClick={handleItemClick}\r\n />\r\n );\r\n }\r\n return (\r\n <TagSuggestionItem\r\n key={idx}\r\n suggestion={sugItem}\r\n onClick={handleItemClick}\r\n />\r\n );\r\n });\r\n\r\n return (\r\n <Popper\r\n ref={ref}\r\n open={isOpen}\r\n anchorEl={anchorEl}\r\n placement={PopperPlacement.BottomLeft}\r\n >\r\n <div className=\"ui-taginputSelect\">\r\n {suggestionElements}\r\n </div>\r\n </Popper>\r\n );\r\n});\r\n\r\nexport default TagSuggestion;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport useClickOutside from '../utils/useClickOutside';\r\nimport TagItem from './TagItem';\r\nimport TagSearchInput from './TagSearchInput';\r\nimport TagSuggestion from './TagSuggestion';\r\nimport { Cortex } from './types';\r\n\r\nexport interface TooltipProps {\r\n tags?: Cortex.Tag[];\r\n className?: string;\r\n suggestions?: Cortex.TagSuggestion[];\r\n disableFilter?: boolean;\r\n onTextChange?: (text: string) => void;\r\n onChange?: (tags: Cortex.Tag[]) => void;\r\n}\r\n\r\nconst TagInput: React.FC<TooltipProps> = ({\r\n tags,\r\n className,\r\n suggestions,\r\n disableFilter,\r\n onTextChange,\r\n onChange\r\n}: TooltipProps) => {\r\n const inputRef = React.useRef(null);\r\n const suggestionRef = React.useRef(null);\r\n const nodeRef = React.useRef<HTMLDivElement>(null);\r\n const [inputValue, setInputValue] = React.useState<string>('');\r\n const [suggestionOpen, setSuggestionOpen] = React.useState<boolean>(false);\r\n\r\n useClickOutside(() => {\r\n setSuggestionOpen(false);\r\n }, [inputRef, suggestionRef]);\r\n\r\n const handleDeleteTag = React.useCallback((tag: Cortex.Tag) => {\r\n if (!onChange || !Array.isArray(tags)) return;\r\n\r\n const tagIndex = tags.findIndex(tagItem => tagItem.id === tag.id);\r\n if (tagIndex < 0) return;\r\n\r\n const newTags = [...tags];\r\n newTags.splice(tagIndex, 1);\r\n onChange(newTags);\r\n }, [tags, onChange]);\r\n\r\n const handleSuggestionClick = React.useCallback((suggestion: Cortex.TagSuggestion) => {\r\n if (!suggestion) return;\r\n\r\n const newTag: Cortex.Tag = {\r\n id: suggestion.id,\r\n label: suggestion.label,\r\n value: suggestion.value\r\n };\r\n\r\n const newTags = Array.isArray(tags) ? [...tags, newTag] : [newTag];\r\n setSuggestionOpen(false);\r\n if (onChange) {\r\n onChange(newTags);\r\n }\r\n setInputValue('');\r\n if (onTextChange) {\r\n onTextChange('');\r\n }\r\n }, [tags, onChange, onTextChange]);\r\n\r\n const handleSearchInputChange = React.useCallback((newValue: string) => {\r\n setInputValue(newValue);\r\n if (onTextChange) {\r\n onTextChange(newValue);\r\n }\r\n }, [onTextChange]);\r\n\r\n const handleSearchInputClick = () => {\r\n setSuggestionOpen(true);\r\n };\r\n\r\n const tagElements = Array.isArray(tags) ?\r\n tags.map((tagItem, idx) => (\r\n <TagItem\r\n key={idx}\r\n tag={tagItem}\r\n onDelete={() => handleDeleteTag(tagItem)}\r\n />\r\n )) : [];\r\n\r\n return (\r\n <div\r\n ref={nodeRef}\r\n className=\"ui-taginput\"\r\n >\r\n {tagElements}\r\n <TagSearchInput\r\n ref={inputRef}\r\n value={inputValue}\r\n onChange={handleSearchInputChange}\r\n onClick={handleSearchInputClick}\r\n />\r\n <TagSuggestion\r\n ref={suggestionRef}\r\n open={suggestionOpen}\r\n anchorEl={inputRef}\r\n filter={inputValue}\r\n tags={tags}\r\n suggestions={suggestions}\r\n disableFilter={disableFilter}\r\n onSuggestionClick={handleSuggestionClick}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default TagInput;","import { createContext } from 'react';\r\nimport { Location } from '../models';\r\n\r\nexport type LocationContent = {\r\n locations: Location[]\r\n setLocations: React.Dispatch<React.SetStateAction<Location[]>>\r\n}\r\n\r\nexport const LocationContext = createContext<LocationContent>({\r\n locations: [], // set a default value\r\n setLocations: () => {}\r\n});\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport L from 'leaflet';\r\nimport { useMap } from 'react-leaflet';\r\n\r\n// @ts-ignore\r\nimport * as LeafletActiveArea from 'leaflet-active-area';\r\n\r\nexport const CenterActiveAreaControl: React.FC<CenterActiveAreaControlProps> = props => {\r\n const map = useMap();\r\n\r\n // @ts-ignore\r\n const initActiveArea = () => LeafletActiveArea;\r\n\r\n useEffect(() => {\r\n initActiveArea();\r\n\r\n // @ts-ignore\r\n map.setActiveArea('cortex-widget-viewport', true, true);\r\n\r\n // @ts-ignore\r\n L.Control.CenterActiveArea = L.Control.extend({\r\n onAdd() {\r\n let container = null;\r\n\r\n // @ts-ignore\r\n // eslint-disable-next-line\r\n if (map.zoomControl && !this.options.forceSeparateButton) {\r\n // @ts-ignore\r\n container = map.zoomControl._container;\r\n }\r\n else {\r\n // @ts-ignore\r\n container = L.DomUtil.create('div', 'leaflet-bar');\r\n }\r\n\r\n // @ts-ignore\r\n L.DomEvent.disableClickPropagation(container);\r\n\r\n // @ts-ignore\r\n const link = L.DomUtil.create('a', '', container);\r\n link.href = '#';\r\n link.title = 'Centrer';\r\n link.innerHTML = `\r\n <img src=\"${icon}\" width=\"15px\" style=\"margin-top: 7px; filter: brightness(0%)\" />\r\n `;\r\n link.setAttribute('role', 'button');\r\n link.setAttribute('aria-label', link.title);\r\n\r\n L.DomEvent\r\n .on(link, 'click', L.DomEvent.stop)\r\n .on(link, 'click', handleButtonClick);\r\n\r\n return container;\r\n }\r\n });\r\n\r\n // @ts-ignore\r\n L.control.centerActiveArea = opts => new L.Control.CenterActiveArea(opts);\r\n\r\n // @ts-ignore\r\n L.control.centerActiveArea({ position: 'topleft' }).addTo(map);\r\n\r\n if (props.autoCenter) {\r\n centerMap();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (props.autoCenter) {\r\n centerMap();\r\n }\r\n }, [props.autoCenter]);\r\n\r\n const getMarkers = useCallback(() => {\r\n const layerGroup = L.featureGroup();\r\n map.eachLayer(layer => {\r\n if (layer instanceof L.Marker) {\r\n layerGroup.addLayer(layer);\r\n }\r\n });\r\n return layerGroup;\r\n }, [map]);\r\n\r\n const getPolygons = useCallback(() => {\r\n const layerGroup = L.featureGroup();\r\n map.eachLayer(layer => {\r\n if (layer instanceof L.Polygon) {\r\n layerGroup.addLayer(layer);\r\n }\r\n });\r\n return layerGroup;\r\n }, [map]);\r\n\r\n const centerMap = useCallback(() => {\r\n const markers = getMarkers();\r\n const bounds = markers.getBounds();\r\n\r\n const polygons = getPolygons();\r\n polygons.eachLayer(layer => {\r\n // @ts-ignore\r\n bounds.extend(layer.getBounds());\r\n });\r\n\r\n if (!bounds.isValid()) {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n map.fitBounds(bounds, { animate: true });\r\n }, []);\r\n\r\n const handleButtonClick = useCallback(() => {\r\n centerMap();\r\n }, [map]);\r\n\r\n return <></>;\r\n};\r\n\r\nexport type CenterActiveAreaControlProps = {\r\n autoCenter?: boolean;\r\n};\r\n\r\nconst icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABcRAAAXEQHKJvM/AAAAB3RJTUUH4wMIFTgXULHJFAAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAhUlEQVRo3u3asQ2AIBAF0MO4p42FI1nYOKlugAUnJvL+BLzwcxGw7Md5RUO2dSmRkNZ1TPGTgICADAIptbGXNVqzUluraoGADAKZv/rIy56UqvVFartVVEu1QEBAQEBAQEBAQEAaz+xuGlXrpWr1PlvbERAQEJCIhzfEnqPYLxwgICBjQW7ewSYPr/zk7gAAAABJRU5ErkJggg==';\r\n","/* eslint-disable react/no-unused-prop-types */\r\nimport L from 'leaflet.fullscreen';\r\nimport React, { useEffect } from 'react';\r\nimport { useMap } from 'react-leaflet';\r\nimport 'leaflet.fullscreen/Control.FullScreen.css';\r\nimport { ControlPosition } from 'leaflet';\r\n\r\nexport const MapFullscreenControl = (props: MapFullscreenControlProps) => {\r\n const map = useMap();\r\n\r\n useEffect(() => {\r\n // @ts-ignore\r\n L.leaflet.control.fullscreen({\r\n position: 'topleft',\r\n ...(props || {})\r\n }).addTo(map);\r\n }, []);\r\n\r\n return (\r\n <></>\r\n );\r\n};\r\n\r\n/** Props interface for MapFullscreenControl component */\r\nexport type MapFullscreenControlProps = {\r\n\r\n /** Change the content of the button, can be HTML, default null */\r\n content?: string | undefined;\r\n\r\n /** Change the position of the button can be topleft, topright, bottomright or bottomleft, default topleft */\r\n position?: ControlPosition | undefined;\r\n\r\n /** Change the title of the button, default Full Screen */\r\n title?: string | undefined;\r\n\r\n /** Change the title of the button when fullscreen is on, default Exit Full Screen */\r\n titleCancel?: string | undefined;\r\n\r\n /** Force separate button to detach from zoom buttons, default false */\r\n forceSeparateButton?: boolean | undefined;\r\n\r\n /** Force use of pseudo full screen even if full screen API is available, default false */\r\n forcePseudoFullscreen?: boolean | undefined;\r\n\r\n /** Use pseudo fullscreen */\r\n pseudoFullscreen?: boolean | undefined;\r\n\r\n /** Dom element to render in full screen, false by default, fallback to map._container */\r\n fullscreenElement?: false | HTMLElement | undefined;\r\n};","import React from 'react';\r\nimport { Control, ControlPosition, DrawEvents } from 'leaflet';\r\nimport { EditControl } from 'react-leaflet-draw';\r\n\r\nexport const DrawTools = (props: DrawToolsProps) => {\r\n const buildedEditProps: Omit<Control.EditOptions, 'featureGroup'> | undefined = { edit: props?.editable ? {} : false };\r\n\r\n return (\r\n <EditControl\r\n onCreated={props.handleOnCreated}\r\n onDeleted={props.handleOnDeleted}\r\n onEdited={props.handleOnEdited}\r\n position={props.position ?? 'topright'}\r\n draw={props.draw ?? {\r\n rectangle: false,\r\n circle: false,\r\n circlemarker: false,\r\n polyline: false\r\n }}\r\n edit={buildedEditProps}\r\n />\r\n );\r\n};\r\n\r\nexport type DrawToolsProps = {\r\n position?: ControlPosition | undefined;\r\n handleOnCreated?: (v: DrawEvents.Created) => void;\r\n handleOnDeleted?: (v: DrawEvents.Deleted) => void;\r\n handleOnEdited?: (v: DrawEvents.Edited) => void;\r\n draw?: drawType;\r\n editable?: boolean;\r\n};\r\n\r\nexport type drawType = {\r\n polyline?: boolean;\r\n polygon?: boolean;\r\n rectangle?: boolean;\r\n circle?: boolean;\r\n marker?: boolean;\r\n circlemarker?: boolean;\r\n};","import React, { useEffect, useMemo, useState } from 'react';\r\nimport { MapContainer, TileLayer, MapContainerProps, Marker, FeatureGroup, Polygon } from 'react-leaflet';\r\nimport L, { LatLngTuple } from 'leaflet';\r\n\r\nimport markerIcon2x from 'leaflet-draw/dist/images/marker-icon-2x.png';\r\nimport markerShadow from 'leaflet-draw/dist/images/marker-shadow.png';\r\nimport { useLocationContext } from '../hooks/useLocationContext';\r\nimport { Location, Point } from '../models';\r\nimport { CenterActiveAreaControl, CenterActiveAreaControlProps } from './CenterActiveAreaControl';\r\nimport { MapFullscreenControl, MapFullscreenControlProps } from './MapFullscreenControl';\r\nimport { DrawTools, DrawToolsProps, drawType } from './DrawTools';\r\n\r\nconst Maps = (props: MapsProps) => {\r\n const initialDrawState = {\r\n polygon: true,\r\n marker: true,\r\n rectangle: false,\r\n circle: false,\r\n circlemarker: false,\r\n polyline: false\r\n };\r\n const [draw, setDraw] = useState<drawType>(initialDrawState);\r\n const [mapType, setMapType] = useState<'standard' | 'satellite'>('standard');\r\n\r\n const { locations, setLocations } = useLocationContext();\r\n\r\n useEffect(() => {\r\n props?.onChange?.(locations);\r\n }, [locations]);\r\n\r\n useEffect(() => {\r\n // Reset default icon\r\n L.Icon.Default.mergeOptions({\r\n iconRetinaUrl: markerIcon2x,\r\n shadowUrl: markerShadow,\r\n iconSize: [25, 41],\r\n iconAnchor: [12, 41],\r\n popupAnchor: [1, -34],\r\n shadowSize: [41, 41]\r\n });\r\n\r\n if (locations && locations.length > 0) {\r\n setDraw((d: { [key: string]: boolean }) => {\r\n const newState = { ...d };\r\n Object.keys(newState).forEach(key => {\r\n newState[key] = false;\r\n });\r\n return newState;\r\n });\r\n }\r\n }, []);\r\n\r\n const handleOnCreated = (e: any) => {\r\n const { layerType, layer } = e;\r\n setDraw((d: { [key: string]: boolean }) => {\r\n const newState = { ...d };\r\n Object.keys(newState).forEach(key => {\r\n newState[key] = false;\r\n });\r\n return newState;\r\n });\r\n\r\n let points: Point[] = [];\r\n\r\n if (layerType === 'polygon' || layerType === 'rectangle') {\r\n // @ts-ignore\r\n points = layer._latlngs?.[0]?.map((item: any, index: number) => ({ latitude: item.lat, longitude: item.lng, order: index + 1 }));\r\n }\r\n\r\n if (layerType === 'marker' || layerType === 'circle' || layerType === 'circlemarker') {\r\n points.push({ order: 1, latitude: layer._latlng.lat, longitude: layer._latlng.lng, id: layer._leaflet_id });\r\n }\r\n\r\n if (layerType === 'polyline') {\r\n // @ts-ignore\r\n points = layer._latlngs?.map((item: any, index: number) => ({ latitude: item.lat, longitude: item.lng, order: index + 1 }));\r\n }\r\n\r\n setLocations((v: Location[]) => ([...v, {\r\n points,\r\n id: layer._leaflet_id\r\n } as Location]));\r\n };\r\n\r\n const handleOnDeleted = (e: any) => {\r\n if (Object.keys(e.layers._layers).length === 0) {\r\n return;\r\n }\r\n\r\n // this workaround property fix a bug in react-leaflet-draw that doesn't update the draw polygon state\r\n // https://github.com/alex3165/react-leaflet-draw/issues/151\r\n setDraw((d: any) => ({ ...initialDrawState, workaround: Math.random() }));\r\n setLocations(locations);\r\n };\r\n\r\n const handleOnEdited = (e: any) => {\r\n const { layers } = e;\r\n\r\n setLocations((prevLocations: any[]) => {\r\n const editedLayers = Object.values(layers.getLayers());\r\n\r\n const updatedLocations = prevLocations\r\n .filter(location => location?.points && location.points.length === 1)\r\n .map(location => {\r\n const matchedEditedLayer = (editedLayers as Array<any>).find((layer: any) => layer._leaflet_id === location.points[0].id);\r\n\r\n if (matchedEditedLayer) {\r\n const originalPoint = { ...location.points[0] };\r\n const newLatLng = matchedEditedLayer.getLatLng();\r\n\r\n const hasMovedSignificantly = Math.abs(originalPoint.latitude - newLatLng.lat) > 1e-6 ||\r\n Math.abs(originalPoint.longitude - newLatLng.lng) > 1e-6;\r\n\r\n if (!hasMovedSignificantly) {\r\n return location;\r\n }\r\n return {\r\n points: [{\r\n id: location.id, // Use new layer's ID\r\n latitude: (editedLayers as any)[0]._latlng.lat,\r\n longitude: (editedLayers as any)[0]._latlng.lng,\r\n order: location.points[0].order\r\n }],\r\n id: location.id,\r\n objId: location.objId\r\n };\r\n }\r\n\r\n return location;\r\n });\r\n\r\n return updatedLocations;\r\n });\r\n };\r\n\r\n const drawTools = useMemo(() => {\r\n if (props?.singlePosition && locations.length > (props?.data?.length ?? 0)) {\r\n let draw = {\r\n draw: {\r\n marker: false,\r\n polygon: false,\r\n rectangle: false,\r\n circle: false,\r\n circlemarker: false,\r\n polyline: false\r\n }\r\n };\r\n if (typeof props?.drawTools !== 'boolean') {\r\n draw = { ...props?.drawTools, ...draw };\r\n }\r\n return draw;\r\n }\r\n\r\n if (typeof props?.drawTools !== 'boolean') {\r\n return props?.drawTools;\r\n }\r\n\r\n if (props?.drawTools === true) {\r\n return {\r\n draw: {\r\n marker: true,\r\n polygon: true,\r\n rectangle: true,\r\n circle: true,\r\n circlemarker: true,\r\n polyline: true\r\n }\r\n };\r\n }\r\n\r\n return undefined;\r\n }, [props?.singlePosition, props?.drawTools, locations, props?.data]);\r\n\r\n return (\r\n <>\r\n <style>{'.leaflet-container { min-height: 80px; min-width: 80px; height: 100%; width: 100% }'}</style>\r\n <MapContainer\r\n center={props.center || [0, 0]}\r\n zoom={props.zoom || 13}\r\n maxZoom={props.maxZoom}\r\n minZoom={props.minZoom}\r\n {...props.MapContainerProps}\r\n >\r\n <TileLayer\r\n key={mapType}\r\n attribution={\r\n mapType === 'standard'\r\n ? '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\r\n : '&copy; <a href=\"https://www.google.com/maps\">Google Maps</a>'\r\n }\r\n url={\r\n mapType === 'standard'\r\n ? 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'\r\n : 'https://mt1.google.com/vt/lyrs=s&x={x}&y={y}&z={z}'\r\n }\r\n />\r\n {props.toggleSatelliteView && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n bottom: '10px',\r\n left: '10px',\r\n zIndex: 1000,\r\n background: 'white',\r\n padding: '7px 10px',\r\n borderRadius: '5px'\r\n }}\r\n >\r\n <label\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '5px'\r\n }}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n checked={mapType === 'satellite'}\r\n onChange={() => setMapType(mapType === 'standard' ? 'satellite' : 'standard')}\r\n />\r\n Satellite View\r\n </label>\r\n </div>\r\n )}\r\n {\r\n props.fullscreen &&\r\n <MapFullscreenControl {...(typeof props.fullscreen === 'boolean' ? {} : props.fullscreen)} />\r\n }\r\n <FeatureGroup>\r\n {\r\n props.drawTools && locations.length > 0 && (\r\n <DrawTools\r\n {...drawTools}\r\n handleOnCreated={handleOnCreated}\r\n handleOnEdited={handleOnEdited}\r\n />\r\n )\r\n }\r\n {\r\n locations.length === 0 && (\r\n <DrawTools\r\n {...drawTools}\r\n handleOnCreated={handleOnCreated}\r\n handleOnDeleted={handleOnDeleted}\r\n handleOnEdited={handleOnEdited}\r\n />\r\n )\r\n }\r\n {\r\n props?.data && props?.data?.map((location: Location) => {\r\n if (location.points.length > 1) {\r\n return (\r\n <Polygon\r\n key={`marker-${location.objId}`}\r\n positions={location.points.map((p: Point) => [p.latitude, p.longitude])}\r\n >\r\n </Polygon>\r\n );\r\n }\r\n return (\r\n <Marker\r\n key={`marker-${location.id}`}\r\n position={[location.points[0].latitude, location.points[0].longitude]}\r\n />\r\n );\r\n })\r\n }\r\n </FeatureGroup>\r\n {\r\n props.centerActiveArea &&\r\n <CenterActiveAreaControl autoCenter={locations && locations.length > 0} {...(typeof props.centerActiveArea === 'boolean' ? {} : props.centerActiveArea)} />\r\n }\r\n </MapContainer>\r\n </>\r\n );\r\n};\r\n\r\nexport type MapsProps = {\r\n MapContainerProps?: MapContainerProps\r\n center?: LatLngTuple\r\n fullscreen?: MapFullscreenControlProps | boolean\r\n centerActiveArea?: CenterActiveAreaControlProps | boolean\r\n drawTools?: DrawToolsProps | boolean\r\n minZoom?: number\r\n maxZoom?: number\r\n zoom?: number\r\n data?: Location[]\r\n toggleSatelliteView?: boolean\r\n singlePosition?: boolean\r\n onChange?: (locations: Location[]) => void\r\n}\r\n\r\nexport default Maps;","import { useContext } from 'react';\r\nimport { LocationContext } from '../components/LocationContext';\r\n\r\nexport const useLocationContext = () => useContext(LocationContext);\r\n","import React, { useEffect, useState } from 'react';\r\nimport Maps, { MapsProps } from './components/Maps';\r\nimport 'leaflet/dist/leaflet.css';\r\nimport 'leaflet-draw/dist/leaflet.draw.css';\r\nimport { Location, Point } from './models';\r\nimport { LocationContext } from './components/LocationContext';\r\n\r\nconst Map: React.FC<AppProps> = ({ customButtons, onClose, onSave, ...props }) => {\r\n const [locations, setLocations] = useState<Location[]>(props.data ? props.data : []);\r\n\r\n const handleSaveClick = async () => {\r\n onSave?.(locations);\r\n };\r\n\r\n const handleCloseClick = async () => {\r\n onClose?.();\r\n };\r\n\r\n useEffect(() => {\r\n const buttonSaveEvent = customButtons?.saveButton?.addEventListener('click', () => {\r\n handleSaveClick();\r\n });\r\n\r\n const buttonCancelEvent = customButtons?.cancelButton?.addEventListener('click', () => {\r\n handleCloseClick();\r\n });\r\n\r\n return () => {\r\n customButtons?.saveButton?.removeEventListener('click', buttonSaveEvent!);\r\n customButtons?.cancelButton?.removeEventListener('click', buttonCancelEvent!);\r\n };\r\n }, [locations]);\r\n\r\n const containerStyle: React.CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n width: '90%',\r\n height: '400px',\r\n margin: '20px'\r\n };\r\n\r\n return (\r\n <div style={containerStyle}>\r\n <LocationContext.Provider\r\n value={{\r\n locations,\r\n setLocations\r\n }}\r\n >\r\n <Maps {...props} />\r\n {\r\n !customButtons && (\r\n <div className=\"cortex-widget-buttons\">\r\n <button\r\n className=\"cortex-widget-btn cortex-widget-btn-cancel\"\r\n type=\"button\"\r\n onClick={handleCloseClick}\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n className=\"cortex-widget-btn cortex-widget-btn-save\"\r\n type=\"button\"\r\n onClick={handleSaveClick}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n )\r\n }\r\n </LocationContext.Provider>\r\n </div>\r\n );\r\n};\r\n\r\nexport type AppProps = MapsProps & {\r\n onClose?: (() => void);\r\n onSave?: ((locations: Location[]) => void);\r\n onChange?: ((locations: Location[]) => void);\r\n customButtons?: {\r\n cancelButton?: HTMLElement;\r\n saveButton?: HTMLElement;\r\n };\r\n};\r\n\r\nexport default Map;","import React from 'react';\r\n\r\nexport interface MenuProps {\r\n containerRef: React.RefObject<HTMLElement>;\r\n className?: string;\r\n children?: React.ReactNode;\r\n onClose?: () => void;\r\n onClick?: (event: React.MouseEvent<HTMLUListElement> | undefined) => void;\r\n}\r\n\r\nconst Menu: React.FC<MenuProps> = ({\r\n containerRef,\r\n className,\r\n children,\r\n onClick,\r\n onClose\r\n}) => {\r\n const menuRef = React.useRef<HTMLDivElement>(null);\r\n\r\n React.useEffect(() => {\r\n if (!menuRef || !containerRef || !menuRef.current || !containerRef.current) {\r\n return;\r\n }\r\n const containerRect = containerRef.current.getBoundingClientRect();\r\n\r\n const contentRect = menuRef.current.getBoundingClientRect();\r\n let left = containerRect.width;\r\n let top = '0px';\r\n let bottom = 'unset';\r\n if (containerRect.right + contentRect.width >= window.innerWidth) {\r\n left = -contentRect.width;\r\n }\r\n\r\n // si la liste dépasse la hauteur de la fenetre alors on fixe la liste à partir du bas de la page\r\n if (contentRect.bottom >= window.innerHeight) {\r\n bottom = `${-((window.innerHeight - containerRect.bottom) - 15).toFixed()}px`;\r\n top = 'unset';\r\n }\r\n\r\n menuRef.current.setAttribute('style', `opacity: 1; left: ${left.toFixed()}px; bottom: ${bottom}; top: ${top};`);\r\n }, [menuRef, containerRef]);\r\n\r\n return (\r\n <div\r\n ref={menuRef}\r\n className=\"ui-menu\"\r\n >\r\n <ul\r\n className=\"ui-menuList\"\r\n onClick={onClick}\r\n onContextMenu={onClick}\r\n >\r\n {children}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Menu;","import * as React from 'react';\r\n\r\nconst getAnchorElement = (anchorEl: string | HTMLElement | React.RefObject<HTMLElement> | undefined): HTMLElement | undefined => {\r\n if (!anchorEl) return undefined;\r\n if (Object.prototype.toString.call(anchorEl) === '[object String]') {\r\n const element = document.getElementById(anchorEl as string);\r\n return element ?? undefined;\r\n }\r\n\r\n const ref = anchorEl as React.RefObject<HTMLElement>;\r\n if (ref && ref.current !== undefined) {\r\n return ref.current ?? undefined;\r\n }\r\n\r\n return anchorEl as HTMLElement;\r\n};\r\n\r\nexport default function useElement(element: string | HTMLElement | React.RefObject<HTMLElement> | undefined): HTMLElement | undefined {\r\n const [elNode, setElNode] = React.useState<HTMLElement | undefined>();\r\n React.useEffect(() => {\r\n setElNode(getAnchorElement(element));\r\n }, [element]);\r\n\r\n return elNode;\r\n}","import React from 'react';\r\nimport Popper from '../Popper';\r\nimport { PopperPlacement } from '../Popper/Popper';\r\nimport useClickOutside from '../utils/useClickOutside';\r\nimport Menu from './Menu';\r\nimport useElement from '../utils/useElement';\r\n\r\nexport interface ContextMenuProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n open?: boolean;\r\n placement?: ObjectValues<typeof PopperPlacement>;\r\n container?: string | HTMLElement | React.RefObject<HTMLElement>;\r\n onOpen?: () => void;\r\n onClose?: () => void;\r\n}\r\n\r\nconst ContextMenu: React.FC<ContextMenuProps> = ({\r\n className,\r\n children,\r\n placement,\r\n open,\r\n container,\r\n onOpen,\r\n onClose\r\n}) => {\r\n const popperRef = React.useRef(null);\r\n\r\n const containerEl = useElement(container);\r\n const [contextMenu, setContextMenu] = React.useState<{ mouseX: number, mouseY: number } | null>(null);\r\n\r\n useClickOutside(() => {\r\n if (open && onClose) onClose();\r\n }, [popperRef]);\r\n\r\n const handleContextMenu = React.useCallback((event: Event) => {\r\n const mouseEvent = event as MouseEvent;\r\n mouseEvent.preventDefault();\r\n if (mouseEvent.ctrlKey) return;\r\n setContextMenu({\r\n mouseX: mouseEvent.pageX - 2,\r\n mouseY: mouseEvent.pageY - 4\r\n });\r\n\r\n if (onOpen) onOpen();\r\n }, [onOpen]);\r\n\r\n const handleDocumentContextMenu = (event: MouseEvent) => {\r\n event.preventDefault();\r\n };\r\n\r\n React.useEffect(() => {\r\n const rootEl = (containerEl ?? document) as Document | HTMLElement;\r\n rootEl.addEventListener('contextmenu', handleContextMenu);\r\n\r\n if (rootEl !== document) {\r\n document.addEventListener('contextmenu', handleDocumentContextMenu);\r\n }\r\n\r\n return () => {\r\n rootEl.removeEventListener('contextmenu', handleContextMenu);\r\n document.removeEventListener('contextmenu', handleDocumentContextMenu);\r\n };\r\n }, [containerEl, handleContextMenu]);\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLUListElement> | undefined) => {\r\n if (!event) return;\r\n\r\n if (event.button === 2) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n };\r\n\r\n return (\r\n <Popper\r\n ref={popperRef}\r\n anchorPosition={\r\n contextMenu !== null\r\n ? { top: contextMenu.mouseY, left: contextMenu.mouseX }\r\n : undefined\r\n }\r\n placement={placement}\r\n open={open}\r\n overflow={false}\r\n >\r\n <Menu\r\n className={className}\r\n onClose={onClose}\r\n onClick={handleClick}\r\n containerRef={popperRef}\r\n >\r\n {children}\r\n </Menu>\r\n </Popper>\r\n );\r\n};\r\n\r\nexport default ContextMenu;","import React from 'react';\r\n\r\nexport interface DividerProps {\r\n className?: string;\r\n}\r\n\r\nconst Divider: React.FC<DividerProps> = ({ className }) => (\r\n <hr></hr>\r\n);\r\n\r\nexport default Divider;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface Props {\r\n className?: string;\r\n}\r\n\r\nconst ChevronDownIcon: React.FC<Props> = ({ className }: Props) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" className={classNames('ui-icon', className)} transform=\"rotate(180 0 0)\">\r\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M11.2929 8.29289C11.6834 7.90237 12.3166 7.90237 12.7071 8.29289L17.7071 13.2929C18.0976 13.6834 18.0976 14.3166 17.7071 14.7071C17.3166 15.0976 16.6834 15.0976 16.2929 14.7071L12 10.4142L7.70711 14.7071C7.31658 15.0976 6.68342 15.0976 6.29289 14.7071C5.90237 14.3166 5.90237 13.6834 6.29289 13.2929L11.2929 8.29289Z\" />\r\n </svg>\r\n);\r\n\r\nexport default ChevronDownIcon;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface Props {\r\n className?: string;\r\n}\r\n\r\nconst ChevronRightIcon: React.FC<Props> = ({ className }: Props) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 7\" fill=\"none\" className={classNames('ui-icon', className)} transform=\"rotate(90 0 0)\" preserveAspectRatio=\"xMidYMid meet\">\r\n <path d=\"M5.3,0.3c0.4-0.4,1-0.4,1.4,0l5,5c0.4,0.4,0.4,1,0,1.4c-0.4,0.4-1,0.4-1.4,0L6,2.4L1.7,6.7c-0.4,0.4-1,0.4-1.4,0c-0.4-0.4-0.4-1,0-1.4L5.3,0.3z\" />\r\n </svg>\r\n);\r\n\r\nexport default ChevronRightIcon;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface Props {\r\n className?: string;\r\n}\r\n\r\nconst ChevronLeftIcon: React.FC<Props> = ({ className }: Props) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 7\" fill=\"none\" className={classNames('ui-icon', className)} transform=\"rotate(270 0 0)\" preserveAspectRatio=\"xMidYMid meet\">\r\n <path d=\"M5.3,0.3c0.4-0.4,1-0.4,1.4,0l5,5c0.4,0.4,0.4,1,0,1.4c-0.4,0.4-1,0.4-1.4,0L6,2.4L1.7,6.7c-0.4,0.4-1,0.4-1.4,0c-0.4-0.4-0.4-1,0-1.4L5.3,0.3z\" />\r\n </svg>\r\n);\r\n\r\nexport default ChevronLeftIcon;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface Props {\r\n className?: string;\r\n}\r\n\r\nconst CrossIcon: React.FC<Props> = ({ className }: Props) => (\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" className={classNames('ui-icon', className)}>\r\n <path d=\"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\r\n </svg>\r\n);\r\n\r\nexport default CrossIcon;\r\n","import React, { CSSProperties } from 'react';\r\nimport Menu from './Menu';\r\nimport { ChevronRightIcon } from '../Icons';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface MenuItemProps {\r\n className?: string;\r\n style?: CSSProperties | undefined;\r\n children?: React.ReactNode;\r\n label?: string;\r\n icon?: React.ReactNode;\r\n active?: boolean;\r\n disable?: boolean;\r\n itemTemplate?: React.ReactNode;\r\n onClick?: (event: React.MouseEvent<HTMLButtonElement>| undefined) => void;\r\n}\r\n\r\nconst MenuItem: React.FC<MenuItemProps> = ({\r\n label,\r\n icon,\r\n className,\r\n style,\r\n active,\r\n disable,\r\n children,\r\n itemTemplate,\r\n onClick\r\n}) => {\r\n const [showMenu, setShowMenu] = React.useState(false);\r\n const containerRef = React.useRef<HTMLLIElement>(null);\r\n\r\n const handleMenuClick = React.useCallback((event: React.MouseEvent<HTMLButtonElement>| undefined) => {\r\n if (onClick && disable !== true) {\r\n onClick(event);\r\n }\r\n }, [onClick, disable]);\r\n\r\n const onMouseEnter = () => {\r\n setShowMenu(true);\r\n };\r\n\r\n const onMouseLeave = () => {\r\n setShowMenu(false);\r\n };\r\n\r\n const haveSubMenu = children != null;\r\n\r\n return (\r\n <li\r\n className={classNames(\r\n 'ui-menuItem',\r\n disable === true ? 'ui-menuItem-disable' : null,\r\n className\r\n )}\r\n style={style}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={onMouseLeave}\r\n ref={containerRef}\r\n >\r\n <button type=\"button\" className=\"ui-menuItem-btn\" onClick={handleMenuClick}>\r\n {icon && (\r\n <div className=\"ui-menuItem-icon\">{icon}</div>\r\n )}\r\n <span>{itemTemplate ?? label}</span>\r\n {haveSubMenu && (\r\n <div className=\"ui-menuItem-menuIconContainer\">\r\n <ChevronRightIcon className=\"ui-menuItem-menuIcon\" />\r\n </div>\r\n )}\r\n </button>\r\n {haveSubMenu && showMenu && (\r\n <Menu containerRef={containerRef}>\r\n {children}\r\n </Menu>\r\n )}\r\n </li>\r\n );\r\n};\r\n\r\nexport default MenuItem;","import React from 'react';\r\nimport Popper from '../Popper';\r\nimport { PopperPlacement } from '../Popper/Popper';\r\nimport useClickOutside from '../utils/useClickOutside';\r\nimport Menu from './Menu';\r\n\r\nexport interface PopupMenuProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n open?: boolean;\r\n placement?: ObjectValues<typeof PopperPlacement>;\r\n anchorPosition?: { top: number, left: number };\r\n anchorEl?: string | HTMLElement | React.RefObject<HTMLElement>;\r\n onClose?: () => void;\r\n}\r\n\r\nconst PopupMenu: React.FC<PopupMenuProps> = ({\r\n className,\r\n children,\r\n placement,\r\n open,\r\n anchorPosition,\r\n anchorEl,\r\n onClose\r\n}) => {\r\n const popperRef = React.useRef(null);\r\n\r\n useClickOutside(() => {\r\n if (open && onClose) onClose();\r\n }, [popperRef]);\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLUListElement> | undefined) => {\r\n if (!event) return;\r\n\r\n if (event.button === 2) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n };\r\n\r\n if (!open || (!anchorPosition && !anchorEl)) return null;\r\n\r\n return (\r\n <Popper\r\n ref={popperRef}\r\n anchorPosition={anchorPosition}\r\n anchorEl={anchorEl}\r\n placement={placement}\r\n open={open}\r\n overflow={false}\r\n className=\"ui-menu-popper\"\r\n >\r\n <Menu\r\n className={className}\r\n onClose={onClose}\r\n onClick={handleClick}\r\n containerRef={popperRef}\r\n >\r\n {children}\r\n </Menu>\r\n </Popper>\r\n );\r\n};\r\n\r\nexport default PopupMenu;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface MenuGroupProps {\r\n title?: string;\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst MenuGroup: React.FC<MenuGroupProps> = ({\r\n title,\r\n className,\r\n children\r\n}) => (\r\n <>\r\n <li\r\n className={classNames(\r\n 'ui-group-title',\r\n className\r\n )}\r\n >\r\n {title}\r\n </li>\r\n {children}\r\n </>\r\n);\r\n\r\nexport default MenuGroup;","import React from 'react';\r\nimport MenuItem from './MenuItem';\r\n\r\nexport interface AuthDownloadLinkProps {\r\n url: string;\r\n queryParams?: { [key: string]: string | number | boolean };\r\n token: string;\r\n label?: string;\r\n onStart?: (event: React.MouseEvent<HTMLButtonElement>| undefined) => void;\r\n onCompleted?: () => void;\r\n onError?: (error: Error) => void;\r\n}\r\n\r\nconst AuthDownloadLink: React.FC<AuthDownloadLinkProps> = ({\r\n url,\r\n queryParams,\r\n token,\r\n label,\r\n onStart,\r\n onCompleted,\r\n onError\r\n}) => {\r\n const handleAction = async (event: React.MouseEvent<HTMLButtonElement> | undefined) => {\r\n if (onStart) onStart(event);\r\n try {\r\n if (!token) throw new Error('INVALID_TOKEN');\r\n if (!url) throw new Error('INVALID_URL');\r\n\r\n const headers: Record<string, string> = {};\r\n headers.ContentType = 'application/json';\r\n headers.Authorization = `Bearer ${token}`;\r\n const initData: RequestInit = { method: 'get', headers };\r\n const urlObject: any = new URL(url);\r\n if (queryParams) {\r\n Object.keys(queryParams).forEach(key => urlObject.searchParams.append(key, queryParams[key]));\r\n }\r\n const result = await fetch(urlObject, initData);\r\n\r\n if (!result || result.status !== 200) {\r\n throw new Error('An error occured while generating file');\r\n }\r\n const blob = await result.blob();\r\n if (blob) {\r\n const generatedUrl = window.URL.createObjectURL(blob);\r\n\r\n // Create an anchor element to \"point\" to it\r\n const anchor = document.createElement('a');\r\n anchor.href = generatedUrl;\r\n\r\n // Get the suggested filename for the file from the response headers\r\n anchor.download = getFilenameFromHeaders(result.headers) || 'file';\r\n\r\n // Simulate a click on our anchor element\r\n anchor.click();\r\n\r\n // Discard the object data\r\n URL.revokeObjectURL(generatedUrl);\r\n\r\n anchor.remove();\r\n }\r\n }\r\n catch (error: any) {\r\n if (onError) onError(error);\r\n throw error;\r\n }\r\n if (onCompleted) onCompleted();\r\n };\r\n\r\n const getFilenameFromHeaders = (headers: Headers) => {\r\n const contentDisposition = headers.get('Content-Disposition');\r\n if (!contentDisposition) {\r\n return null;\r\n }\r\n\r\n /* Content-Disposition: attachment; filename=\"filename.ext\" */\r\n const infos = contentDisposition.split(';');\r\n const leadIn = 'filename=';\r\n const info = infos.find(f => f.indexOf(leadIn) > -1);\r\n if (info) {\r\n const start = info.search(leadIn);\r\n if (start < 0) {\r\n return null;\r\n }\r\n\r\n // Get the 'value' after the filename= part (which may be enclosed in quotes)\r\n const value = info.substring(start + leadIn.length).trim();\r\n if (value.length === 0) {\r\n return null;\r\n }\r\n\r\n // If it's not quoted, we can return the whole thing\r\n const firstCharacter = value.substring(0, 1);\r\n if (firstCharacter !== '\"' && firstCharacter !== '\\'') {\r\n return value;\r\n }\r\n\r\n // If it's quoted, it must have a matching end-quote\r\n if (value.length < 2) {\r\n return null;\r\n }\r\n\r\n // The end-quote must match the opening quote\r\n const lastCharacter = value[value.length - 1];\r\n if (lastCharacter !== firstCharacter) {\r\n return null;\r\n }\r\n\r\n // Return the content of the quotes\r\n return value.substring(1, value.length - 1);\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n <>\r\n <MenuItem\r\n label={label}\r\n onClick={handleAction}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default AuthDownloadLink;\r\n","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport DomContainer from '../DomContainer';\r\n\r\nexport interface DialogProps {\r\n open: boolean;\r\n width?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n fullWidth?: boolean;\r\n fullHeight?: boolean;\r\n className?: string;\r\n children?: React.ReactNode;\r\n onClose?: (() => void);\r\n}\r\n\r\nconst Dialog: React.FC<DialogProps> = ({\r\n open,\r\n width,\r\n fullWidth,\r\n fullHeight,\r\n className,\r\n children,\r\n onClose\r\n}) => {\r\n const prevOverflowRef = React.useRef<string>();\r\n const containerRef = React.useRef(null);\r\n const dialogRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n React.useEffect(() => {\r\n prevOverflowRef.current = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n\r\n return () => {\r\n document.body.style.overflow = prevOverflowRef.current ?? 'initial';\r\n };\r\n }, []);\r\n\r\n const handleOverlayClick = React.useCallback(() => {\r\n if (onClose) {\r\n onClose();\r\n }\r\n }, [onClose]);\r\n\r\n const dialogStyle: React.CSSProperties = {\r\n position: 'fixed',\r\n margin: '0'\r\n };\r\n\r\n return (\r\n <DomContainer ref={containerRef}>\r\n <div\r\n ref={el => {\r\n dialogRef.current = el;\r\n }}\r\n style={dialogStyle}\r\n role=\"dialog\"\r\n className={classNames(\r\n 'ui-dialog',\r\n className\r\n )}\r\n >\r\n <div role=\"presentation\" className=\"ui-dialog-overlay\" onClick={handleOverlayClick}></div>\r\n <div\r\n className={classNames(\r\n 'ui-dialog-container',\r\n width ? `ui-dialog-size-${width}` : null,\r\n fullWidth === true ? 'ui-dialog-size-fullwidth' : null,\r\n fullHeight === true ? 'ui-dialog-size-fullheight' : null,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n </div>\r\n </DomContainer>\r\n );\r\n};\r\n\r\nexport default Dialog;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface DialogContentProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst DialogContent: React.FC<DialogContentProps> = ({\r\n className,\r\n children\r\n}) => (\r\n <div className={classNames('ui-dialog-content', className)}>\r\n {children}\r\n </div>\r\n);\r\n\r\nexport default DialogContent;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface DialogFooterProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst DialogFooter: React.FC<DialogFooterProps> = ({\r\n className,\r\n children\r\n}) => (\r\n <footer className={classNames('ui-dialog-footer', className)}>\r\n {children}\r\n </footer>\r\n);\r\n\r\nexport default DialogFooter;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface DialogHeaderProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst DialogHeader: React.FC<DialogHeaderProps> = ({\r\n className,\r\n children\r\n}) => (\r\n <header className={classNames('ui-dialog-header', className)}>\r\n {children}\r\n </header>\r\n);\r\n\r\nexport default DialogHeader;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\nimport { CrossIcon } from '../Icons';\r\n\r\nexport interface DialogTitleProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n closeDisable?: boolean;\r\n onClose?: (() => void);\r\n}\r\n\r\nconst DialogTitle: React.FC<DialogTitleProps> = ({\r\n className,\r\n children,\r\n closeDisable,\r\n onClose\r\n}) => {\r\n const handleCloseClick = React.useCallback(() => {\r\n if (onClose && closeDisable !== true) {\r\n onClose();\r\n }\r\n }, [onClose, closeDisable]);\r\n\r\n const showCloseBtn = onClose !== undefined;\r\n\r\n return (\r\n <h3 className={classNames('ui-dialog-title', className)}>\r\n {children}\r\n {showCloseBtn && (\r\n <button\r\n type=\"button\"\r\n className={classNames(\r\n 'ui-dialog-close',\r\n closeDisable ? 'ui-dialog-close-disable' : null\r\n )}\r\n tabIndex={0}\r\n onClick={handleCloseClick}\r\n >\r\n <CrossIcon />\r\n </button>\r\n )}\r\n </h3>\r\n );\r\n};\r\n\r\nexport default DialogTitle;","import React from 'react';\r\nimport classNames from '../utils/classNames';\r\n\r\nexport interface DialogActionsProps {\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst DialogActions: React.FC<DialogActionsProps> = ({\r\n className,\r\n children\r\n}) => (\r\n <div className={classNames('ui-dialog-actions', className)}>\r\n {children}\r\n </div>\r\n);\r\n\r\nexport default DialogActions;","import React from 'react';\r\nimport Dialog from './Dialog';\r\nimport DialogHeader from './DialogHeader';\r\nimport DialogFooter from './DialogFooter';\r\nimport DialogContent from './DialogContent';\r\nimport classNames from '../utils/classNames';\r\nimport Button from '../Button';\r\n\r\nexport interface ConfirmDialogProps {\r\n title: string;\r\n ok?: string;\r\n cancel?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n onClose?: (isOk: boolean) => void;\r\n}\r\n\r\nconst ConfirmDialog: React.FC<ConfirmDialogProps> = ({\r\n title,\r\n ok,\r\n cancel,\r\n children,\r\n className,\r\n onClose\r\n}) => {\r\n const handleCloseClick = React.useCallback(() => {\r\n if (!onClose) return;\r\n\r\n onClose(false);\r\n }, [onClose]);\r\n\r\n const handleOkClick = React.useCallback(() => {\r\n if (!onClose) return;\r\n\r\n onClose(true);\r\n }, [onClose]);\r\n\r\n const okMessage = ok ?? 'oui';\r\n const cancelMessage = cancel ?? 'Annuler';\r\n\r\n return (\r\n <Dialog\r\n open\r\n className={classNames('ui-dialog-box', 'ui-dialog-confirm', className)}\r\n >\r\n <DialogHeader>\r\n <>\r\n <svg className=\"ui-dialog-icon\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 438.5 438.5\">\r\n <path d=\"M409.1,109.2c-19.6-33.6-46.2-60.2-79.8-79.8C295.7,9.8,259.1,0,219.3,0c-39.8,0-76.5,9.8-110.1,29.4\r\n C75.6,49,49,75.6,29.4,109.2C9.8,142.8,0,179.5,0,219.3c0,39.8,9.8,76.5,29.4,110.1c19.6,33.6,46.2,60.2,79.8,79.8\r\n c33.6,19.6,70.3,29.4,110.1,29.4s76.5-9.8,110.1-29.4c33.6-19.6,60.2-46.2,79.8-79.8c19.6-33.6,29.4-70.3,29.4-110.1\r\n C438.5,179.5,428.7,142.8,409.1,109.2z M387.4,290.2c-9.7,22.6-22.7,42-39,58.2c-16.3,16.3-35.7,29.3-58.2,39\r\n c-22.6,9.7-46.2,14.6-70.9,14.6s-48.4-4.9-70.9-14.6c-22.6-9.7-42-22.7-58.2-39c-16.3-16.3-29.3-35.7-39-58.2\r\n c-9.7-22.6-14.6-46.2-14.6-70.9c0-24.7,4.9-48.4,14.6-70.9c9.7-22.6,22.7-42,39-58.2c16.3-16.3,35.7-29.3,58.2-39\r\n c22.6-9.7,46.2-14.6,70.9-14.6c24.7,0,48.4,4.9,70.9,14.6c22.6,9.7,42,22.7,58.2,39c16.3,16.3,29.3,35.7,39,58.2\r\n c9.7,22.6,14.6,46.2,14.6,70.9C402,244,397.1,267.7,387.4,290.2z\"\r\n />\r\n <path d=\"M217,294c-14.6,0-26.5,12.2-26.5,26.8c0,14.3,11.5,26.8,26.5,26.8s26.8-12.5,26.8-26.8C243.8,306.2,231.6,294,217,294z\" />\r\n <path d=\"M221.5,90.8c-47.1,0-68.7,27.9-68.7,46.7c0,13.6,11.5,19.9,20.9,19.9c18.8,0,11.2-26.8,46.7-26.8c17.4,0,31.4,7.7,31.4,23.7\r\n c0,18.8-19.5,29.6-31,39.4c-10.1,8.7-23.4,23-23.4,53c0,18.1,4.9,23.4,19.2,23.4c17.1,0,20.6-7.7,20.6-14.3\r\n c0-18.1,0.4-28.6,19.5-43.6c9.4-7.3,39-31,39-63.8S266.1,90.8,221.5,90.8z\"\r\n />\r\n </svg>\r\n <h1 className=\"ui-dialog-title\">{title}</h1>\r\n </>\r\n </DialogHeader>\r\n <DialogContent>\r\n {children}\r\n </DialogContent>\r\n <DialogFooter>\r\n <Button\r\n className=\"dialog-action-ok dialog-action\"\r\n onClick={handleOkClick}\r\n >\r\n {okMessage}\r\n </Button>\r\n <Button\r\n className=\"dialog-action-close dialog-action\"\r\n onClick={handleCloseClick}\r\n >\r\n {cancelMessage}\r\n </Button>\r\n </DialogFooter>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default ConfirmDialog;","import React from 'react';\r\nimport Dialog from './Dialog';\r\nimport DialogHeader from './DialogHeader';\r\nimport DialogFooter from './DialogFooter';\r\nimport DialogContent from './DialogContent';\r\nimport classNames from '../utils/classNames';\r\nimport Button from '../Button';\r\n\r\nexport interface ErrorDialogProps {\r\n title: string;\r\n ok?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n onClose?: (isOk: boolean) => void;\r\n}\r\n\r\nconst ErrorDialog: React.FC<ErrorDialogProps> = ({\r\n title,\r\n ok,\r\n children,\r\n className,\r\n onClose\r\n}) => {\r\n const handleOkClick = React.useCallback(() => {\r\n if (!onClose) return;\r\n\r\n onClose(true);\r\n }, [onClose]);\r\n\r\n const okMessage = ok ?? 'fermer';\r\n\r\n return (\r\n <Dialog\r\n open\r\n className={classNames('ui-dialog-box', 'ui-dialog-error', className)}\r\n >\r\n <DialogHeader>\r\n <>\r\n <svg className=\"ui-dialog-icon\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 438.533 438.533\">\r\n <path d=\"M409.133,109.203c-19.608-33.592-46.205-60.189-79.798-79.796C295.736,9.801,259.058,0,219.273,0 c-39.781,0-76.47,9.801-110.063,29.407c-33.595,19.604-60.192,46.201-79.8,79.796C9.801,142.8,0,179.489,0,219.267 c0,39.78,9.804,76.463,29.407,110.062c19.607,33.592,46.204,60.189,79.799,79.798c33.597,19.605,70.283,29.407,110.063,29.407 s76.47-9.802,110.065-29.407c33.593-19.602,60.189-46.206,79.795-79.798c19.603-33.596,29.403-70.284,29.403-110.062 C438.533,179.485,428.732,142.795,409.133,109.203z M387.434,290.213c-9.709,22.556-22.696,41.97-38.969,58.245 c-16.271,16.269-35.689,29.26-58.245,38.965c-22.555,9.712-46.202,14.564-70.946,14.564c-24.744,0-48.391-4.853-70.948-14.564 c-22.554-9.705-41.971-22.696-58.245-38.965c-16.269-16.275-29.259-35.687-38.97-58.245 c-9.707-22.552-14.562-46.206-14.562-70.946c0-24.744,4.854-48.391,14.562-70.948c9.707-22.554,22.697-41.968,38.97-58.245 c16.274-16.269,35.691-29.26,58.245-38.97c22.554-9.704,46.205-14.558,70.948-14.558c24.74,0,48.395,4.851,70.946,14.558 c22.556,9.707,41.97,22.698,58.245,38.97c16.272,16.274,29.26,35.688,38.969,58.245c9.709,22.554,14.564,46.201,14.564,70.948 C402.002,244.011,397.143,267.664,387.434,290.213z\" />\r\n <path d=\"M284.368,258.668c-19.219-14.086-40.926-21.129-65.095-21.129c-24.172,0-45.871,7.039-65.096,21.129 c-19.224,14.085-32.358,32.641-39.397,55.671c-1.521,4.757-1.143,9.381,1.141,13.847c2.286,4.469,5.898,7.467,10.85,8.993 c4.758,1.526,9.373,1.143,13.846-1.144c4.471-2.285,7.467-5.899,8.991-10.848c4.759-15.235,13.562-27.556,26.409-36.979 c12.847-9.418,27.263-14.127,43.252-14.127c15.987,0,30.412,4.712,43.251,14.127c12.854,9.424,21.655,21.744,26.412,36.979 c1.52,4.948,4.564,8.562,9.134,10.848c4.568,2.286,9.236,2.67,13.989,1.144c4.761-1.526,8.278-4.524,10.564-8.993 c2.286-4.466,2.669-9.09,1.14-13.847C316.729,291.312,303.591,272.75,284.368,258.668z\" />\r\n <path d=\"M146.181,182.725c10.085,0,18.699-3.576,25.837-10.709c7.139-7.135,10.708-15.749,10.708-25.837 c0-10.089-3.569-18.699-10.708-25.837s-15.752-10.709-25.837-10.709c-10.088,0-18.702,3.571-25.84,10.709 c-7.135,7.139-10.707,15.749-10.707,25.837c0,10.088,3.568,18.702,10.707,25.837C127.482,179.152,136.093,182.725,146.181,182.725 z\" />\r\n <path d=\"M292.359,109.631c-10.089,0-18.706,3.571-25.845,10.709c-7.132,7.139-10.708,15.749-10.708,25.837 c0,10.088,3.576,18.702,10.708,25.837c7.139,7.137,15.756,10.709,25.845,10.709c10.081,0,18.698-3.576,25.837-10.709 c7.139-7.135,10.708-15.749,10.708-25.837c0-10.089-3.569-18.699-10.708-25.837S302.44,109.631,292.359,109.631z\" />\r\n </svg>\r\n <h1 className=\"ui-dialog-title\">{title}</h1>\r\n </>\r\n </DialogHeader>\r\n <DialogContent>\r\n {children}\r\n </DialogContent>\r\n <DialogFooter>\r\n <Button\r\n className=\"dialog-action-ok dialog-action\"\r\n onClick={handleOkClick}\r\n >\r\n {okMessage}\r\n </Button>\r\n </DialogFooter>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default ErrorDialog;","import React from 'react';\r\nimport Dialog from './Dialog';\r\nimport DialogHeader from './DialogHeader';\r\nimport DialogFooter from './DialogFooter';\r\nimport DialogContent from './DialogContent';\r\nimport classNames from '../utils/classNames';\r\nimport Button from '../Button';\r\n\r\nexport interface WarningDialogProps {\r\n title: string;\r\n ok?: string;\r\n children?: React.ReactNode;\r\n className?: string;\r\n onClose?: (isOk: boolean) => void;\r\n}\r\n\r\nconst WarningDialog: React.FC<WarningDialogProps> = ({\r\n title,\r\n ok,\r\n children,\r\n className,\r\n onClose\r\n}) => {\r\n const handleOkClick = React.useCallback(() => {\r\n if (!onClose) return;\r\n\r\n onClose(true);\r\n }, [onClose]);\r\n\r\n const okMessage = ok ?? 'fermer';\r\n\r\n return (\r\n <Dialog\r\n open\r\n className={classNames('ui-dialog-box', 'ui-dialog-warning', className)}\r\n >\r\n <DialogHeader>\r\n <>\r\n <svg className=\"ui-dialog-icon\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 512 512\">\r\n <polygon fill=\"#FFA418\" points=\"0,477.703 256,477.703 289.391,256 256,34.297\" />\r\n <polygon fill=\"#FF8A1E\" points=\"256,34.297 256,477.703 512,477.703\" />\r\n <circle fill=\"#324860\" cx=\"256\" cy=\"405.359\" r=\"16.696\" />\r\n <rect x=\"239.304\" y=\"177.185\" fill=\"#324860\" width=\"33.391\" height=\"178.087\" />\r\n </svg>\r\n <h1 className=\"ui-dialog-title\">{title}</h1>\r\n </>\r\n </DialogHeader>\r\n <DialogContent>\r\n {children}\r\n </DialogContent>\r\n <DialogFooter>\r\n <Button\r\n className=\"dialog-action-ok dialog-action\"\r\n onClick={handleOkClick}\r\n >\r\n {okMessage}\r\n </Button>\r\n </DialogFooter>\r\n </Dialog>\r\n );\r\n};\r\n\r\nexport default WarningDialog;"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","create","Iterator","verb","Symbol","iterator","v","op","TypeError","pop","push","__spreadArray","to","from","pack","ar","l","Array","slice","concat","forwardRef","render","React","props","ref","SuppressedError","DomContainer","_a","children","_b","container","document","target","useRef","useEffect","containerNode","getContainer","current","appendChild","remove","createElement","ReactDOM","createPortal","setRef","classNames","values","_i","classes","idx","arg","argType","isArray","inner","toString","keys","forEach","key","join","getAbsoluteBoundingRect","el","win","window","offsetX","undefined","pageXOffset","documentElement","parentNode","scrollLeft","offsetY","pageYOffset","scrollTop","rect","getBoundingClientRect","bottom","height","left","right","top","width","TransitionState","PopperPlacement","Center","BottomCenter","BottomRight","BottomLeft","TopCenter","TopRight","TopLeft","LeftTop","LeftBottom","LeftCenter","RightTop","RightBottom","RightCenter","Popper","anchorEl","anchorPosition","placement","_c","open","_d","overflow","role","className","other","popperRef","containerRef","_e","useState","scrollX","scrollY","innerHeight","innerWidth","documentDimensions","setDimensions","_f","position","margin","inset","transform","opacity","popperStyle","setPopperStyle","onDisplayWindowResize","onDocumentScroll","addEventListener","removeEventListener","observer","anchor","element","getElementById","getAnchorElement","updatePosition_1","content","containerRect","contentRect","getContentPosition","fixPosition","newCoord","fixPositionInRect","maxHeight","toFixed","maxWidth","MutationObserver","observe","attributes","childList","subtree","disconnect","style","Spinner","variant","BarLoader","title","color","isComplete","Fragment","Selected","data","onClick","map","item","index","type","selected","name","Button","disable","handleClick","useCallback","event","DialogMask","zIndex","useMemo","querySelectorAll","DialogBody","Dialog","handleKeyUp","includes","onClose","fontFamily","fontWeight","fontSize","background","border","padding","ScanConfirmationDialog","display","flexDirection","message","marginTop","justifyContent","backgroundColor","btnCancel","btnOk","onConfirm","Scanner","scanConfirmation","scanTrackerType","setOpen","setOnConfirm","currentResult","setCurrentResult","handleCloseDialog","getTracker","outline","boundingBox","centerText","handleConfirmScan","onScan","handleOnScan","alignItems","gap","QrScanner","formats","components","onOff","torch","tracker","finder","scanDelay","allowMultiple","paused","scanConfirmDialog","FileStorageDB","dbName","storeName","db","openDatabase","request","indexedDB","_this","onupgradeneeded","createObjectStore","keyPath","autoIncrement","onsuccess","onerror","error","storeFile","file","transaction","objectStore","add","timestamp","Date","now","retrieveFile","id","get","record","Camera","onCapture","isOffline","mode","validateText","resetText","isShowOffline","_g","isShowVideoButton","_h","isShowSwitchButton","webcamRef","mediaRecorderRef","fileStorageRef","_j","mode_","setMode","_k","playing","setPlaying","_l","isFrontCamera","setIsFrontCamera","isMobile","test","navigator","userAgent","maxTouchPoints","MdCameraswitchItem","MdCameraswitch","FaCameraItem","FaCamera","BsFillRecordFillItem","BsFillRecordFill","FaStopItem","FaStop","FaPlayItem","FaPlay","FaPauseItem","FaPause","_m","timerIntervalRef","recordingTime","setRecordingTime","formatTime","totalSeconds","days","Math","floor","hours","minutes","seconds","padStart","formatedTime","startTimer","setInterval","prev","stopTimer","clearInterval","useTimer","_o","imageUrl","videoUrl","isRecording","storedFileId","mediaState","setMediaState","_p","facingMode","min","setVideoConstraints","resetCapture","stopVideoRecording","capturePhoto","imageSrc","getScreenshot","byteCharacters","atob","split","byteNumbers","charCodeAt","byteArray","Uint8Array","blob","Blob","fileName","file_1","File","fileUrl_1","URL","createObjectURL","startVideoRecording","stream","ext_1","mimeType_1","MediaRecorder","isTypeSupported","mediaRecorder","mimeType","chunks_1","ondataavailable","size","onstop","fileUrl","start","src","alt","objectFit","overflowClipMargin","aspectRatio","justifySelf","onEnded","kind","lang","default","video","play","pause","fileRowId","fileStoreName","videoSrc","Webcam","videoConstraints","screenshotFormat","allowFullScreen","stop","ToggleButton","onChange","handleBtnClick","CSSTransition","trigger","enterTimeout","exitTimeout","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef","timeout","Exited","Entered","clearTimeout","classList","setTimeout","childrenNode","childrenProps","cloneElement","Fade","Tooltip","enterDelay","leaveDelay","disabled","childNode","setChildNode","isOpen","setIsOpen","isTransitionExited","setTransitionExited","isTouchDevice","setIsTouchDevice","mouseEnterTimer","mouseLeaveTimer","openTooltip","closeTooltip","handleMouseLeave","currentTarget","handleMouseOver","handleTouchStart","handleTouchEnd","onFocus","onMouseEnter","onMouseLeave","onMouseOver","onTouchStart","onTouchEnd","computeOpen","useClickOutside","callback","nodes","handleDocumentMouseDown","isOutside","reduce","acc","contains","previousMethods","TagItem","tag","onDelete","TagSearchInput","inputRef","handleInputChange","autoComplete","spellCheck","TagSuggestionItem","suggestion","tabIndex","TagSuggestionGroup","group","suggestionElements","suggestions","sugItem","TagSuggestion","tags","disableFilter","filter","onSuggestionClick","filteredSuggestions","haveTags","haveFilter","some","tagItem","toUpperCase","childSug_1","sugChildItem","handleItemClick","TagInput","onTextChange","suggestionRef","inputValue","setInputValue","suggestionOpen","setSuggestionOpen","handleDeleteTag","tagIndex","findIndex","newTags","splice","handleSuggestionClick","newTag","handleSearchInputChange","newValue","tagElements","LocationContext","createContext","locations","setLocations","leafletActiveAreaPreviousMethods","getCenter","L","Map","setView","flyTo","setZoomAround","getBoundsZoom","PopupAdjustPan","Popup","_adjustPan","RendererUpdate","Renderer","_update","include","getBounds","_viewport","getViewportLatLngBounds","bounds","getPixelBounds","sw","unproject","getBottomLeft","ne","getTopRight","LatLngBounds","getViewport","getViewportBounds","vp","topleft","point","offsetLeft","offsetTop","vpsize","clientWidth","clientHeight","x","latLngBounds","containerPointToLatLng","max","getOffset","mCenter","getSize","divideBy","vCenter","subtract","withoutViewport","center","zoom","getZoom","project","options","latLng","_zoom","_limitZoom","targetCenter","targetZoom","startZoom","animate","Browser","any3d","_stop","w0","w1","getZoomScale","u1","distanceTo","rho","rho2","r","b","sq","sqrt","log","sinh","exp","cosh","r0","u","S","duration","_moveStart","noMoveStart","frame","pow","easeOut","_flyToFrame","Util","requestAnimFrame","_move","multiplyBy","getScaleZoom","w","_moveEnd","latlng","scale","viewHalf","centerOffset","Point","latLngToContainerPoint","newCenter","inside","getMinZoom","getMaxZoom","nw","getNorthWest","se","getSouthEast","boundsSize","snap","zoomSnap","scalex","scaley","round","ceil","setActiveArea","css","keepCenter","DomUtil","insertBefore","firstChild","extend","_onZoom","_updateTransform","_map","_center","GridLayer","_updateLevels","_tileZoom","maxZoom","z","_levels","Number","abs","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","level","_container","origin","getPixelOrigin","_setZoomTransform","falseFn","offsetWidth","_onCreateLevel","_level","_resetView","animating","pinch","_setView","_clampZoom","pixelBounds","_getTiledPixelBounds","tileRange","_pxBoundsToTileRange","tileCenter","queue","keepBuffer","noPruneRange","Bounds","isFinite","Error","_tiles","c","coords","j","_isValidTile","tile","_tileCoordsToKey","sort","a","_loading","fire","fragment","createDocumentFragment","_addTile","autoPan","_panAnim","containerHeight","offsetHeight","containerWidth","_containerWidth","vpTopleft","layerPos","_containerLeft","_containerBottom","_add","getPosition","containerPos","layerPointToContainerPoint","autoPanPadding","paddingTL","autoPanPaddingTopLeft","paddingBR","autoPanPaddingBottomRight","dx","dy","panBy","CenterActiveAreaControl","useMap","Control","CenterActiveArea","onAdd","zoomControl","forceSeparateButton","DomEvent","disableClickPropagation","link","href","innerHTML","icon","setAttribute","on","handleButtonClick","control","centerActiveArea","opts","addTo","autoCenter","centerMap","getMarkers","layerGroup","featureGroup","eachLayer","layer","Marker","addLayer","getPolygons","Polygon","isValid","fitBounds","MapFullscreenControl","leaflet","fullscreen","DrawTools","buildedEditProps","edit","editable","EditControl","onCreated","handleOnCreated","onDeleted","handleOnDeleted","onEdited","handleOnEdited","draw","rectangle","circle","circlemarker","polyline","Maps","initialDrawState","polygon","marker","setDraw","mapType","setMapType","useContext","Icon","Default","mergeOptions","iconRetinaUrl","markerIcon2x","shadowUrl","markerShadow","iconSize","iconAnchor","popupAnchor","shadowSize","d","newState","layerType","points","_latlngs","latitude","lat","longitude","lng","order","_latlng","_leaflet_id","layers","prevLocations","editedLayers","getLayers","location","matchedEditedLayer","find","originalPoint","newLatLng","getLatLng","objId","drawTools","singlePosition","draw_1","MapContainer","minZoom","MapContainerProps","TileLayer","attribution","url","toggleSatelliteView","borderRadius","checked","FeatureGroup","_layers","workaround","random","positions","customButtons","onSave","handleSaveClick","handleCloseClick","buttonSaveEvent","saveButton","buttonCancelEvent","cancelButton","Provider","Menu","menuRef","onContextMenu","useElement","elNode","setElNode","ContextMenu","onOpen","containerEl","contextMenu","setContextMenu","handleContextMenu","mouseEvent","preventDefault","ctrlKey","mouseX","pageX","mouseY","pageY","handleDocumentContextMenu","rootEl","button","stopPropagation","Divider","ChevronDownIcon","xmlns","viewBox","fill","fillRule","clipRule","ChevronRightIcon","preserveAspectRatio","ChevronLeftIcon","CrossIcon","MenuItem","itemTemplate","showMenu","setShowMenu","handleMenuClick","haveSubMenu","PopupMenu","MenuGroup","AuthDownloadLink","queryParams","token","onStart","onCompleted","onError","getFilenameFromHeaders","headers","contentDisposition","infos","leadIn","info","search","substring","trim","firstCharacter","ContentType","Authorization","initData","method","urlObject_1","searchParams","append","fetch","status","generatedUrl","download","click","revokeObjectURL","error_1","fullWidth","fullHeight","prevOverflowRef","dialogRef","handleOverlayClick","DialogContent","DialogFooter","DialogHeader","DialogTitle","closeDisable","showCloseBtn","DialogActions","ConfirmDialog","ok","cancel","handleOkClick","okMessage","cancelMessage","version","ErrorDialog","WarningDialog","xmlnsXlink","cx","cy"],"mappings":"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","x_google_ignoreList":[0,24]}