@egjs/flicking 4.12.1-beta.5 → 4.13.0

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 +0,0 @@
1
- {"version":3,"file":"flicking.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/@egjs/component/dist/component.esm.js","../src/utils.ts","../src/core/panel/Panel.ts","../src/camera/Camera.ts","../node_modules/xstate/dev/dist/xstate-dev.esm.js","../node_modules/xstate/dist/raise-c17ec2bc.esm.js","../node_modules/xstate/dist/log-3d9d72a9.esm.js","../node_modules/xstate/dist/xstate.esm.js","../src/utils/StateMachine.ts","../src/control/Control.ts","../src/control/SnapControl.ts","../src/control/FreeControl.ts","../src/control/StrictControl.ts","../node_modules/@egjs/agent/dist/agent.esm.js","../node_modules/@cfcs/core/dist/cfcs.esm.js","../node_modules/@egjs/axes/dist/axes.esm.js","../src/input/AxesController.ts","../src/core/Viewport.ts","../src/core/FlickingError.ts","../src/const/external.ts","../src/index.ts","../src/index.umd.ts"],"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","/*\nCopyright (c) NAVER Corp.\nname: @egjs/component\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-component\nversion: 3.0.5\n*/\n/*! *****************************************************************************\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***************************************************************************** */\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nvar isUndefined = function (value) {\n return typeof value === \"undefined\";\n};\n\n// This class name is not matched to file name intentionally\n/**\n * Event class to provide additional properties\n * @ko Component에서 추가적인 프로퍼티를 제공하는 이벤트 클래스\n */\nvar ComponentEvent = /*#__PURE__*/function () {\n /**\n * Create a new instance of ComponentEvent.\n * @ko ComponentEvent의 새로운 인스턴스를 생성한다.\n * @param eventType The name of the event.<ko>이벤트 이름.</ko>\n * @param props An object that contains additional event properties.<ko>추가적인 이벤트 프로퍼티 오브젝트.</ko>\n */\n function ComponentEvent(eventType, props) {\n var e_1, _a;\n this._canceled = false;\n if (props) {\n try {\n for (var _b = __values(Object.keys(props)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this[key] = props[key];\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n this.eventType = eventType;\n }\n /**\n * Stop the event. {@link ComponentEvent#isCanceled} will return `true` after.\n * @ko 이벤트를 중단한다. 이후 {@link ComponentEvent#isCanceled}가 `true`를 반환한다.\n */\n var __proto = ComponentEvent.prototype;\n __proto.stop = function () {\n this._canceled = true;\n };\n /**\n * Returns a boolean value that indicates whether {@link ComponentEvent#stop} is called before.\n * @ko {@link ComponentEvent#stop}이 호출되었는지 여부를 반환한다.\n * @return {boolean} A boolean value that indicates whether {@link ComponentEvent#stop} is called before.<ko>이전에 {@link ComponentEvent#stop}이 불려졌는지 여부를 반환한다.</ko>\n */\n __proto.isCanceled = function () {\n return this._canceled;\n };\n return ComponentEvent;\n}();\n\n/**\n * A class used to manage events in a component\n * @ko 컴포넌트의 이벤트을 관리할 수 있게 하는 클래스\n */\nvar Component = /*#__PURE__*/function () {\n /**\n * @support {\"ie\": \"7+\", \"ch\" : \"latest\", \"ff\" : \"latest\", \"sf\" : \"latest\", \"edge\" : \"latest\", \"ios\" : \"7+\", \"an\" : \"2.1+ (except 3.x)\"}\n */\n function Component() {\n this._eventHandler = {};\n }\n /**\n * Trigger a custom event.\n * @ko 커스텀 이벤트를 발생시킨다\n * @param {string | ComponentEvent} event The name of the custom event to be triggered or an instance of the ComponentEvent<ko>발생할 커스텀 이벤트의 이름 또는 ComponentEvent의 인스턴스</ko>\n * @param {any[]} params Event data to be sent when triggering a custom event <ko>커스텀 이벤트가 발생할 때 전달할 데이터</ko>\n * @return An instance of the component itself<ko>컴포넌트 자신의 인스턴스</ko>\n * @example\n * ```ts\n * import Component, { ComponentEvent } from \"@egjs/component\";\n *\n * class Some extends Component<{\n * beforeHi: ComponentEvent<{ foo: number; bar: string }>;\n * hi: { foo: { a: number; b: boolean } };\n * someEvent: (foo: number, bar: string) => void;\n * someOtherEvent: void; // When there's no event argument\n * }> {\n * some(){\n * if(this.trigger(\"beforeHi\")){ // When event call to stop return false.\n * this.trigger(\"hi\");// fire hi event.\n * }\n * }\n * }\n *\n * const some = new Some();\n * some.on(\"beforeHi\", e => {\n * if(condition){\n * e.stop(); // When event call to stop, `hi` event not call.\n * }\n * // `currentTarget` is component instance.\n * console.log(some === e.currentTarget); // true\n *\n * typeof e.foo; // number\n * typeof e.bar; // string\n * });\n * some.on(\"hi\", e => {\n * typeof e.foo.b; // boolean\n * });\n * // If you want to more know event design. You can see article.\n * // https://github.com/naver/egjs-component/wiki/How-to-make-Component-event-design%3F\n * ```\n */\n var __proto = Component.prototype;\n __proto.trigger = function (event) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n var eventName = event instanceof ComponentEvent ? event.eventType : event;\n var handlers = __spread(this._eventHandler[eventName] || []);\n if (handlers.length <= 0) {\n return this;\n }\n if (event instanceof ComponentEvent) {\n event.currentTarget = this;\n handlers.forEach(function (handler) {\n handler(event);\n });\n } else {\n handlers.forEach(function (handler) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n handler.apply(void 0, __spread(params));\n });\n }\n return this;\n };\n /**\n * Executed event just one time.\n * @ko 이벤트가 한번만 실행된다.\n * @param {string} eventName The name of the event to be attached or an event name - event handler mapped object.<ko>등록할 이벤트의 이름 또는 이벤트 이름-핸들러 오브젝트</ko>\n * @param {function} handlerToAttach The handler function of the event to be attached <ko>등록할 이벤트의 핸들러 함수</ko>\n * @return An instance of the component itself<ko>컴포넌트 자신의 인스턴스</ko>\n * @example\n * ```ts\n * import Component, { ComponentEvent } from \"@egjs/component\";\n *\n * class Some extends Component<{\n * hi: ComponentEvent;\n * }> {\n * hi() {\n * alert(\"hi\");\n * }\n * thing() {\n * this.once(\"hi\", this.hi);\n * }\n * }\n *\n * var some = new Some();\n * some.thing();\n * some.trigger(new ComponentEvent(\"hi\"));\n * // fire alert(\"hi\");\n * some.trigger(new ComponentEvent(\"hi\"));\n * // Nothing happens\n * ```\n */\n __proto.once = function (eventName, handlerToAttach) {\n var _this = this;\n if (typeof eventName === \"object\" && isUndefined(handlerToAttach)) {\n var eventHash = eventName;\n for (var key in eventHash) {\n this.once(key, eventHash[key]);\n }\n return this;\n } else if (typeof eventName === \"string\" && typeof handlerToAttach === \"function\") {\n var listener_1 = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n handlerToAttach.apply(void 0, __spread(args));\n _this.off(eventName, listener_1);\n };\n this.on(eventName, listener_1);\n }\n return this;\n };\n /**\n * Checks whether an event has been attached to a component.\n * @ko 컴포넌트에 이벤트가 등록됐는지 확인한다.\n * @param {string} eventName The name of the event to be attached <ko>등록 여부를 확인할 이벤트의 이름</ko>\n * @return {boolean} Indicates whether the event is attached. <ko>이벤트 등록 여부</ko>\n * @example\n * ```ts\n * import Component from \"@egjs/component\";\n *\n * class Some extends Component<{\n * hi: void;\n * }> {\n * some() {\n * this.hasOn(\"hi\");// check hi event.\n * }\n * }\n * ```\n */\n __proto.hasOn = function (eventName) {\n return !!this._eventHandler[eventName];\n };\n /**\n * Attaches an event to a component.\n * @ko 컴포넌트에 이벤트를 등록한다.\n * @param {string} eventName The name of the event to be attached or an event name - event handler mapped object.<ko>등록할 이벤트의 이름 또는 이벤트 이름-핸들러 오브젝트</ko>\n * @param {function} handlerToAttach The handler function of the event to be attached <ko>등록할 이벤트의 핸들러 함수</ko>\n * @return An instance of a component itself<ko>컴포넌트 자신의 인스턴스</ko>\n * @example\n * ```ts\n * import Component, { ComponentEvent } from \"@egjs/component\";\n *\n * class Some extends Component<{\n * hi: void;\n * }> {\n * hi() {\n * console.log(\"hi\");\n * }\n * some() {\n * this.on(\"hi\",this.hi); //attach event\n * }\n * }\n * ```\n */\n __proto.on = function (eventName, handlerToAttach) {\n if (typeof eventName === \"object\" && isUndefined(handlerToAttach)) {\n var eventHash = eventName;\n for (var name in eventHash) {\n this.on(name, eventHash[name]);\n }\n return this;\n } else if (typeof eventName === \"string\" && typeof handlerToAttach === \"function\") {\n var handlerList = this._eventHandler[eventName];\n if (isUndefined(handlerList)) {\n this._eventHandler[eventName] = [];\n handlerList = this._eventHandler[eventName];\n }\n handlerList.push(handlerToAttach);\n }\n return this;\n };\n /**\n * Detaches an event from the component.<br/>If the `eventName` is not given this will detach all event handlers attached.<br/>If the `handlerToDetach` is not given, this will detach all event handlers for `eventName`.\n * @ko 컴포넌트에 등록된 이벤트를 해제한다.<br/>`eventName`이 주어지지 않았을 경우 모든 이벤트 핸들러를 제거한다.<br/>`handlerToAttach`가 주어지지 않았을 경우 `eventName`에 해당하는 모든 이벤트 핸들러를 제거한다.\n * @param {string?} eventName The name of the event to be detached <ko>해제할 이벤트의 이름</ko>\n * @param {function?} handlerToDetach The handler function of the event to be detached <ko>해제할 이벤트의 핸들러 함수</ko>\n * @return An instance of a component itself <ko>컴포넌트 자신의 인스턴스</ko>\n * @example\n * ```ts\n * import Component, { ComponentEvent } from \"@egjs/component\";\n *\n * class Some extends Component<{\n * hi: void;\n * }> {\n * hi() {\n * console.log(\"hi\");\n * }\n * some() {\n * this.off(\"hi\",this.hi); //detach event\n * }\n * }\n * ```\n */\n __proto.off = function (eventName, handlerToDetach) {\n // Detach all event handlers.\n if (isUndefined(eventName)) {\n this._eventHandler = {};\n return this;\n }\n // Detach all handlers for eventname or detach event handlers by object.\n if (isUndefined(handlerToDetach)) {\n if (typeof eventName === \"string\") {\n delete this._eventHandler[eventName];\n return this;\n } else {\n var eventHash = eventName;\n for (var name in eventHash) {\n this.off(name, eventHash[name]);\n }\n return this;\n }\n }\n // Detach single event handler\n var handlerList = this._eventHandler[eventName];\n if (handlerList) {\n var length = handlerList.length;\n for (var i = 0; i < length; ++i) {\n if (handlerList[i] === handlerToDetach) {\n handlerList.splice(i, 1);\n if (length <= 1) {\n delete this._eventHandler[eventName];\n }\n break;\n }\n }\n }\n return this;\n };\n /**\n * Version info string\n * @ko 버전정보 문자열\n * @name VERSION\n * @static\n * @example\n * Component.VERSION; // ex) 3.0.0\n * @memberof Component\n */\n Component.VERSION = \"3.0.5\";\n return Component;\n}();\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-unsafe-assignment\nvar ComponentEvent$1 = ComponentEvent;\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\nexport default Component;\nexport { ComponentEvent$1 as ComponentEvent };\n//# sourceMappingURL=component.esm.js.map\n",null,null,null,"// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n}\nfunction getDevTools() {\n const w = getGlobal();\n if (w.__xstate__) {\n return w.__xstate__;\n }\n return undefined;\n}\nfunction registerService(service) {\n if (typeof window === 'undefined') {\n return;\n }\n const devTools = getDevTools();\n if (devTools) {\n devTools.register(service);\n }\n}\nconst devToolsAdapter = service => {\n if (typeof window === 'undefined') {\n return;\n }\n const devTools = getDevTools();\n if (devTools) {\n devTools.register(service);\n }\n};\n\nexport { devToolsAdapter, getGlobal, registerService };\n","import { devToolsAdapter } from '../dev/dist/xstate-dev.esm.js';\n\nclass Mailbox {\n constructor(_process) {\n this._process = _process;\n this._active = false;\n this._current = null;\n this._last = null;\n }\n start() {\n this._active = true;\n this.flush();\n }\n clear() {\n // we can't set _current to null because we might be currently processing\n // and enqueue following clear shouldnt start processing the enqueued item immediately\n if (this._current) {\n this._current.next = null;\n this._last = this._current;\n }\n }\n enqueue(event) {\n const enqueued = {\n value: event,\n next: null\n };\n if (this._current) {\n this._last.next = enqueued;\n this._last = enqueued;\n return;\n }\n this._current = enqueued;\n this._last = enqueued;\n if (this._active) {\n this.flush();\n }\n }\n flush() {\n while (this._current) {\n // atm the given _process is responsible for implementing proper try/catch handling\n // we assume here that this won't throw in a way that can affect this mailbox\n const consumed = this._current;\n this._process(consumed.value);\n this._current = consumed.next;\n }\n this._last = null;\n }\n}\n\nconst STATE_DELIMITER = '.';\nconst TARGETLESS_KEY = '';\nconst NULL_EVENT = '';\nconst STATE_IDENTIFIER = '#';\nconst WILDCARD = '*';\nconst XSTATE_INIT = 'xstate.init';\nconst XSTATE_ERROR = 'xstate.error';\nconst XSTATE_STOP = 'xstate.stop';\n\n/**\n * Returns an event that represents an implicit event that is sent after the\n * specified `delay`.\n *\n * @param delayRef The delay in milliseconds\n * @param id The state node ID where this event is handled\n */\nfunction createAfterEvent(delayRef, id) {\n return {\n type: `xstate.after.${delayRef}.${id}`\n };\n}\n\n/**\n * Returns an event that represents that a final state node has been reached in\n * the parent state node.\n *\n * @param id The final state node's parent state node `id`\n * @param output The data to pass into the event\n */\nfunction createDoneStateEvent(id, output) {\n return {\n type: `xstate.done.state.${id}`,\n output\n };\n}\n\n/**\n * Returns an event that represents that an invoked service has terminated.\n *\n * An invoked service is terminated when it has reached a top-level final state\n * node, but not when it is canceled.\n *\n * @param invokeId The invoked service ID\n * @param output The data to pass into the event\n */\nfunction createDoneActorEvent(invokeId, output) {\n return {\n type: `xstate.done.actor.${invokeId}`,\n output,\n actorId: invokeId\n };\n}\nfunction createErrorActorEvent(id, error) {\n return {\n type: `xstate.error.actor.${id}`,\n error,\n actorId: id\n };\n}\nfunction createInitEvent(input) {\n return {\n type: XSTATE_INIT,\n input\n };\n}\n\n/**\n * This function makes sure that unhandled errors are thrown in a separate\n * macrotask. It allows those errors to be detected by global error handlers and\n * reported to bug tracking services without interrupting our own stack of\n * execution.\n *\n * @param err Error to be thrown\n */\nfunction reportUnhandledError(err) {\n setTimeout(() => {\n throw err;\n });\n}\n\nconst symbolObservable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n\nfunction matchesState(parentStateId, childStateId) {\n const parentStateValue = toStateValue(parentStateId);\n const childStateValue = toStateValue(childStateId);\n if (typeof childStateValue === 'string') {\n if (typeof parentStateValue === 'string') {\n return childStateValue === parentStateValue;\n }\n\n // Parent more specific than child\n return false;\n }\n if (typeof parentStateValue === 'string') {\n return parentStateValue in childStateValue;\n }\n return Object.keys(parentStateValue).every(key => {\n if (!(key in childStateValue)) {\n return false;\n }\n return matchesState(parentStateValue[key], childStateValue[key]);\n });\n}\nfunction toStatePath(stateId) {\n if (isArray(stateId)) {\n return stateId;\n }\n const result = [];\n let segment = '';\n for (let i = 0; i < stateId.length; i++) {\n const char = stateId.charCodeAt(i);\n switch (char) {\n // \\\n case 92:\n // consume the next character\n segment += stateId[i + 1];\n // and skip over it\n i++;\n continue;\n // .\n case 46:\n result.push(segment);\n segment = '';\n continue;\n }\n segment += stateId[i];\n }\n result.push(segment);\n return result;\n}\nfunction toStateValue(stateValue) {\n if (isMachineSnapshot(stateValue)) {\n return stateValue.value;\n }\n if (typeof stateValue !== 'string') {\n return stateValue;\n }\n const statePath = toStatePath(stateValue);\n return pathToStateValue(statePath);\n}\nfunction pathToStateValue(statePath) {\n if (statePath.length === 1) {\n return statePath[0];\n }\n const value = {};\n let marker = value;\n for (let i = 0; i < statePath.length - 1; i++) {\n if (i === statePath.length - 2) {\n marker[statePath[i]] = statePath[i + 1];\n } else {\n const previous = marker;\n marker = {};\n previous[statePath[i]] = marker;\n }\n }\n return value;\n}\nfunction mapValues(collection, iteratee) {\n const result = {};\n const collectionKeys = Object.keys(collection);\n for (let i = 0; i < collectionKeys.length; i++) {\n const key = collectionKeys[i];\n result[key] = iteratee(collection[key], key, collection, i);\n }\n return result;\n}\nfunction toArrayStrict(value) {\n if (isArray(value)) {\n return value;\n }\n return [value];\n}\nfunction toArray(value) {\n if (value === undefined) {\n return [];\n }\n return toArrayStrict(value);\n}\nfunction resolveOutput(mapper, context, event, self) {\n if (typeof mapper === 'function') {\n return mapper({\n context,\n event,\n self\n });\n }\n return mapper;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isErrorActorEvent(event) {\n return event.type.startsWith('xstate.error.actor');\n}\nfunction toTransitionConfigArray(configLike) {\n return toArrayStrict(configLike).map(transitionLike => {\n if (typeof transitionLike === 'undefined' || typeof transitionLike === 'string') {\n return {\n target: transitionLike\n };\n }\n return transitionLike;\n });\n}\nfunction normalizeTarget(target) {\n if (target === undefined || target === TARGETLESS_KEY) {\n return undefined;\n }\n return toArray(target);\n}\nfunction toObserver(nextHandler, errorHandler, completionHandler) {\n const isObserver = typeof nextHandler === 'object';\n const self = isObserver ? nextHandler : undefined;\n return {\n next: (isObserver ? nextHandler.next : nextHandler)?.bind(self),\n error: (isObserver ? nextHandler.error : errorHandler)?.bind(self),\n complete: (isObserver ? nextHandler.complete : completionHandler)?.bind(self)\n };\n}\nfunction createInvokeId(stateNodeId, index) {\n return `${index}.${stateNodeId}`;\n}\nfunction resolveReferencedActor(machine, src) {\n const match = src.match(/^xstate\\.invoke\\.(\\d+)\\.(.*)/);\n if (!match) {\n return machine.implementations.actors[src];\n }\n const [, indexStr, nodeId] = match;\n const node = machine.getStateNodeById(nodeId);\n const invokeConfig = node.config.invoke;\n return (Array.isArray(invokeConfig) ? invokeConfig[indexStr] : invokeConfig).src;\n}\nfunction getAllOwnEventDescriptors(snapshot) {\n return [...new Set([...snapshot._nodes.flatMap(sn => sn.ownEvents)])];\n}\n\nfunction createScheduledEventId(actorRef, id) {\n return `${actorRef.sessionId}.${id}`;\n}\nlet idCounter = 0;\nfunction createSystem(rootActor, options) {\n const children = new Map();\n const keyedActors = new Map();\n const reverseKeyedActors = new WeakMap();\n const inspectionObservers = new Set();\n const timerMap = {};\n const {\n clock,\n logger\n } = options;\n const scheduler = {\n schedule: (source, target, event, delay, id = Math.random().toString(36).slice(2)) => {\n const scheduledEvent = {\n source,\n target,\n event,\n delay,\n id,\n startedAt: Date.now()\n };\n const scheduledEventId = createScheduledEventId(source, id);\n system._snapshot._scheduledEvents[scheduledEventId] = scheduledEvent;\n const timeout = clock.setTimeout(() => {\n delete timerMap[scheduledEventId];\n delete system._snapshot._scheduledEvents[scheduledEventId];\n system._relay(source, target, event);\n }, delay);\n timerMap[scheduledEventId] = timeout;\n },\n cancel: (source, id) => {\n const scheduledEventId = createScheduledEventId(source, id);\n const timeout = timerMap[scheduledEventId];\n delete timerMap[scheduledEventId];\n delete system._snapshot._scheduledEvents[scheduledEventId];\n if (timeout !== undefined) {\n clock.clearTimeout(timeout);\n }\n },\n cancelAll: actorRef => {\n for (const scheduledEventId in system._snapshot._scheduledEvents) {\n const scheduledEvent = system._snapshot._scheduledEvents[scheduledEventId];\n if (scheduledEvent.source === actorRef) {\n scheduler.cancel(actorRef, scheduledEvent.id);\n }\n }\n }\n };\n const sendInspectionEvent = event => {\n if (!inspectionObservers.size) {\n return;\n }\n const resolvedInspectionEvent = {\n ...event,\n rootId: rootActor.sessionId\n };\n inspectionObservers.forEach(observer => observer.next?.(resolvedInspectionEvent));\n };\n const system = {\n _snapshot: {\n _scheduledEvents: (options?.snapshot && options.snapshot.scheduler) ?? {}\n },\n _bookId: () => `x:${idCounter++}`,\n _register: (sessionId, actorRef) => {\n children.set(sessionId, actorRef);\n return sessionId;\n },\n _unregister: actorRef => {\n children.delete(actorRef.sessionId);\n const systemId = reverseKeyedActors.get(actorRef);\n if (systemId !== undefined) {\n keyedActors.delete(systemId);\n reverseKeyedActors.delete(actorRef);\n }\n },\n get: systemId => {\n return keyedActors.get(systemId);\n },\n _set: (systemId, actorRef) => {\n const existing = keyedActors.get(systemId);\n if (existing && existing !== actorRef) {\n throw new Error(`Actor with system ID '${systemId}' already exists.`);\n }\n keyedActors.set(systemId, actorRef);\n reverseKeyedActors.set(actorRef, systemId);\n },\n inspect: observerOrFn => {\n const observer = toObserver(observerOrFn);\n inspectionObservers.add(observer);\n return {\n unsubscribe() {\n inspectionObservers.delete(observer);\n }\n };\n },\n _sendInspectionEvent: sendInspectionEvent,\n _relay: (source, target, event) => {\n system._sendInspectionEvent({\n type: '@xstate.event',\n sourceRef: source,\n actorRef: target,\n event\n });\n target._send(event);\n },\n scheduler,\n getSnapshot: () => {\n return {\n _scheduledEvents: {\n ...system._snapshot._scheduledEvents\n }\n };\n },\n start: () => {\n const scheduledEvents = system._snapshot._scheduledEvents;\n system._snapshot._scheduledEvents = {};\n for (const scheduledId in scheduledEvents) {\n const {\n source,\n target,\n event,\n delay,\n id\n } = scheduledEvents[scheduledId];\n scheduler.schedule(source, target, event, delay, id);\n }\n },\n _clock: clock,\n _logger: logger\n };\n return system;\n}\n\nlet executingCustomAction = false;\nconst $$ACTOR_TYPE = 1;\n\n// those values are currently used by @xstate/react directly so it's important to keep the assigned values in sync\nlet ProcessingStatus = /*#__PURE__*/function (ProcessingStatus) {\n ProcessingStatus[ProcessingStatus[\"NotStarted\"] = 0] = \"NotStarted\";\n ProcessingStatus[ProcessingStatus[\"Running\"] = 1] = \"Running\";\n ProcessingStatus[ProcessingStatus[\"Stopped\"] = 2] = \"Stopped\";\n return ProcessingStatus;\n}({});\nconst defaultOptions = {\n clock: {\n setTimeout: (fn, ms) => {\n return setTimeout(fn, ms);\n },\n clearTimeout: id => {\n return clearTimeout(id);\n }\n },\n logger: console.log.bind(console),\n devTools: false\n};\n\n/**\n * An Actor is a running process that can receive events, send events and change\n * its behavior based on the events it receives, which can cause effects outside\n * of the actor. When you run a state machine, it becomes an actor.\n */\nclass Actor {\n /**\n * Creates a new actor instance for the given logic with the provided options,\n * if any.\n *\n * @param logic The logic to create an actor from\n * @param options Actor options\n */\n constructor(logic, options) {\n this.logic = logic;\n /** The current internal state of the actor. */\n this._snapshot = void 0;\n /**\n * The clock that is responsible for setting and clearing timeouts, such as\n * delayed events and transitions.\n */\n this.clock = void 0;\n this.options = void 0;\n /** The unique identifier for this actor relative to its parent. */\n this.id = void 0;\n this.mailbox = new Mailbox(this._process.bind(this));\n this.observers = new Set();\n this.eventListeners = new Map();\n this.logger = void 0;\n /** @internal */\n this._processingStatus = ProcessingStatus.NotStarted;\n // Actor Ref\n this._parent = void 0;\n /** @internal */\n this._syncSnapshot = void 0;\n this.ref = void 0;\n // TODO: add typings for system\n this._actorScope = void 0;\n this._systemId = void 0;\n /** The globally unique process ID for this invocation. */\n this.sessionId = void 0;\n /** The system to which this actor belongs. */\n this.system = void 0;\n this._doneEvent = void 0;\n this.src = void 0;\n // array of functions to defer\n this._deferred = [];\n const resolvedOptions = {\n ...defaultOptions,\n ...options\n };\n const {\n clock,\n logger,\n parent,\n syncSnapshot,\n id,\n systemId,\n inspect\n } = resolvedOptions;\n this.system = parent ? parent.system : createSystem(this, {\n clock,\n logger\n });\n if (inspect && !parent) {\n // Always inspect at the system-level\n this.system.inspect(toObserver(inspect));\n }\n this.sessionId = this.system._bookId();\n this.id = id ?? this.sessionId;\n this.logger = options?.logger ?? this.system._logger;\n this.clock = options?.clock ?? this.system._clock;\n this._parent = parent;\n this._syncSnapshot = syncSnapshot;\n this.options = resolvedOptions;\n this.src = resolvedOptions.src ?? logic;\n this.ref = this;\n this._actorScope = {\n self: this,\n id: this.id,\n sessionId: this.sessionId,\n logger: this.logger,\n defer: fn => {\n this._deferred.push(fn);\n },\n system: this.system,\n stopChild: child => {\n if (child._parent !== this) {\n throw new Error(`Cannot stop child actor ${child.id} of ${this.id} because it is not a child`);\n }\n child._stop();\n },\n emit: emittedEvent => {\n const listeners = this.eventListeners.get(emittedEvent.type);\n const wildcardListener = this.eventListeners.get('*');\n if (!listeners && !wildcardListener) {\n return;\n }\n const allListeners = [...(listeners ? listeners.values() : []), ...(wildcardListener ? wildcardListener.values() : [])];\n for (const handler of allListeners) {\n handler(emittedEvent);\n }\n },\n actionExecutor: action => {\n const exec = () => {\n this._actorScope.system._sendInspectionEvent({\n type: '@xstate.action',\n actorRef: this,\n action: {\n type: action.type,\n params: action.params\n }\n });\n if (!action.exec) {\n return;\n }\n const saveExecutingCustomAction = executingCustomAction;\n try {\n executingCustomAction = true;\n action.exec(action.info, action.params);\n } finally {\n executingCustomAction = saveExecutingCustomAction;\n }\n };\n if (this._processingStatus === ProcessingStatus.Running) {\n exec();\n } else {\n this._deferred.push(exec);\n }\n }\n };\n\n // Ensure that the send method is bound to this Actor instance\n // if destructured\n this.send = this.send.bind(this);\n this.system._sendInspectionEvent({\n type: '@xstate.actor',\n actorRef: this\n });\n if (systemId) {\n this._systemId = systemId;\n this.system._set(systemId, this);\n }\n this._initState(options?.snapshot ?? options?.state);\n if (systemId && this._snapshot.status !== 'active') {\n this.system._unregister(this);\n }\n }\n _initState(persistedState) {\n try {\n this._snapshot = persistedState ? this.logic.restoreSnapshot ? this.logic.restoreSnapshot(persistedState, this._actorScope) : persistedState : this.logic.getInitialSnapshot(this._actorScope, this.options?.input);\n } catch (err) {\n // if we get here then it means that we assign a value to this._snapshot that is not of the correct type\n // we can't get the true `TSnapshot & { status: 'error'; }`, it's impossible\n // so right now this is a lie of sorts\n this._snapshot = {\n status: 'error',\n output: undefined,\n error: err\n };\n }\n }\n update(snapshot, event) {\n // Update state\n this._snapshot = snapshot;\n\n // Execute deferred effects\n let deferredFn;\n while (deferredFn = this._deferred.shift()) {\n try {\n deferredFn();\n } catch (err) {\n // this error can only be caught when executing *initial* actions\n // it's the only time when we call actions provided by the user through those deferreds\n // when the actor is already running we always execute them synchronously while transitioning\n // no \"builtin deferred\" should actually throw an error since they are either safe\n // or the control flow is passed through the mailbox and errors should be caught by the `_process` used by the mailbox\n this._deferred.length = 0;\n this._snapshot = {\n ...snapshot,\n status: 'error',\n error: err\n };\n }\n }\n switch (this._snapshot.status) {\n case 'active':\n for (const observer of this.observers) {\n try {\n observer.next?.(snapshot);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n break;\n case 'done':\n // next observers are meant to be notified about done snapshots\n // this can be seen as something that is different from how observable work\n // but with observables `complete` callback is called without any arguments\n // it's more ergonomic for XState to treat a done snapshot as a \"next\" value\n // and the completion event as something that is separate,\n // something that merely follows emitting that done snapshot\n for (const observer of this.observers) {\n try {\n observer.next?.(snapshot);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n this._stopProcedure();\n this._complete();\n this._doneEvent = createDoneActorEvent(this.id, this._snapshot.output);\n if (this._parent) {\n this.system._relay(this, this._parent, this._doneEvent);\n }\n break;\n case 'error':\n this._error(this._snapshot.error);\n break;\n }\n this.system._sendInspectionEvent({\n type: '@xstate.snapshot',\n actorRef: this,\n event,\n snapshot\n });\n }\n\n /**\n * Subscribe an observer to an actor’s snapshot values.\n *\n * @remarks\n * The observer will receive the actor’s snapshot value when it is emitted.\n * The observer can be:\n *\n * - A plain function that receives the latest snapshot, or\n * - An observer object whose `.next(snapshot)` method receives the latest\n * snapshot\n *\n * @example\n *\n * ```ts\n * // Observer as a plain function\n * const subscription = actor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n * ```\n *\n * @example\n *\n * ```ts\n * // Observer as an object\n * const subscription = actor.subscribe({\n * next(snapshot) {\n * console.log(snapshot);\n * },\n * error(err) {\n * // ...\n * },\n * complete() {\n * // ...\n * }\n * });\n * ```\n *\n * The return value of `actor.subscribe(observer)` is a subscription object\n * that has an `.unsubscribe()` method. You can call\n * `subscription.unsubscribe()` to unsubscribe the observer:\n *\n * @example\n *\n * ```ts\n * const subscription = actor.subscribe((snapshot) => {\n * // ...\n * });\n *\n * // Unsubscribe the observer\n * subscription.unsubscribe();\n * ```\n *\n * When the actor is stopped, all of its observers will automatically be\n * unsubscribed.\n *\n * @param observer - Either a plain function that receives the latest\n * snapshot, or an observer object whose `.next(snapshot)` method receives\n * the latest snapshot\n */\n\n subscribe(nextListenerOrObserver, errorListener, completeListener) {\n const observer = toObserver(nextListenerOrObserver, errorListener, completeListener);\n if (this._processingStatus !== ProcessingStatus.Stopped) {\n this.observers.add(observer);\n } else {\n switch (this._snapshot.status) {\n case 'done':\n try {\n observer.complete?.();\n } catch (err) {\n reportUnhandledError(err);\n }\n break;\n case 'error':\n {\n const err = this._snapshot.error;\n if (!observer.error) {\n reportUnhandledError(err);\n } else {\n try {\n observer.error(err);\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n break;\n }\n }\n }\n return {\n unsubscribe: () => {\n this.observers.delete(observer);\n }\n };\n }\n on(type, handler) {\n let listeners = this.eventListeners.get(type);\n if (!listeners) {\n listeners = new Set();\n this.eventListeners.set(type, listeners);\n }\n const wrappedHandler = handler.bind(undefined);\n listeners.add(wrappedHandler);\n return {\n unsubscribe: () => {\n listeners.delete(wrappedHandler);\n }\n };\n }\n\n /** Starts the Actor from the initial state */\n start() {\n if (this._processingStatus === ProcessingStatus.Running) {\n // Do not restart the service if it is already started\n return this;\n }\n if (this._syncSnapshot) {\n this.subscribe({\n next: snapshot => {\n if (snapshot.status === 'active') {\n this.system._relay(this, this._parent, {\n type: `xstate.snapshot.${this.id}`,\n snapshot\n });\n }\n },\n error: () => {}\n });\n }\n this.system._register(this.sessionId, this);\n if (this._systemId) {\n this.system._set(this._systemId, this);\n }\n this._processingStatus = ProcessingStatus.Running;\n\n // TODO: this isn't correct when rehydrating\n const initEvent = createInitEvent(this.options.input);\n this.system._sendInspectionEvent({\n type: '@xstate.event',\n sourceRef: this._parent,\n actorRef: this,\n event: initEvent\n });\n const status = this._snapshot.status;\n switch (status) {\n case 'done':\n // a state machine can be \"done\" upon initialization (it could reach a final state using initial microsteps)\n // we still need to complete observers, flush deferreds etc\n this.update(this._snapshot, initEvent);\n // TODO: rethink cleanup of observers, mailbox, etc\n return this;\n case 'error':\n this._error(this._snapshot.error);\n return this;\n }\n if (!this._parent) {\n this.system.start();\n }\n if (this.logic.start) {\n try {\n this.logic.start(this._snapshot, this._actorScope);\n } catch (err) {\n this._snapshot = {\n ...this._snapshot,\n status: 'error',\n error: err\n };\n this._error(err);\n return this;\n }\n }\n\n // TODO: this notifies all subscribers but usually this is redundant\n // there is no real change happening here\n // we need to rethink if this needs to be refactored\n this.update(this._snapshot, initEvent);\n if (this.options.devTools) {\n this.attachDevTools();\n }\n this.mailbox.start();\n return this;\n }\n _process(event) {\n let nextState;\n let caughtError;\n try {\n nextState = this.logic.transition(this._snapshot, event, this._actorScope);\n } catch (err) {\n // we wrap it in a box so we can rethrow it later even if falsy value gets caught here\n caughtError = {\n err\n };\n }\n if (caughtError) {\n const {\n err\n } = caughtError;\n this._snapshot = {\n ...this._snapshot,\n status: 'error',\n error: err\n };\n this._error(err);\n return;\n }\n this.update(nextState, event);\n if (event.type === XSTATE_STOP) {\n this._stopProcedure();\n this._complete();\n }\n }\n _stop() {\n if (this._processingStatus === ProcessingStatus.Stopped) {\n return this;\n }\n this.mailbox.clear();\n if (this._processingStatus === ProcessingStatus.NotStarted) {\n this._processingStatus = ProcessingStatus.Stopped;\n return this;\n }\n this.mailbox.enqueue({\n type: XSTATE_STOP\n });\n return this;\n }\n\n /** Stops the Actor and unsubscribe all listeners. */\n stop() {\n if (this._parent) {\n throw new Error('A non-root actor cannot be stopped directly.');\n }\n return this._stop();\n }\n _complete() {\n for (const observer of this.observers) {\n try {\n observer.complete?.();\n } catch (err) {\n reportUnhandledError(err);\n }\n }\n this.observers.clear();\n }\n _reportError(err) {\n if (!this.observers.size) {\n if (!this._parent) {\n reportUnhandledError(err);\n }\n return;\n }\n let reportError = false;\n for (const observer of this.observers) {\n const errorListener = observer.error;\n reportError ||= !errorListener;\n try {\n errorListener?.(err);\n } catch (err2) {\n reportUnhandledError(err2);\n }\n }\n this.observers.clear();\n if (reportError) {\n reportUnhandledError(err);\n }\n }\n _error(err) {\n this._stopProcedure();\n this._reportError(err);\n if (this._parent) {\n this.system._relay(this, this._parent, createErrorActorEvent(this.id, err));\n }\n }\n // TODO: atm children don't belong entirely to the actor so\n // in a way - it's not even super aware of them\n // so we can't stop them from here but we really should!\n // right now, they are being stopped within the machine's transition\n // but that could throw and leave us with \"orphaned\" active actors\n _stopProcedure() {\n if (this._processingStatus !== ProcessingStatus.Running) {\n // Actor already stopped; do nothing\n return this;\n }\n\n // Cancel all delayed events\n this.system.scheduler.cancelAll(this);\n\n // TODO: mailbox.reset\n this.mailbox.clear();\n // TODO: after `stop` we must prepare ourselves for receiving events again\n // events sent *after* stop signal must be queued\n // it seems like this should be the common behavior for all of our consumers\n // so perhaps this should be unified somehow for all of them\n this.mailbox = new Mailbox(this._process.bind(this));\n this._processingStatus = ProcessingStatus.Stopped;\n this.system._unregister(this);\n return this;\n }\n\n /** @internal */\n _send(event) {\n if (this._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n this.mailbox.enqueue(event);\n }\n\n /**\n * Sends an event to the running Actor to trigger a transition.\n *\n * @param event The event to send\n */\n send(event) {\n this.system._relay(undefined, this, event);\n }\n attachDevTools() {\n const {\n devTools\n } = this.options;\n if (devTools) {\n const resolvedDevToolsAdapter = typeof devTools === 'function' ? devTools : devToolsAdapter;\n resolvedDevToolsAdapter(this);\n }\n }\n toJSON() {\n return {\n xstate$$type: $$ACTOR_TYPE,\n id: this.id\n };\n }\n\n /**\n * Obtain the internal state of the actor, which can be persisted.\n *\n * @remarks\n * The internal state can be persisted from any actor, not only machines.\n *\n * Note that the persisted state is not the same as the snapshot from\n * {@link Actor.getSnapshot}. Persisted state represents the internal state of\n * the actor, while snapshots represent the actor's last emitted value.\n *\n * Can be restored with {@link ActorOptions.state}\n * @see https://stately.ai/docs/persistence\n */\n\n getPersistedSnapshot(options) {\n return this.logic.getPersistedSnapshot(this._snapshot, options);\n }\n [symbolObservable]() {\n return this;\n }\n\n /**\n * Read an actor’s snapshot synchronously.\n *\n * @remarks\n * The snapshot represent an actor's last emitted value.\n *\n * When an actor receives an event, its internal state may change. An actor\n * may emit a snapshot when a state transition occurs.\n *\n * Note that some actors, such as callback actors generated with\n * `fromCallback`, will not emit snapshots.\n * @see {@link Actor.subscribe} to subscribe to an actor’s snapshot values.\n * @see {@link Actor.getPersistedSnapshot} to persist the internal state of an actor (which is more than just a snapshot).\n */\n getSnapshot() {\n return this._snapshot;\n }\n}\n/**\n * Creates a new actor instance for the given actor logic with the provided\n * options, if any.\n *\n * @remarks\n * When you create an actor from actor logic via `createActor(logic)`, you\n * implicitly create an actor system where the created actor is the root actor.\n * Any actors spawned from this root actor and its descendants are part of that\n * actor system.\n * @example\n *\n * ```ts\n * import { createActor } from 'xstate';\n * import { someActorLogic } from './someActorLogic.ts';\n *\n * // Creating the actor, which implicitly creates an actor system with itself as the root actor\n * const actor = createActor(someActorLogic);\n *\n * actor.subscribe((snapshot) => {\n * console.log(snapshot);\n * });\n *\n * // Actors must be started by calling `actor.start()`, which will also start the actor system.\n * actor.start();\n *\n * // Actors can receive events\n * actor.send({ type: 'someEvent' });\n *\n * // You can stop root actors by calling `actor.stop()`, which will also stop the actor system and all actors in that system.\n * actor.stop();\n * ```\n *\n * @param logic - The actor logic to create an actor from. For a state machine\n * actor logic creator, see {@link createMachine}. Other actor logic creators\n * include {@link fromCallback}, {@link fromEventObservable},\n * {@link fromObservable}, {@link fromPromise}, and {@link fromTransition}.\n * @param options - Actor options\n */\nfunction createActor(logic, ...[options]) {\n return new Actor(logic, options);\n}\n\n/**\n * Creates a new Interpreter instance for the given machine with the provided\n * options, if any.\n *\n * @deprecated Use `createActor` instead\n * @alias\n */\nconst interpret = createActor;\n\n/**\n * @deprecated Use `Actor` instead.\n * @alias\n */\n\nfunction resolveCancel(_, snapshot, actionArgs, actionParams, {\n sendId\n}) {\n const resolvedSendId = typeof sendId === 'function' ? sendId(actionArgs, actionParams) : sendId;\n return [snapshot, {\n sendId: resolvedSendId\n }, undefined];\n}\nfunction executeCancel(actorScope, params) {\n actorScope.defer(() => {\n actorScope.system.scheduler.cancel(actorScope.self, params.sendId);\n });\n}\n/**\n * Cancels a delayed `sendTo(...)` action that is waiting to be executed. The\n * canceled `sendTo(...)` action will not send its event or execute, unless the\n * `delay` has already elapsed before `cancel(...)` is called.\n *\n * @example\n *\n * ```ts\n * import { createMachine, sendTo, cancel } from 'xstate';\n *\n * const machine = createMachine({\n * // ...\n * on: {\n * sendEvent: {\n * actions: sendTo(\n * 'some-actor',\n * { type: 'someEvent' },\n * {\n * id: 'some-id',\n * delay: 1000\n * }\n * )\n * },\n * cancelEvent: {\n * actions: cancel('some-id')\n * }\n * }\n * });\n * ```\n *\n * @param sendId The `id` of the `sendTo(...)` action to cancel.\n */\nfunction cancel(sendId) {\n function cancel(_args, _params) {\n }\n cancel.type = 'xstate.cancel';\n cancel.sendId = sendId;\n cancel.resolve = resolveCancel;\n cancel.execute = executeCancel;\n return cancel;\n}\n\nfunction resolveSpawn(actorScope, snapshot, actionArgs, _actionParams, {\n id,\n systemId,\n src,\n input,\n syncSnapshot\n}) {\n const logic = typeof src === 'string' ? resolveReferencedActor(snapshot.machine, src) : src;\n const resolvedId = typeof id === 'function' ? id(actionArgs) : id;\n let actorRef;\n let resolvedInput = undefined;\n if (logic) {\n resolvedInput = typeof input === 'function' ? input({\n context: snapshot.context,\n event: actionArgs.event,\n self: actorScope.self\n }) : input;\n actorRef = createActor(logic, {\n id: resolvedId,\n src,\n parent: actorScope.self,\n syncSnapshot,\n systemId,\n input: resolvedInput\n });\n }\n return [cloneMachineSnapshot(snapshot, {\n children: {\n ...snapshot.children,\n [resolvedId]: actorRef\n }\n }), {\n id,\n systemId,\n actorRef,\n src,\n input: resolvedInput\n }, undefined];\n}\nfunction executeSpawn(actorScope, {\n actorRef\n}) {\n if (!actorRef) {\n return;\n }\n actorScope.defer(() => {\n if (actorRef._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n actorRef.start();\n });\n}\nfunction spawnChild(...[src, {\n id,\n systemId,\n input,\n syncSnapshot = false\n} = {}]) {\n function spawnChild(_args, _params) {\n }\n spawnChild.type = 'xstate.spawnChild';\n spawnChild.id = id;\n spawnChild.systemId = systemId;\n spawnChild.src = src;\n spawnChild.input = input;\n spawnChild.syncSnapshot = syncSnapshot;\n spawnChild.resolve = resolveSpawn;\n spawnChild.execute = executeSpawn;\n return spawnChild;\n}\n\nfunction resolveStop(_, snapshot, args, actionParams, {\n actorRef\n}) {\n const actorRefOrString = typeof actorRef === 'function' ? actorRef(args, actionParams) : actorRef;\n const resolvedActorRef = typeof actorRefOrString === 'string' ? snapshot.children[actorRefOrString] : actorRefOrString;\n let children = snapshot.children;\n if (resolvedActorRef) {\n children = {\n ...children\n };\n delete children[resolvedActorRef.id];\n }\n return [cloneMachineSnapshot(snapshot, {\n children\n }), resolvedActorRef, undefined];\n}\nfunction executeStop(actorScope, actorRef) {\n if (!actorRef) {\n return;\n }\n\n // we need to eagerly unregister it here so a new actor with the same systemId can be registered immediately\n // since we defer actual stopping of the actor but we don't defer actor creations (and we can't do that)\n // this could throw on `systemId` collision, for example, when dealing with reentering transitions\n actorScope.system._unregister(actorRef);\n\n // this allows us to prevent an actor from being started if it gets stopped within the same macrostep\n // this can happen, for example, when the invoking state is being exited immediately by an always transition\n if (actorRef._processingStatus !== ProcessingStatus.Running) {\n actorScope.stopChild(actorRef);\n return;\n }\n // stopping a child enqueues a stop event in the child actor's mailbox\n // we need for all of the already enqueued events to be processed before we stop the child\n // the parent itself might want to send some events to a child (for example from exit actions on the invoking state)\n // and we don't want to ignore those events\n actorScope.defer(() => {\n actorScope.stopChild(actorRef);\n });\n}\n/**\n * Stops a child actor.\n *\n * @param actorRef The actor to stop.\n */\nfunction stopChild(actorRef) {\n function stop(_args, _params) {\n }\n stop.type = 'xstate.stopChild';\n stop.actorRef = actorRef;\n stop.resolve = resolveStop;\n stop.execute = executeStop;\n return stop;\n}\n\n/**\n * Stops a child actor.\n *\n * @deprecated Use `stopChild(...)` instead\n * @alias\n */\nconst stop = stopChild;\n\nfunction checkStateIn(snapshot, _, {\n stateValue\n}) {\n if (typeof stateValue === 'string' && isStateId(stateValue)) {\n const target = snapshot.machine.getStateNodeById(stateValue);\n return snapshot._nodes.some(sn => sn === target);\n }\n return snapshot.matches(stateValue);\n}\nfunction stateIn(stateValue) {\n function stateIn() {\n return false;\n }\n stateIn.check = checkStateIn;\n stateIn.stateValue = stateValue;\n return stateIn;\n}\nfunction checkNot(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return !evaluateGuard(guards[0], context, event, snapshot);\n}\n\n/**\n * Higher-order guard that evaluates to `true` if the `guard` passed to it\n * evaluates to `false`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, not } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => false\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: not('someNamedGuard'),\n * actions: () => {\n * // will be executed if guard in `not(...)`\n * // evaluates to `false`\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard\n */\nfunction not(guard) {\n function not(_args, _params) {\n return false;\n }\n not.check = checkNot;\n not.guards = [guard];\n return not;\n}\nfunction checkAnd(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return guards.every(guard => evaluateGuard(guard, context, event, snapshot));\n}\n\n/**\n * Higher-order guard that evaluates to `true` if all `guards` passed to it\n * evaluate to `true`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, and } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => true\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: and([({ context }) => context.value > 0, 'someNamedGuard']),\n * actions: () => {\n * // will be executed if all guards in `and(...)`\n * // evaluate to true\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard action object\n */\nfunction and(guards) {\n function and(_args, _params) {\n return false;\n }\n and.check = checkAnd;\n and.guards = guards;\n return and;\n}\nfunction checkOr(snapshot, {\n context,\n event\n}, {\n guards\n}) {\n return guards.some(guard => evaluateGuard(guard, context, event, snapshot));\n}\n\n/**\n * Higher-order guard that evaluates to `true` if any of the `guards` passed to\n * it evaluate to `true`.\n *\n * @category Guards\n * @example\n *\n * ```ts\n * import { setup, or } from 'xstate';\n *\n * const machine = setup({\n * guards: {\n * someNamedGuard: () => true\n * }\n * }).createMachine({\n * on: {\n * someEvent: {\n * guard: or([({ context }) => context.value > 0, 'someNamedGuard']),\n * actions: () => {\n * // will be executed if any of the guards in `or(...)`\n * // evaluate to true\n * }\n * }\n * }\n * });\n * ```\n *\n * @returns A guard action object\n */\nfunction or(guards) {\n function or(_args, _params) {\n return false;\n }\n or.check = checkOr;\n or.guards = guards;\n return or;\n}\n\n// TODO: throw on cycles (depth check should be enough)\nfunction evaluateGuard(guard, context, event, snapshot) {\n const {\n machine\n } = snapshot;\n const isInline = typeof guard === 'function';\n const resolved = isInline ? guard : machine.implementations.guards[typeof guard === 'string' ? guard : guard.type];\n if (!isInline && !resolved) {\n throw new Error(`Guard '${typeof guard === 'string' ? guard : guard.type}' is not implemented.'.`);\n }\n if (typeof resolved !== 'function') {\n return evaluateGuard(resolved, context, event, snapshot);\n }\n const guardArgs = {\n context,\n event\n };\n const guardParams = isInline || typeof guard === 'string' ? undefined : 'params' in guard ? typeof guard.params === 'function' ? guard.params({\n context,\n event\n }) : guard.params : undefined;\n if (!('check' in resolved)) {\n // the existing type of `.guards` assumes non-nullable `TExpressionGuard`\n // inline guards expect `TExpressionGuard` to be set to `undefined`\n // it's fine to cast this here, our logic makes sure that we call those 2 \"variants\" correctly\n return resolved(guardArgs, guardParams);\n }\n const builtinGuard = resolved;\n return builtinGuard.check(snapshot, guardArgs, resolved // this holds all params\n );\n}\n\nconst isAtomicStateNode = stateNode => stateNode.type === 'atomic' || stateNode.type === 'final';\nfunction getChildren(stateNode) {\n return Object.values(stateNode.states).filter(sn => sn.type !== 'history');\n}\nfunction getProperAncestors(stateNode, toStateNode) {\n const ancestors = [];\n if (toStateNode === stateNode) {\n return ancestors;\n }\n\n // add all ancestors\n let m = stateNode.parent;\n while (m && m !== toStateNode) {\n ancestors.push(m);\n m = m.parent;\n }\n return ancestors;\n}\nfunction getAllStateNodes(stateNodes) {\n const nodeSet = new Set(stateNodes);\n const adjList = getAdjList(nodeSet);\n\n // add descendants\n for (const s of nodeSet) {\n // if previously active, add existing child nodes\n if (s.type === 'compound' && (!adjList.get(s) || !adjList.get(s).length)) {\n getInitialStateNodesWithTheirAncestors(s).forEach(sn => nodeSet.add(sn));\n } else {\n if (s.type === 'parallel') {\n for (const child of getChildren(s)) {\n if (child.type === 'history') {\n continue;\n }\n if (!nodeSet.has(child)) {\n const initialStates = getInitialStateNodesWithTheirAncestors(child);\n for (const initialStateNode of initialStates) {\n nodeSet.add(initialStateNode);\n }\n }\n }\n }\n }\n }\n\n // add all ancestors\n for (const s of nodeSet) {\n let m = s.parent;\n while (m) {\n nodeSet.add(m);\n m = m.parent;\n }\n }\n return nodeSet;\n}\nfunction getValueFromAdj(baseNode, adjList) {\n const childStateNodes = adjList.get(baseNode);\n if (!childStateNodes) {\n return {}; // todo: fix?\n }\n if (baseNode.type === 'compound') {\n const childStateNode = childStateNodes[0];\n if (childStateNode) {\n if (isAtomicStateNode(childStateNode)) {\n return childStateNode.key;\n }\n } else {\n return {};\n }\n }\n const stateValue = {};\n for (const childStateNode of childStateNodes) {\n stateValue[childStateNode.key] = getValueFromAdj(childStateNode, adjList);\n }\n return stateValue;\n}\nfunction getAdjList(stateNodes) {\n const adjList = new Map();\n for (const s of stateNodes) {\n if (!adjList.has(s)) {\n adjList.set(s, []);\n }\n if (s.parent) {\n if (!adjList.has(s.parent)) {\n adjList.set(s.parent, []);\n }\n adjList.get(s.parent).push(s);\n }\n }\n return adjList;\n}\nfunction getStateValue(rootNode, stateNodes) {\n const config = getAllStateNodes(stateNodes);\n return getValueFromAdj(rootNode, getAdjList(config));\n}\nfunction isInFinalState(stateNodeSet, stateNode) {\n if (stateNode.type === 'compound') {\n return getChildren(stateNode).some(s => s.type === 'final' && stateNodeSet.has(s));\n }\n if (stateNode.type === 'parallel') {\n return getChildren(stateNode).every(sn => isInFinalState(stateNodeSet, sn));\n }\n return stateNode.type === 'final';\n}\nconst isStateId = str => str[0] === STATE_IDENTIFIER;\nfunction getCandidates(stateNode, receivedEventType) {\n const candidates = stateNode.transitions.get(receivedEventType) || [...stateNode.transitions.keys()].filter(eventDescriptor => {\n // check if transition is a wildcard transition,\n // which matches any non-transient events\n if (eventDescriptor === WILDCARD) {\n return true;\n }\n if (!eventDescriptor.endsWith('.*')) {\n return false;\n }\n const partialEventTokens = eventDescriptor.split('.');\n const eventTokens = receivedEventType.split('.');\n for (let tokenIndex = 0; tokenIndex < partialEventTokens.length; tokenIndex++) {\n const partialEventToken = partialEventTokens[tokenIndex];\n const eventToken = eventTokens[tokenIndex];\n if (partialEventToken === '*') {\n const isLastToken = tokenIndex === partialEventTokens.length - 1;\n return isLastToken;\n }\n if (partialEventToken !== eventToken) {\n return false;\n }\n }\n return true;\n }).sort((a, b) => b.length - a.length).flatMap(key => stateNode.transitions.get(key));\n return candidates;\n}\n\n/** All delayed transitions from the config. */\nfunction getDelayedTransitions(stateNode) {\n const afterConfig = stateNode.config.after;\n if (!afterConfig) {\n return [];\n }\n const mutateEntryExit = delay => {\n const afterEvent = createAfterEvent(delay, stateNode.id);\n const eventType = afterEvent.type;\n stateNode.entry.push(raise(afterEvent, {\n id: eventType,\n delay\n }));\n stateNode.exit.push(cancel(eventType));\n return eventType;\n };\n const delayedTransitions = Object.keys(afterConfig).flatMap(delay => {\n const configTransition = afterConfig[delay];\n const resolvedTransition = typeof configTransition === 'string' ? {\n target: configTransition\n } : configTransition;\n const resolvedDelay = Number.isNaN(+delay) ? delay : +delay;\n const eventType = mutateEntryExit(resolvedDelay);\n return toArray(resolvedTransition).map(transition => ({\n ...transition,\n event: eventType,\n delay: resolvedDelay\n }));\n });\n return delayedTransitions.map(delayedTransition => {\n const {\n delay\n } = delayedTransition;\n return {\n ...formatTransition(stateNode, delayedTransition.event, delayedTransition),\n delay\n };\n });\n}\nfunction formatTransition(stateNode, descriptor, transitionConfig) {\n const normalizedTarget = normalizeTarget(transitionConfig.target);\n const reenter = transitionConfig.reenter ?? false;\n const target = resolveTarget(stateNode, normalizedTarget);\n const transition = {\n ...transitionConfig,\n actions: toArray(transitionConfig.actions),\n guard: transitionConfig.guard,\n target,\n source: stateNode,\n reenter,\n eventType: descriptor,\n toJSON: () => ({\n ...transition,\n source: `#${stateNode.id}`,\n target: target ? target.map(t => `#${t.id}`) : undefined\n })\n };\n return transition;\n}\nfunction formatTransitions(stateNode) {\n const transitions = new Map();\n if (stateNode.config.on) {\n for (const descriptor of Object.keys(stateNode.config.on)) {\n if (descriptor === NULL_EVENT) {\n throw new Error('Null events (\"\") cannot be specified as a transition key. Use `always: { ... }` instead.');\n }\n const transitionsConfig = stateNode.config.on[descriptor];\n transitions.set(descriptor, toTransitionConfigArray(transitionsConfig).map(t => formatTransition(stateNode, descriptor, t)));\n }\n }\n if (stateNode.config.onDone) {\n const descriptor = `xstate.done.state.${stateNode.id}`;\n transitions.set(descriptor, toTransitionConfigArray(stateNode.config.onDone).map(t => formatTransition(stateNode, descriptor, t)));\n }\n for (const invokeDef of stateNode.invoke) {\n if (invokeDef.onDone) {\n const descriptor = `xstate.done.actor.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onDone).map(t => formatTransition(stateNode, descriptor, t)));\n }\n if (invokeDef.onError) {\n const descriptor = `xstate.error.actor.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onError).map(t => formatTransition(stateNode, descriptor, t)));\n }\n if (invokeDef.onSnapshot) {\n const descriptor = `xstate.snapshot.${invokeDef.id}`;\n transitions.set(descriptor, toTransitionConfigArray(invokeDef.onSnapshot).map(t => formatTransition(stateNode, descriptor, t)));\n }\n }\n for (const delayedTransition of stateNode.after) {\n let existing = transitions.get(delayedTransition.eventType);\n if (!existing) {\n existing = [];\n transitions.set(delayedTransition.eventType, existing);\n }\n existing.push(delayedTransition);\n }\n return transitions;\n}\nfunction formatInitialTransition(stateNode, _target) {\n const resolvedTarget = typeof _target === 'string' ? stateNode.states[_target] : _target ? stateNode.states[_target.target] : undefined;\n if (!resolvedTarget && _target) {\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions, @typescript-eslint/no-base-to-string\n `Initial state node \"${_target}\" not found on parent state node #${stateNode.id}`);\n }\n const transition = {\n source: stateNode,\n actions: !_target || typeof _target === 'string' ? [] : toArray(_target.actions),\n eventType: null,\n reenter: false,\n target: resolvedTarget ? [resolvedTarget] : [],\n toJSON: () => ({\n ...transition,\n source: `#${stateNode.id}`,\n target: resolvedTarget ? [`#${resolvedTarget.id}`] : []\n })\n };\n return transition;\n}\nfunction resolveTarget(stateNode, targets) {\n if (targets === undefined) {\n // an undefined target signals that the state node should not transition from that state when receiving that event\n return undefined;\n }\n return targets.map(target => {\n if (typeof target !== 'string') {\n return target;\n }\n if (isStateId(target)) {\n return stateNode.machine.getStateNodeById(target);\n }\n const isInternalTarget = target[0] === STATE_DELIMITER;\n // If internal target is defined on machine,\n // do not include machine key on target\n if (isInternalTarget && !stateNode.parent) {\n return getStateNodeByPath(stateNode, target.slice(1));\n }\n const resolvedTarget = isInternalTarget ? stateNode.key + target : target;\n if (stateNode.parent) {\n try {\n const targetStateNode = getStateNodeByPath(stateNode.parent, resolvedTarget);\n return targetStateNode;\n } catch (err) {\n throw new Error(`Invalid transition definition for state node '${stateNode.id}':\\n${err.message}`);\n }\n } else {\n throw new Error(`Invalid target: \"${target}\" is not a valid target from the root node. Did you mean \".${target}\"?`);\n }\n });\n}\nfunction resolveHistoryDefaultTransition(stateNode) {\n const normalizedTarget = normalizeTarget(stateNode.config.target);\n if (!normalizedTarget) {\n return stateNode.parent.initial;\n }\n return {\n target: normalizedTarget.map(t => typeof t === 'string' ? getStateNodeByPath(stateNode.parent, t) : t)\n };\n}\nfunction isHistoryNode(stateNode) {\n return stateNode.type === 'history';\n}\nfunction getInitialStateNodesWithTheirAncestors(stateNode) {\n const states = getInitialStateNodes(stateNode);\n for (const initialState of states) {\n for (const ancestor of getProperAncestors(initialState, stateNode)) {\n states.add(ancestor);\n }\n }\n return states;\n}\nfunction getInitialStateNodes(stateNode) {\n const set = new Set();\n function iter(descStateNode) {\n if (set.has(descStateNode)) {\n return;\n }\n set.add(descStateNode);\n if (descStateNode.type === 'compound') {\n iter(descStateNode.initial.target[0]);\n } else if (descStateNode.type === 'parallel') {\n for (const child of getChildren(descStateNode)) {\n iter(child);\n }\n }\n }\n iter(stateNode);\n return set;\n}\n/** Returns the child state node from its relative `stateKey`, or throws. */\nfunction getStateNode(stateNode, stateKey) {\n if (isStateId(stateKey)) {\n return stateNode.machine.getStateNodeById(stateKey);\n }\n if (!stateNode.states) {\n throw new Error(`Unable to retrieve child state '${stateKey}' from '${stateNode.id}'; no child states exist.`);\n }\n const result = stateNode.states[stateKey];\n if (!result) {\n throw new Error(`Child state '${stateKey}' does not exist on '${stateNode.id}'`);\n }\n return result;\n}\n\n/**\n * Returns the relative state node from the given `statePath`, or throws.\n *\n * @param statePath The string or string array relative path to the state node.\n */\nfunction getStateNodeByPath(stateNode, statePath) {\n if (typeof statePath === 'string' && isStateId(statePath)) {\n try {\n return stateNode.machine.getStateNodeById(statePath);\n } catch {\n // try individual paths\n // throw e;\n }\n }\n const arrayStatePath = toStatePath(statePath).slice();\n let currentStateNode = stateNode;\n while (arrayStatePath.length) {\n const key = arrayStatePath.shift();\n if (!key.length) {\n break;\n }\n currentStateNode = getStateNode(currentStateNode, key);\n }\n return currentStateNode;\n}\n\n/**\n * Returns the state nodes represented by the current state value.\n *\n * @param stateValue The state value or State instance\n */\nfunction getStateNodes(stateNode, stateValue) {\n if (typeof stateValue === 'string') {\n const childStateNode = stateNode.states[stateValue];\n if (!childStateNode) {\n throw new Error(`State '${stateValue}' does not exist on '${stateNode.id}'`);\n }\n return [stateNode, childStateNode];\n }\n const childStateKeys = Object.keys(stateValue);\n const childStateNodes = childStateKeys.map(subStateKey => getStateNode(stateNode, subStateKey)).filter(Boolean);\n return [stateNode.machine.root, stateNode].concat(childStateNodes, childStateKeys.reduce((allSubStateNodes, subStateKey) => {\n const subStateNode = getStateNode(stateNode, subStateKey);\n if (!subStateNode) {\n return allSubStateNodes;\n }\n const subStateNodes = getStateNodes(subStateNode, stateValue[subStateKey]);\n return allSubStateNodes.concat(subStateNodes);\n }, []));\n}\nfunction transitionAtomicNode(stateNode, stateValue, snapshot, event) {\n const childStateNode = getStateNode(stateNode, stateValue);\n const next = childStateNode.next(snapshot, event);\n if (!next || !next.length) {\n return stateNode.next(snapshot, event);\n }\n return next;\n}\nfunction transitionCompoundNode(stateNode, stateValue, snapshot, event) {\n const subStateKeys = Object.keys(stateValue);\n const childStateNode = getStateNode(stateNode, subStateKeys[0]);\n const next = transitionNode(childStateNode, stateValue[subStateKeys[0]], snapshot, event);\n if (!next || !next.length) {\n return stateNode.next(snapshot, event);\n }\n return next;\n}\nfunction transitionParallelNode(stateNode, stateValue, snapshot, event) {\n const allInnerTransitions = [];\n for (const subStateKey of Object.keys(stateValue)) {\n const subStateValue = stateValue[subStateKey];\n if (!subStateValue) {\n continue;\n }\n const subStateNode = getStateNode(stateNode, subStateKey);\n const innerTransitions = transitionNode(subStateNode, subStateValue, snapshot, event);\n if (innerTransitions) {\n allInnerTransitions.push(...innerTransitions);\n }\n }\n if (!allInnerTransitions.length) {\n return stateNode.next(snapshot, event);\n }\n return allInnerTransitions;\n}\nfunction transitionNode(stateNode, stateValue, snapshot, event) {\n // leaf node\n if (typeof stateValue === 'string') {\n return transitionAtomicNode(stateNode, stateValue, snapshot, event);\n }\n\n // compound node\n if (Object.keys(stateValue).length === 1) {\n return transitionCompoundNode(stateNode, stateValue, snapshot, event);\n }\n\n // parallel node\n return transitionParallelNode(stateNode, stateValue, snapshot, event);\n}\nfunction getHistoryNodes(stateNode) {\n return Object.keys(stateNode.states).map(key => stateNode.states[key]).filter(sn => sn.type === 'history');\n}\nfunction isDescendant(childStateNode, parentStateNode) {\n let marker = childStateNode;\n while (marker.parent && marker.parent !== parentStateNode) {\n marker = marker.parent;\n }\n return marker.parent === parentStateNode;\n}\nfunction hasIntersection(s1, s2) {\n const set1 = new Set(s1);\n const set2 = new Set(s2);\n for (const item of set1) {\n if (set2.has(item)) {\n return true;\n }\n }\n for (const item of set2) {\n if (set1.has(item)) {\n return true;\n }\n }\n return false;\n}\nfunction removeConflictingTransitions(enabledTransitions, stateNodeSet, historyValue) {\n const filteredTransitions = new Set();\n for (const t1 of enabledTransitions) {\n let t1Preempted = false;\n const transitionsToRemove = new Set();\n for (const t2 of filteredTransitions) {\n if (hasIntersection(computeExitSet([t1], stateNodeSet, historyValue), computeExitSet([t2], stateNodeSet, historyValue))) {\n if (isDescendant(t1.source, t2.source)) {\n transitionsToRemove.add(t2);\n } else {\n t1Preempted = true;\n break;\n }\n }\n }\n if (!t1Preempted) {\n for (const t3 of transitionsToRemove) {\n filteredTransitions.delete(t3);\n }\n filteredTransitions.add(t1);\n }\n }\n return Array.from(filteredTransitions);\n}\nfunction findLeastCommonAncestor(stateNodes) {\n const [head, ...tail] = stateNodes;\n for (const ancestor of getProperAncestors(head, undefined)) {\n if (tail.every(sn => isDescendant(sn, ancestor))) {\n return ancestor;\n }\n }\n}\nfunction getEffectiveTargetStates(transition, historyValue) {\n if (!transition.target) {\n return [];\n }\n const targets = new Set();\n for (const targetNode of transition.target) {\n if (isHistoryNode(targetNode)) {\n if (historyValue[targetNode.id]) {\n for (const node of historyValue[targetNode.id]) {\n targets.add(node);\n }\n } else {\n for (const node of getEffectiveTargetStates(resolveHistoryDefaultTransition(targetNode), historyValue)) {\n targets.add(node);\n }\n }\n } else {\n targets.add(targetNode);\n }\n }\n return [...targets];\n}\nfunction getTransitionDomain(transition, historyValue) {\n const targetStates = getEffectiveTargetStates(transition, historyValue);\n if (!targetStates) {\n return;\n }\n if (!transition.reenter && targetStates.every(target => target === transition.source || isDescendant(target, transition.source))) {\n return transition.source;\n }\n const lca = findLeastCommonAncestor(targetStates.concat(transition.source));\n if (lca) {\n return lca;\n }\n\n // at this point we know that it's a root transition since LCA couldn't be found\n if (transition.reenter) {\n return;\n }\n return transition.source.machine.root;\n}\nfunction computeExitSet(transitions, stateNodeSet, historyValue) {\n const statesToExit = new Set();\n for (const t of transitions) {\n if (t.target?.length) {\n const domain = getTransitionDomain(t, historyValue);\n if (t.reenter && t.source === domain) {\n statesToExit.add(domain);\n }\n for (const stateNode of stateNodeSet) {\n if (isDescendant(stateNode, domain)) {\n statesToExit.add(stateNode);\n }\n }\n }\n }\n return [...statesToExit];\n}\nfunction areStateNodeCollectionsEqual(prevStateNodes, nextStateNodeSet) {\n if (prevStateNodes.length !== nextStateNodeSet.size) {\n return false;\n }\n for (const node of prevStateNodes) {\n if (!nextStateNodeSet.has(node)) {\n return false;\n }\n }\n return true;\n}\n\n/** https://www.w3.org/TR/scxml/#microstepProcedure */\nfunction microstep(transitions, currentSnapshot, actorScope, event, isInitial, internalQueue) {\n if (!transitions.length) {\n return currentSnapshot;\n }\n const mutStateNodeSet = new Set(currentSnapshot._nodes);\n let historyValue = currentSnapshot.historyValue;\n const filteredTransitions = removeConflictingTransitions(transitions, mutStateNodeSet, historyValue);\n let nextState = currentSnapshot;\n\n // Exit states\n if (!isInitial) {\n [nextState, historyValue] = exitStates(nextState, event, actorScope, filteredTransitions, mutStateNodeSet, historyValue, internalQueue, actorScope.actionExecutor);\n }\n\n // Execute transition content\n nextState = resolveActionsAndContext(nextState, event, actorScope, filteredTransitions.flatMap(t => t.actions), internalQueue, undefined);\n\n // Enter states\n nextState = enterStates(nextState, event, actorScope, filteredTransitions, mutStateNodeSet, internalQueue, historyValue, isInitial);\n const nextStateNodes = [...mutStateNodeSet];\n if (nextState.status === 'done') {\n nextState = resolveActionsAndContext(nextState, event, actorScope, nextStateNodes.sort((a, b) => b.order - a.order).flatMap(state => state.exit), internalQueue, undefined);\n }\n\n // eslint-disable-next-line no-useless-catch\n try {\n if (historyValue === currentSnapshot.historyValue && areStateNodeCollectionsEqual(currentSnapshot._nodes, mutStateNodeSet)) {\n return nextState;\n }\n return cloneMachineSnapshot(nextState, {\n _nodes: nextStateNodes,\n historyValue\n });\n } catch (e) {\n // TODO: Refactor this once proper error handling is implemented.\n // See https://github.com/statelyai/rfcs/pull/4\n throw e;\n }\n}\nfunction getMachineOutput(snapshot, event, actorScope, rootNode, rootCompletionNode) {\n if (rootNode.output === undefined) {\n return;\n }\n const doneStateEvent = createDoneStateEvent(rootCompletionNode.id, rootCompletionNode.output !== undefined && rootCompletionNode.parent ? resolveOutput(rootCompletionNode.output, snapshot.context, event, actorScope.self) : undefined);\n return resolveOutput(rootNode.output, snapshot.context, doneStateEvent, actorScope.self);\n}\nfunction enterStates(currentSnapshot, event, actorScope, filteredTransitions, mutStateNodeSet, internalQueue, historyValue, isInitial) {\n let nextSnapshot = currentSnapshot;\n const statesToEnter = new Set();\n // those are states that were directly targeted or indirectly targeted by the explicit target\n // in other words, those are states for which initial actions should be executed\n // when we target `#deep_child` initial actions of its ancestors shouldn't be executed\n const statesForDefaultEntry = new Set();\n computeEntrySet(filteredTransitions, historyValue, statesForDefaultEntry, statesToEnter);\n\n // In the initial state, the root state node is \"entered\".\n if (isInitial) {\n statesForDefaultEntry.add(currentSnapshot.machine.root);\n }\n const completedNodes = new Set();\n for (const stateNodeToEnter of [...statesToEnter].sort((a, b) => a.order - b.order)) {\n mutStateNodeSet.add(stateNodeToEnter);\n const actions = [];\n\n // Add entry actions\n actions.push(...stateNodeToEnter.entry);\n for (const invokeDef of stateNodeToEnter.invoke) {\n actions.push(spawnChild(invokeDef.src, {\n ...invokeDef,\n syncSnapshot: !!invokeDef.onSnapshot\n }));\n }\n if (statesForDefaultEntry.has(stateNodeToEnter)) {\n const initialActions = stateNodeToEnter.initial.actions;\n actions.push(...initialActions);\n }\n nextSnapshot = resolveActionsAndContext(nextSnapshot, event, actorScope, actions, internalQueue, stateNodeToEnter.invoke.map(invokeDef => invokeDef.id));\n if (stateNodeToEnter.type === 'final') {\n const parent = stateNodeToEnter.parent;\n let ancestorMarker = parent?.type === 'parallel' ? parent : parent?.parent;\n let rootCompletionNode = ancestorMarker || stateNodeToEnter;\n if (parent?.type === 'compound') {\n internalQueue.push(createDoneStateEvent(parent.id, stateNodeToEnter.output !== undefined ? resolveOutput(stateNodeToEnter.output, nextSnapshot.context, event, actorScope.self) : undefined));\n }\n while (ancestorMarker?.type === 'parallel' && !completedNodes.has(ancestorMarker) && isInFinalState(mutStateNodeSet, ancestorMarker)) {\n completedNodes.add(ancestorMarker);\n internalQueue.push(createDoneStateEvent(ancestorMarker.id));\n rootCompletionNode = ancestorMarker;\n ancestorMarker = ancestorMarker.parent;\n }\n if (ancestorMarker) {\n continue;\n }\n nextSnapshot = cloneMachineSnapshot(nextSnapshot, {\n status: 'done',\n output: getMachineOutput(nextSnapshot, event, actorScope, nextSnapshot.machine.root, rootCompletionNode)\n });\n }\n }\n return nextSnapshot;\n}\nfunction computeEntrySet(transitions, historyValue, statesForDefaultEntry, statesToEnter) {\n for (const t of transitions) {\n const domain = getTransitionDomain(t, historyValue);\n for (const s of t.target || []) {\n if (!isHistoryNode(s) && (\n // if the target is different than the source then it will *definitely* be entered\n t.source !== s ||\n // we know that the domain can't lie within the source\n // if it's different than the source then it's outside of it and it means that the target has to be entered as well\n t.source !== domain ||\n // reentering transitions always enter the target, even if it's the source itself\n t.reenter)) {\n statesToEnter.add(s);\n statesForDefaultEntry.add(s);\n }\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n const targetStates = getEffectiveTargetStates(t, historyValue);\n for (const s of targetStates) {\n const ancestors = getProperAncestors(s, domain);\n if (domain?.type === 'parallel') {\n ancestors.push(domain);\n }\n addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, ancestors, !t.source.parent && t.reenter ? undefined : domain);\n }\n }\n}\nfunction addDescendantStatesToEnter(stateNode, historyValue, statesForDefaultEntry, statesToEnter) {\n if (isHistoryNode(stateNode)) {\n if (historyValue[stateNode.id]) {\n const historyStateNodes = historyValue[stateNode.id];\n for (const s of historyStateNodes) {\n statesToEnter.add(s);\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n for (const s of historyStateNodes) {\n addProperAncestorStatesToEnter(s, stateNode.parent, statesToEnter, historyValue, statesForDefaultEntry);\n }\n } else {\n const historyDefaultTransition = resolveHistoryDefaultTransition(stateNode);\n for (const s of historyDefaultTransition.target) {\n statesToEnter.add(s);\n if (historyDefaultTransition === stateNode.parent?.initial) {\n statesForDefaultEntry.add(stateNode.parent);\n }\n addDescendantStatesToEnter(s, historyValue, statesForDefaultEntry, statesToEnter);\n }\n for (const s of historyDefaultTransition.target) {\n addProperAncestorStatesToEnter(s, stateNode.parent, statesToEnter, historyValue, statesForDefaultEntry);\n }\n }\n } else {\n if (stateNode.type === 'compound') {\n const [initialState] = stateNode.initial.target;\n if (!isHistoryNode(initialState)) {\n statesToEnter.add(initialState);\n statesForDefaultEntry.add(initialState);\n }\n addDescendantStatesToEnter(initialState, historyValue, statesForDefaultEntry, statesToEnter);\n addProperAncestorStatesToEnter(initialState, stateNode, statesToEnter, historyValue, statesForDefaultEntry);\n } else {\n if (stateNode.type === 'parallel') {\n for (const child of getChildren(stateNode).filter(sn => !isHistoryNode(sn))) {\n if (![...statesToEnter].some(s => isDescendant(s, child))) {\n if (!isHistoryNode(child)) {\n statesToEnter.add(child);\n statesForDefaultEntry.add(child);\n }\n addDescendantStatesToEnter(child, historyValue, statesForDefaultEntry, statesToEnter);\n }\n }\n }\n }\n }\n}\nfunction addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, ancestors, reentrancyDomain) {\n for (const anc of ancestors) {\n if (!reentrancyDomain || isDescendant(anc, reentrancyDomain)) {\n statesToEnter.add(anc);\n }\n if (anc.type === 'parallel') {\n for (const child of getChildren(anc).filter(sn => !isHistoryNode(sn))) {\n if (![...statesToEnter].some(s => isDescendant(s, child))) {\n statesToEnter.add(child);\n addDescendantStatesToEnter(child, historyValue, statesForDefaultEntry, statesToEnter);\n }\n }\n }\n }\n}\nfunction addProperAncestorStatesToEnter(stateNode, toStateNode, statesToEnter, historyValue, statesForDefaultEntry) {\n addAncestorStatesToEnter(statesToEnter, historyValue, statesForDefaultEntry, getProperAncestors(stateNode, toStateNode));\n}\nfunction exitStates(currentSnapshot, event, actorScope, transitions, mutStateNodeSet, historyValue, internalQueue, _actionExecutor) {\n let nextSnapshot = currentSnapshot;\n const statesToExit = computeExitSet(transitions, mutStateNodeSet, historyValue);\n statesToExit.sort((a, b) => b.order - a.order);\n let changedHistory;\n\n // From SCXML algorithm: https://www.w3.org/TR/scxml/#exitStates\n for (const exitStateNode of statesToExit) {\n for (const historyNode of getHistoryNodes(exitStateNode)) {\n let predicate;\n if (historyNode.history === 'deep') {\n predicate = sn => isAtomicStateNode(sn) && isDescendant(sn, exitStateNode);\n } else {\n predicate = sn => {\n return sn.parent === exitStateNode;\n };\n }\n changedHistory ??= {\n ...historyValue\n };\n changedHistory[historyNode.id] = Array.from(mutStateNodeSet).filter(predicate);\n }\n }\n for (const s of statesToExit) {\n nextSnapshot = resolveActionsAndContext(nextSnapshot, event, actorScope, [...s.exit, ...s.invoke.map(def => stopChild(def.id))], internalQueue, undefined);\n mutStateNodeSet.delete(s);\n }\n return [nextSnapshot, changedHistory || historyValue];\n}\nfunction getAction(machine, actionType) {\n return machine.implementations.actions[actionType];\n}\nfunction resolveAndExecuteActionsWithContext(currentSnapshot, event, actorScope, actions, extra, retries) {\n const {\n machine\n } = currentSnapshot;\n let intermediateSnapshot = currentSnapshot;\n for (const action of actions) {\n const isInline = typeof action === 'function';\n const resolvedAction = isInline ? action :\n // the existing type of `.actions` assumes non-nullable `TExpressionAction`\n // it's fine to cast this here to get a common type and lack of errors in the rest of the code\n // our logic below makes sure that we call those 2 \"variants\" correctly\n\n getAction(machine, typeof action === 'string' ? action : action.type);\n const actionArgs = {\n context: intermediateSnapshot.context,\n event,\n self: actorScope.self,\n system: actorScope.system\n };\n const actionParams = isInline || typeof action === 'string' ? undefined : 'params' in action ? typeof action.params === 'function' ? action.params({\n context: intermediateSnapshot.context,\n event\n }) : action.params : undefined;\n if (!resolvedAction || !('resolve' in resolvedAction)) {\n actorScope.actionExecutor({\n type: typeof action === 'string' ? action : typeof action === 'object' ? action.type : action.name || '(anonymous)',\n info: actionArgs,\n params: actionParams,\n exec: resolvedAction\n });\n continue;\n }\n const builtinAction = resolvedAction;\n const [nextState, params, actions] = builtinAction.resolve(actorScope, intermediateSnapshot, actionArgs, actionParams, resolvedAction,\n // this holds all params\n extra);\n intermediateSnapshot = nextState;\n if ('retryResolve' in builtinAction) {\n retries?.push([builtinAction, params]);\n }\n if ('execute' in builtinAction) {\n actorScope.actionExecutor({\n type: builtinAction.type,\n info: actionArgs,\n params,\n exec: builtinAction.execute.bind(null, actorScope, params)\n });\n }\n if (actions) {\n intermediateSnapshot = resolveAndExecuteActionsWithContext(intermediateSnapshot, event, actorScope, actions, extra, retries);\n }\n }\n return intermediateSnapshot;\n}\nfunction resolveActionsAndContext(currentSnapshot, event, actorScope, actions, internalQueue, deferredActorIds) {\n const retries = deferredActorIds ? [] : undefined;\n const nextState = resolveAndExecuteActionsWithContext(currentSnapshot, event, actorScope, actions, {\n internalQueue,\n deferredActorIds\n }, retries);\n retries?.forEach(([builtinAction, params]) => {\n builtinAction.retryResolve(actorScope, nextState, params);\n });\n return nextState;\n}\nfunction macrostep(snapshot, event, actorScope, internalQueue) {\n let nextSnapshot = snapshot;\n const microstates = [];\n function addMicrostate(microstate, event, transitions) {\n actorScope.system._sendInspectionEvent({\n type: '@xstate.microstep',\n actorRef: actorScope.self,\n event,\n snapshot: microstate,\n _transitions: transitions\n });\n microstates.push(microstate);\n }\n\n // Handle stop event\n if (event.type === XSTATE_STOP) {\n nextSnapshot = cloneMachineSnapshot(stopChildren(nextSnapshot, event, actorScope), {\n status: 'stopped'\n });\n addMicrostate(nextSnapshot, event, []);\n return {\n snapshot: nextSnapshot,\n microstates\n };\n }\n let nextEvent = event;\n\n // Assume the state is at rest (no raised events)\n // Determine the next state based on the next microstep\n if (nextEvent.type !== XSTATE_INIT) {\n const currentEvent = nextEvent;\n const isErr = isErrorActorEvent(currentEvent);\n const transitions = selectTransitions(currentEvent, nextSnapshot);\n if (isErr && !transitions.length) {\n // TODO: we should likely only allow transitions selected by very explicit descriptors\n // `*` shouldn't be matched, likely `xstate.error.*` shouldnt be either\n // similarly `xstate.error.actor.*` and `xstate.error.actor.todo.*` have to be considered too\n nextSnapshot = cloneMachineSnapshot(snapshot, {\n status: 'error',\n error: currentEvent.error\n });\n addMicrostate(nextSnapshot, currentEvent, []);\n return {\n snapshot: nextSnapshot,\n microstates\n };\n }\n nextSnapshot = microstep(transitions, snapshot, actorScope, nextEvent, false,\n // isInitial\n internalQueue);\n addMicrostate(nextSnapshot, currentEvent, transitions);\n }\n let shouldSelectEventlessTransitions = true;\n while (nextSnapshot.status === 'active') {\n let enabledTransitions = shouldSelectEventlessTransitions ? selectEventlessTransitions(nextSnapshot, nextEvent) : [];\n\n // eventless transitions should always be selected after selecting *regular* transitions\n // by assigning `undefined` to `previousState` we ensure that `shouldSelectEventlessTransitions` gets always computed to true in such a case\n const previousState = enabledTransitions.length ? nextSnapshot : undefined;\n if (!enabledTransitions.length) {\n if (!internalQueue.length) {\n break;\n }\n nextEvent = internalQueue.shift();\n enabledTransitions = selectTransitions(nextEvent, nextSnapshot);\n }\n nextSnapshot = microstep(enabledTransitions, nextSnapshot, actorScope, nextEvent, false, internalQueue);\n shouldSelectEventlessTransitions = nextSnapshot !== previousState;\n addMicrostate(nextSnapshot, nextEvent, enabledTransitions);\n }\n if (nextSnapshot.status !== 'active') {\n stopChildren(nextSnapshot, nextEvent, actorScope);\n }\n return {\n snapshot: nextSnapshot,\n microstates\n };\n}\nfunction stopChildren(nextState, event, actorScope) {\n return resolveActionsAndContext(nextState, event, actorScope, Object.values(nextState.children).map(child => stopChild(child)), [], undefined);\n}\nfunction selectTransitions(event, nextState) {\n return nextState.machine.getTransitionData(nextState, event);\n}\nfunction selectEventlessTransitions(nextState, event) {\n const enabledTransitionSet = new Set();\n const atomicStates = nextState._nodes.filter(isAtomicStateNode);\n for (const stateNode of atomicStates) {\n loop: for (const s of [stateNode].concat(getProperAncestors(stateNode, undefined))) {\n if (!s.always) {\n continue;\n }\n for (const transition of s.always) {\n if (transition.guard === undefined || evaluateGuard(transition.guard, nextState.context, event, nextState)) {\n enabledTransitionSet.add(transition);\n break loop;\n }\n }\n }\n }\n return removeConflictingTransitions(Array.from(enabledTransitionSet), new Set(nextState._nodes), nextState.historyValue);\n}\n\n/**\n * Resolves a partial state value with its full representation in the state\n * node's machine.\n *\n * @param stateValue The partial state value to resolve.\n */\nfunction resolveStateValue(rootNode, stateValue) {\n const allStateNodes = getAllStateNodes(getStateNodes(rootNode, stateValue));\n return getStateValue(rootNode, [...allStateNodes]);\n}\n\nfunction isMachineSnapshot(value) {\n return !!value && typeof value === 'object' && 'machine' in value && 'value' in value;\n}\nconst machineSnapshotMatches = function matches(testValue) {\n return matchesState(testValue, this.value);\n};\nconst machineSnapshotHasTag = function hasTag(tag) {\n return this.tags.has(tag);\n};\nconst machineSnapshotCan = function can(event) {\n const transitionData = this.machine.getTransitionData(this, event);\n return !!transitionData?.length &&\n // Check that at least one transition is not forbidden\n transitionData.some(t => t.target !== undefined || t.actions.length);\n};\nconst machineSnapshotToJSON = function toJSON() {\n const {\n _nodes: nodes,\n tags,\n machine,\n getMeta,\n toJSON,\n can,\n hasTag,\n matches,\n ...jsonValues\n } = this;\n return {\n ...jsonValues,\n tags: Array.from(tags)\n };\n};\nconst machineSnapshotGetMeta = function getMeta() {\n return this._nodes.reduce((acc, stateNode) => {\n if (stateNode.meta !== undefined) {\n acc[stateNode.id] = stateNode.meta;\n }\n return acc;\n }, {});\n};\nfunction createMachineSnapshot(config, machine) {\n return {\n status: config.status,\n output: config.output,\n error: config.error,\n machine,\n context: config.context,\n _nodes: config._nodes,\n value: getStateValue(machine.root, config._nodes),\n tags: new Set(config._nodes.flatMap(sn => sn.tags)),\n children: config.children,\n historyValue: config.historyValue || {},\n matches: machineSnapshotMatches,\n hasTag: machineSnapshotHasTag,\n can: machineSnapshotCan,\n getMeta: machineSnapshotGetMeta,\n toJSON: machineSnapshotToJSON\n };\n}\nfunction cloneMachineSnapshot(snapshot, config = {}) {\n return createMachineSnapshot({\n ...snapshot,\n ...config\n }, snapshot.machine);\n}\nfunction getPersistedSnapshot(snapshot, options) {\n const {\n _nodes: nodes,\n tags,\n machine,\n children,\n context,\n can,\n hasTag,\n matches,\n getMeta,\n toJSON,\n ...jsonValues\n } = snapshot;\n const childrenJson = {};\n for (const id in children) {\n const child = children[id];\n childrenJson[id] = {\n snapshot: child.getPersistedSnapshot(options),\n src: child.src,\n systemId: child._systemId,\n syncSnapshot: child._syncSnapshot\n };\n }\n const persisted = {\n ...jsonValues,\n context: persistContext(context),\n children: childrenJson\n };\n return persisted;\n}\nfunction persistContext(contextPart) {\n let copy;\n for (const key in contextPart) {\n const value = contextPart[key];\n if (value && typeof value === 'object') {\n if ('sessionId' in value && 'send' in value && 'ref' in value) {\n copy ??= Array.isArray(contextPart) ? contextPart.slice() : {\n ...contextPart\n };\n copy[key] = {\n xstate$$type: $$ACTOR_TYPE,\n id: value.id\n };\n } else {\n const result = persistContext(value);\n if (result !== value) {\n copy ??= Array.isArray(contextPart) ? contextPart.slice() : {\n ...contextPart\n };\n copy[key] = result;\n }\n }\n }\n }\n return copy ?? contextPart;\n}\n\nfunction resolveRaise(_, snapshot, args, actionParams, {\n event: eventOrExpr,\n id,\n delay\n}, {\n internalQueue\n}) {\n const delaysMap = snapshot.machine.implementations.delays;\n if (typeof eventOrExpr === 'string') {\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Only event objects may be used with raise; use raise({ type: \"${eventOrExpr}\" }) instead`);\n }\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n let resolvedDelay;\n if (typeof delay === 'string') {\n const configDelay = delaysMap && delaysMap[delay];\n resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;\n } else {\n resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;\n }\n if (typeof resolvedDelay !== 'number') {\n internalQueue.push(resolvedEvent);\n }\n return [snapshot, {\n event: resolvedEvent,\n id,\n delay: resolvedDelay\n }, undefined];\n}\nfunction executeRaise(actorScope, params) {\n const {\n event,\n delay,\n id\n } = params;\n if (typeof delay === 'number') {\n actorScope.defer(() => {\n const self = actorScope.self;\n actorScope.system.scheduler.schedule(self, self, event, delay, id);\n });\n return;\n }\n}\n/**\n * Raises an event. This places the event in the internal event queue, so that\n * the event is immediately consumed by the machine in the current step.\n *\n * @param eventType The event to raise.\n */\nfunction raise(eventOrExpr, options) {\n function raise(_args, _params) {\n }\n raise.type = 'xstate.raise';\n raise.event = eventOrExpr;\n raise.id = options?.id;\n raise.delay = options?.delay;\n raise.resolve = resolveRaise;\n raise.execute = executeRaise;\n return raise;\n}\n\nexport { $$ACTOR_TYPE as $, createActor as A, Actor as B, interpret as C, and as D, not as E, or as F, stateIn as G, isMachineSnapshot as H, getAllOwnEventDescriptors as I, matchesState as J, pathToStateValue as K, toObserver as L, cancel as M, NULL_EVENT as N, raise as O, spawnChild as P, stop as Q, stopChild as R, STATE_DELIMITER as S, ProcessingStatus as T, cloneMachineSnapshot as U, XSTATE_ERROR as V, createErrorActorEvent as W, XSTATE_STOP as X, toTransitionConfigArray as a, formatTransition as b, createInvokeId as c, formatInitialTransition as d, evaluateGuard as e, formatTransitions as f, getDelayedTransitions as g, getCandidates as h, getAllStateNodes as i, getStateNodes as j, createMachineSnapshot as k, isInFinalState as l, mapValues as m, macrostep as n, transitionNode as o, resolveActionsAndContext as p, createInitEvent as q, resolveStateValue as r, microstep as s, toArray as t, getInitialStateNodes as u, toStatePath as v, isStateId as w, getStateNodeByPath as x, getPersistedSnapshot as y, resolveReferencedActor as z };\n","import { T as ProcessingStatus, z as resolveReferencedActor, A as createActor, U as cloneMachineSnapshot, V as XSTATE_ERROR, W as createErrorActorEvent, e as evaluateGuard, M as cancel, O as raise, P as spawnChild, R as stopChild } from './raise-c17ec2bc.esm.js';\n\nfunction createSpawner(actorScope, {\n machine,\n context\n}, event, spawnedChildren) {\n const spawn = (src, options) => {\n if (typeof src === 'string') {\n const logic = resolveReferencedActor(machine, src);\n if (!logic) {\n throw new Error(`Actor logic '${src}' not implemented in machine '${machine.id}'`);\n }\n const actorRef = createActor(logic, {\n id: options?.id,\n parent: actorScope.self,\n syncSnapshot: options?.syncSnapshot,\n input: typeof options?.input === 'function' ? options.input({\n context,\n event,\n self: actorScope.self\n }) : options?.input,\n src,\n systemId: options?.systemId\n });\n spawnedChildren[actorRef.id] = actorRef;\n return actorRef;\n } else {\n const actorRef = createActor(src, {\n id: options?.id,\n parent: actorScope.self,\n syncSnapshot: options?.syncSnapshot,\n input: options?.input,\n src,\n systemId: options?.systemId\n });\n return actorRef;\n }\n };\n return (src, options) => {\n const actorRef = spawn(src, options); // TODO: fix types\n spawnedChildren[actorRef.id] = actorRef;\n actorScope.defer(() => {\n if (actorRef._processingStatus === ProcessingStatus.Stopped) {\n return;\n }\n actorRef.start();\n });\n return actorRef;\n };\n}\n\nfunction resolveAssign(actorScope, snapshot, actionArgs, actionParams, {\n assignment\n}) {\n if (!snapshot.context) {\n throw new Error('Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.');\n }\n const spawnedChildren = {};\n const assignArgs = {\n context: snapshot.context,\n event: actionArgs.event,\n spawn: createSpawner(actorScope, snapshot, actionArgs.event, spawnedChildren),\n self: actorScope.self,\n system: actorScope.system\n };\n let partialUpdate = {};\n if (typeof assignment === 'function') {\n partialUpdate = assignment(assignArgs, actionParams);\n } else {\n for (const key of Object.keys(assignment)) {\n const propAssignment = assignment[key];\n partialUpdate[key] = typeof propAssignment === 'function' ? propAssignment(assignArgs, actionParams) : propAssignment;\n }\n }\n const updatedContext = Object.assign({}, snapshot.context, partialUpdate);\n return [cloneMachineSnapshot(snapshot, {\n context: updatedContext,\n children: Object.keys(spawnedChildren).length ? {\n ...snapshot.children,\n ...spawnedChildren\n } : snapshot.children\n }), undefined, undefined];\n}\n/**\n * Updates the current context of the machine.\n *\n * @example\n *\n * ```ts\n * import { createMachine, assign } from 'xstate';\n *\n * const countMachine = createMachine({\n * context: {\n * count: 0,\n * message: ''\n * },\n * on: {\n * inc: {\n * actions: assign({\n * count: ({ context }) => context.count + 1\n * })\n * },\n * updateMessage: {\n * actions: assign(({ context, event }) => {\n * return {\n * message: event.message.trim()\n * };\n * })\n * }\n * }\n * });\n * ```\n *\n * @param assignment An object that represents the partial context to update, or\n * a function that returns an object that represents the partial context to\n * update.\n */\nfunction assign(assignment) {\n function assign(_args, _params) {\n }\n assign.type = 'xstate.assign';\n assign.assignment = assignment;\n assign.resolve = resolveAssign;\n return assign;\n}\n\nfunction resolveEmit(_, snapshot, args, actionParams, {\n event: eventOrExpr\n}) {\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n return [snapshot, {\n event: resolvedEvent\n }, undefined];\n}\nfunction executeEmit(actorScope, {\n event\n}) {\n actorScope.defer(() => actorScope.emit(event));\n}\n/**\n * Emits an event to event handlers registered on the actor via `actor.on(event,\n * handler)`.\n *\n * @example\n *\n * ```ts\n * import { emit } from 'xstate';\n *\n * const machine = createMachine({\n * // ...\n * on: {\n * something: {\n * actions: emit({\n * type: 'emitted',\n * some: 'data'\n * })\n * }\n * }\n * // ...\n * });\n *\n * const actor = createActor(machine).start();\n *\n * actor.on('emitted', (event) => {\n * console.log(event);\n * });\n *\n * actor.send({ type: 'something' });\n * // logs:\n * // {\n * // type: 'emitted',\n * // some: 'data'\n * // }\n * ```\n */\nfunction emit(/** The event to emit, or an expression that returns an event to emit. */\neventOrExpr) {\n function emit(_args, _params) {\n }\n emit.type = 'xstate.emit';\n emit.event = eventOrExpr;\n emit.resolve = resolveEmit;\n emit.execute = executeEmit;\n return emit;\n}\n\n/**\n * @remarks\n * `T | unknown` reduces to `unknown` and that can be problematic when it comes\n * to contextual typing. It especially is a problem when the union has a\n * function member, like here:\n *\n * ```ts\n * declare function test(\n * cbOrVal: ((arg: number) => unknown) | unknown\n * ): void;\n * test((arg) => {}); // oops, implicit any\n * ```\n *\n * This type can be used to avoid this problem. This union represents the same\n * value space as `unknown`.\n */\n\n// https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887\n\n// @TODO: Replace with native `NoInfer` when TS issue gets fixed:\n// https://github.com/microsoft/TypeScript/pull/57673\n\n/** @deprecated Use the built-in `NoInfer` type instead */\n\n/** The full definition of an event, with a string `type`. */\n\n/**\n * The string or object representing the state value relative to the parent\n * state node.\n *\n * @remarks\n * - For a child atomic state node, this is a string, e.g., `\"pending\"`.\n * - For complex state nodes, this is an object, e.g., `{ success:\n * \"someChildState\" }`.\n */\n\n/** @deprecated Use `AnyMachineSnapshot` instead */\n\n// TODO: possibly refactor this somehow, use even a simpler type, and maybe even make `machine.options` private or something\n/** @ignore */\n\nlet SpecialTargets = /*#__PURE__*/function (SpecialTargets) {\n SpecialTargets[\"Parent\"] = \"#_parent\";\n SpecialTargets[\"Internal\"] = \"#_internal\";\n return SpecialTargets;\n}({});\n\n/** @deprecated Use `AnyActor` instead. */\n\n// Based on RxJS types\n\n// TODO: in v6, this should only accept AnyActorLogic, like ActorRefFromLogic\n\n/** @deprecated Use `Actor<T>` instead. */\n\n/**\n * Represents logic which can be used by an actor.\n *\n * @template TSnapshot - The type of the snapshot.\n * @template TEvent - The type of the event object.\n * @template TInput - The type of the input.\n * @template TSystem - The type of the actor system.\n */\n\n/** @deprecated */\n\n// TODO: cover all that can be actually returned\n\nfunction resolveSendTo(actorScope, snapshot, args, actionParams, {\n to,\n event: eventOrExpr,\n id,\n delay\n}, extra) {\n const delaysMap = snapshot.machine.implementations.delays;\n if (typeof eventOrExpr === 'string') {\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Only event objects may be used with sendTo; use sendTo({ type: \"${eventOrExpr}\" }) instead`);\n }\n const resolvedEvent = typeof eventOrExpr === 'function' ? eventOrExpr(args, actionParams) : eventOrExpr;\n let resolvedDelay;\n if (typeof delay === 'string') {\n const configDelay = delaysMap && delaysMap[delay];\n resolvedDelay = typeof configDelay === 'function' ? configDelay(args, actionParams) : configDelay;\n } else {\n resolvedDelay = typeof delay === 'function' ? delay(args, actionParams) : delay;\n }\n const resolvedTarget = typeof to === 'function' ? to(args, actionParams) : to;\n let targetActorRef;\n if (typeof resolvedTarget === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n if (resolvedTarget === SpecialTargets.Parent) {\n targetActorRef = actorScope.self._parent;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n else if (resolvedTarget === SpecialTargets.Internal) {\n targetActorRef = actorScope.self;\n } else if (resolvedTarget.startsWith('#_')) {\n // SCXML compatibility: https://www.w3.org/TR/scxml/#SCXMLEventProcessor\n // #_invokeid. If the target is the special term '#_invokeid', where invokeid is the invokeid of an SCXML session that the sending session has created by <invoke>, the Processor must add the event to the external queue of that session.\n targetActorRef = snapshot.children[resolvedTarget.slice(2)];\n } else {\n targetActorRef = extra.deferredActorIds?.includes(resolvedTarget) ? resolvedTarget : snapshot.children[resolvedTarget];\n }\n if (!targetActorRef) {\n throw new Error(`Unable to send event to actor '${resolvedTarget}' from machine '${snapshot.machine.id}'.`);\n }\n } else {\n targetActorRef = resolvedTarget || actorScope.self;\n }\n return [snapshot, {\n to: targetActorRef,\n targetId: typeof resolvedTarget === 'string' ? resolvedTarget : undefined,\n event: resolvedEvent,\n id,\n delay: resolvedDelay\n }, undefined];\n}\nfunction retryResolveSendTo(_, snapshot, params) {\n if (typeof params.to === 'string') {\n params.to = snapshot.children[params.to];\n }\n}\nfunction executeSendTo(actorScope, params) {\n // this forms an outgoing events queue\n // thanks to that the recipient actors are able to read the *updated* snapshot value of the sender\n actorScope.defer(() => {\n const {\n to,\n event,\n delay,\n id\n } = params;\n if (typeof delay === 'number') {\n actorScope.system.scheduler.schedule(actorScope.self, to, event, delay, id);\n return;\n }\n actorScope.system._relay(actorScope.self,\n // at this point, in a deferred task, it should already be mutated by retryResolveSendTo\n // if it initially started as a string\n to, event.type === XSTATE_ERROR ? createErrorActorEvent(actorScope.self.id, event.data) : event);\n });\n}\n/**\n * Sends an event to an actor.\n *\n * @param actor The `ActorRef` to send the event to.\n * @param event The event to send, or an expression that evaluates to the event\n * to send\n * @param options Send action options\n *\n * - `id` - The unique send event identifier (used with `cancel()`).\n * - `delay` - The number of milliseconds to delay the sending of the event.\n */\nfunction sendTo(to, eventOrExpr, options) {\n function sendTo(_args, _params) {\n }\n sendTo.type = 'xstate.sendTo';\n sendTo.to = to;\n sendTo.event = eventOrExpr;\n sendTo.id = options?.id;\n sendTo.delay = options?.delay;\n sendTo.resolve = resolveSendTo;\n sendTo.retryResolve = retryResolveSendTo;\n sendTo.execute = executeSendTo;\n return sendTo;\n}\n\n/**\n * Sends an event to this machine's parent.\n *\n * @param event The event to send to the parent machine.\n * @param options Options to pass into the send event.\n */\nfunction sendParent(event, options) {\n return sendTo(SpecialTargets.Parent, event, options);\n}\n/**\n * Forwards (sends) an event to the `target` actor.\n *\n * @param target The target actor to forward the event to.\n * @param options Options to pass into the send action creator.\n */\nfunction forwardTo(target, options) {\n return sendTo(target, ({\n event\n }) => event, options);\n}\n\nfunction resolveEnqueueActions(actorScope, snapshot, args, actionParams, {\n collect\n}) {\n const actions = [];\n const enqueue = function enqueue(action) {\n actions.push(action);\n };\n enqueue.assign = (...args) => {\n actions.push(assign(...args));\n };\n enqueue.cancel = (...args) => {\n actions.push(cancel(...args));\n };\n enqueue.raise = (...args) => {\n // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)\n // then it fails to typecheck that because `...args` use `string` in place of `TDelay`\n actions.push(raise(...args));\n };\n enqueue.sendTo = (...args) => {\n // for some reason it fails to infer `TDelay` from `...args` here and picks its default (`never`)\n // then it fails to typecheck that because `...args` use `string` in place of `TDelay\n actions.push(sendTo(...args));\n };\n enqueue.sendParent = (...args) => {\n actions.push(sendParent(...args));\n };\n enqueue.spawnChild = (...args) => {\n actions.push(spawnChild(...args));\n };\n enqueue.stopChild = (...args) => {\n actions.push(stopChild(...args));\n };\n enqueue.emit = (...args) => {\n actions.push(emit(...args));\n };\n collect({\n context: args.context,\n event: args.event,\n enqueue,\n check: guard => evaluateGuard(guard, snapshot.context, args.event, snapshot),\n self: actorScope.self,\n system: actorScope.system\n }, actionParams);\n return [snapshot, undefined, actions];\n}\n/**\n * Creates an action object that will execute actions that are queued by the\n * `enqueue(action)` function.\n *\n * @example\n *\n * ```ts\n * import { createMachine, enqueueActions } from 'xstate';\n *\n * const machine = createMachine({\n * entry: enqueueActions(({ enqueue, check }) => {\n * enqueue.assign({ count: 0 });\n *\n * if (check('someGuard')) {\n * enqueue.assign({ count: 1 });\n * }\n *\n * enqueue('someAction');\n * })\n * });\n * ```\n */\nfunction enqueueActions(collect) {\n function enqueueActions(_args, _params) {\n }\n enqueueActions.type = 'xstate.enqueueActions';\n enqueueActions.collect = collect;\n enqueueActions.resolve = resolveEnqueueActions;\n return enqueueActions;\n}\n\nfunction resolveLog(_, snapshot, actionArgs, actionParams, {\n value,\n label\n}) {\n return [snapshot, {\n value: typeof value === 'function' ? value(actionArgs, actionParams) : value,\n label\n }, undefined];\n}\nfunction executeLog({\n logger\n}, {\n value,\n label\n}) {\n if (label) {\n logger(label, value);\n } else {\n logger(value);\n }\n}\n/**\n * @param expr The expression function to evaluate which will be logged. Takes\n * in 2 arguments:\n *\n * - `ctx` - the current state context\n * - `event` - the event that caused this action to be executed.\n *\n * @param label The label to give to the logged expression.\n */\nfunction log(value = ({\n context,\n event\n}) => ({\n context,\n event\n}), label) {\n function log(_args, _params) {\n }\n log.type = 'xstate.log';\n log.value = value;\n log.label = label;\n log.resolve = resolveLog;\n log.execute = executeLog;\n return log;\n}\n\nexport { SpecialTargets as S, assign as a, enqueueActions as b, sendTo as c, emit as e, forwardTo as f, log as l, sendParent as s };\n","export { createEmptyActor, fromCallback, fromEventObservable, fromObservable, fromPromise, fromTransition } from '../actors/dist/xstate-actors.esm.js';\nimport { t as toArray, S as STATE_DELIMITER, m as mapValues, f as formatTransitions, a as toTransitionConfigArray, b as formatTransition, N as NULL_EVENT, e as evaluateGuard, c as createInvokeId, g as getDelayedTransitions, d as formatInitialTransition, h as getCandidates, r as resolveStateValue, i as getAllStateNodes, j as getStateNodes, k as createMachineSnapshot, l as isInFinalState, n as macrostep, o as transitionNode, p as resolveActionsAndContext, q as createInitEvent, s as microstep, u as getInitialStateNodes, v as toStatePath, w as isStateId, x as getStateNodeByPath, y as getPersistedSnapshot, z as resolveReferencedActor, A as createActor, $ as $$ACTOR_TYPE } from './raise-c17ec2bc.esm.js';\nexport { B as Actor, I as __unsafe_getAllOwnEventDescriptors, D as and, M as cancel, A as createActor, j as getStateNodes, C as interpret, H as isMachineSnapshot, J as matchesState, E as not, F as or, K as pathToStateValue, O as raise, P as spawnChild, G as stateIn, Q as stop, R as stopChild, L as toObserver } from './raise-c17ec2bc.esm.js';\nimport { a as assign } from './log-3d9d72a9.esm.js';\nexport { S as SpecialTargets, a as assign, e as emit, b as enqueueActions, f as forwardTo, l as log, s as sendParent, c as sendTo } from './log-3d9d72a9.esm.js';\nimport '../dev/dist/xstate-dev.esm.js';\n\n/**\n * Asserts that the given event object is of the specified type or types. Throws\n * an error if the event object is not of the specified types.\n *\n * @example\n *\n * ```ts\n * // ...\n * entry: ({ event }) => {\n * assertEvent(event, 'doNothing');\n * // event is { type: 'doNothing' }\n * },\n * // ...\n * exit: ({ event }) => {\n * assertEvent(event, 'greet');\n * // event is { type: 'greet'; message: string }\n *\n * assertEvent(event, ['greet', 'notify']);\n * // event is { type: 'greet'; message: string }\n * // or { type: 'notify'; message: string; level: 'info' | 'error' }\n * },\n * ```\n */\nfunction assertEvent(event, type) {\n const types = toArray(type);\n if (!types.includes(event.type)) {\n const typesText = types.length === 1 ? `type \"${types[0]}\"` : `one of types \"${types.join('\", \"')}\"`;\n throw new Error(`Expected event ${JSON.stringify(event)} to have ${typesText}`);\n }\n}\n\nconst cache = new WeakMap();\nfunction memo(object, key, fn) {\n let memoizedData = cache.get(object);\n if (!memoizedData) {\n memoizedData = {\n [key]: fn()\n };\n cache.set(object, memoizedData);\n } else if (!(key in memoizedData)) {\n memoizedData[key] = fn();\n }\n return memoizedData[key];\n}\n\nconst EMPTY_OBJECT = {};\nconst toSerializableAction = action => {\n if (typeof action === 'string') {\n return {\n type: action\n };\n }\n if (typeof action === 'function') {\n if ('resolve' in action) {\n return {\n type: action.type\n };\n }\n return {\n type: action.name\n };\n }\n return action;\n};\nclass StateNode {\n constructor(/** The raw config used to create the machine. */\n config, options) {\n this.config = config;\n /**\n * The relative key of the state node, which represents its location in the\n * overall state value.\n */\n this.key = void 0;\n /** The unique ID of the state node. */\n this.id = void 0;\n /**\n * The type of this state node:\n *\n * - `'atomic'` - no child state nodes\n * - `'compound'` - nested child state nodes (XOR)\n * - `'parallel'` - orthogonal nested child state nodes (AND)\n * - `'history'` - history state node\n * - `'final'` - final state node\n */\n this.type = void 0;\n /** The string path from the root machine node to this node. */\n this.path = void 0;\n /** The child state nodes. */\n this.states = void 0;\n /**\n * The type of history on this state node. Can be:\n *\n * - `'shallow'` - recalls only top-level historical state value\n * - `'deep'` - recalls historical state value at all levels\n */\n this.history = void 0;\n /** The action(s) to be executed upon entering the state node. */\n this.entry = void 0;\n /** The action(s) to be executed upon exiting the state node. */\n this.exit = void 0;\n /** The parent state node. */\n this.parent = void 0;\n /** The root machine node. */\n this.machine = void 0;\n /**\n * The meta data associated with this state node, which will be returned in\n * State instances.\n */\n this.meta = void 0;\n /**\n * The output data sent with the \"xstate.done.state._id_\" event if this is a\n * final state node.\n */\n this.output = void 0;\n /**\n * The order this state node appears. Corresponds to the implicit document\n * order.\n */\n this.order = -1;\n this.description = void 0;\n this.tags = [];\n this.transitions = void 0;\n this.always = void 0;\n this.parent = options._parent;\n this.key = options._key;\n this.machine = options._machine;\n this.path = this.parent ? this.parent.path.concat(this.key) : [];\n this.id = this.config.id || [this.machine.id, ...this.path].join(STATE_DELIMITER);\n this.type = this.config.type || (this.config.states && Object.keys(this.config.states).length ? 'compound' : this.config.history ? 'history' : 'atomic');\n this.description = this.config.description;\n this.order = this.machine.idMap.size;\n this.machine.idMap.set(this.id, this);\n this.states = this.config.states ? mapValues(this.config.states, (stateConfig, key) => {\n const stateNode = new StateNode(stateConfig, {\n _parent: this,\n _key: key,\n _machine: this.machine\n });\n return stateNode;\n }) : EMPTY_OBJECT;\n if (this.type === 'compound' && !this.config.initial) {\n throw new Error(`No initial state specified for compound state node \"#${this.id}\". Try adding { initial: \"${Object.keys(this.states)[0]}\" } to the state config.`);\n }\n\n // History config\n this.history = this.config.history === true ? 'shallow' : this.config.history || false;\n this.entry = toArray(this.config.entry).slice();\n this.exit = toArray(this.config.exit).slice();\n this.meta = this.config.meta;\n this.output = this.type === 'final' || !this.parent ? this.config.output : undefined;\n this.tags = toArray(config.tags).slice();\n }\n\n /** @internal */\n _initialize() {\n this.transitions = formatTransitions(this);\n if (this.config.always) {\n this.always = toTransitionConfigArray(this.config.always).map(t => formatTransition(this, NULL_EVENT, t));\n }\n Object.keys(this.states).forEach(key => {\n this.states[key]._initialize();\n });\n }\n\n /** The well-structured state node definition. */\n get definition() {\n return {\n id: this.id,\n key: this.key,\n version: this.machine.version,\n type: this.type,\n initial: this.initial ? {\n target: this.initial.target,\n source: this,\n actions: this.initial.actions.map(toSerializableAction),\n eventType: null,\n reenter: false,\n toJSON: () => ({\n target: this.initial.target.map(t => `#${t.id}`),\n source: `#${this.id}`,\n actions: this.initial.actions.map(toSerializableAction),\n eventType: null\n })\n } : undefined,\n history: this.history,\n states: mapValues(this.states, state => {\n return state.definition;\n }),\n on: this.on,\n transitions: [...this.transitions.values()].flat().map(t => ({\n ...t,\n actions: t.actions.map(toSerializableAction)\n })),\n entry: this.entry.map(toSerializableAction),\n exit: this.exit.map(toSerializableAction),\n meta: this.meta,\n order: this.order || -1,\n output: this.output,\n invoke: this.invoke,\n description: this.description,\n tags: this.tags\n };\n }\n\n /** @internal */\n toJSON() {\n return this.definition;\n }\n\n /** The logic invoked as actors by this state node. */\n get invoke() {\n return memo(this, 'invoke', () => toArray(this.config.invoke).map((invokeConfig, i) => {\n const {\n src,\n systemId\n } = invokeConfig;\n const resolvedId = invokeConfig.id ?? createInvokeId(this.id, i);\n const sourceName = typeof src === 'string' ? src : `xstate.invoke.${createInvokeId(this.id, i)}`;\n return {\n ...invokeConfig,\n src: sourceName,\n id: resolvedId,\n systemId: systemId,\n toJSON() {\n const {\n onDone,\n onError,\n ...invokeDefValues\n } = invokeConfig;\n return {\n ...invokeDefValues,\n type: 'xstate.invoke',\n src: sourceName,\n id: resolvedId\n };\n }\n };\n }));\n }\n\n /** The mapping of events to transitions. */\n get on() {\n return memo(this, 'on', () => {\n const transitions = this.transitions;\n return [...transitions].flatMap(([descriptor, t]) => t.map(t => [descriptor, t])).reduce((map, [descriptor, transition]) => {\n map[descriptor] = map[descriptor] || [];\n map[descriptor].push(transition);\n return map;\n }, {});\n });\n }\n get after() {\n return memo(this, 'delayedTransitions', () => getDelayedTransitions(this));\n }\n get initial() {\n return memo(this, 'initial', () => formatInitialTransition(this, this.config.initial));\n }\n\n /** @internal */\n next(snapshot, event) {\n const eventType = event.type;\n const actions = [];\n let selectedTransition;\n const candidates = memo(this, `candidates-${eventType}`, () => getCandidates(this, eventType));\n for (const candidate of candidates) {\n const {\n guard\n } = candidate;\n const resolvedContext = snapshot.context;\n let guardPassed = false;\n try {\n guardPassed = !guard || evaluateGuard(guard, resolvedContext, event, snapshot);\n } catch (err) {\n const guardType = typeof guard === 'string' ? guard : typeof guard === 'object' ? guard.type : undefined;\n throw new Error(`Unable to evaluate guard ${guardType ? `'${guardType}' ` : ''}in transition for event '${eventType}' in state node '${this.id}':\\n${err.message}`);\n }\n if (guardPassed) {\n actions.push(...candidate.actions);\n selectedTransition = candidate;\n break;\n }\n }\n return selectedTransition ? [selectedTransition] : undefined;\n }\n\n /** All the event types accepted by this state node and its descendants. */\n get events() {\n return memo(this, 'events', () => {\n const {\n states\n } = this;\n const events = new Set(this.ownEvents);\n if (states) {\n for (const stateId of Object.keys(states)) {\n const state = states[stateId];\n if (state.states) {\n for (const event of state.events) {\n events.add(`${event}`);\n }\n }\n }\n }\n return Array.from(events);\n });\n }\n\n /**\n * All the events that have transitions directly from this state node.\n *\n * Excludes any inert events.\n */\n get ownEvents() {\n const events = new Set([...this.transitions.keys()].filter(descriptor => {\n return this.transitions.get(descriptor).some(transition => !(!transition.target && !transition.actions.length && !transition.reenter));\n }));\n return Array.from(events);\n }\n}\n\nconst STATE_IDENTIFIER = '#';\nclass StateMachine {\n constructor(/** The raw config used to create the machine. */\n config, implementations) {\n this.config = config;\n /** The machine's own version. */\n this.version = void 0;\n this.schemas = void 0;\n this.implementations = void 0;\n /** @internal */\n this.__xstatenode = true;\n /** @internal */\n this.idMap = new Map();\n this.root = void 0;\n this.id = void 0;\n this.states = void 0;\n this.events = void 0;\n this.id = config.id || '(machine)';\n this.implementations = {\n actors: implementations?.actors ?? {},\n actions: implementations?.actions ?? {},\n delays: implementations?.delays ?? {},\n guards: implementations?.guards ?? {}\n };\n this.version = this.config.version;\n this.schemas = this.config.schemas;\n this.transition = this.transition.bind(this);\n this.getInitialSnapshot = this.getInitialSnapshot.bind(this);\n this.getPersistedSnapshot = this.getPersistedSnapshot.bind(this);\n this.restoreSnapshot = this.restoreSnapshot.bind(this);\n this.start = this.start.bind(this);\n this.root = new StateNode(config, {\n _key: this.id,\n _machine: this\n });\n this.root._initialize();\n this.states = this.root.states; // TODO: remove!\n this.events = this.root.events;\n }\n\n /**\n * Clones this state machine with the provided implementations and merges the\n * `context` (if provided).\n *\n * @param implementations Options (`actions`, `guards`, `actors`, `delays`,\n * `context`) to recursively merge with the existing options.\n * @returns A new `StateMachine` instance with the provided implementations.\n */\n provide(implementations) {\n const {\n actions,\n guards,\n actors,\n delays\n } = this.implementations;\n return new StateMachine(this.config, {\n actions: {\n ...actions,\n ...implementations.actions\n },\n guards: {\n ...guards,\n ...implementations.guards\n },\n actors: {\n ...actors,\n ...implementations.actors\n },\n delays: {\n ...delays,\n ...implementations.delays\n }\n });\n }\n resolveState(config) {\n const resolvedStateValue = resolveStateValue(this.root, config.value);\n const nodeSet = getAllStateNodes(getStateNodes(this.root, resolvedStateValue));\n return createMachineSnapshot({\n _nodes: [...nodeSet],\n context: config.context || {},\n children: {},\n status: isInFinalState(nodeSet, this.root) ? 'done' : config.status || 'active',\n output: config.output,\n error: config.error,\n historyValue: config.historyValue\n }, this);\n }\n\n /**\n * Determines the next snapshot given the current `snapshot` and received\n * `event`. Calculates a full macrostep from all microsteps.\n *\n * @param snapshot The current snapshot\n * @param event The received event\n */\n transition(snapshot, event, actorScope) {\n return macrostep(snapshot, event, actorScope, []).snapshot;\n }\n\n /**\n * Determines the next state given the current `state` and `event`. Calculates\n * a microstep.\n *\n * @param state The current state\n * @param event The received event\n */\n microstep(snapshot, event, actorScope) {\n return macrostep(snapshot, event, actorScope, []).microstates;\n }\n getTransitionData(snapshot, event) {\n return transitionNode(this.root, snapshot.value, snapshot, event) || [];\n }\n\n /**\n * The initial state _before_ evaluating any microsteps. This \"pre-initial\"\n * state is provided to initial actions executed in the initial state.\n */\n getPreInitialState(actorScope, initEvent, internalQueue) {\n const {\n context\n } = this.config;\n const preInitial = createMachineSnapshot({\n context: typeof context !== 'function' && context ? context : {},\n _nodes: [this.root],\n children: {},\n status: 'active'\n }, this);\n if (typeof context === 'function') {\n const assignment = ({\n spawn,\n event,\n self\n }) => context({\n spawn,\n input: event.input,\n self\n });\n return resolveActionsAndContext(preInitial, initEvent, actorScope, [assign(assignment)], internalQueue, undefined);\n }\n return preInitial;\n }\n\n /**\n * Returns the initial `State` instance, with reference to `self` as an\n * `ActorRef`.\n */\n getInitialSnapshot(actorScope, input) {\n const initEvent = createInitEvent(input); // TODO: fix;\n const internalQueue = [];\n const preInitialState = this.getPreInitialState(actorScope, initEvent, internalQueue);\n const nextState = microstep([{\n target: [...getInitialStateNodes(this.root)],\n source: this.root,\n reenter: true,\n actions: [],\n eventType: null,\n toJSON: null // TODO: fix\n }], preInitialState, actorScope, initEvent, true, internalQueue);\n const {\n snapshot: macroState\n } = macrostep(nextState, initEvent, actorScope, internalQueue);\n return macroState;\n }\n start(snapshot) {\n Object.values(snapshot.children).forEach(child => {\n if (child.getSnapshot().status === 'active') {\n child.start();\n }\n });\n }\n getStateNodeById(stateId) {\n const fullPath = toStatePath(stateId);\n const relativePath = fullPath.slice(1);\n const resolvedStateId = isStateId(fullPath[0]) ? fullPath[0].slice(STATE_IDENTIFIER.length) : fullPath[0];\n const stateNode = this.idMap.get(resolvedStateId);\n if (!stateNode) {\n throw new Error(`Child state node '#${resolvedStateId}' does not exist on machine '${this.id}'`);\n }\n return getStateNodeByPath(stateNode, relativePath);\n }\n get definition() {\n return this.root.definition;\n }\n toJSON() {\n return this.definition;\n }\n getPersistedSnapshot(snapshot, options) {\n return getPersistedSnapshot(snapshot, options);\n }\n restoreSnapshot(snapshot, _actorScope) {\n const children = {};\n const snapshotChildren = snapshot.children;\n Object.keys(snapshotChildren).forEach(actorId => {\n const actorData = snapshotChildren[actorId];\n const childState = actorData.snapshot;\n const src = actorData.src;\n const logic = typeof src === 'string' ? resolveReferencedActor(this, src) : src;\n if (!logic) {\n return;\n }\n const actorRef = createActor(logic, {\n id: actorId,\n parent: _actorScope.self,\n syncSnapshot: actorData.syncSnapshot,\n snapshot: childState,\n src,\n systemId: actorData.systemId\n });\n children[actorId] = actorRef;\n });\n const restoredSnapshot = createMachineSnapshot({\n ...snapshot,\n children,\n _nodes: Array.from(getAllStateNodes(getStateNodes(this.root, snapshot.value)))\n }, this);\n const seen = new Set();\n function reviveContext(contextPart, children) {\n if (seen.has(contextPart)) {\n return;\n }\n seen.add(contextPart);\n for (const key in contextPart) {\n const value = contextPart[key];\n if (value && typeof value === 'object') {\n if ('xstate$$type' in value && value.xstate$$type === $$ACTOR_TYPE) {\n contextPart[key] = children[value.id];\n continue;\n }\n reviveContext(value, children);\n }\n }\n }\n reviveContext(restoredSnapshot.context, children);\n return restoredSnapshot;\n }\n}\n\n/**\n * Creates a state machine (statechart) with the given configuration.\n *\n * The state machine represents the pure logic of a state machine actor.\n *\n * @example\n *\n * ```ts\n * import { createMachine } from 'xstate';\n *\n * const lightMachine = createMachine({\n * id: 'light',\n * initial: 'green',\n * states: {\n * green: {\n * on: {\n * TIMER: { target: 'yellow' }\n * }\n * },\n * yellow: {\n * on: {\n * TIMER: { target: 'red' }\n * }\n * },\n * red: {\n * on: {\n * TIMER: { target: 'green' }\n * }\n * }\n * }\n * });\n *\n * const lightActor = createActor(lightMachine);\n * lightActor.start();\n *\n * lightActor.send({ type: 'TIMER' });\n * ```\n *\n * @param config The state machine configuration.\n * @param options DEPRECATED: use `setup({ ... })` or `machine.provide({ ... })`\n * to provide machine implementations instead.\n */\nfunction createMachine(config, implementations) {\n return new StateMachine(config, implementations);\n}\n\n/** @internal */\nfunction createInertActorScope(actorLogic) {\n const self = createActor(actorLogic);\n const inertActorScope = {\n self,\n defer: () => {},\n id: '',\n logger: () => {},\n sessionId: '',\n stopChild: () => {},\n system: self.system,\n emit: () => {},\n actionExecutor: () => {}\n };\n return inertActorScope;\n}\n\n/** @deprecated Use `initialTransition(…)` instead. */\nfunction getInitialSnapshot(actorLogic, ...[input]) {\n const actorScope = createInertActorScope(actorLogic);\n return actorLogic.getInitialSnapshot(actorScope, input);\n}\n\n/**\n * Determines the next snapshot for the given `actorLogic` based on the given\n * `snapshot` and `event`.\n *\n * If the `snapshot` is `undefined`, the initial snapshot of the `actorLogic` is\n * used.\n *\n * @deprecated Use `transition(…)` instead.\n * @example\n *\n * ```ts\n * import { getNextSnapshot } from 'xstate';\n * import { trafficLightMachine } from './trafficLightMachine.ts';\n *\n * const nextSnapshot = getNextSnapshot(\n * trafficLightMachine, // actor logic\n * undefined, // snapshot (or initial state if undefined)\n * { type: 'TIMER' }\n * ); // event object\n *\n * console.log(nextSnapshot.value);\n * // => 'yellow'\n *\n * const nextSnapshot2 = getNextSnapshot(\n * trafficLightMachine, // actor logic\n * nextSnapshot, // snapshot\n * { type: 'TIMER' }\n * ); // event object\n *\n * console.log(nextSnapshot2.value);\n * // =>'red'\n * ```\n */\nfunction getNextSnapshot(actorLogic, snapshot, event) {\n const inertActorScope = createInertActorScope(actorLogic);\n inertActorScope.self._snapshot = snapshot;\n return actorLogic.transition(snapshot, event, inertActorScope);\n}\n\n// at the moment we allow extra actors - ones that are not specified by `children`\n// this could be reconsidered in the future\n\nfunction setup({\n schemas,\n actors,\n actions,\n guards,\n delays\n}) {\n return {\n createMachine: config => createMachine({\n ...config,\n schemas\n }, {\n actors,\n actions,\n guards,\n delays\n })\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging\nclass SimulatedClock {\n constructor() {\n this.timeouts = new Map();\n this._now = 0;\n this._id = 0;\n this._flushing = false;\n this._flushingInvalidated = false;\n }\n now() {\n return this._now;\n }\n getId() {\n return this._id++;\n }\n setTimeout(fn, timeout) {\n this._flushingInvalidated = this._flushing;\n const id = this.getId();\n this.timeouts.set(id, {\n start: this.now(),\n timeout,\n fn\n });\n return id;\n }\n clearTimeout(id) {\n this._flushingInvalidated = this._flushing;\n this.timeouts.delete(id);\n }\n set(time) {\n if (this._now > time) {\n throw new Error('Unable to travel back in time');\n }\n this._now = time;\n this.flushTimeouts();\n }\n flushTimeouts() {\n if (this._flushing) {\n this._flushingInvalidated = true;\n return;\n }\n this._flushing = true;\n const sorted = [...this.timeouts].sort(([_idA, timeoutA], [_idB, timeoutB]) => {\n const endA = timeoutA.start + timeoutA.timeout;\n const endB = timeoutB.start + timeoutB.timeout;\n return endB > endA ? -1 : 1;\n });\n for (const [id, timeout] of sorted) {\n if (this._flushingInvalidated) {\n this._flushingInvalidated = false;\n this._flushing = false;\n this.flushTimeouts();\n return;\n }\n if (this.now() - timeout.start >= timeout.timeout) {\n this.timeouts.delete(id);\n timeout.fn.call(null);\n }\n }\n this._flushing = false;\n }\n increment(ms) {\n this._now += ms;\n this.flushTimeouts();\n }\n}\n\n/**\n * Returns a promise that resolves to the `output` of the actor when it is done.\n *\n * @example\n *\n * ```ts\n * const machine = createMachine({\n * // ...\n * output: {\n * count: 42\n * }\n * });\n *\n * const actor = createActor(machine);\n *\n * actor.start();\n *\n * const output = await toPromise(actor);\n *\n * console.log(output);\n * // logs { count: 42 }\n * ```\n */\nfunction toPromise(actor) {\n return new Promise((resolve, reject) => {\n actor.subscribe({\n complete: () => {\n resolve(actor.getSnapshot().output);\n },\n error: reject\n });\n });\n}\n\n/**\n * Given actor `logic`, a `snapshot`, and an `event`, returns a tuple of the\n * `nextSnapshot` and `actions` to execute.\n *\n * This is a pure function that does not execute `actions`.\n */\nfunction transition(logic, snapshot, event) {\n const executableActions = [];\n const actorScope = createInertActorScope(logic);\n actorScope.actionExecutor = action => {\n executableActions.push(action);\n };\n const nextSnapshot = logic.transition(snapshot, event, actorScope);\n return [nextSnapshot, executableActions];\n}\n\n/**\n * Given actor `logic` and optional `input`, returns a tuple of the\n * `nextSnapshot` and `actions` to execute from the initial transition (no\n * previous state).\n *\n * This is a pure function that does not execute `actions`.\n */\nfunction initialTransition(logic, ...[input]) {\n const executableActions = [];\n const actorScope = createInertActorScope(logic);\n actorScope.actionExecutor = action => {\n executableActions.push(action);\n };\n const nextSnapshot = logic.getInitialSnapshot(actorScope, input);\n return [nextSnapshot, executableActions];\n}\n\nconst defaultWaitForOptions = {\n timeout: Infinity // much more than 10 seconds\n};\n\n/**\n * Subscribes to an actor ref and waits for its emitted value to satisfy a\n * predicate, and then resolves with that value. Will throw if the desired state\n * is not reached after an optional timeout. (defaults to Infinity).\n *\n * @example\n *\n * ```js\n * const state = await waitFor(someService, (state) => {\n * return state.hasTag('loaded');\n * });\n *\n * state.hasTag('loaded'); // true\n * ```\n *\n * @param actorRef The actor ref to subscribe to\n * @param predicate Determines if a value matches the condition to wait for\n * @param options\n * @returns A promise that eventually resolves to the emitted value that matches\n * the condition\n */\nfunction waitFor(actorRef, predicate, options) {\n const resolvedOptions = {\n ...defaultWaitForOptions,\n ...options\n };\n return new Promise((res, rej) => {\n const {\n signal\n } = resolvedOptions;\n if (signal?.aborted) {\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n rej(signal.reason);\n return;\n }\n let done = false;\n const handle = resolvedOptions.timeout === Infinity ? undefined : setTimeout(() => {\n dispose();\n rej(new Error(`Timeout of ${resolvedOptions.timeout} ms exceeded`));\n }, resolvedOptions.timeout);\n const dispose = () => {\n clearTimeout(handle);\n done = true;\n sub?.unsubscribe();\n if (abortListener) {\n signal.removeEventListener('abort', abortListener);\n }\n };\n function checkEmitted(emitted) {\n if (predicate(emitted)) {\n dispose();\n res(emitted);\n }\n }\n\n /**\n * If the `signal` option is provided, this will be the listener for its\n * `abort` event\n */\n let abortListener;\n // eslint-disable-next-line prefer-const\n let sub; // avoid TDZ when disposing synchronously\n\n // See if the current snapshot already matches the predicate\n checkEmitted(actorRef.getSnapshot());\n if (done) {\n return;\n }\n\n // only define the `abortListener` if the `signal` option is provided\n if (signal) {\n abortListener = () => {\n dispose();\n // XState does not \"own\" the signal, so we should reject with its reason (if any)\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n rej(signal.reason);\n };\n signal.addEventListener('abort', abortListener);\n }\n sub = actorRef.subscribe({\n next: checkEmitted,\n error: err => {\n dispose();\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n rej(err);\n },\n complete: () => {\n dispose();\n rej(new Error(`Actor terminated without satisfying predicate`));\n }\n });\n if (done) {\n sub.unsubscribe();\n }\n });\n}\n\nexport { SimulatedClock, StateMachine, StateNode, assertEvent, createMachine, getInitialSnapshot, getNextSnapshot, initialTransition, setup, toPromise, transition, waitFor };\n",null,null,null,null,null,"/*\nCopyright (c) 2015 NAVER Corp.\nname: @egjs/agent\nlicense: MIT\nauthor: NAVER Corp.\nrepository: git+https://github.com/naver/egjs-agent.git\nversion: 2.4.4\n*/\nfunction some(arr, callback) {\n var length = arr.length;\n\n for (var i = 0; i < length; ++i) {\n if (callback(arr[i], i)) {\n return true;\n }\n }\n\n return false;\n}\nfunction find(arr, callback) {\n var length = arr.length;\n\n for (var i = 0; i < length; ++i) {\n if (callback(arr[i], i)) {\n return arr[i];\n }\n }\n\n return null;\n}\nfunction getUserAgentString(agent) {\n var userAgent = agent;\n\n if (typeof userAgent === \"undefined\") {\n if (typeof navigator === \"undefined\" || !navigator) {\n return \"\";\n }\n\n userAgent = navigator.userAgent || \"\";\n }\n\n return userAgent.toLowerCase();\n}\nfunction execRegExp(pattern, text) {\n try {\n return new RegExp(pattern, \"g\").exec(text);\n } catch (e) {\n return null;\n }\n}\nfunction hasUserAgentData() {\n if (typeof navigator === \"undefined\" || !navigator || !navigator.userAgentData) {\n return false;\n }\n\n var userAgentData = navigator.userAgentData;\n var brands = userAgentData.brands || userAgentData.uaList;\n return !!(brands && brands.length);\n}\nfunction findVersion(versionTest, userAgent) {\n var result = execRegExp(\"(\" + versionTest + \")((?:\\\\/|\\\\s|:)([0-9|\\\\.|_]+))\", userAgent);\n return result ? result[3] : \"\";\n}\nfunction convertVersion(text) {\n return text.replace(/_/g, \".\");\n}\nfunction findPreset(presets, userAgent) {\n var userPreset = null;\n var version = \"-1\";\n some(presets, function (preset) {\n var result = execRegExp(\"(\" + preset.test + \")((?:\\\\/|\\\\s|:)([0-9|\\\\.|_]+))?\", userAgent);\n\n if (!result || preset.brand) {\n return false;\n }\n\n userPreset = preset;\n version = result[3] || \"-1\";\n\n if (preset.versionAlias) {\n version = preset.versionAlias;\n } else if (preset.versionTest) {\n version = findVersion(preset.versionTest.toLowerCase(), userAgent) || version;\n }\n\n version = convertVersion(version);\n return true;\n });\n return {\n preset: userPreset,\n version: version\n };\n}\nfunction findPresetBrand(presets, brands) {\n var brandInfo = {\n brand: \"\",\n version: \"-1\"\n };\n some(presets, function (preset) {\n var result = findBrand(brands, preset);\n\n if (!result) {\n return false;\n }\n\n brandInfo.brand = preset.id;\n brandInfo.version = preset.versionAlias || result.version;\n return brandInfo.version !== \"-1\";\n });\n return brandInfo;\n}\nfunction findBrand(brands, preset) {\n return find(brands, function (_a) {\n var brand = _a.brand;\n return execRegExp(\"\" + preset.test, brand.toLowerCase());\n });\n}\n\nvar BROWSER_PRESETS = [{\n test: \"phantomjs\",\n id: \"phantomjs\"\n}, {\n test: \"whale\",\n id: \"whale\"\n}, {\n test: \"edgios|edge|edg\",\n id: \"edge\"\n}, {\n test: \"msie|trident|windows phone\",\n id: \"ie\",\n versionTest: \"iemobile|msie|rv\"\n}, {\n test: \"miuibrowser\",\n id: \"miui browser\"\n}, {\n test: \"samsungbrowser\",\n id: \"samsung internet\"\n}, {\n test: \"samsung\",\n id: \"samsung internet\",\n versionTest: \"version\"\n}, {\n test: \"chrome|crios\",\n id: \"chrome\"\n}, {\n test: \"firefox|fxios\",\n id: \"firefox\"\n}, {\n test: \"android\",\n id: \"android browser\",\n versionTest: \"version\"\n}, {\n test: \"safari|iphone|ipad|ipod\",\n id: \"safari\",\n versionTest: \"version\"\n}]; // chromium's engine(blink) is based on applewebkit 537.36.\n\nvar CHROMIUM_PRESETS = [{\n test: \"(?=.*applewebkit/(53[0-7]|5[0-2]|[0-4]))(?=.*\\\\schrome)\",\n id: \"chrome\",\n versionTest: \"chrome\"\n}, {\n test: \"chromium\",\n id: \"chrome\"\n}, {\n test: \"whale\",\n id: \"chrome\",\n versionAlias: \"-1\",\n brand: true\n}];\nvar WEBKIT_PRESETS = [{\n test: \"applewebkit\",\n id: \"webkit\",\n versionTest: \"applewebkit|safari\"\n}];\nvar WEBVIEW_PRESETS = [{\n test: \"(?=(iphone|ipad))(?!(.*version))\",\n id: \"webview\"\n}, {\n test: \"(?=(android|iphone|ipad))(?=.*(naver|daum|; wv))\",\n id: \"webview\"\n}, {\n // test webview\n test: \"webview\",\n id: \"webview\"\n}];\nvar OS_PRESETS = [{\n test: \"windows phone\",\n id: \"windows phone\"\n}, {\n test: \"windows 2000\",\n id: \"window\",\n versionAlias: \"5.0\"\n}, {\n test: \"windows nt\",\n id: \"window\"\n}, {\n test: \"win32|windows\",\n id: \"window\"\n}, {\n test: \"iphone|ipad|ipod\",\n id: \"ios\",\n versionTest: \"iphone os|cpu os\"\n}, {\n test: \"macos|macintel|mac os x\",\n id: \"mac\"\n}, {\n test: \"android|linux armv81\",\n id: \"android\"\n}, {\n test: \"tizen\",\n id: \"tizen\"\n}, {\n test: \"webos|web0s\",\n id: \"webos\"\n}];\n\nfunction isWebView(userAgent) {\n return !!findPreset(WEBVIEW_PRESETS, userAgent).preset;\n}\nfunction getLegacyAgent(userAgent) {\n var nextAgent = getUserAgentString(userAgent);\n var isMobile = !!/mobi/g.exec(nextAgent);\n var browser = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1,\n webview: isWebView(nextAgent),\n chromium: false,\n chromiumVersion: \"-1\",\n webkit: false,\n webkitVersion: \"-1\"\n };\n var os = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1\n };\n\n var _a = findPreset(BROWSER_PRESETS, nextAgent),\n browserPreset = _a.preset,\n browserVersion = _a.version;\n\n var _b = findPreset(OS_PRESETS, nextAgent),\n osPreset = _b.preset,\n osVersion = _b.version;\n\n var chromiumPreset = findPreset(CHROMIUM_PRESETS, nextAgent);\n browser.chromium = !!chromiumPreset.preset;\n browser.chromiumVersion = chromiumPreset.version;\n\n if (!browser.chromium) {\n var webkitPreset = findPreset(WEBKIT_PRESETS, nextAgent);\n browser.webkit = !!webkitPreset.preset;\n browser.webkitVersion = webkitPreset.version;\n }\n\n if (osPreset) {\n os.name = osPreset.id;\n os.version = osVersion;\n os.majorVersion = parseInt(osVersion, 10);\n }\n\n if (browserPreset) {\n browser.name = browserPreset.id;\n browser.version = browserVersion; // Early whale bugs\n\n if (browser.webview && os.name === \"ios\" && browser.name !== \"safari\") {\n browser.webview = false;\n }\n }\n\n browser.majorVersion = parseInt(browser.version, 10);\n return {\n browser: browser,\n os: os,\n isMobile: isMobile,\n isHints: false\n };\n}\n\nfunction getClientHintsAgent(osData) {\n var userAgentData = navigator.userAgentData;\n var brands = (userAgentData.uaList || userAgentData.brands).slice();\n var fullVersionList = osData && osData.fullVersionList;\n var isMobile = userAgentData.mobile || false;\n var firstBrand = brands[0];\n var platform = (osData && osData.platform || userAgentData.platform || navigator.platform).toLowerCase();\n var browser = {\n name: firstBrand.brand,\n version: firstBrand.version,\n majorVersion: -1,\n webkit: false,\n webkitVersion: \"-1\",\n chromium: false,\n chromiumVersion: \"-1\",\n webview: !!findPresetBrand(WEBVIEW_PRESETS, brands).brand || isWebView(getUserAgentString())\n };\n var os = {\n name: \"unknown\",\n version: \"-1\",\n majorVersion: -1\n };\n browser.webkit = !browser.chromium && some(WEBKIT_PRESETS, function (preset) {\n return findBrand(brands, preset);\n });\n var chromiumBrand = findPresetBrand(CHROMIUM_PRESETS, brands);\n browser.chromium = !!chromiumBrand.brand;\n browser.chromiumVersion = chromiumBrand.version || \"-1\";\n\n if (!browser.chromium) {\n var webkitBrand = findPresetBrand(WEBKIT_PRESETS, brands);\n browser.webkit = !!webkitBrand.brand;\n browser.webkitVersion = webkitBrand.version || \"-1\";\n }\n\n var platfomResult = find(OS_PRESETS, function (preset) {\n return new RegExp(\"\" + preset.test, \"g\").exec(platform);\n });\n os.name = platfomResult ? platfomResult.id : \"\";\n\n if (osData) {\n os.version = osData.platformVersion || \"-1\";\n }\n\n if (fullVersionList && fullVersionList.length) {\n var browserBrandByFullVersionList = findPresetBrand(BROWSER_PRESETS, fullVersionList);\n browser.name = browserBrandByFullVersionList.brand || browser.name;\n browser.version = browserBrandByFullVersionList.version || browser.version;\n } else {\n var browserBrand = findPresetBrand(BROWSER_PRESETS, brands);\n browser.name = browserBrand.brand || browser.name;\n browser.version = browserBrand.brand && osData ? osData.uaFullVersion : browserBrand.version;\n }\n\n if (browser.webkit) {\n os.name = isMobile ? \"ios\" : \"mac\";\n }\n\n if (os.name === \"ios\" && browser.webview) {\n browser.version = \"-1\";\n }\n\n os.version = convertVersion(os.version);\n browser.version = convertVersion(browser.version);\n os.majorVersion = parseInt(os.version, 10);\n browser.majorVersion = parseInt(browser.version, 10);\n return {\n browser: browser,\n os: os,\n isMobile: isMobile,\n isHints: true\n };\n}\n\n/**\n * @namespace eg.agent\n */\n\n/**\n* Extracts accuate browser and operating system information from the user agent string or client hints.\n* @ko 유저 에이전트 문자열 또는 client hints에서 정확한 브라우저와 운영체제 정보를 추출한다.\n* @function eg.agent#getAccurateAgent\n* @param - Callback function to get the accuate agent <ko>정확한 에이전트를 가져오기 위한 callback 함수</ko>\n* @return - get the accuate agent promise. If Promise are not supported, null is returned. <ko> 정확한 에이전트 promise를 가져온다. Promise를 지원 하지 않는 경우, null을 반환한다. </ko>\n* @example\nimport { getAccurateAgent } from \"@egjs/agent\";\n// eg.agent.getAccurateAgent()\ngetAccurateAgent().then(agent => {\n const { os, browser, isMobile } = agent;\n});\ngetAccurateAgent(agent => {\n const { os, browser, isMobile } = agent;\n});\n*/\n\nfunction getAccurateAgent(callback) {\n if (hasUserAgentData()) {\n return navigator.userAgentData.getHighEntropyValues([\"architecture\", \"model\", \"platform\", \"platformVersion\", \"uaFullVersion\", \"fullVersionList\"]).then(function (info) {\n var agentInfo = getClientHintsAgent(info);\n callback && callback(agentInfo);\n return agentInfo;\n });\n }\n\n callback && callback(agent());\n\n if (typeof Promise === \"undefined\" || !Promise) {\n return null;\n }\n\n return Promise.resolve(agent());\n}\n/**\n * Extracts browser and operating system information from the user agent string.\n * @ko 유저 에이전트 문자열에서 브라우저와 운영체제 정보를 추출한다.\n * @function eg.agent#agent\n * @param - user agent string to parse <ko>파싱할 유저에이전트 문자열</ko>\n * @return - agent Info <ko> 에이전트 정보 </ko>\n * @example\nimport agent from \"@egjs/agent\";\n// eg.agent();\nconst { os, browser, isMobile } = agent();\n */\n\nfunction agent(userAgent) {\n if (typeof userAgent === \"undefined\" && hasUserAgentData()) {\n return getClientHintsAgent();\n } else {\n return getLegacyAgent(userAgent);\n }\n}\n\nexport default agent;\nexport { getAccurateAgent, getLegacyAgent };\n//# sourceMappingURL=agent.esm.js.map\n","/*\nCopyright (c) 2022-present NAVER Corp.\nname: @cfcs/core\nlicense: MIT\nauthor: NAVER Crop.\nrepository: https://github.com/naver/cfcs/tree/main/packages/core\nversion: 0.1.0\n*/\nimport Component from '@egjs/component';\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\n/**\n * @hidden\n */\nfunction keys(obj) {\n return Object.keys(obj);\n}\n/**\n * @hidden\n */\n\nfunction camelize(str) {\n return str.replace(/[\\s-_]([a-z])/g, function (all, letter) {\n return letter.toUpperCase();\n });\n}\n/**\n * @hidden\n */\n\nfunction isString(val) {\n return typeof val === \"string\";\n}\n/**\n * @hidden\n */\n\nfunction isObject(val) {\n return typeof val === \"object\";\n}\n/**\n * @hidden\n */\n\nfunction isFunction(val) {\n return typeof val === \"function\";\n}\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n/**\n * @hidden\n */\n\nfunction findTarget(target) {\n var el;\n\n if (!target) {\n return null;\n }\n\n if (isString(target)) {\n el = document.querySelector(target);\n } else if (target instanceof Element) {\n el = target;\n } else if (\"value\" in target || \"current\" in target) {\n el = target.value || target.current;\n }\n\n return el;\n}\n/**\n * @description Sets the name of the class method to be exposed to the outside.\n * @category DOM\n * @return Property Decorator\n * @example\n * ```ts\n * import { withClassMethods } from \"@cfcs/core\";\n *\n * class YourFrameworkComponent {\n * @withClassMethod(METHOD_NAMES)\n * inst = new YourComponent();\n * }\n * ```\n */\n\nfunction withClassMethods(methods) {\n return function (prototype, memberName) {\n methods.forEach(function (name) {\n if (name in prototype) {\n return;\n }\n\n prototype[name] = function () {\n var _a;\n\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var result = (_a = this[memberName])[name].apply(_a, args); // fix `this` type to return your own `class` instance to the instance using the decorator.\n\n\n if (result === this[memberName]) {\n return this;\n } else {\n return result;\n }\n };\n });\n };\n}\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\nvar OBSERVERS_PATH = \"__observers__\";\nvar COMPUTED_PATH = \"__computed__\";\nvar CFCS_DETECTED_DEPENDENCIES_VERSION = 1;\nvar CFCS_DETECTED_DEPENDENCIES = \"__CFCS_DETECTED_DEPENDENCIES__\";\n\n/******************************************************************************\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***************************************************************************** */\n\n/* global Reflect, Promise */\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\nfunction getDetectedStack() {\n // Version issues do not occur when you access the native object in the global.\n Object[CFCS_DETECTED_DEPENDENCIES] = Object[CFCS_DETECTED_DEPENDENCIES] || {};\n var versionList = Object[CFCS_DETECTED_DEPENDENCIES];\n versionList[CFCS_DETECTED_DEPENDENCIES_VERSION] = versionList[CFCS_DETECTED_DEPENDENCIES_VERSION] || [];\n return versionList[CFCS_DETECTED_DEPENDENCIES_VERSION];\n}\nfunction getCurrentDetected() {\n var stack = getDetectedStack();\n return stack[stack.length - 1];\n}\nfunction detectDependencies(host) {\n var stack = getDetectedStack();\n var observers = [];\n var detected = {\n host: host,\n observers: observers,\n push: function (observer) {\n if (host !== observer && observers.indexOf(observer) === -1) {\n observers.push(observer);\n }\n }\n };\n stack.push(detected);\n return detected;\n}\nfunction endDetectDependencies() {\n var stack = getDetectedStack();\n return stack.pop();\n}\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n/**\n * Creates a mutable ref object. You can access the `.current` value and detect the value change through `.subscribe`.\n * @category Reactive\n * @see observe\n */\n\nvar Observer =\n/*#__PURE__*/\nfunction () {\n /**\n *\n */\n function Observer(value) {\n this._emitter = new Component();\n this._current = value;\n }\n\n var __proto = Observer.prototype;\n Object.defineProperty(__proto, \"current\", {\n /**\n * return the current value.\n */\n get: function () {\n var currentDetected = getCurrentDetected();\n currentDetected === null || currentDetected === void 0 ? void 0 : currentDetected.push(this);\n return this._current;\n },\n set: function (value) {\n this._setCurrent(value);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * When the current value changes, the callback function is called.\n */\n\n __proto.subscribe = function (callback) {\n this.current;\n\n this._emitter.on(\"update\", callback);\n\n return this;\n };\n /**\n * Cancel the registered subscription through callback.\n */\n\n\n __proto.unsubscribe = function (callback) {\n this._emitter.off(\"update\", callback);\n\n return this;\n };\n\n __proto._setCurrent = function (value) {\n var prevValue = this._current;\n var isUpdate = value !== prevValue;\n this._current = value;\n\n if (isUpdate) {\n this._emitter.trigger(\"update\", value, prevValue);\n }\n };\n /**\n * @hidden\n */\n\n\n __proto.toString = function () {\n return \"\".concat(this.current);\n };\n /**\n * @hidden\n */\n\n\n __proto.valueOf = function () {\n return this.current;\n };\n\n return Observer;\n}();\n\n/**\n * @category Reactive\n * @hidden\n */\n\nvar ComputedObserver =\n/*#__PURE__*/\nfunction (_super) {\n __extends(ComputedObserver, _super);\n /**\n * @description Creates a new computed observer from the values of other observers.\n * It is read-only and if you change the value of the observer used inside the callback, its value will be automatically updated.\n * @param _computedCallback A function for observers to be computed.\n */\n\n\n function ComputedObserver(_computedCallback) {\n var _this = _super.call(this) || this;\n\n _this._computedCallback = _computedCallback;\n _this._registered = [];\n\n _this._onCheckUpdate = function () {\n _this._setCurrent(_this.current);\n };\n\n _this._current = _this.current;\n return _this;\n }\n\n var __proto = ComputedObserver.prototype;\n Object.defineProperty(__proto, \"current\", {\n get: function () {\n var _this = this;\n\n detectDependencies(this);\n\n var value = this._computedCallback();\n\n var results = endDetectDependencies();\n\n this._registered.forEach(function (observer) {\n observer.unsubscribe(_this._onCheckUpdate);\n });\n\n results.observers.forEach(function (observer) {\n observer.subscribe(_this._onCheckUpdate);\n });\n this._registered = results.observers;\n return value;\n },\n enumerable: false,\n configurable: true\n });\n return ComputedObserver;\n}(Observer);\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\nfunction injectObserve(prototype, memberName, publicName) {\n if (publicName === void 0) {\n publicName = memberName;\n }\n\n var nextAttributes = {\n configurable: true,\n get: function () {\n return getObserver(this, publicName).current;\n },\n set: function (value) {\n getObserver(this, publicName, value).current = value;\n }\n };\n Object.defineProperty(prototype, memberName, nextAttributes);\n\n if (publicName !== memberName) {\n Object.defineProperty(prototype, publicName, {\n configurable: true,\n get: function () {\n return getObserver(this, publicName).current;\n }\n });\n }\n}\n/**\n * @description `Observe` is a property decorator and converts the property into a `reactive state`. You can detect its status through `.subscribe`.\n * @category Reactive-Decorator\n * @see ReactiveSubscribe\n * @example\n* ```ts\nimport { ReactiveSubscribe, Observe } from \"@cfcs/core\";\n\n@ReactiveSubscribe\nclass Component {\n // The public name and state name are the same.\n @Observe value1 = 1;\n // If you want to set public name and private properties separately\n @Observe(\"value2\") _value2 = 1;\n\n constructor() {\n requestAnimationFrame(() => {\n this.value1 = 2;\n });\n }\n}\ninterface C\n```\n */\n\n\nfunction Observe() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (args.length > 1) {\n return injectObserve(args[0], args[1]);\n }\n\n return function (prototype, memberName) {\n return injectObserve(prototype, memberName, args[0]);\n };\n}\n/**\n * @hidden\n */\n\nfunction Reactive() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return Observe.apply(void 0, args);\n}\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n/**\n * @hidden\n */\n\nfunction injectReactiveSubscribe(object) {\n object[\"subscribe\"] = function (name, callback) {\n this[name];\n getObserver(this, name).subscribe(callback);\n };\n\n object[\"unsubscribe\"] = function (name, callback) {\n var _this = this;\n\n if (!name) {\n keys(getObservers(this)).forEach(function (observerName) {\n _this.unsubscribe(observerName);\n });\n return;\n }\n\n if (!(name in this)) {\n return;\n }\n\n getObserver(this, name).unsubscribe(callback);\n };\n}\n/**\n * @description `ReactiveSubscribe` is a class decorator and adds `.subscribe` and `.unsubscribe` methods.\n * @category Reactive-Decorator\n * @see Observe\n * @example\n * ```ts\nimport { ReactiveSubscribe, Observe } from \"@cfcs/core\";\n\n@ReactiveSubscribe\nclass Component {\n @Observe value1 = 1;\n\n constructor() {\n requestAnimationFrame(() => {\n this.value1 = 2;\n });\n }\n}\n\ninterface Component extends ReactiveSubscribe<{\n value1: number;\n value2: number;\n}> {}\n\nconst component = new Component();\n\n// 1\nconsole.log(component.value1);\n\ncomponent.subscribe(\"value1\", nextValue => {\n // When the change event occurs => (2, 2)\n console.log(nextValue, component.value2);\n});\n```\n */\n\nfunction ReactiveSubscribe(Constructor) {\n var prototype = Constructor.prototype;\n injectReactiveSubscribe(prototype);\n}\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n\nfunction makeReactiveObject(setup, all) {\n var result = isFunction(setup) ? setup() : setup;\n var reactiveObject = {};\n defineObservers(reactiveObject);\n keys(result).forEach(function (name) {\n var value = result[name];\n\n if (isObserver(value)) {\n setObserver(reactiveObject, name, value);\n } else {\n setObserver(reactiveObject, name, observe(value));\n }\n\n Observe(name)(reactiveObject, name);\n });\n injectReactiveSubscribe(reactiveObject);\n return reactiveObject;\n}\n/**\n * @description Make the return value of the corresponding object or function a reactive object.\n * @category Reactive\n * @param setup - The target object or function to which reactive is applied\n * @returns Makes all values into reactive objects.\n * @example\n * ```ts\n * import { reactive } from \"@cfcs/core\";\n *\n * const obj = reactive({\n * value1: 1,\n * value2: 2,\n * });\n *\n * obj.subscribe(\"value1\", value1 => {\n * console.log(value1);\n * });\n * obj.value1 = 2;\n * ```\n */\n\n\nfunction reactive(setup) {\n return makeReactiveObject(setup);\n}\n/**\n * @description Make the return value of the corresponding object or function a reactive object.\n * @category Reactive\n * @param setup - The target object or function to which reactive is applied\n * @returns Only the values to which observer is applied are objects to which reactive is applied.\n * @example\n * ```ts\n * import { partialReactive, observe } from \"@cfcs/core\";\n *\n * const value1 = observe(1);\n * const value2 = observe(2);\n * const obj = partialReactive({\n * value1,\n * value2,\n * });\n *\n * obj.subscribe(\"value1\", value1 => {\n * console.log(value1);\n * });\n * value1.current = 2;\n * ```\n */\n\nfunction partialReactive(setup) {\n return makeReactiveObject(setup);\n}\n/**\n * @description Creates a mutable ref object. You can access the `.current` value and detect the value change through `.subscribe`.\n * @category Reactive\n * @example\n * ```ts\n * import { observe } from \"@cfcs/core\";\n *\n * const ob1 = observe(1);\n *\n * ob1.subscribe(nextValue => {\n * console.log(nextValue);\n * });\n *\n * ob1.current = 2;\n * ```\n */\n\nfunction observe(defaultValue) {\n return new Observer(defaultValue);\n}\n/**\n * @hidden\n */\n\nfunction computed(computedCallback) {\n return new ComputedObserver(computedCallback);\n}\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n/**\n * @hidden\n */\n\nfunction withReactiveMethods(ref, methods) {\n var obj = {};\n\n if (!methods) {\n return obj;\n }\n\n methods.forEach(function (name) {\n obj[name] = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var current = ref.current || ref.value;\n return current[name].apply(current, args);\n };\n });\n return obj;\n}\n/**\n * @hidden\n */\n\nfunction defineObservers(instance) {\n var observers = {};\n Object.defineProperty(instance, OBSERVERS_PATH, {\n get: function () {\n return observers;\n }\n });\n return observers;\n}\n/**\n * @hidden\n */\n\nfunction getObservers(instance, isComputed) {\n var _a, _b;\n\n if (!instance[OBSERVERS_PATH]) {\n defineObservers(instance);\n }\n\n var observers = instance[OBSERVERS_PATH];\n\n if (!isComputed) {\n var computedList = (_b = (_a = instance === null || instance === void 0 ? void 0 : instance.constructor) === null || _a === void 0 ? void 0 : _a.prototype) === null || _b === void 0 ? void 0 : _b[COMPUTED_PATH];\n\n if (computedList) {\n computedList.forEach(function (name) {\n if (!(name in observers) && name in instance) {\n instance[name];\n }\n });\n }\n }\n\n return observers;\n}\n/**\n * @hidden\n */\n\nfunction getObserver(instance, name, defaultValue) {\n var observers = getObservers(instance);\n\n if (!observers[name]) {\n observers[name] = observe(defaultValue);\n }\n\n return observers[name];\n}\n/**\n * @hidden\n */\n\nfunction setObserver(instance, name, observer) {\n var observers = getObservers(instance);\n observers[name] = observer;\n}\n/**\n * @description Whether that object is an observer instance\n * @category Reactive\n */\n\nfunction isObserver(val) {\n return val && isObject(val) && \"current\" in val && \"subscribe\" in val && \"unsubscribe\" in val;\n}\n/**\n * @description Whether the object is reactive\n * @category Reactive\n */\n\nfunction isReactive(val) {\n return val && !isObserver(val) && \"subscribe\" in val && \"unsubscribe\" in val;\n}\n\n/**\n * @category Reactive\n * @hidden\n */\n\nfunction adaptReactive(adapter, props) {\n var objectAdapter = isFunction(adapter) ? {\n setup: adapter\n } : adapter;\n\n function getProps() {\n var _a, _b, _c, _d, _e;\n\n return (_e = (_c = (_a = props === null || props === void 0 ? void 0 : props()) !== null && _a !== void 0 ? _a : (_b = objectAdapter.props) === null || _b === void 0 ? void 0 : _b.call(objectAdapter)) !== null && _c !== void 0 ? _c : (_d = objectAdapter.data) === null || _d === void 0 ? void 0 : _d.call(objectAdapter)) !== null && _e !== void 0 ? _e : {};\n }\n\n var eventEmitter = new Component();\n var mountedHooks = [];\n var initHooks = [];\n var destroyHooks = [];\n var onHooks = [];\n var instanceRef = {\n current: null\n };\n var offHooksList = [];\n var initialState = null;\n var eventNames = [];\n var methodNames = [];\n\n var onMounted = function (callback) {\n mountedHooks.push(callback);\n };\n\n var onInit = function (callback) {\n initHooks.push(callback);\n };\n\n var onDestroy = function (callback) {\n destroyHooks.push(callback);\n };\n\n var on = function (callback) {\n onHooks.push(callback);\n };\n\n var emit = function (eventName) {\n var params = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n\n eventEmitter.trigger.apply(eventEmitter, __spreadArray([eventName], params, false));\n };\n\n var setInitialState = function (state) {\n initialState = state;\n };\n\n var setEvents = function (events) {\n eventNames = events;\n };\n\n var setMethods = function (methods) {\n methodNames = methods;\n };\n\n if (objectAdapter.setup) {\n instanceRef.current = objectAdapter.setup({\n getProps: getProps,\n setInitialState: setInitialState,\n setEvents: setEvents,\n setMethods: setMethods,\n onMounted: onMounted,\n onDestroy: onDestroy,\n onInit: onInit,\n emit: emit,\n on: on\n }) || null;\n }\n\n if (objectAdapter.created) {\n instanceRef.current = objectAdapter.created(getProps()) || null;\n }\n\n if (objectAdapter.events) {\n setEvents(objectAdapter.events);\n }\n\n if (objectAdapter.state) {\n setInitialState(objectAdapter.state);\n }\n\n if (objectAdapter.methods) {\n setMethods(objectAdapter.methods);\n }\n\n if (objectAdapter.mounted) {\n onMounted(objectAdapter.mounted);\n }\n\n if (objectAdapter.destroy) {\n destroyHooks.push(objectAdapter.destroy);\n }\n\n if (objectAdapter.init) {\n initHooks.push(objectAdapter.init);\n }\n\n if (objectAdapter.on) {\n onHooks.push(function (instance, eventName, listener) {\n var off = objectAdapter.on(instance, eventName, listener);\n return function () {\n var _a;\n\n off && off();\n (_a = objectAdapter.off) === null || _a === void 0 ? void 0 : _a.call(objectAdapter, instance, eventName, listener);\n };\n });\n }\n\n return {\n events: function () {\n return eventNames;\n },\n state: function () {\n var inst = instanceRef.current;\n\n if (initialState) {\n return initialState;\n }\n\n if (inst) {\n var observers_1 = getObservers(inst);\n setInitialState(keys(observers_1).reduce(function (prev, cur) {\n prev[cur] = observers_1[cur].current;\n return prev;\n }, {}));\n }\n\n return initialState || {};\n },\n instance: function () {\n return instanceRef.current;\n },\n mounted: function () {\n var props = getProps();\n mountedHooks.forEach(function (hook) {\n instanceRef.current = hook(props, instanceRef.current) || instanceRef.current;\n });\n },\n init: function () {\n // on events\n var instance = instanceRef.current;\n var props = getProps();\n offHooksList = eventNames.map(function (eventName) {\n var listener = function () {\n var _a;\n\n var params = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n\n (_a = eventEmitter).trigger.apply(_a, __spreadArray([eventName], params, false));\n };\n\n var instance = instanceRef.current;\n return onHooks.map(function (hook) {\n return hook(instance, eventName, listener);\n }).filter(Boolean);\n }); // init\n\n initHooks.forEach(function (hook) {\n hook(instance, props);\n });\n },\n destroy: function () {\n // off events\n offHooksList.forEach(function (offHooks) {\n offHooks.forEach(function (hook) {\n hook();\n });\n }); // destroy\n\n eventEmitter.off();\n var instance = instanceRef.current;\n var props = getProps();\n destroyHooks.forEach(function (hook) {\n hook(instance, props);\n });\n },\n methods: function () {\n return withReactiveMethods(instanceRef, methodNames);\n },\n on: function (eventName, listener) {\n eventEmitter.on(eventName, listener);\n },\n off: function (eventName, listener) {\n eventEmitter.off(eventName, listener);\n }\n };\n}\n\n/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\n/**\n * @description `Computed` is a property decorator.\n * Changes in computed state values are also recognized according to changes in observers used within the getter function.\n * You can detect its status through `.subscribe`.\n * @hidden\n * @category Reactive-Decorator\n * @see ReactiveSubscribe\n * @example\n * ```ts\nconst ob1 = observe(0);\nconst ob2 = observe(1);\n\n// When\n@ReactiveSubscribe\nclass TestComputed {\n @Computed\n get ob3() {\n return ob1.current + ob2.current;\n }\n}\nconst inst = new TestComputed();\n\ninst.subscribe(\"ob3\", ob3 => {\n console.log(ob3);\n});\n\nob1.current = 1;\n```\n */\n\nfunction Computed(prototype, memberName, attributes) {\n var get = attributes.get;\n\n function getComputed() {\n var observers = getObservers(this, true);\n\n if (!(memberName in observers)) {\n observers[memberName] = computed(get.bind(this));\n }\n\n return getObserver(this, memberName).current;\n }\n\n var nextAttributes = {\n configurable: true,\n get: getComputed\n };\n prototype[COMPUTED_PATH] || (prototype[COMPUTED_PATH] = []);\n var computedList = prototype[COMPUTED_PATH];\n\n if (computedList.indexOf(memberName) === -1) {\n computedList.push(memberName);\n }\n\n Object.defineProperty(prototype, memberName, nextAttributes);\n return nextAttributes;\n}\n\nexport { Computed, ComputedObserver, Observe, Observer, Reactive, ReactiveSubscribe, adaptReactive, camelize, computed, defineObservers, findTarget, getObserver, getObservers, injectReactiveSubscribe, isFunction, isObject, isObserver, isReactive, isString, keys, observe, partialReactive, reactive, setObserver, withClassMethods, withReactiveMethods };\n//# sourceMappingURL=cfcs.esm.js.map\n","/*\nCopyright (c) NAVER Corp.\nname: @egjs/axes\nlicense: MIT\nauthor: NAVER Corp.\nrepository: https://github.com/naver/egjs-axes\nversion: 3.9.1\n*/\nimport getAgent from '@egjs/agent';\nimport Component, { ComponentEvent } from '@egjs/component';\nimport { getObserver, Observe, ReactiveSubscribe, Computed } from '@cfcs/core';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n/* eslint-disable no-new-func, no-nested-ternary */\nvar win;\nif (typeof window === \"undefined\") {\n // window is undefined in node.js\n win = {\n navigator: {\n userAgent: \"\"\n }\n };\n} else {\n win = window;\n}\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_HORIZONTAL = 2 | 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\nvar DIRECTION_VERTICAL = 8 | 16;\nvar DIRECTION_ALL = 2 | 4 | 8 | 16;\nvar MOUSE_LEFT = \"left\";\nvar MOUSE_RIGHT = \"right\";\nvar MOUSE_MIDDLE = \"middle\";\nvar MOUSE_BUTTON_CODE_MAP = {\n 1: MOUSE_LEFT,\n 2: MOUSE_MIDDLE,\n 3: MOUSE_RIGHT\n};\nvar ANY = \"any\";\nvar NONE = \"none\";\nvar SHIFT = \"shift\";\nvar CTRL = \"ctrl\";\nvar ALT = \"alt\";\nvar META = \"meta\";\nvar VELOCITY_INTERVAL = 16;\nvar AXES_METHODS = [\"connect\", \"disconnect\", \"get\", \"setTo\", \"setBy\", \"setOptions\", \"setAxis\", \"stopAnimation\", \"updateAnimation\", \"isBounceArea\"];\nvar AXES_EVENTS = [\"hold\", \"release\", \"change\", \"animationStart\", \"animationEnd\", \"finish\"];\nvar IOS_EDGE_THRESHOLD = 30;\nvar IS_IOS_SAFARI = \"ontouchstart\" in win && getAgent().browser.name === \"safari\";\nvar TRANSFORM = function () {\n if (typeof document === \"undefined\") {\n return \"\";\n }\n var bodyStyle = (document.head || document.getElementsByTagName(\"head\")[0]).style;\n var target = [\"transform\", \"webkitTransform\", \"msTransform\", \"mozTransform\"];\n for (var i = 0, len = target.length; i < len; i++) {\n if (target[i] in bodyStyle) {\n return target[i];\n }\n }\n return \"\";\n}();\nvar PREVENT_DRAG_CSSPROPS = {\n \"-webkit-user-select\": \"none\",\n \"-ms-user-select\": \"none\",\n \"-moz-user-select\": \"none\",\n \"user-select\": \"none\",\n \"-webkit-user-drag\": \"none\"\n};\n\nvar toArray = function (nodes) {\n // const el = Array.prototype.slice.call(nodes);\n // for IE8\n var el = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n el.push(nodes[i]);\n }\n return el;\n};\nvar $ = function (param, multi) {\n if (multi === void 0) {\n multi = false;\n }\n var el;\n if (typeof param === \"string\") {\n // String (HTML, Selector)\n // check if string is HTML tag format\n var match = param.match(/^<([a-z]+)\\s*([^>]*)>/);\n // creating element\n if (match) {\n // HTML\n var dummy = document.createElement(\"div\");\n dummy.innerHTML = param;\n el = toArray(dummy.childNodes);\n } else {\n // Selector\n el = toArray(document.querySelectorAll(param));\n }\n if (!multi) {\n el = el.length >= 1 ? el[0] : undefined;\n }\n } else if (param === win) {\n // window\n el = param;\n } else if (\"value\" in param || \"current\" in param) {\n el = param.value || param.current;\n } else if (param.nodeName && (param.nodeType === 1 || param.nodeType === 9)) {\n // HTMLElement, Document\n el = param;\n } else if (\"jQuery\" in win && param instanceof jQuery || param.constructor.prototype.jquery) {\n // jQuery\n el = multi ? param.toArray() : param.get(0);\n } else if (Array.isArray(param)) {\n el = param.map(function (v) {\n return $(v);\n });\n if (!multi) {\n el = el.length >= 1 ? el[0] : undefined;\n }\n }\n return el;\n};\nvar raf = win.requestAnimationFrame || win.webkitRequestAnimationFrame;\nvar caf = win.cancelAnimationFrame || win.webkitCancelAnimationFrame;\nif (raf && !caf) {\n var keyInfo_1 = {};\n var oldraf_1 = raf;\n raf = function (callback) {\n var wrapCallback = function (timestamp) {\n if (keyInfo_1[key]) {\n callback(timestamp);\n }\n };\n var key = oldraf_1(wrapCallback);\n keyInfo_1[key] = true;\n return key;\n };\n caf = function (key) {\n delete keyInfo_1[key];\n };\n} else if (!(raf && caf)) {\n raf = function (callback) {\n return win.setTimeout(function () {\n callback(win.performance && win.performance.now && win.performance.now() || new Date().getTime());\n }, 16);\n };\n caf = win.clearTimeout;\n}\n/**\n * A polyfill for the window.requestAnimationFrame() method.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n * @private\n */\nvar requestAnimationFrame = function (fp) {\n return raf(fp);\n};\n/**\n * A polyfill for the window.cancelAnimationFrame() method. It cancels an animation executed through a call to the requestAnimationFrame() method.\n * @param {Number} key − The ID value returned through a call to the requestAnimationFrame() method. <ko>requestAnimationFrame() 메서드가 반환한 아이디 값</ko>\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/cancelAnimationFrame\n * @private\n */\nvar cancelAnimationFrame = function (key) {\n caf(key);\n};\nvar map = function (obj, callback) {\n var tranformed = {};\n for (var k in obj) {\n if (k) {\n tranformed[k] = callback(obj[k], k);\n }\n }\n return tranformed;\n};\nvar filter = function (obj, callback) {\n var filtered = {};\n for (var k in obj) {\n if (k && callback(obj[k], k)) {\n filtered[k] = obj[k];\n }\n }\n return filtered;\n};\nvar every = function (obj, callback) {\n for (var k in obj) {\n if (k && !callback(obj[k], k)) {\n return false;\n }\n }\n return true;\n};\nvar equal = function (target, base) {\n return every(target, function (v, k) {\n return v === base[k];\n });\n};\nvar roundNumFunc = {};\nvar roundNumber = function (num, roundUnit) {\n // Cache for performance\n if (!roundNumFunc[roundUnit]) {\n roundNumFunc[roundUnit] = getRoundFunc(roundUnit);\n }\n return roundNumFunc[roundUnit](num);\n};\nvar roundNumbers = function (num, roundUnit) {\n if (!num || !roundUnit) {\n return num;\n }\n return map(num, function (value, key) {\n return roundNumber(value, typeof roundUnit === \"number\" ? roundUnit : roundUnit[key]);\n });\n};\nvar getDecimalPlace = function (val) {\n if (!isFinite(val)) {\n return 0;\n }\n var v = \"\".concat(val);\n if (v.indexOf(\"e\") >= 0) {\n // Exponential Format\n // 1e-10, 1e-12\n var p = 0;\n var e = 1;\n while (Math.round(val * e) / e !== val) {\n e *= 10;\n p++;\n }\n return p;\n }\n // In general, following has performance benefit.\n // https://jsperf.com/precision-calculation\n return v.indexOf(\".\") >= 0 ? v.length - v.indexOf(\".\") - 1 : 0;\n};\nvar inversePow = function (n) {\n // replace Math.pow(10, -n) to solve floating point issue.\n // eg. Math.pow(10, -4) => 0.00009999999999999999\n return 1 / Math.pow(10, n);\n};\nvar getRoundFunc = function (v) {\n var p = v < 1 ? Math.pow(10, getDecimalPlace(v)) : 1;\n return function (n) {\n if (v === 0) {\n return 0;\n }\n return Math.round(Math.round(n / v) * v * p) / p;\n };\n};\nvar getAngle = function (posX, posY) {\n return Math.atan2(posY, posX) * 180 / Math.PI;\n};\nvar isCssPropsFromAxes = function (originalCssProps) {\n var same = true;\n Object.keys(PREVENT_DRAG_CSSPROPS).forEach(function (prop) {\n if (!originalCssProps || originalCssProps[prop] !== PREVENT_DRAG_CSSPROPS[prop]) {\n same = false;\n }\n });\n return same;\n};\nvar getDirection = function (useHorizontal, useVertical) {\n if (useHorizontal && useVertical) {\n return DIRECTION_ALL;\n } else if (useHorizontal) {\n return DIRECTION_HORIZONTAL;\n } else if (useVertical) {\n return DIRECTION_VERTICAL;\n } else {\n return DIRECTION_NONE;\n }\n};\nvar useDirection = function (checkType, direction, userDirection) {\n if (userDirection) {\n return !!(direction === DIRECTION_ALL || direction & checkType && userDirection & checkType);\n } else {\n return !!(direction & checkType);\n }\n};\nvar setCssProps = function (element, option, direction) {\n var _a;\n var touchActionMap = (_a = {}, _a[DIRECTION_NONE] = \"auto\", _a[DIRECTION_ALL] = \"none\", _a[DIRECTION_VERTICAL] = \"pan-x\", _a[DIRECTION_HORIZONTAL] = \"pan-y\", _a);\n var oldCssProps = {};\n if (element && element.style) {\n var touchAction = option.touchAction ? option.touchAction : touchActionMap[direction];\n var newCssProps_1 = __assign(__assign({}, PREVENT_DRAG_CSSPROPS), {\n \"touch-action\": element.style[\"touch-action\"] === \"none\" ? \"none\" : touchAction\n });\n Object.keys(newCssProps_1).forEach(function (prop) {\n oldCssProps[prop] = element.style[prop];\n });\n // Old style props like user-select can be corrupted if you change the style directly in the logic above.\n Object.keys(newCssProps_1).forEach(function (prop) {\n element.style[prop] = newCssProps_1[prop];\n });\n }\n return oldCssProps;\n};\nvar revertCssProps = function (element, originalCssProps) {\n if (element && element.style && originalCssProps) {\n Object.keys(originalCssProps).forEach(function (prop) {\n element.style[prop] = originalCssProps[prop];\n });\n }\n return;\n};\n\nvar EventManager = /*#__PURE__*/function () {\n function EventManager(_axes) {\n this._axes = _axes;\n this.holdingCount = 0;\n }\n /**\n * This event is fired when a user holds an element on the screen of the device.\n * @ko 사용자가 기기의 화면에 손을 대고 있을 때 발생하는 이벤트\n * @event Axes#hold\n * @type {object}\n * @property {Object.<string, number>} pos coordinate <ko>좌표 정보</ko>\n * @property {Object} input The instance of inputType where the event occurred<ko>이벤트가 발생한 inputType 인스턴스</ko>\n * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"hold\", function(event) {\n * // event.pos\n * // event.input\n * // event.inputEvent\n * // isTrusted\n * });\n * ```\n */\n var __proto = EventManager.prototype;\n __proto.hold = function (pos, option) {\n var roundPos = this._getRoundPos(pos).roundPos;\n this._axes.trigger(new ComponentEvent(\"hold\", {\n pos: roundPos,\n input: option.input || null,\n inputEvent: option.event || null,\n isTrusted: true\n }));\n };\n /**\n * Specifies the coordinates to move after the 'change' event. It works when the holding value of the change event is true.\n * @ko 'change' 이벤트 이후 이동할 좌표를 지정한다. change이벤트의 holding 값이 true일 경우에 동작한다\n * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"change\", function(event) {\n * event.holding && event.set({x: 10});\n * });\n * ```\n */\n /** Specifies the animation coordinates to move after the 'release' or 'animationStart' events.\n * @ko 'release' 또는 'animationStart' 이벤트 이후 이동할 좌표를 지정한다.\n * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>\n * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"animationStart\", function(event) {\n * event.setTo({x: 10}, 2000);\n * });\n * ```\n */\n /**\n * This event is fired when a user release an element on the screen of the device.\n * @ko 사용자가 기기의 화면에서 손을 뗐을 때 발생하는 이벤트\n * @event Axes#release\n * @type {object}\n * @property {Object.<string, number>} depaPos The coordinates when releasing an element<ko>손을 뗐을 때의 좌표 </ko>\n * @property {Object.<string, number>} destPos The coordinates to move to after releasing an element<ko>손을 뗀 뒤에 이동할 좌표</ko>\n * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>\n * @property {Object.<string, number>} bounceRatio If the coordinates at the time of release are in the bounce area, the current bounce value divided by the maximum bounce value <ko>손을 뗐을 때의 좌표가 bounce 영역에 있는 경우 현재 bounce된 값을 최대 bounce 값으로 나눈 수치.</ko>\n * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>\n * @property {Object} input The instance of inputType where the event occurred<ko>이벤트가 발생한 inputType 인스턴스</ko>\n * @property {setTo} setTo Specifies the animation coordinates to move after the event <ko>이벤트 이후 이동할 애니메이션 좌표를 지정한다</ko>\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"release\", function(event) {\n * // event.depaPos\n * // event.destPos\n * // event.delta\n * // event.input\n * // event.inputEvent\n * // event.setTo\n * // event.isTrusted\n *\n * // if you want to change the animation coordinates to move after the 'release' event.\n * event.setTo({x: 10}, 2000);\n * });\n * ```\n */\n __proto.triggerRelease = function (param) {\n var _a = this._getRoundPos(param.destPos, param.depaPos),\n roundPos = _a.roundPos,\n roundDepa = _a.roundDepa;\n param.destPos = roundPos;\n param.depaPos = roundDepa;\n param.setTo = this._createUserControll(param.destPos, param.duration);\n this._axes.trigger(new ComponentEvent(\"release\", __assign(__assign({}, param), {\n bounceRatio: this._getBounceRatio(roundPos)\n })));\n };\n /**\n * This event is fired when coordinate changes.\n * @ko 좌표가 변경됐을 때 발생하는 이벤트\n * @event Axes#change\n * @type {object}\n * @property {Object.<string, number>} pos The coordinate <ko>좌표</ko>\n * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>\n * @property {Object.<string, number>} bounceRatio If the current coordinates are in the bounce area, the current bounce value divided by the maximum bounce value <ko>현재 좌표가 bounce 영역에 있는 경우 현재 bounce된 값을 최대 bounce 값으로 나눈 수치.</ko>\n * @property {Boolean} holding Indicates whether a user holds an element on the screen of the device.<ko>사용자가 기기의 화면을 누르고 있는지 여부</ko>\n * @property {Object} input The instance of inputType where the event occurred. If the value is changed by animation, it returns 'null'.<ko>이벤트가 발생한 inputType 인스턴스. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>\n * @property {Object} inputEvent The event object received from inputType. If the value is changed by animation, it returns 'null'.<ko>inputType으로 부터 받은 이벤트 객체. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>\n * @property {set} set Specifies the coordinates to move after the event. It works when the holding value is true <ko>이벤트 이후 이동할 좌표를 지정한다. holding 값이 true일 경우에 동작한다.</ko>\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"change\", function(event) {\n * // event.pos\n * // event.delta\n * // event.input\n * // event.inputEvent\n * // event.holding\n * // event.set\n * // event.isTrusted\n *\n * // if you want to change the coordinates to move after the 'change' event.\n * // it works when the holding value of the change event is true.\n * event.holding && event.set({x: 10});\n * });\n * ```\n */\n __proto.triggerChange = function (pos, depaPos, option, holding) {\n var _this = this;\n if (holding === void 0) {\n holding = false;\n }\n var animationManager = this.animationManager;\n var axisManager = animationManager.axisManager;\n var eventInfo = animationManager.getEventInfo();\n var _a = this._getRoundPos(pos, depaPos),\n roundPos = _a.roundPos,\n roundDepa = _a.roundDepa;\n var moveTo = axisManager.moveTo(roundPos, roundDepa);\n var inputEvent = (option === null || option === void 0 ? void 0 : option.event) || (eventInfo === null || eventInfo === void 0 ? void 0 : eventInfo.event) || null;\n var param = {\n pos: moveTo.pos,\n delta: moveTo.delta,\n bounceRatio: this._getBounceRatio(moveTo.pos),\n holding: holding,\n inputEvent: inputEvent,\n isTrusted: !!inputEvent,\n input: (option === null || option === void 0 ? void 0 : option.input) || (eventInfo === null || eventInfo === void 0 ? void 0 : eventInfo.input) || null,\n set: inputEvent ? this._createUserControll(moveTo.pos) : function () {} // eslint-disable-line @typescript-eslint/no-empty-function\n };\n\n var event = new ComponentEvent(\"change\", param);\n this._axes.trigger(event);\n Object.keys(moveTo.pos).forEach(function (axis) {\n var p = moveTo.pos[axis];\n getObserver(_this._axes, axis, p).current = p;\n });\n if (inputEvent) {\n axisManager.set(param.set().destPos);\n }\n return !event.isCanceled();\n };\n /**\n * This event is fired when animation starts.\n * @ko 에니메이션이 시작할 때 발생한다.\n * @event Axes#animationStart\n * @type {object}\n * @property {Object.<string, number>} depaPos The coordinates when animation starts<ko>애니메이션이 시작 되었을 때의 좌표 </ko>\n * @property {Object.<string, number>} destPos The coordinates to move to. If you change this value, you can run the animation<ko>이동할 좌표. 이값을 변경하여 애니메이션을 동작시킬수 있다</ko>\n * @property {Object.<string, number>} delta The movement variation of coordinate <ko>좌표의 변화량</ko>\n * @property {Number} duration Duration of the animation (unit: ms). If you change this value, you can control the animation duration time.<ko>애니메이션 진행 시간(단위: ms). 이값을 변경하여 애니메이션의 이동시간을 조절할 수 있다.</ko>\n * @property {Object} input The instance of inputType where the event occurred. If the value is changed by animation, it returns 'null'.<ko>이벤트가 발생한 inputType 인스턴스. 애니메이션에 의해 값이 변경될 경우에는 'null'을 반환한다.</ko>\n * @property {Object} inputEvent The event object received from inputType <ko>inputType으로 부터 받은 이벤트 객체</ko>\n * @property {setTo} setTo Specifies the animation coordinates to move after the event <ko>이벤트 이후 이동할 애니메이션 좌표를 지정한다</ko>\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"release\", function(event) {\n * // event.depaPos\n * // event.destPos\n * // event.delta\n * // event.input\n * // event.inputEvent\n * // event.setTo\n * // event.isTrusted\n *\n * // if you want to change the animation coordinates to move after the 'animationStart' event.\n * event.setTo({x: 10}, 2000);\n * });\n * ```\n */\n __proto.triggerAnimationStart = function (param) {\n var _a = this._getRoundPos(param.destPos, param.depaPos),\n roundPos = _a.roundPos,\n roundDepa = _a.roundDepa;\n param.destPos = roundPos;\n param.depaPos = roundDepa;\n param.setTo = this._createUserControll(param.destPos, param.duration);\n var event = new ComponentEvent(\"animationStart\", param);\n this._axes.trigger(event);\n return !event.isCanceled();\n };\n /**\n * This event is fired when animation ends.\n * @ko 에니메이션이 끝났을 때 발생한다.\n * @event Axes#animationEnd\n * @type {object}\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"animationEnd\", function(event) {\n * // event.isTrusted\n * });\n * ```\n */\n __proto.triggerAnimationEnd = function (isTrusted) {\n if (isTrusted === void 0) {\n isTrusted = false;\n }\n this._axes.trigger(new ComponentEvent(\"animationEnd\", {\n isTrusted: isTrusted\n }));\n };\n /**\n * This event is fired when all actions have been completed.\n * @ko 에니메이션이 끝났을 때 발생한다.\n * @event Axes#finish\n * @type {object}\n * @property {Boolean} isTrusted Returns true if an event was generated by the user action, or false if it was caused by a script or API call <ko>사용자의 액션에 의해 이벤트가 발생하였으면 true, 스크립트나 API호출에 의해 발생하였을 경우에는 false를 반환한다.</ko>\n *\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * }).on(\"finish\", function(event) {\n * // event.isTrusted\n * });\n * ```\n */\n __proto.triggerFinish = function (isTrusted) {\n if (isTrusted === void 0) {\n isTrusted = false;\n }\n this._axes.trigger(new ComponentEvent(\"finish\", {\n isTrusted: isTrusted\n }));\n };\n __proto.setAnimationManager = function (animationManager) {\n this.animationManager = animationManager;\n };\n __proto.destroy = function () {\n this._axes.off();\n };\n __proto._createUserControll = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n // to controll\n var userControl = {\n destPos: __assign({}, pos),\n duration: duration\n };\n return function (toPos, userDuration) {\n if (toPos) {\n userControl.destPos = __assign({}, toPos);\n }\n if (userDuration !== undefined) {\n userControl.duration = userDuration;\n }\n return userControl;\n };\n };\n __proto._getRoundPos = function (pos, depaPos) {\n // round value if round exist\n var roundUnit = this._axes.options.round;\n // if (round == null) {\n // return {pos, depaPos}; // undefined, undefined\n // }\n return {\n roundPos: roundNumbers(pos, roundUnit),\n roundDepa: roundNumbers(depaPos, roundUnit)\n };\n };\n __proto._getBounceRatio = function (pos) {\n return this._axes.axisManager.map(pos, function (v, opt) {\n if (v < opt.range[0] && opt.bounce[0] !== 0) {\n return (opt.range[0] - v) / opt.bounce[0];\n } else if (v > opt.range[1] && opt.bounce[1] !== 0) {\n return (v - opt.range[1]) / opt.bounce[1];\n } else {\n return 0;\n }\n });\n };\n __decorate([Observe], EventManager.prototype, \"holdingCount\", void 0);\n return EventManager;\n}();\n\nvar InterruptManager = /*#__PURE__*/function () {\n function InterruptManager(_options) {\n this._options = _options;\n this._prevented = false; // check whether the animation event was prevented\n }\n var __proto = InterruptManager.prototype;\n __proto.isInterrupting = function () {\n // when interruptable is 'true', return value is always 'true'.\n return this._options.interruptable || this._prevented;\n };\n __proto.isInterrupted = function () {\n return !this._options.interruptable && this._prevented;\n };\n __proto.setInterrupt = function (prevented) {\n if (!this._options.interruptable) {\n this._prevented = prevented;\n }\n };\n return InterruptManager;\n}();\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nvar getInsidePosition = function (destPos, range, circular, bounce) {\n var toDestPos = destPos;\n var targetRange = [circular[0] ? range[0] : bounce ? range[0] - bounce[0] : range[0], circular[1] ? range[1] : bounce ? range[1] + bounce[1] : range[1]];\n toDestPos = Math.max(targetRange[0], toDestPos);\n toDestPos = Math.min(targetRange[1], toDestPos);\n return toDestPos;\n};\n// determine outside\nvar isOutside = function (pos, range) {\n return pos < range[0] || pos > range[1];\n};\n// determine whether position has reached the maximum moveable area\nvar isEndofBounce = function (pos, range, bounce, circular) {\n return !circular[0] && pos === range[0] - bounce[0] || !circular[1] && pos === range[1] + bounce[1];\n};\nvar getDuration = function (distance, deceleration) {\n var duration = Math.sqrt(distance / deceleration * 2);\n // when duration is under 100, then value is zero\n return duration < 100 ? 0 : duration;\n};\nvar isCircularable = function (destPos, range, circular) {\n return circular[1] && destPos > range[1] || circular[0] && destPos < range[0];\n};\nvar getCirculatedPos = function (pos, range, circular) {\n var toPos = pos;\n var min = range[0];\n var max = range[1];\n var length = max - min;\n if (circular[1] && pos > max) {\n // right\n toPos = (toPos - max) % length + min;\n }\n if (circular[0] && pos < min) {\n // left\n toPos = (toPos - min) % length + max;\n }\n return toPos;\n};\n\nvar AxisManager = /*#__PURE__*/function () {\n function AxisManager(_axis) {\n var _this = this;\n this._axis = _axis;\n this._complementOptions();\n this._pos = Object.keys(this._axis).reduce(function (pos, v) {\n pos[v] = _this._axis[v].startPos;\n return pos;\n }, {});\n }\n var __proto = AxisManager.prototype;\n __proto.getDelta = function (depaPos, destPos) {\n var fullDepaPos = this.get(depaPos);\n return map(this.get(destPos), function (v, k) {\n return v - fullDepaPos[k];\n });\n };\n __proto.get = function (axes) {\n var _this = this;\n if (axes && Array.isArray(axes)) {\n return axes.reduce(function (acc, v) {\n if (v && v in _this._pos) {\n acc[v] = _this._pos[v];\n }\n return acc;\n }, {});\n } else {\n return __assign(__assign({}, this._pos), axes || {});\n }\n };\n __proto.moveTo = function (pos, depaPos) {\n if (depaPos === void 0) {\n depaPos = this._pos;\n }\n var delta = map(this._pos, function (v, key) {\n return key in pos && key in depaPos ? pos[key] - depaPos[key] : 0;\n });\n this.set(this.map(pos, function (v, opt) {\n return opt ? getCirculatedPos(v, opt.range, opt.circular) : 0;\n }));\n return {\n pos: __assign({}, this._pos),\n delta: delta\n };\n };\n __proto.set = function (pos) {\n for (var k in pos) {\n if (k && k in this._pos) {\n this._pos[k] = pos[k];\n }\n }\n };\n __proto.every = function (pos, callback) {\n var axisOptions = this._axis;\n return every(pos, function (value, key) {\n return callback(value, axisOptions[key], key);\n });\n };\n __proto.filter = function (pos, callback) {\n var axisOptions = this._axis;\n return filter(pos, function (value, key) {\n return callback(value, axisOptions[key], key);\n });\n };\n __proto.map = function (pos, callback) {\n var axisOptions = this._axis;\n return map(pos, function (value, key) {\n return callback(value, axisOptions[key], key);\n });\n };\n __proto.isOutside = function (axes) {\n return !this.every(axes ? this.get(axes) : this._pos, function (v, opt) {\n return !isOutside(v, opt.range);\n });\n };\n __proto.getAxisOptions = function (key) {\n return this._axis[key];\n };\n __proto.setAxis = function (axis) {\n var _this = this;\n Object.keys(axis).forEach(function (key) {\n if (!_this._axis[key]) {\n throw new Error(\"Axis \".concat(key, \" does not exist in Axes instance\"));\n }\n _this._axis[key] = __assign(__assign({}, _this._axis[key]), axis[key]);\n });\n this._complementOptions();\n };\n /**\n * set up 'css' expression\n * @private\n */\n __proto._complementOptions = function () {\n var _this = this;\n Object.keys(this._axis).forEach(function (axis) {\n _this._axis[axis] = __assign({\n range: [0, 100],\n startPos: _this._axis[axis].range[0],\n bounce: [0, 0],\n circular: [false, false]\n }, _this._axis[axis]);\n [\"bounce\", \"circular\"].forEach(function (v) {\n var axisOption = _this._axis;\n var key = axisOption[axis][v];\n if (/string|number|boolean/.test(typeof key)) {\n axisOption[axis][v] = [key, key];\n }\n });\n });\n };\n return AxisManager;\n}();\n\nvar SUPPORT_TOUCH = (\"ontouchstart\" in win);\nvar SUPPORT_POINTER = (\"PointerEvent\" in win);\nvar SUPPORT_MSPOINTER = (\"MSPointerEvent\" in win);\nvar SUPPORT_POINTER_EVENTS = SUPPORT_POINTER || SUPPORT_MSPOINTER;\nvar isValidKey = function (event, inputKey) {\n if (!inputKey || inputKey.indexOf(ANY) > -1 || inputKey.indexOf(NONE) > -1 && !event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey || inputKey.indexOf(SHIFT) > -1 && event.shiftKey || inputKey.indexOf(CTRL) > -1 && event.ctrlKey || inputKey.indexOf(ALT) > -1 && event.altKey || inputKey.indexOf(META) > -1 && event.metaKey) {\n return true;\n }\n return false;\n};\nvar EventInput = /*#__PURE__*/function () {\n function EventInput() {\n var _this = this;\n this._stopContextMenu = function (event) {\n event.preventDefault();\n win.removeEventListener(\"contextmenu\", _this._stopContextMenu);\n };\n }\n var __proto = EventInput.prototype;\n __proto.extendEvent = function (event) {\n var _a;\n var prevEvent = this.prevEvent;\n var center = this._getCenter(event);\n var movement = prevEvent ? this._getMovement(event) : {\n x: 0,\n y: 0\n };\n var scale = prevEvent ? this._getScale(event) : 1;\n var angle = prevEvent ? getAngle(center.x - prevEvent.center.x, center.y - prevEvent.center.y) : 0;\n var deltaX = prevEvent ? prevEvent.deltaX + movement.x : movement.x;\n var deltaY = prevEvent ? prevEvent.deltaY + movement.y : movement.y;\n var offsetX = movement.x;\n var offsetY = movement.y;\n var latestInterval = this._latestInterval;\n var timeStamp = Date.now();\n var deltaTime = latestInterval ? timeStamp - latestInterval.timestamp : 0;\n var velocityX = prevEvent ? prevEvent.velocityX : 0;\n var velocityY = prevEvent ? prevEvent.velocityY : 0;\n if (!latestInterval || deltaTime >= VELOCITY_INTERVAL) {\n if (latestInterval) {\n _a = [(deltaX - latestInterval.deltaX) / deltaTime, (deltaY - latestInterval.deltaY) / deltaTime], velocityX = _a[0], velocityY = _a[1];\n }\n this._latestInterval = {\n timestamp: timeStamp,\n deltaX: deltaX,\n deltaY: deltaY\n };\n }\n return {\n srcEvent: event,\n scale: scale,\n angle: angle,\n center: center,\n deltaX: deltaX,\n deltaY: deltaY,\n offsetX: offsetX,\n offsetY: offsetY,\n velocityX: velocityX,\n velocityY: velocityY,\n preventSystemEvent: true\n };\n };\n __proto._getDistance = function (start, end) {\n var x = end.clientX - start.clientX;\n var y = end.clientY - start.clientY;\n return Math.sqrt(x * x + y * y);\n };\n __proto._getButton = function (event) {\n var buttonCodeMap = {\n 1: MOUSE_LEFT,\n 2: MOUSE_RIGHT,\n 4: MOUSE_MIDDLE\n };\n var button = this._isTouchEvent(event) ? MOUSE_LEFT : buttonCodeMap[event.buttons];\n return button ? button : null;\n };\n __proto._isTouchEvent = function (event) {\n return event.type && event.type.indexOf(\"touch\") > -1;\n };\n __proto._isValidButton = function (button, inputButton) {\n return inputButton.indexOf(button) > -1;\n };\n __proto._isValidEvent = function (event, inputKey, inputButton) {\n return (!inputKey || isValidKey(event, inputKey)) && (!inputButton || this._isValidButton(this._getButton(event), inputButton));\n };\n __proto._preventMouseButton = function (event, button) {\n if (button === MOUSE_RIGHT) {\n win.addEventListener(\"contextmenu\", this._stopContextMenu);\n } else if (button === MOUSE_MIDDLE) {\n event.preventDefault();\n }\n };\n return EventInput;\n}();\n\nvar MouseEventInput = /*#__PURE__*/function (_super) {\n __extends(MouseEventInput, _super);\n function MouseEventInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.start = [\"mousedown\"];\n _this.move = [\"mousemove\"];\n _this.end = [\"mouseup\"];\n return _this;\n }\n var __proto = MouseEventInput.prototype;\n __proto.onEventStart = function (event, inputKey, inputButton) {\n var button = this._getButton(event);\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n this._preventMouseButton(event, button);\n return this.extendEvent(event);\n };\n __proto.onEventMove = function (event, inputKey, inputButton) {\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n return this.extendEvent(event);\n };\n __proto.onEventEnd = function () {\n return;\n };\n __proto.onRelease = function () {\n this.prevEvent = null;\n return;\n };\n __proto.getTouches = function (event, inputButton) {\n if (inputButton) {\n return this._isValidButton(MOUSE_BUTTON_CODE_MAP[event.which], inputButton) && this.end.indexOf(event.type) === -1 ? 1 : 0;\n }\n return 0;\n };\n __proto._getScale = function () {\n return 1;\n };\n __proto._getCenter = function (event) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n };\n __proto._getMovement = function (event) {\n var prev = this.prevEvent.srcEvent;\n return {\n x: event.clientX - prev.clientX,\n y: event.clientY - prev.clientY\n };\n };\n return MouseEventInput;\n}(EventInput);\n\nvar TouchEventInput = /*#__PURE__*/function (_super) {\n __extends(TouchEventInput, _super);\n function TouchEventInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.start = [\"touchstart\"];\n _this.move = [\"touchmove\"];\n _this.end = [\"touchend\", \"touchcancel\"];\n return _this;\n }\n var __proto = TouchEventInput.prototype;\n __proto.onEventStart = function (event, inputKey) {\n this._baseTouches = event.touches;\n if (!this._isValidEvent(event, inputKey)) {\n return null;\n }\n return this.extendEvent(event);\n };\n __proto.onEventMove = function (event, inputKey) {\n if (!this._isValidEvent(event, inputKey)) {\n return null;\n }\n return this.extendEvent(event);\n };\n __proto.onEventEnd = function (event) {\n this._baseTouches = event.touches;\n return;\n };\n __proto.onRelease = function () {\n this.prevEvent = null;\n this._baseTouches = null;\n return;\n };\n __proto.getTouches = function (event) {\n return event.touches.length;\n };\n __proto._getScale = function (event) {\n if (event.touches.length !== 2 || this._baseTouches.length < 2) {\n return null; // TODO: consider calculating non-pinch gesture scale\n }\n\n return this._getDistance(event.touches[0], event.touches[1]) / this._getDistance(this._baseTouches[0], this._baseTouches[1]);\n };\n __proto._getCenter = function (event) {\n return {\n x: event.touches[0].clientX,\n y: event.touches[0].clientY\n };\n };\n __proto._getMovement = function (event) {\n var prev = this.prevEvent.srcEvent;\n if (event.touches[0].identifier !== prev.touches[0].identifier) {\n return {\n x: 0,\n y: 0\n };\n }\n return {\n x: event.touches[0].clientX - prev.touches[0].clientX,\n y: event.touches[0].clientY - prev.touches[0].clientY\n };\n };\n return TouchEventInput;\n}(EventInput);\n\nvar PointerEventInput = /*#__PURE__*/function (_super) {\n __extends(PointerEventInput, _super);\n function PointerEventInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.start = SUPPORT_POINTER ? [\"pointerdown\"] : [\"MSPointerDown\"];\n _this.move = SUPPORT_POINTER ? [\"pointermove\"] : [\"MSPointerMove\"];\n _this.end = SUPPORT_POINTER ? [\"pointerup\", \"pointercancel\"] : [\"MSPointerUp\", \"MSPointerCancel\"];\n // store first, recent inputs for each event id\n _this._firstInputs = [];\n _this._recentInputs = [];\n return _this;\n }\n var __proto = PointerEventInput.prototype;\n __proto.onEventStart = function (event, inputKey, inputButton) {\n var button = this._getButton(event);\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n this._preventMouseButton(event, button);\n this._updatePointerEvent(event);\n return this.extendEvent(event);\n };\n __proto.onEventMove = function (event, inputKey, inputButton) {\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n this._updatePointerEvent(event);\n return this.extendEvent(event);\n };\n __proto.onEventEnd = function (event) {\n this._removePointerEvent(event);\n };\n __proto.onRelease = function () {\n this.prevEvent = null;\n this._firstInputs = [];\n this._recentInputs = [];\n return;\n };\n __proto.getTouches = function () {\n return this._recentInputs.length;\n };\n __proto._getScale = function () {\n if (this._recentInputs.length !== 2) {\n return null; // TODO: consider calculating non-pinch gesture scale\n }\n\n return this._getDistance(this._recentInputs[0], this._recentInputs[1]) / this._getDistance(this._firstInputs[0], this._firstInputs[1]);\n };\n __proto._getCenter = function (event) {\n return {\n x: event.clientX,\n y: event.clientY\n };\n };\n __proto._getMovement = function (event) {\n var prev = this.prevEvent.srcEvent;\n if (event.pointerId !== prev.pointerId) {\n return {\n x: 0,\n y: 0\n };\n }\n return {\n x: event.clientX - prev.clientX,\n y: event.clientY - prev.clientY\n };\n };\n __proto._updatePointerEvent = function (event) {\n var _this = this;\n var addFlag = false;\n this._recentInputs.forEach(function (e, i) {\n if (e.pointerId === event.pointerId) {\n addFlag = true;\n _this._recentInputs[i] = event;\n }\n });\n if (!addFlag) {\n this._firstInputs.push(event);\n this._recentInputs.push(event);\n }\n };\n __proto._removePointerEvent = function (event) {\n this._firstInputs = this._firstInputs.filter(function (x) {\n return x.pointerId !== event.pointerId;\n });\n this._recentInputs = this._recentInputs.filter(function (x) {\n return x.pointerId !== event.pointerId;\n });\n };\n return PointerEventInput;\n}(EventInput);\n\nvar TouchMouseEventInput = /*#__PURE__*/function (_super) {\n __extends(TouchMouseEventInput, _super);\n function TouchMouseEventInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.start = [\"mousedown\", \"touchstart\"];\n _this.move = [\"mousemove\", \"touchmove\"];\n _this.end = [\"mouseup\", \"touchend\", \"touchcancel\"];\n return _this;\n }\n var __proto = TouchMouseEventInput.prototype;\n __proto.onEventStart = function (event, inputKey, inputButton) {\n var button = this._getButton(event);\n if (this._isTouchEvent(event)) {\n this._baseTouches = event.touches;\n }\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n this._preventMouseButton(event, button);\n return this.extendEvent(event);\n };\n __proto.onEventMove = function (event, inputKey, inputButton) {\n if (!this._isValidEvent(event, inputKey, inputButton)) {\n return null;\n }\n return this.extendEvent(event);\n };\n __proto.onEventEnd = function (event) {\n if (this._isTouchEvent(event)) {\n this._baseTouches = event.touches;\n }\n return;\n };\n __proto.onRelease = function () {\n this.prevEvent = null;\n this._baseTouches = null;\n return;\n };\n __proto.getTouches = function (event, inputButton) {\n if (this._isTouchEvent(event)) {\n return event.touches.length;\n } else {\n return this._isValidButton(MOUSE_BUTTON_CODE_MAP[event.which], inputButton) && this.end.indexOf(event.type) === -1 ? 1 : 0;\n }\n };\n __proto._getScale = function (event) {\n if (this._isTouchEvent(event)) {\n if (event.touches.length !== 2 || this._baseTouches.length < 2) {\n return 1; // TODO: consider calculating non-pinch gesture scale\n }\n\n return this._getDistance(event.touches[0], event.touches[1]) / this._getDistance(this._baseTouches[0], this._baseTouches[1]);\n }\n return this.prevEvent.scale;\n };\n __proto._getCenter = function (event) {\n if (this._isTouchEvent(event)) {\n return {\n x: event.touches[0].clientX,\n y: event.touches[0].clientY\n };\n }\n return {\n x: event.clientX,\n y: event.clientY\n };\n };\n __proto._getMovement = function (event) {\n var _this = this;\n var prev = this.prevEvent.srcEvent;\n var _a = [event, prev].map(function (e) {\n if (_this._isTouchEvent(e)) {\n return {\n id: e.touches[0].identifier,\n x: e.touches[0].clientX,\n y: e.touches[0].clientY\n };\n }\n return {\n id: null,\n x: e.clientX,\n y: e.clientY\n };\n }),\n nextSpot = _a[0],\n prevSpot = _a[1];\n return nextSpot.id === prevSpot.id ? {\n x: nextSpot.x - prevSpot.x,\n y: nextSpot.y - prevSpot.y\n } : {\n x: 0,\n y: 0\n };\n };\n return TouchMouseEventInput;\n}(EventInput);\n\nvar toAxis = function (source, offset) {\n return offset.reduce(function (acc, v, i) {\n if (source[i]) {\n acc[source[i]] = v;\n }\n return acc;\n }, {});\n};\nvar convertInputType = function (inputType) {\n if (inputType === void 0) {\n inputType = [];\n }\n var hasTouch = false;\n var hasMouse = false;\n var hasPointer = false;\n inputType.forEach(function (v) {\n switch (v) {\n case \"mouse\":\n hasMouse = true;\n break;\n case \"touch\":\n hasTouch = SUPPORT_TOUCH;\n break;\n case \"pointer\":\n hasPointer = SUPPORT_POINTER_EVENTS;\n // no default\n }\n });\n\n if (hasPointer) {\n return new PointerEventInput();\n } else if (hasTouch && hasMouse) {\n return new TouchMouseEventInput();\n } else if (hasTouch) {\n return new TouchEventInput();\n } else if (hasMouse) {\n return new MouseEventInput();\n }\n return null;\n};\nfunction getAddEventOptions(eventName) {\n // The passive default value of the touch event is true.\n // If not a touch event, return false to support ie11\n return eventName.indexOf(\"touch\") > -1 ? {\n passive: false\n } : false;\n}\n\nvar InputObserver = /*#__PURE__*/function () {\n function InputObserver(_a) {\n var options = _a.options,\n interruptManager = _a.interruptManager,\n eventManager = _a.eventManager,\n axisManager = _a.axisManager,\n animationManager = _a.animationManager;\n this._isOutside = false;\n this._moveDistance = null;\n this._isStopped = false;\n this.options = options;\n this._interruptManager = interruptManager;\n this._eventManager = eventManager;\n this._axisManager = axisManager;\n this._animationManager = animationManager;\n }\n var __proto = InputObserver.prototype;\n __proto.get = function (input) {\n return this._axisManager.get(input.axes);\n };\n __proto.hold = function (input, event) {\n if (this._interruptManager.isInterrupted() || !input.axes.length) {\n return;\n }\n var changeOption = {\n input: input,\n event: event\n };\n this._isStopped = false;\n this._interruptManager.setInterrupt(true);\n this._animationManager.stopAnimation(changeOption);\n ++this._eventManager.holdingCount;\n if (!this._moveDistance) {\n this._eventManager.hold(this._axisManager.get(), changeOption);\n }\n this._isOutside = this._axisManager.isOutside(input.axes);\n this._moveDistance = this._axisManager.get(input.axes);\n };\n __proto.change = function (input, event, offset, useAnimation) {\n if (this._isStopped || !this._interruptManager.isInterrupting() || this._axisManager.every(offset, function (v) {\n return v === 0;\n })) {\n return;\n }\n var nativeEvent = event.srcEvent ? event.srcEvent : event;\n if (nativeEvent.__childrenAxesAlreadyChanged) {\n return;\n }\n var depaPos = this._moveDistance || this._axisManager.get(input.axes);\n var destPos;\n // for outside logic\n destPos = map(depaPos, function (v, k) {\n return v + (offset[k] || 0);\n });\n if (this._moveDistance) {\n this._moveDistance = this._axisManager.map(destPos, function (v, _a) {\n var circular = _a.circular,\n range = _a.range;\n return circular && (circular[0] || circular[1]) ? getCirculatedPos(v, range, circular) : v;\n });\n }\n // from outside to inside\n if (this._isOutside && this._axisManager.every(depaPos, function (v, opt) {\n return !isOutside(v, opt.range);\n })) {\n this._isOutside = false;\n }\n depaPos = this._atOutside(depaPos);\n destPos = this._atOutside(destPos);\n if (!this.options.nested || !this._isEndofAxis(offset, depaPos, destPos)) {\n nativeEvent.__childrenAxesAlreadyChanged = true;\n }\n var changeOption = {\n input: input,\n event: event\n };\n if (useAnimation) {\n var duration = this._animationManager.getDuration(destPos, depaPos);\n this._animationManager.animateTo(destPos, duration, changeOption);\n } else {\n var isCanceled = !this._eventManager.triggerChange(destPos, depaPos, changeOption, true);\n if (isCanceled) {\n this._isStopped = true;\n this._moveDistance = null;\n this._animationManager.finish(false);\n }\n }\n };\n __proto.release = function (input, event, velocity, inputDuration) {\n if (this._isStopped || !this._interruptManager.isInterrupting() || !this._moveDistance) {\n return;\n }\n var nativeEvent = event.srcEvent ? event.srcEvent : event;\n if (nativeEvent.__childrenAxesAlreadyReleased) {\n velocity = velocity.map(function () {\n return 0;\n });\n }\n var pos = this._axisManager.get(input.axes);\n var depaPos = this._axisManager.get();\n var displacement = this._animationManager.getDisplacement(velocity);\n var offset = toAxis(input.axes, displacement);\n var destPos = this._axisManager.get(this._axisManager.map(offset, function (v, opt, k) {\n if (opt.circular && (opt.circular[0] || opt.circular[1])) {\n return pos[k] + v;\n } else {\n return getInsidePosition(pos[k] + v, opt.range, opt.circular, opt.bounce);\n }\n }));\n nativeEvent.__childrenAxesAlreadyReleased = true;\n var duration = this._animationManager.getDuration(destPos, pos, inputDuration);\n if (duration === 0) {\n destPos = __assign({}, depaPos);\n }\n // prepare params\n var param = {\n depaPos: depaPos,\n destPos: destPos,\n duration: duration,\n delta: this._axisManager.getDelta(depaPos, destPos),\n inputEvent: event,\n input: input,\n isTrusted: true\n };\n --this._eventManager.holdingCount;\n this._eventManager.triggerRelease(param);\n if (this._eventManager.holdingCount === 0) {\n this._moveDistance = null;\n }\n // to contol\n var userWish = this._animationManager.getUserControl(param);\n var isEqual = equal(userWish.destPos, depaPos);\n var changeOption = {\n input: input,\n event: event\n };\n if (isEqual || userWish.duration === 0) {\n if (!isEqual) {\n this._eventManager.triggerChange(userWish.destPos, depaPos, changeOption, true);\n }\n this._interruptManager.setInterrupt(false);\n if (this._axisManager.isOutside()) {\n this._animationManager.restore(changeOption);\n } else {\n this._eventManager.triggerFinish(true);\n }\n } else {\n this._animationManager.animateTo(userWish.destPos, userWish.duration, changeOption);\n }\n };\n // when move pointer is held in outside\n __proto._atOutside = function (pos) {\n var _this = this;\n if (this._isOutside) {\n return this._axisManager.map(pos, function (v, opt) {\n var tn = opt.range[0] - opt.bounce[0];\n var tx = opt.range[1] + opt.bounce[1];\n return v > tx ? tx : v < tn ? tn : v;\n });\n } else {\n return this._axisManager.map(pos, function (v, opt) {\n var min = opt.range[0];\n var max = opt.range[1];\n var out = opt.bounce;\n var circular = opt.circular;\n if (circular[0] && v < min || circular[1] && v > max) {\n return v;\n } else if (v < min) {\n // left\n return min - _this._animationManager.interpolate(min - v, out[0]);\n } else if (v > max) {\n // right\n return max + _this._animationManager.interpolate(v - max, out[1]);\n }\n return v;\n });\n }\n };\n __proto._isEndofAxis = function (offset, depaPos, destPos) {\n return this._axisManager.every(depaPos, function (value, option, key) {\n return offset[key] === 0 || depaPos[key] === destPos[key] && isEndofBounce(value, option.range, option.bounce, option.circular);\n });\n };\n return InputObserver;\n}();\n\nvar clamp = function (value, min, max) {\n return Math.max(Math.min(value, max), min);\n};\nvar AnimationManager = /*#__PURE__*/function () {\n function AnimationManager(_a) {\n var options = _a.options,\n interruptManager = _a.interruptManager,\n eventManager = _a.eventManager,\n axisManager = _a.axisManager;\n this._options = options;\n this.interruptManager = interruptManager;\n this.eventManager = eventManager;\n this.axisManager = axisManager;\n this.animationEnd = this.animationEnd.bind(this);\n }\n var __proto = AnimationManager.prototype;\n __proto.getDuration = function (depaPos, destPos, wishDuration) {\n var _this = this;\n var duration;\n if (typeof wishDuration !== \"undefined\") {\n duration = wishDuration;\n } else {\n var durations_1 = map(destPos, function (v, k) {\n return getDuration(Math.abs(v - depaPos[k]), _this._options.deceleration);\n });\n duration = Object.keys(durations_1).reduce(function (max, v) {\n return Math.max(max, durations_1[v]);\n }, -Infinity);\n }\n return clamp(duration, this._options.minimumDuration, this._options.maximumDuration);\n };\n __proto.getDisplacement = function (velocity) {\n var totalVelocity = Math.pow(velocity.reduce(function (total, v) {\n return total + v * v;\n }, 0), 1 / velocity.length);\n var duration = Math.abs(totalVelocity / -this._options.deceleration);\n return velocity.map(function (v) {\n return v / 2 * duration;\n });\n };\n __proto.stopAnimation = function (option) {\n if (this._animateParam) {\n var orgPos_1 = this.axisManager.get();\n var pos = this.axisManager.map(orgPos_1, function (v, opt) {\n return getCirculatedPos(v, opt.range, opt.circular);\n });\n if (!every(pos, function (v, k) {\n return orgPos_1[k] === v;\n })) {\n this.eventManager.triggerChange(pos, orgPos_1, option, !!option);\n }\n this._animateParam = null;\n if (this._raf) {\n cancelAnimationFrame(this._raf);\n }\n this._raf = null;\n this.eventManager.triggerAnimationEnd(!!(option === null || option === void 0 ? void 0 : option.event));\n }\n };\n __proto.getEventInfo = function () {\n if (this._animateParam && this._animateParam.input && this._animateParam.inputEvent) {\n return {\n input: this._animateParam.input,\n event: this._animateParam.inputEvent\n };\n } else {\n return null;\n }\n };\n __proto.restore = function (option) {\n var pos = this.axisManager.get();\n var destPos = this.axisManager.map(pos, function (v, opt) {\n return Math.min(opt.range[1], Math.max(opt.range[0], v));\n });\n this.stopAnimation();\n this.animateTo(destPos, this.getDuration(pos, destPos), option);\n };\n __proto.animationEnd = function () {\n var beforeParam = this.getEventInfo();\n this._animateParam = null;\n // for Circular\n var circularTargets = this.axisManager.filter(this.axisManager.get(), function (v, opt) {\n return isCircularable(v, opt.range, opt.circular);\n });\n if (Object.keys(circularTargets).length > 0) {\n this.setTo(this.axisManager.map(circularTargets, function (v, opt) {\n return getCirculatedPos(v, opt.range, opt.circular);\n }));\n }\n this.interruptManager.setInterrupt(false);\n this.eventManager.triggerAnimationEnd(!!beforeParam);\n if (this.axisManager.isOutside()) {\n this.restore(beforeParam);\n } else {\n this.finish(!!beforeParam);\n }\n };\n __proto.finish = function (isTrusted) {\n this._animateParam = null;\n this.interruptManager.setInterrupt(false);\n this.eventManager.triggerFinish(isTrusted);\n };\n __proto.getUserControl = function (param) {\n var userWish = param.setTo();\n userWish.destPos = this.axisManager.get(userWish.destPos);\n userWish.duration = clamp(userWish.duration, this._options.minimumDuration, this._options.maximumDuration);\n return userWish;\n };\n __proto.animateTo = function (destPos, duration, option) {\n var _this = this;\n this.stopAnimation();\n var param = this._createAnimationParam(destPos, duration, option);\n var depaPos = __assign({}, param.depaPos);\n var retTrigger = this.eventManager.triggerAnimationStart(param);\n // to control\n var userWish = this.getUserControl(param);\n // You can't stop the 'animationStart' event when 'circular' is true.\n if (!retTrigger && this.axisManager.every(userWish.destPos, function (v, opt) {\n return isCircularable(v, opt.range, opt.circular);\n })) {\n console.warn(\"You can't stop the 'animation' event when 'circular' is true.\");\n }\n if (retTrigger && !equal(userWish.destPos, depaPos)) {\n var inputEvent = (option === null || option === void 0 ? void 0 : option.event) || null;\n this._animateLoop({\n depaPos: depaPos,\n destPos: userWish.destPos,\n duration: userWish.duration,\n delta: this.axisManager.getDelta(depaPos, userWish.destPos),\n isTrusted: !!inputEvent,\n inputEvent: inputEvent,\n input: (option === null || option === void 0 ? void 0 : option.input) || null\n }, function () {\n return _this.animationEnd();\n });\n }\n };\n __proto.setTo = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n var axes = Object.keys(pos);\n var orgPos = this.axisManager.get(axes);\n if (equal(pos, orgPos)) {\n return this;\n }\n this.interruptManager.setInterrupt(true);\n var movedPos = filter(pos, function (v, k) {\n return orgPos[k] !== v;\n });\n if (!Object.keys(movedPos).length) {\n return this;\n }\n movedPos = this.axisManager.map(movedPos, function (v, opt) {\n var range = opt.range,\n circular = opt.circular;\n if (circular && (circular[0] || circular[1])) {\n return v;\n } else {\n return getInsidePosition(v, range, circular);\n }\n });\n if (equal(movedPos, orgPos)) {\n return this;\n }\n if (duration > 0) {\n this.animateTo(movedPos, duration);\n } else {\n this.stopAnimation();\n this.eventManager.triggerChange(movedPos);\n this.finish(false);\n }\n return this;\n };\n __proto.setBy = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n return this.setTo(map(this.axisManager.get(Object.keys(pos)), function (v, k) {\n return v + pos[k];\n }), duration);\n };\n __proto.setOptions = function (options) {\n this._options = __assign(__assign({}, this._options), options);\n };\n __proto._createAnimationParam = function (pos, duration, option) {\n var depaPos = this.axisManager.get();\n var destPos = pos;\n var inputEvent = (option === null || option === void 0 ? void 0 : option.event) || null;\n return {\n depaPos: depaPos,\n destPos: destPos,\n duration: clamp(duration, this._options.minimumDuration, this._options.maximumDuration),\n delta: this.axisManager.getDelta(depaPos, destPos),\n inputEvent: inputEvent,\n input: (option === null || option === void 0 ? void 0 : option.input) || null,\n isTrusted: !!inputEvent,\n done: this.animationEnd\n };\n };\n __proto._animateLoop = function (param, complete) {\n var _this = this;\n if (param.duration) {\n this._animateParam = __assign(__assign({}, param), {\n startTime: new Date().getTime()\n });\n var originalIntendedPos_1 = map(param.destPos, function (v) {\n return v;\n });\n var state_1 = this._initState(this._animateParam);\n var loop_1 = function () {\n _this._raf = null;\n var animateParam = _this._animateParam;\n var nextState = _this._getNextState(state_1);\n var isCanceled = !_this.eventManager.triggerChange(nextState.pos, state_1.pos);\n state_1 = nextState;\n if (nextState.finished) {\n animateParam.destPos = _this._getFinalPos(animateParam.destPos, originalIntendedPos_1);\n if (!equal(animateParam.destPos, _this.axisManager.get(Object.keys(animateParam.destPos)))) {\n _this.eventManager.triggerChange(animateParam.destPos, nextState.pos);\n }\n complete();\n return;\n } else if (isCanceled) {\n _this.finish(false);\n } else {\n _this._raf = requestAnimationFrame(loop_1);\n }\n };\n loop_1();\n } else {\n this.eventManager.triggerChange(param.destPos);\n complete();\n }\n };\n /**\n * Get estimated final value.\n *\n * If destPos is within the 'error range' of the original intended position, the initial intended position is returned.\n * - eg. original intended pos: 100, destPos: 100.0000000004 ==> return 100;\n * If dest Pos is outside the 'range of error' compared to the originally intended pos, it is returned rounded based on the originally intended pos.\n * - eg. original intended pos: 100.123 destPos: 50.12345 => return 50.123\n * @param originalIntendedPos\n * @param destPos\n */\n __proto._getFinalPos = function (destPos, originalIntendedPos) {\n var _this = this;\n // compare destPos and originalIntendedPos\n // eslint-disable-next-line @typescript-eslint/naming-convention\n var ERROR_LIMIT = 0.000001;\n var finalPos = map(destPos, function (value, key) {\n if (value >= originalIntendedPos[key] - ERROR_LIMIT && value <= originalIntendedPos[key] + ERROR_LIMIT) {\n // In error range, return original intended\n return originalIntendedPos[key];\n } else {\n // Out of error range, return rounded pos.\n var roundUnit = _this._getRoundUnit(value, key);\n var result = roundNumber(value, roundUnit);\n return result;\n }\n });\n return finalPos;\n };\n __proto._getRoundUnit = function (val, key) {\n var roundUnit = this._options.round; // manual mode\n var minRoundUnit = null; // auto mode\n // auto mode\n if (!roundUnit) {\n // Get minimum round unit\n var options = this.axisManager.getAxisOptions(key);\n minRoundUnit = inversePow(Math.max(getDecimalPlace(options.range[0]), getDecimalPlace(options.range[1]), getDecimalPlace(val)));\n }\n return minRoundUnit || roundUnit;\n };\n return AnimationManager;\n}();\n\nvar EasingManager = /*#__PURE__*/function (_super) {\n __extends(EasingManager, _super);\n function EasingManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._useDuration = true;\n return _this;\n }\n var __proto = EasingManager.prototype;\n __proto.interpolate = function (displacement, threshold) {\n var initSlope = this._easing(0.00001) / 0.00001;\n return this._easing(displacement / (threshold * initSlope)) * threshold;\n };\n __proto.updateAnimation = function (options) {\n var _a;\n var animateParam = this._animateParam;\n if (!animateParam) {\n return;\n }\n var diffTime = new Date().getTime() - animateParam.startTime;\n var pos = (options === null || options === void 0 ? void 0 : options.destPos) || animateParam.destPos;\n var duration = (_a = options === null || options === void 0 ? void 0 : options.duration) !== null && _a !== void 0 ? _a : animateParam.duration;\n if ((options === null || options === void 0 ? void 0 : options.restart) || duration <= diffTime) {\n this.setTo(pos, duration - diffTime);\n return;\n }\n if (options === null || options === void 0 ? void 0 : options.destPos) {\n var currentPos = this.axisManager.get();\n // When destination is changed, new delta should be calculated as remaining percent.\n // For example, moving x:0, y:0 to x:200, y:200 and it has current easing percent of 92%. coordinate is x:184 and y:184\n // If destination changes to x:300, y:300. xdelta:200, ydelta:200 changes to xdelta:116, ydelta:116 and use remaining easingPer as 100%, not 8% as previous.\n // Therefore, original easingPer by time is kept. And divided by (1 - self._initialEasingPer) which means new total easing percent. Like calculating 8% as 100%.\n this._initialEasingPer = this._prevEasingPer;\n animateParam.delta = this.axisManager.getDelta(currentPos, pos);\n animateParam.destPos = pos;\n }\n if (options === null || options === void 0 ? void 0 : options.duration) {\n var ratio = (diffTime + this._durationOffset) / animateParam.duration;\n // Use durationOffset for keeping animation ratio after duration is changed.\n // newRatio = (diffTime + newDurationOffset) / newDuration = oldRatio\n // newDurationOffset = oldRatio * newDuration - diffTime\n this._durationOffset = ratio * duration - diffTime;\n animateParam.duration = duration;\n }\n };\n __proto._initState = function (info) {\n this._initialEasingPer = 0;\n this._prevEasingPer = 0;\n this._durationOffset = 0;\n return {\n pos: info.depaPos,\n easingPer: 0,\n finished: false\n };\n };\n __proto._getNextState = function (prevState) {\n var _this = this;\n var animateParam = this._animateParam;\n var prevPos = prevState.pos;\n var destPos = animateParam.destPos;\n var directions = map(prevPos, function (value, key) {\n return value <= destPos[key] ? 1 : -1;\n });\n var diffTime = new Date().getTime() - animateParam.startTime;\n var ratio = (diffTime + this._durationOffset) / animateParam.duration;\n var easingPer = this._easing(ratio);\n var toPos = this.axisManager.map(prevPos, function (pos, options, key) {\n var nextPos = ratio >= 1 ? destPos[key] : pos + animateParam.delta[key] * (easingPer - _this._prevEasingPer) / (1 - _this._initialEasingPer);\n // Subtract distance from distance already moved.\n // Recalculate the remaining distance.\n // Fix the bouncing phenomenon by changing the range.\n var circulatedPos = getCirculatedPos(nextPos, options.range, options.circular);\n if (nextPos !== circulatedPos) {\n // circular\n var rangeOffset = directions[key] * (options.range[1] - options.range[0]);\n destPos[key] -= rangeOffset;\n prevPos[key] -= rangeOffset;\n }\n return circulatedPos;\n });\n this._prevEasingPer = easingPer;\n return {\n pos: toPos,\n easingPer: easingPer,\n finished: easingPer >= 1\n };\n };\n __proto._easing = function (p) {\n return p > 1 ? 1 : this._options.easing(p);\n };\n return EasingManager;\n}(AnimationManager);\n\n/**\n * @typedef {Object} AxisOption The Axis information. The key of the axis specifies the name to use as the logical virtual coordinate system.\n * @ko 축 정보. 축의 키는 논리적인 가상 좌표계로 사용할 이름을 지정한다.\n * @param {Number[]} [range] The range of coordinate <ko>좌표 범위</ko>\n * @param {Number} [range[0]=0] The coordinate of the minimum <ko>최소 좌표</ko>\n * @param {Number} [range[1]=0] The coordinate of the maximum <ko>최대 좌표</ko>\n * @param {Number} [startPos=range[0]] The coordinates to be moved when creating an instance <ko>인스턴스 생성시 이동할 좌표</ko>\n * @param {Number[]} [bounce] The size of bouncing area. The coordinates can exceed the coordinate area as much as the bouncing area based on user action. If the coordinates does not exceed the bouncing area when an element is dragged, the coordinates where bouncing effects are applied are retuned back into the coordinate area<ko>바운스 영역의 크기. 사용자의 동작에 따라 좌표가 좌표 영역을 넘어 바운스 영역의 크기만큼 더 이동할 수 있다. 사용자가 끌어다 놓는 동작을 했을 때 좌표가 바운스 영역에 있으면, 바운스 효과가 적용된 좌표가 다시 좌표 영역 안으로 들어온다</ko>\n * @param {Number} [bounce[0]=0] The size of coordinate of the minimum area <ko>최소 좌표 바운스 영역의 크기</ko>\n * @param {Number} [bounce[1]=0] The size of coordinate of the maximum area <ko>최대 좌표 바운스 영역의 크기</ko>\n * @param {Boolean[]} [circular] Indicates whether a circular element is available. If it is set to \"true\" and an element is dragged outside the coordinate area, the element will appear on the other side.<ko>순환 여부. 'true'로 설정한 방향의 좌표 영역 밖으로 엘리먼트가 이동하면 반대 방향에서 엘리먼트가 나타난다</ko>\n * @param {Boolean} [circular[0]=false] Indicates whether to circulate to the coordinate of the minimum <ko>최소 좌표 방향의 순환 여부</ko>\n * @param {Boolean} [circular[1]=false] Indicates whether to circulate to the coordinate of the maximum <ko>최대 좌표 방향의 순환 여부</ko>\n **/\n/**\n * @typedef {Object} AxesOption The option object of the eg.Axes module\n * @ko eg.Axes 모듈의 옵션 객체\n * @param {Function} [easing=easing.easeOutCubic] The easing function to apply to an animation <ko>애니메이션에 적용할 easing 함수</ko>\n * @param {Number} [maximumDuration=Infinity] Maximum duration of the animation <ko>가속도에 의해 애니메이션이 동작할 때의 최대 좌표 이동 시간</ko>\n * @param {Number} [minimumDuration=0] Minimum duration of the animation <ko>가속도에 의해 애니메이션이 동작할 때의 최소 좌표 이동 시간</ko>\n * @param {Number} [deceleration=0.0006] Deceleration of the animation where acceleration is manually enabled by user. A higher value indicates shorter running time. <ko>사용자의 동작으로 가속도가 적용된 애니메이션의 감속도. 값이 높을수록 애니메이션 실행 시간이 짧아진다</ko>\n * @param {Boolean} [interruptable=true] Indicates whether an animation is interruptible.\n * - true: It can be paused or stopped by user action or the API.\n * - false: It cannot be paused or stopped by user action or the API while it is running.\n * <ko>진행 중인 애니메이션 중지 가능 여부.\n * - true: 사용자의 동작이나 API로 애니메이션을 중지할 수 있다.\n * - false: 애니메이션이 진행 중일 때는 사용자의 동작이나 API가 적용되지 않는다</ko>\n * @param {Number} [round=null] Rounding unit. For example, 0.1 rounds to 0.1 decimal point(6.1234 => 6.1), 5 rounds to 5 (93 => 95)\n * [Details](https://github.com/naver/egjs-axes/wiki/round-option)<ko>반올림 단위. 예를 들어 0.1 은 소숫점 0.1 까지 반올림(6.1234 => 6.1), 5 는 5 단위로 반올림(93 => 95).\n * [상세내용](https://github.com/naver/egjs-axes/wiki/round-option)</ko>\n * @param {Boolean} [nested=false] Whether the event propagates to other instances when the coordinates reach the end of the movable area <ko>좌표가 이동 가능한 영역의 끝까지 도달했을 때 다른 인스턴스들로의 이벤트 전파 여부</ko>\n **/\n/**\n * A module used to change the information of user action entered by various input devices such as touch screen or mouse into the logical virtual coordinates. You can easily create a UI that responds to user actions.\n * @ko 터치 입력 장치나 마우스와 같은 다양한 입력 장치를 통해 전달 받은 사용자의 동작을 논리적인 가상 좌표로 변경하는 모듈이다. 사용자 동작에 반응하는 UI를 손쉽게 만들수 있다.\n * @extends eg.Component\n *\n * @param {Object.<string, AxisOption>} axis Axis information managed by eg.Axes. The key of the axis specifies the name to use as the logical virtual coordinate system. <ko>eg.Axes가 관리하는 축 정보. 축의 키는 논리적인 가상 좌표계로 사용할 이름을 지정한다.</ko>\n * @param {AxesOption} [options={}] The option object of the eg.Axes module<ko>eg.Axes 모듈의 옵션 객체</ko>\n * @param {Object.<string, number>} [startPos={}] The coordinates to be moved when creating an instance. It is applied with higher priority than startPos of axisOption.<ko>인스턴스 생성시 이동할 좌표, axisOption의 startPos보다 높은 우선순위로 적용된다.</ko>\n *\n * @support {\"ie\": \"10+\", \"ch\" : \"latest\", \"ff\" : \"latest\", \"sf\" : \"latest\", \"edge\" : \"latest\", \"ios\" : \"7+\", \"an\" : \"2.3+ (except 3.x)\"}\n * @example\n * ```js\n * // 1. Initialize eg.Axes\n * const axes = new eg.Axes({\n * something1: {\n * range: [0, 150],\n * bounce: 50\n * },\n * something2: {\n * range: [0, 200],\n * bounce: 100\n * },\n * somethingN: {\n * range: [1, 10],\n * }\n * }, {\n * deceleration : 0.0024\n * });\n *\n * // 2. attach event handler\n * axes.on({\n * \"hold\" : function(evt) {\n * },\n * \"release\" : function(evt) {\n * },\n * \"animationStart\" : function(evt) {\n * },\n * \"animationEnd\" : function(evt) {\n * },\n * \"change\" : function(evt) {\n * }\n * });\n *\n * // 3. Initialize inputTypes\n * const panInputArea = new eg.Axes.PanInput(\"#area\", {\n * scale: [0.5, 1]\n * });\n * const panInputHmove = new eg.Axes.PanInput(\"#hmove\");\n * const panInputVmove = new eg.Axes.PanInput(\"#vmove\");\n * const pinchInputArea = new eg.Axes.PinchInput(\"#area\", {\n * scale: 1.5\n * });\n *\n * // 4. Connect eg.Axes and InputTypes\n * // [PanInput] When the mouse or touchscreen is down and moved.\n * // Connect the 'something2' axis to the mouse or touchscreen x position and\n * // connect the 'somethingN' axis to the mouse or touchscreen y position.\n * axes.connect([\"something2\", \"somethingN\"], panInputArea); // or axes.connect(\"something2 somethingN\", panInputArea);\n *\n * // Connect only one 'something1' axis to the mouse or touchscreen x position.\n * axes.connect([\"something1\"], panInputHmove); // or axes.connect(\"something1\", panInputHmove);\n *\n * // Connect only one 'something2' axis to the mouse or touchscreen y position.\n * axes.connect([\"\", \"something2\"], panInputVmove); // or axes.connect(\" something2\", panInputVmove);\n *\n * // [PinchInput] Connect 'something2' axis when two pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * axes.connect(\"something2\", pinchInputArea);\n * ```\n */\nvar Axes = /*#__PURE__*/function (_super) {\n __extends(Axes, _super);\n /**\n *\n */\n function Axes(axis, options, startPos) {\n if (axis === void 0) {\n axis = {};\n }\n if (options === void 0) {\n options = {};\n }\n if (startPos === void 0) {\n startPos = {};\n }\n var _this = _super.call(this) || this;\n _this.axis = axis;\n _this._inputs = [];\n _this.options = __assign({\n easing: function (x) {\n return 1 - Math.pow(1 - x, 3);\n },\n interruptable: true,\n maximumDuration: Infinity,\n minimumDuration: 0,\n deceleration: 0.0006,\n round: null,\n nested: false\n }, options);\n Object.keys(startPos).forEach(function (key) {\n _this.axis[key].startPos = startPos[key];\n });\n _this.interruptManager = new InterruptManager(_this.options);\n _this.axisManager = new AxisManager(_this.axis);\n _this.eventManager = new EventManager(_this);\n _this.animationManager = new EasingManager(_this);\n _this.inputObserver = new InputObserver(_this);\n _this.eventManager.setAnimationManager(_this.animationManager);\n _this.eventManager.triggerChange(_this.axisManager.get());\n return _this;\n }\n var __proto = Axes.prototype;\n Object.defineProperty(__proto, \"holding\", {\n /**\n * @name Axes#holding\n * @desc Returns true if at least one input is in progress.\n * @ko 입력이 하나 이상 진행 중인지 여부를 반환한다.\n *\n * @readonly\n * @type {boolean}\n * @example\n * ```js\n * const axes = new eg.Axes({\n * x: {\n * range: [0, 100],\n * },\n * });\n *\n * axes.holding\n * ```\n */\n get: function () {\n return this.eventManager.holdingCount > 0;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Connect the axis of eg.Axes to the inputType.\n * @ko eg.Axes의 축과 inputType을 연결한다\n * @param {(String[]|String)} axes The name of the axis to associate with inputType <ko>inputType과 연결할 축의 이름</ko>\n * @param {Object} inputType The inputType instance to associate with the axis of eg.Axes <ko>eg.Axes의 축과 연결할 inputType 인스턴스</ko>\n * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * }\n * });\n *\n * axes.connect(\"x\", new eg.Axes.PanInput(\"#area1\"))\n * .connect(\"x xOther\", new eg.Axes.PanInput(\"#area2\"))\n * .connect(\" xOther\", new eg.Axes.PanInput(\"#area3\"))\n * .connect([\"x\"], new eg.Axes.PanInput(\"#area4\"))\n * .connect([\"xOther\", \"x\"], new eg.Axes.PanInput(\"#area5\"))\n * .connect([\"\", \"xOther\"], new eg.Axes.PanInput(\"#area6\"));\n * ```\n */\n __proto.connect = function (axes, inputType) {\n var mapped;\n if (typeof axes === \"string\") {\n mapped = axes.split(\" \");\n } else {\n mapped = axes.concat();\n }\n // check same instance\n if (~this._inputs.indexOf(inputType)) {\n this.disconnect(inputType);\n }\n inputType.mapAxes(mapped);\n inputType.connect(this.inputObserver);\n this._inputs.push(inputType);\n return this;\n };\n /**\n * Disconnect the axis of eg.Axes from the inputType.\n * @ko eg.Axes의 축과 inputType의 연결을 끊는다.\n * @param {Object} [inputType] An inputType instance associated with the axis of eg.Axes <ko>eg.Axes의 축과 연결한 inputType 인스턴스</ko>\n * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * }\n * });\n *\n * const input1 = new eg.Axes.PanInput(\"#area1\");\n * const input2 = new eg.Axes.PanInput(\"#area2\");\n * const input3 = new eg.Axes.PanInput(\"#area3\");\n *\n * axes.connect(\"x\", input1);\n * .connect(\"x xOther\", input2)\n * .connect([\"xOther\", \"x\"], input3);\n *\n * axes.disconnect(input1); // disconnects input1\n * axes.disconnect(); // disconnects all of them\n * ```\n */\n __proto.disconnect = function (inputType) {\n if (inputType) {\n var index = this._inputs.indexOf(inputType);\n if (index >= 0) {\n this._inputs[index].disconnect();\n this._inputs.splice(index, 1);\n }\n } else {\n this._inputs.forEach(function (v) {\n return v.disconnect();\n });\n this._inputs = [];\n }\n return this;\n };\n /**\n * Returns the current position of the coordinates.\n * @ko 좌표의 현재 위치를 반환한다\n * @param {Object} [axes] The names of the axis <ko>축 이름들</ko>\n * @return {Object.<string, number>} Axis coordinate information <ko>축 좌표 정보</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * });\n *\n * axes.get(); // {\"x\": 0, \"xOther\": -100, \"zoom\": 50}\n * axes.get([\"x\", \"zoom\"]); // {\"x\": 0, \"zoom\": 50}\n * ```\n */\n __proto.get = function (axes) {\n return this.axisManager.get(axes);\n };\n /**\n * Moves an axis to specific coordinates.\n * @ko 좌표를 이동한다.\n * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>\n * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>\n * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * });\n *\n * axes.setTo({\"x\": 30, \"zoom\": 60});\n * axes.get(); // {\"x\": 30, \"xOther\": -100, \"zoom\": 60}\n *\n * axes.setTo({\"x\": 100, \"xOther\": 60}, 1000); // animatation\n *\n * // after 1000 ms\n * axes.get(); // {\"x\": 100, \"xOther\": 60, \"zoom\": 60}\n * ```\n */\n __proto.setTo = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n this.animationManager.setTo(pos, duration);\n return this;\n };\n /**\n * Moves an axis from the current coordinates to specific coordinates.\n * @ko 현재 좌표를 기준으로 좌표를 이동한다.\n * @param {Object.<string, number>} pos The coordinate to move to <ko>이동할 좌표</ko>\n * @param {Number} [duration=0] Duration of the animation (unit: ms) <ko>애니메이션 진행 시간(단위: ms)</ko>\n * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * });\n *\n * axes.setBy({\"x\": 30, \"zoom\": 10});\n * axes.get(); // {\"x\": 30, \"xOther\": -100, \"zoom\": 60}\n *\n * axes.setBy({\"x\": 70, \"xOther\": 60}, 1000); // animatation\n *\n * // after 1000 ms\n * axes.get(); // {\"x\": 100, \"xOther\": -40, \"zoom\": 60}\n * ```\n */\n __proto.setBy = function (pos, duration) {\n if (duration === void 0) {\n duration = 0;\n }\n this.animationManager.setBy(pos, duration);\n return this;\n };\n /**\n * Change the options of Axes instance.\n * @ko 인스턴스의 옵션을 변경한다.\n * @param {AxesOption} options Axes options to change <ko>변경할 옵션 목록</ko>\n * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * }, {\n * round: 10,\n * });\n *\n * axes.setTo({\"x\": 48});\n * axes.get(); // {\"x\": 50}\n *\n * axes.setOptions({\n * round: 1,\n * });\n *\n * axes.setTo({\"x\": 48});\n * axes.get(); // {\"x\": 48}\n * ```\n */\n __proto.setOptions = function (options) {\n this.options = __assign(__assign({}, this.options), options);\n this.animationManager.setOptions(options);\n return this;\n };\n /**\n * Change the information of an existing axis.\n * @ko 존재하는 축의 정보를 변경한다.\n * @param {Object.<string, AxisOption>} axis Axis options to change <ko>변경할 축의 정보</ko>\n * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * });\n *\n * axes.setTo({\"x\": 150});\n * axes.get(); // {\"x\": 100}\n *\n * axes.setAxis({\n * \"x\": {\n * range: [0, 200]\n * },\n * });\n *\n * axes.setTo({\"x\": 150});\n * axes.get(); // {\"x\": 150}\n * ```\n */\n __proto.setAxis = function (axis) {\n this.axisManager.setAxis(axis);\n return this;\n };\n /**\n * Stop an animation in progress.\n * @ko 재생 중인 애니메이션을 정지한다.\n * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * });\n *\n * axes.setTo({\"x\": 10}, 1000); // start animatation\n *\n * // after 500 ms\n * axes.stopAnimation(); // stop animation during movement.\n * ```\n */\n __proto.stopAnimation = function () {\n this.animationManager.stopAnimation();\n this.animationManager.finish(false);\n return this;\n };\n /**\n * Change the destination of an animation in progress.\n * @ko 재생 중인 애니메이션의 목적지와 진행 시간을 변경한다.\n * @param {UpdateAnimationOption} pos The coordinate to move to <ko>이동할 좌표</ko>\n * @return {eg.Axes} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 200]\n * },\n * \"y\": {\n * range: [0, 200]\n * }\n * });\n *\n * axes.setTo({\"x\": 50, \"y\": 50}, 1000); // trigger animation by setTo\n *\n * // after 500 ms\n * axes.updateAnimation({destPos: {\"x\": 100, \"y\": 100}}); // animation will end after 500 ms, at {\"x\": 100, \"y\": 100}\n *\n * // after 500 ms\n * axes.setTo({\"x\": 50, \"y\": 50}, 1000); // trigger animation by setTo\n *\n * // after 700 ms\n * axes.updateAnimation({destPos: {\"x\": 100, \"y\": 100}, duration: 1500, restart: true}); // this works same as axes.setTo({\"x\": 100, \"y\": 100}, 800) since restart is true.\n * ```\n */\n __proto.updateAnimation = function (options) {\n this.animationManager.updateAnimation(options);\n return this;\n };\n /**\n * Returns whether there is a coordinate in the bounce area of ​​the target axis.\n * @ko 대상 축 중 bounce영역에 좌표가 존재하는지를 반환한다\n * @param {Object} [axes] The names of the axis <ko>축 이름들</ko>\n * @return {Boolen} Whether the bounce area exists. <ko>bounce 영역 존재 여부</ko>\n * @example\n * ```js\n * const axes = new eg.Axes({\n * \"x\": {\n * range: [0, 100]\n * },\n * \"xOther\": {\n * range: [-100, 100]\n * },\n * \"zoom\": {\n * range: [50, 30]\n * }\n * });\n *\n * axes.isBounceArea([\"x\"]);\n * axes.isBounceArea([\"x\", \"zoom\"]);\n * axes.isBounceArea();\n * ```\n */\n __proto.isBounceArea = function (axes) {\n return this.axisManager.isOutside(axes);\n };\n /**\n * Destroys properties, and events used in a module and disconnect all connections to inputTypes.\n * @ko 모듈에 사용한 속성, 이벤트를 해제한다. 모든 inputType과의 연결을 끊는다.\n */\n __proto.destroy = function () {\n this.disconnect();\n this.eventManager.destroy();\n };\n /**\n * @name VERSION\n * @desc Version info string\n * @ko 버전정보 문자열\n *\n * @constant\n * @type {String}\n * @example\n * ```js\n * eg.Axes.VERSION; // ex) 3.3.3\n * ```\n */\n Axes.VERSION = \"3.9.1\";\n /* eslint-enable */\n /**\n * @name TRANSFORM\n * @desc Returns the transform attribute with CSS vendor prefixes.\n * @ko CSS vendor prefixes를 붙인 transform 속성을 반환한다.\n *\n * @constant\n * @type {String}\n * @example\n * ```js\n * eg.Axes.TRANSFORM; // \"transform\" or \"webkitTransform\"\n * ```\n */\n Axes.TRANSFORM = TRANSFORM;\n /**\n * @name DIRECTION_NONE\n * @constant\n * @type {Number}\n */\n Axes.DIRECTION_NONE = DIRECTION_NONE;\n /**\n * @name DIRECTION_LEFT\n * @constant\n * @type {Number}\n */\n Axes.DIRECTION_LEFT = DIRECTION_LEFT;\n /**\n * @name DIRECTION_RIGHT\n * @constant\n * @type {Number}\n */\n Axes.DIRECTION_RIGHT = DIRECTION_RIGHT;\n /**\n * @name DIRECTION_UP\n * @constant\n * @type {Number}\n */\n Axes.DIRECTION_UP = DIRECTION_UP;\n /**\n * @name DIRECTION_DOWN\n * @constant\n * @type {Number}\n */\n Axes.DIRECTION_DOWN = DIRECTION_DOWN;\n /**\n * @name DIRECTION_HORIZONTAL\n * @constant\n * @type {Number}\n */\n Axes.DIRECTION_HORIZONTAL = DIRECTION_HORIZONTAL;\n /**\n * @name DIRECTION_VERTICAL\n * @constant\n * @type {Number}\n */\n Axes.DIRECTION_VERTICAL = DIRECTION_VERTICAL;\n /**\n * @name DIRECTION_ALL\n * @constant\n * @type {Number}\n */\n Axes.DIRECTION_ALL = DIRECTION_ALL;\n __decorate([Computed], Axes.prototype, \"holding\", null);\n Axes = __decorate([ReactiveSubscribe], Axes);\n return Axes;\n}(Component);\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n// get user's direction\nvar getDirectionByAngle = function (angle, thresholdAngle) {\n if (thresholdAngle < 0 || thresholdAngle > 90) {\n return DIRECTION_NONE;\n }\n var toAngle = Math.abs(angle);\n return toAngle > thresholdAngle && toAngle < 180 - thresholdAngle ? DIRECTION_VERTICAL : DIRECTION_HORIZONTAL;\n};\n/**\n * @typedef {Object} PanInputOption The option object of the eg.Axes.PanInput module.\n * @ko eg.Axes.PanInput 모듈의 옵션 객체\n * @param {String[]} [inputType=[\"touch\", \"mouse\", \"pointer\"]] Types of input devices\n * - touch: Touch screen\n * - mouse: Mouse\n * - pointer: Mouse and touch <ko>입력 장치 종류\n * - touch: 터치 입력 장치\n * - mouse: 마우스\n * - pointer: 마우스 및 터치</ko>\n * @param {String[]} [inputKey=[\"any\"]] List of key combinations to allow input\n * - any: any key\n * - shift: shift key\n * - ctrl: ctrl key and pinch gesture on the trackpad\n * - alt: alt key\n * - meta: meta key\n * - none: none of these keys are pressed <ko>입력을 허용할 키 조합 목록\n * - any: 아무 키\n * - shift: shift 키\n * - ctrl: ctrl 키 및 트랙패드의 pinch 제스쳐\n * - alt: alt 키\n * - meta: meta 키\n * - none: 아무 키도 눌리지 않은 상태 </ko>\n * @param {String[]} [inputButton=[\"left\"]] List of buttons to allow input\n * - left: Left mouse button and normal touch\n * - middle: Mouse wheel press\n * - right: Right mouse button <ko>입력을 허용할 버튼 목록\n * - left: 마우스 왼쪽 버튼\n * - middle: 마우스 휠 눌림\n * - right: 마우스 오른쪽 버튼 </ko>\n * @param {Number[]} [scale] Coordinate scale that a user can move<ko>사용자의 동작으로 이동하는 좌표의 배율</ko>\n * @param {Number} [scale[0]=1] horizontal axis scale <ko>수평축 배율</ko>\n * @param {Number} [scale[1]=1] vertical axis scale <ko>수직축 배율</ko>\n * @param {Number} [thresholdAngle=45] The threshold value that determines whether user action is horizontal or vertical (0~90) <ko>사용자의 동작이 가로 방향인지 세로 방향인지 판단하는 기준 각도(0~90)</ko>\n * @param {Number} [threshold=0] Minimal pan distance required before recognizing <ko>사용자의 Pan 동작을 인식하기 위해산 최소한의 거리</ko>\n * @param {Boolean} [preventClickOnDrag=false] Whether to cancel the {@link https://developer.mozilla.org/en/docs/Web/API/Element/click_event click} event when the user finishes dragging more than 1 pixel <ko>사용자가 1픽셀 이상 드래그를 마쳤을 때 {@link https://developer.mozilla.org/ko/docs/Web/API/Element/click_event click} 이벤트 취소 여부</ko>\n * @param {Boolean} [preventDefaultOnDrag=false] Whether to use the {@link https://developer.mozilla.org/ko/docs/Web/API/Event/preventDefault preventDefault} when the user starts dragging <ko>사용자가 드래그를 시작할 때 {@link https://developer.mozilla.org/ko/docs/Web/API/Event/preventDefault preventDefault} 실행 여부</ko>\n * @param {Number} [iOSEdgeSwipeThreshold=30] Area (px) that can go to the next page when swiping the right edge in iOS safari <ko>iOS Safari에서 오른쪽 엣지를 스와이프 하는 경우 다음 페이지로 넘어갈 수 있는 영역(px)</ko>\n * @param {String} [touchAction=null] Value that overrides the element's \"touch-action\" css property. If set to null, it is automatically set to prevent scrolling in the direction of the connected axis. <ko>엘리먼트의 \"touch-action\" CSS 속성을 덮어쓰는 값. 만약 null로 설정된 경우, 연결된 축 방향으로의 스크롤을 방지하게끔 자동으로 설정된다.</ko>\n **/\n/**\n * A module that passes the amount of change to eg.Axes when the mouse or touchscreen is down and moved. use less than two axes.\n * @ko 마우스나 터치 스크린을 누르고 움직일때의 변화량을 eg.Axes에 전달하는 모듈. 두개 이하의 축을 사용한다.\n *\n * @example\n * ```js\n * const pan = new eg.Axes.PanInput(\"#area\", {\n * inputType: [\"touch\"],\n * scale: [1, 1.3],\n * });\n *\n * // Connect the 'something2' axis to the mouse or touchscreen x position when the mouse or touchscreen is down and moved.\n * // Connect the 'somethingN' axis to the mouse or touchscreen y position when the mouse or touchscreen is down and moved.\n * axes.connect([\"something2\", \"somethingN\"], pan); // or axes.connect(\"something2 somethingN\", pan);\n *\n * // Connect only one 'something1' axis to the mouse or touchscreen x position when the mouse or touchscreen is down and moved.\n * axes.connect([\"something1\"], pan); // or axes.connect(\"something1\", pan);\n *\n * // Connect only one 'something2' axis to the mouse or touchscreen y position when the mouse or touchscreen is down and moved.\n * axes.connect([\"\", \"something2\"], pan); // or axes.connect(\" something2\", pan);\n * ```\n * @param {String|HTMLElement|Ref<HTMLElement>|jQuery} element An element to use the eg.Axes.PanInput module <ko>eg.Axes.PanInput 모듈을 사용할 엘리먼트</ko>\n * @param {PanInputOption} [options={}] The option object of the eg.Axes.PanInput module<ko>eg.Axes.PanInput 모듈의 옵션 객체</ko>\n */\nvar PanInput = /*#__PURE__*/function () {\n /**\n *\n */\n function PanInput(el, options) {\n var _this = this;\n this.axes = [];\n this.element = null;\n this._enabled = false;\n this._activeEvent = null;\n this._atRightEdge = false;\n this._rightEdgeTimer = 0;\n this._dragged = false;\n this._isOverThreshold = false;\n this._preventClickWhenDragged = function (e) {\n if (_this._dragged) {\n e.preventDefault();\n e.stopPropagation();\n }\n _this._dragged = false;\n };\n this._voidFunction = function () {};\n this.element = $(el);\n this.options = __assign({\n inputType: [\"touch\", \"mouse\", \"pointer\"],\n inputKey: [ANY],\n inputButton: [MOUSE_LEFT],\n scale: [1, 1],\n thresholdAngle: 45,\n threshold: 0,\n preventClickOnDrag: false,\n preventDefaultOnDrag: false,\n iOSEdgeSwipeThreshold: IOS_EDGE_THRESHOLD,\n releaseOnScroll: false,\n touchAction: null\n }, options);\n this._onPanstart = this._onPanstart.bind(this);\n this._onPanmove = this._onPanmove.bind(this);\n this._onPanend = this._onPanend.bind(this);\n }\n var __proto = PanInput.prototype;\n __proto.mapAxes = function (axes) {\n this._direction = getDirection(!!axes[0], !!axes[1]);\n this.axes = axes;\n };\n __proto.connect = function (observer) {\n if (this._activeEvent) {\n this._detachElementEvent();\n this._detachWindowEvent(this._activeEvent);\n }\n this._attachElementEvent(observer);\n return this;\n };\n __proto.disconnect = function () {\n this._detachElementEvent();\n this._detachWindowEvent(this._activeEvent);\n this._direction = DIRECTION_NONE;\n return this;\n };\n /**\n * Destroys elements, properties, and events used in a module.\n * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.\n */\n __proto.destroy = function () {\n this.disconnect();\n this.element = null;\n };\n /**\n * Enables input devices\n * @ko 입력 장치를 사용할 수 있게 한다\n * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.enable = function () {\n if (!this._enabled) {\n this._enabled = true;\n this._originalCssProps = setCssProps(this.element, this.options, this._direction);\n }\n return this;\n };\n /**\n * Disables input devices\n * @ko 입력 장치를 사용할 수 없게 한다.\n * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.disable = function () {\n if (this._enabled) {\n this._enabled = false;\n if (!isCssPropsFromAxes(this._originalCssProps)) {\n revertCssProps(this.element, this._originalCssProps);\n }\n }\n return this;\n };\n /**\n * Returns whether to use an input device\n * @ko 입력 장치 사용 여부를 반환한다.\n * @return {Boolean} Whether to use an input device <ko>입력장치 사용여부</ko>\n */\n __proto.isEnabled = function () {\n return this._enabled;\n };\n /**\n * Releases current user input.\n * @ko 사용자의 입력을 강제로 중단시킨다.\n * @return {PanInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.release = function () {\n var activeEvent = this._activeEvent;\n var prevEvent = activeEvent.prevEvent;\n activeEvent.onRelease();\n this._observer.release(this, prevEvent, [0, 0]);\n this._detachWindowEvent(activeEvent);\n return this;\n };\n __proto._onPanstart = function (event) {\n var _a = this.options,\n inputKey = _a.inputKey,\n inputButton = _a.inputButton,\n preventDefaultOnDrag = _a.preventDefaultOnDrag;\n var activeEvent = this._activeEvent;\n var panEvent = activeEvent.onEventStart(event, inputKey, inputButton);\n if (!panEvent || !this._enabled || activeEvent.getTouches(event, inputButton) > 1) {\n return;\n }\n if (panEvent.srcEvent.cancelable !== false) {\n var edgeThreshold = this.options.iOSEdgeSwipeThreshold;\n this._dragged = false;\n this._isOverThreshold = false;\n this._observer.hold(this, panEvent);\n this._atRightEdge = IS_IOS_SAFARI && panEvent.center.x > window.innerWidth - edgeThreshold;\n this._attachWindowEvent(activeEvent);\n preventDefaultOnDrag && panEvent.srcEvent.type !== \"touchstart\" && panEvent.srcEvent.preventDefault();\n activeEvent.prevEvent = panEvent;\n }\n };\n __proto._onPanmove = function (event) {\n var _this = this;\n var _a = this.options,\n iOSEdgeSwipeThreshold = _a.iOSEdgeSwipeThreshold,\n preventClickOnDrag = _a.preventClickOnDrag,\n releaseOnScroll = _a.releaseOnScroll,\n inputKey = _a.inputKey,\n inputButton = _a.inputButton,\n threshold = _a.threshold,\n thresholdAngle = _a.thresholdAngle;\n var activeEvent = this._activeEvent;\n var panEvent = activeEvent.onEventMove(event, inputKey, inputButton);\n var touches = activeEvent.getTouches(event, inputButton);\n if (touches === 0 || releaseOnScroll && panEvent && !panEvent.srcEvent.cancelable) {\n this._onPanend(event);\n return;\n }\n if (!panEvent || !this._enabled || touches > 1) {\n return;\n }\n var userDirection = getDirectionByAngle(panEvent.angle, thresholdAngle);\n var useHorizontal = useDirection(DIRECTION_HORIZONTAL, this._direction, userDirection);\n var useVertical = useDirection(DIRECTION_VERTICAL, this._direction, userDirection);\n if (activeEvent.prevEvent && IS_IOS_SAFARI) {\n var swipeLeftToRight = panEvent.center.x < 0;\n if (swipeLeftToRight) {\n // iOS swipe left => right\n this.release();\n return;\n } else if (this._atRightEdge) {\n clearTimeout(this._rightEdgeTimer);\n // - is right to left\n var swipeRightToLeft = panEvent.deltaX < -iOSEdgeSwipeThreshold;\n if (swipeRightToLeft) {\n this._atRightEdge = false;\n } else {\n // iOS swipe right => left\n this._rightEdgeTimer = window.setTimeout(function () {\n return _this.release();\n }, 100);\n }\n }\n }\n var distance = this._getDistance([panEvent.deltaX, panEvent.deltaY], [useHorizontal, useVertical]);\n var offset = this._getOffset([panEvent.offsetX, panEvent.offsetY], [useHorizontal, useVertical]);\n var prevent = offset.some(function (v) {\n return v !== 0;\n });\n if (prevent) {\n if (panEvent.srcEvent.cancelable !== false) {\n panEvent.srcEvent.preventDefault();\n }\n panEvent.srcEvent.stopPropagation();\n }\n panEvent.preventSystemEvent = prevent;\n if (prevent && (this._isOverThreshold || distance >= threshold)) {\n this._dragged = preventClickOnDrag;\n this._isOverThreshold = true;\n this._observer.change(this, panEvent, toAxis(this.axes, offset));\n }\n activeEvent.prevEvent = panEvent;\n };\n __proto._onPanend = function (event) {\n var inputButton = this.options.inputButton;\n var activeEvent = this._activeEvent;\n activeEvent.onEventEnd(event);\n if (!this._enabled || activeEvent.getTouches(event, inputButton) !== 0) {\n return;\n }\n this._detachWindowEvent(activeEvent);\n clearTimeout(this._rightEdgeTimer);\n var prevEvent = activeEvent.prevEvent;\n var velocity = this._isOverThreshold ? this._getOffset([Math.abs(prevEvent.velocityX) * (prevEvent.offsetX < 0 ? -1 : 1), Math.abs(prevEvent.velocityY) * (prevEvent.offsetY < 0 ? -1 : 1)], [useDirection(DIRECTION_HORIZONTAL, this._direction), useDirection(DIRECTION_VERTICAL, this._direction)]) : [0, 0];\n activeEvent.onRelease();\n this._observer.release(this, prevEvent, velocity);\n };\n __proto._attachWindowEvent = function (activeEvent) {\n var _this = this;\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.move.forEach(function (event) {\n window.addEventListener(event, _this._onPanmove, getAddEventOptions(event));\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.end.forEach(function (event) {\n window.addEventListener(event, _this._onPanend, getAddEventOptions(event));\n });\n };\n __proto._detachWindowEvent = function (activeEvent) {\n var _this = this;\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.move.forEach(function (event) {\n window.removeEventListener(event, _this._onPanmove);\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.end.forEach(function (event) {\n window.removeEventListener(event, _this._onPanend);\n });\n };\n __proto._getOffset = function (properties, direction) {\n var scale = this.options.scale;\n return [direction[0] ? properties[0] * scale[0] : 0, direction[1] ? properties[1] * scale[1] : 0];\n };\n __proto._getDistance = function (delta, direction) {\n return Math.sqrt(Number(direction[0]) * Math.pow(delta[0], 2) + Number(direction[1]) * Math.pow(delta[1], 2));\n };\n __proto._attachElementEvent = function (observer) {\n var _this = this;\n var activeEvent = convertInputType(this.options.inputType);\n var element = this.element;\n if (!activeEvent) {\n return;\n }\n if (!element) {\n throw new Error(\"Element to connect input does not exist.\");\n }\n this._observer = observer;\n this.enable();\n this._activeEvent = activeEvent;\n element.addEventListener(\"click\", this._preventClickWhenDragged, true);\n activeEvent.start.forEach(function (event) {\n element.addEventListener(event, _this._onPanstart);\n });\n // adding event listener to element prevents invalid behavior in iOS Safari\n activeEvent.move.forEach(function (event) {\n element.addEventListener(event, _this._voidFunction);\n });\n };\n __proto._detachElementEvent = function () {\n var _this = this;\n var activeEvent = this._activeEvent;\n var element = this.element;\n if (element) {\n element.removeEventListener(\"click\", this._preventClickWhenDragged, true);\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.start.forEach(function (event) {\n element.removeEventListener(event, _this._onPanstart);\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.move.forEach(function (event) {\n element.removeEventListener(event, _this._voidFunction);\n });\n }\n this.disable();\n this._observer = null;\n };\n return PanInput;\n}();\n\n/**\n * A module that passes the angle moved by touch to Axes and uses one axis of rotation.\n * [Details](https://github.com/naver/egjs-axes/wiki/RotatePanInput)\n * @ko 터치에 의해 움직인 각도를 Axes 에 전달하며 1개의 회전축만 사용한다.\n * [상세내용](https://github.com/naver/egjs-axes/wiki/RotatePanInput-%7C-%ED%95%9C%EA%B5%AD%EC%96%B4)\n *\n * @example\n * ```js\n * const input = new eg.Axes.RotatePanInput(\"#area\");\n *\n * var axes = new eg.Axes({\n *\t// property name('angle') could be anything you want (eg. x, y, z...)\n * \tangle: {\n * \t\trange: [-180, 180] // from -180deg to 180deg\n * \t}\n * });\n *\n * axes.connect(\"angle\", input)\n * ```\n * @param {HTMLElement|String|jQuery} element An element to use the eg.Axes.RotatePanInput module <ko>eg.Axes.RotatePanInput 모듈을 사용할 엘리먼트</ko>\n * @param {PanInputOption} [options] The option object of the eg.Axes.PanInput module<ko>eg.Axes.PanInput 모듈의 옵션 객체</ko>\n * @extends PanInput\n */\nvar RotatePanInput = /*#__PURE__*/function (_super) {\n __extends(RotatePanInput, _super);\n /**\n *\n */\n function RotatePanInput(el, options) {\n var _this = _super.call(this, el, options) || this;\n _this._prevQuadrant = null;\n _this._lastDiff = 0;\n return _this;\n }\n var __proto = RotatePanInput.prototype;\n __proto.mapAxes = function (axes) {\n this._direction = Axes.DIRECTION_ALL;\n this.axes = axes;\n };\n __proto._onPanstart = function (event) {\n var _a = this.options,\n inputKey = _a.inputKey,\n inputButton = _a.inputButton;\n var activeEvent = this._activeEvent;\n var panEvent = activeEvent.onEventStart(event, inputKey, inputButton);\n if (!panEvent || !this.isEnabled()) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n this._observer.hold(this, panEvent);\n this._attachWindowEvent(activeEvent);\n // TODO: how to do if element is ellipse not circle.\n this._coefficientForDistanceToAngle = 360 / (rect.width * Math.PI); // from 2*pi*r * x / 360\n // TODO: provide a way to set origin like https://developer.mozilla.org/en-US/docs/Web/CSS/transform-origin\n this._rotateOrigin = [rect.left + (rect.width - 1) / 2, rect.top + (rect.height - 1) / 2];\n // init angle.\n this._prevAngle = null;\n this._triggerChange(panEvent);\n activeEvent.prevEvent = panEvent;\n };\n __proto._onPanmove = function (event) {\n var _a = this.options,\n inputKey = _a.inputKey,\n inputButton = _a.inputButton;\n var activeEvent = this._activeEvent;\n var panEvent = activeEvent.onEventMove(event, inputKey, inputButton);\n if (!panEvent || !this.isEnabled()) {\n return;\n }\n if (panEvent.srcEvent.cancelable !== false) {\n panEvent.srcEvent.preventDefault();\n }\n panEvent.srcEvent.stopPropagation();\n this._triggerChange(panEvent);\n activeEvent.prevEvent = panEvent;\n };\n __proto._onPanend = function (event) {\n var activeEvent = this._activeEvent;\n activeEvent.onEventEnd(event);\n if (!this.isEnabled()) {\n return;\n }\n var prevEvent = activeEvent.prevEvent;\n this._triggerChange(prevEvent);\n var vx = prevEvent.velocityX;\n var vy = prevEvent.velocityY;\n var velocity = Math.sqrt(vx * vx + vy * vy) * (this._lastDiff > 0 ? -1 : 1); // clockwise\n activeEvent.onRelease();\n this._observer.release(this, prevEvent, [velocity * this._coefficientForDistanceToAngle]);\n this._detachWindowEvent(activeEvent);\n };\n __proto._triggerChange = function (event) {\n var _a = this._getPosFromOrigin(event.center.x, event.center.y),\n x = _a.x,\n y = _a.y;\n var angle = getAngle(x, y);\n var positiveAngle = angle < 0 ? 360 + angle : angle;\n var quadrant = this._getQuadrant(event.center.x, event.center.y);\n var diff = this._getDifference(this._prevAngle, positiveAngle, this._prevQuadrant, quadrant);\n this._prevAngle = positiveAngle;\n this._prevQuadrant = quadrant;\n if (diff === 0) {\n return;\n }\n this._lastDiff = diff;\n this._observer.change(this, event, toAxis(this.axes, [-diff])); // minus for clockwise\n };\n\n __proto._getDifference = function (prevAngle, angle, prevQuadrant, quadrant) {\n var diff;\n if (prevAngle === null) {\n diff = 0;\n } else if (prevQuadrant === 1 && quadrant === 4) {\n diff = -prevAngle - (360 - angle);\n } else if (prevQuadrant === 4 && quadrant === 1) {\n diff = 360 - prevAngle + angle;\n } else {\n diff = angle - prevAngle;\n }\n return diff;\n };\n __proto._getPosFromOrigin = function (posX, posY) {\n return {\n x: posX - this._rotateOrigin[0],\n y: this._rotateOrigin[1] - posY\n };\n };\n __proto._getQuadrant = function (posX, posY) {\n /**\n * Quadrant\n * y(+)\n * |\n * 2 | 1\n * --------------->x(+)\n * 3 | 4\n * |\n */\n var _a = this._getPosFromOrigin(posX, posY),\n x = _a.x,\n y = _a.y;\n var q = 0;\n if (x >= 0 && y >= 0) {\n q = 1;\n } else if (x < 0 && y >= 0) {\n q = 2;\n } else if (x < 0 && y < 0) {\n q = 3;\n } else if (x >= 0 && y < 0) {\n q = 4;\n }\n return q;\n };\n return RotatePanInput;\n}(PanInput);\n\n/**\n * @typedef {Object} PinchInputOption The option object of the eg.Axes.PinchInput module\n * @ko eg.Axes.PinchInput 모듈의 옵션 객체\n * @param {Number} [scale=1] Coordinate scale that a user can move<ko>사용자의 동작으로 이동하는 좌표의 배율</ko>\n * @param {Number} [threshold=0] Minimal scale before recognizing <ko>사용자의 Pinch 동작을 인식하기 위해산 최소한의 배율</ko>\n * @param {String[]} [inputType=[\"touch\", \"pointer\"]] Types of input devices\n * - touch: Touch screen\n * - pointer: Mouse and touch <ko>입력 장치 종류\n * - touch: 터치 입력 장치\n * - pointer: 마우스 및 터치</ko>\n * @param {String} [touchAction=\"none\"] Value that overrides the element's \"touch-action\" css property. It is set to \"none\" to prevent scrolling during touch. <ko>엘리먼트의 \"touch-action\" CSS 속성을 덮어쓰는 값. 터치 도중 스크롤을 방지하기 위해 \"none\" 으로 설정되어 있다.</ko>\n **/\n/**\n * A module that passes the amount of change to eg.Axes when two pointers are moving toward (zoom-in) or away from each other (zoom-out). use one axis.\n * @ko 2개의 pointer를 이용하여 zoom-in하거나 zoom-out 하는 동작의 변화량을 eg.Axes에 전달하는 모듈. 한 개 의 축을 사용한다.\n * @example\n * ```js\n * const pinch = new eg.Axes.PinchInput(\"#area\", {\n * scale: 1\n * });\n *\n * // Connect 'something' axis when two pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * axes.connect(\"something\", pinch);\n * ```\n * @param {HTMLElement|String|jQuery} element An element to use the eg.Axes.PinchInput module <ko>eg.Axes.PinchInput 모듈을 사용할 엘리먼트</ko>\n * @param {PinchInputOption} [options] The option object of the eg.Axes.PinchInput module<ko>eg.Axes.PinchInput 모듈의 옵션 객체</ko>\n */\nvar PinchInput = /*#__PURE__*/function () {\n /**\n *\n */\n function PinchInput(el, options) {\n this.axes = [];\n this.element = null;\n this._pinchFlag = false;\n this._enabled = false;\n this._activeEvent = null;\n this._isOverThreshold = false;\n this.element = $(el);\n this.options = __assign({\n scale: 1,\n threshold: 0,\n inputType: [\"touch\", \"pointer\"],\n touchAction: \"none\"\n }, options);\n this._onPinchStart = this._onPinchStart.bind(this);\n this._onPinchMove = this._onPinchMove.bind(this);\n this._onPinchEnd = this._onPinchEnd.bind(this);\n }\n var __proto = PinchInput.prototype;\n __proto.mapAxes = function (axes) {\n this.axes = axes;\n };\n __proto.connect = function (observer) {\n if (this._activeEvent) {\n this._detachEvent();\n }\n this._attachEvent(observer);\n this._originalCssProps = setCssProps(this.element, this.options, DIRECTION_ALL);\n return this;\n };\n __proto.disconnect = function () {\n this._detachEvent();\n if (!isCssPropsFromAxes(this._originalCssProps)) {\n revertCssProps(this.element, this._originalCssProps);\n }\n return this;\n };\n /**\n * Destroys elements, properties, and events used in a module.\n * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.\n */\n __proto.destroy = function () {\n this.disconnect();\n this.element = null;\n };\n /**\n * Enables input devices\n * @ko 입력 장치를 사용할 수 있게 한다\n * @return {PinchInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.enable = function () {\n this._enabled = true;\n return this;\n };\n /**\n * Disables input devices\n * @ko 입력 장치를 사용할 수 없게 한다.\n * @return {PinchInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.disable = function () {\n this._enabled = false;\n return this;\n };\n /**\n * Returns whether to use an input device\n * @ko 입력 장치를 사용 여부를 반환한다.\n * @return {Boolean} Whether to use an input device <ko>입력장치 사용여부</ko>\n */\n __proto.isEnabled = function () {\n return this._enabled;\n };\n __proto._onPinchStart = function (event) {\n var activeEvent = this._activeEvent;\n var pinchEvent = activeEvent.onEventStart(event);\n if (!pinchEvent || !this._enabled || activeEvent.getTouches(event) !== 2) {\n return;\n }\n this._baseValue = this._observer.get(this)[this.axes[0]];\n this._observer.hold(this, event);\n this._pinchFlag = true;\n this._isOverThreshold = false;\n activeEvent.prevEvent = pinchEvent;\n };\n __proto._onPinchMove = function (event) {\n var threshold = this.options.threshold;\n var activeEvent = this._activeEvent;\n var pinchEvent = activeEvent.onEventMove(event);\n if (!pinchEvent || !this._pinchFlag || !this._enabled || activeEvent.getTouches(event) !== 2) {\n return;\n }\n var distance = this._getDistance(pinchEvent.scale);\n var offset = this._getOffset(pinchEvent.scale, activeEvent.prevEvent.scale);\n if (this._isOverThreshold || distance >= threshold) {\n this._isOverThreshold = true;\n this._observer.change(this, event, toAxis(this.axes, [offset]));\n }\n activeEvent.prevEvent = pinchEvent;\n };\n __proto._onPinchEnd = function (event) {\n var activeEvent = this._activeEvent;\n activeEvent.onEventEnd(event);\n if (!this._pinchFlag || !this._enabled || activeEvent.getTouches(event) >= 2) {\n return;\n }\n activeEvent.onRelease();\n this._observer.release(this, event, [0], 0);\n this._baseValue = null;\n this._pinchFlag = false;\n };\n __proto._attachEvent = function (observer) {\n var _this = this;\n var activeEvent = convertInputType(this.options.inputType);\n var element = this.element;\n if (!activeEvent) {\n return;\n }\n if (!element) {\n throw new Error(\"Element to connect input does not exist.\");\n }\n this._observer = observer;\n this._enabled = true;\n this._activeEvent = activeEvent;\n activeEvent.start.forEach(function (event) {\n element.addEventListener(event, _this._onPinchStart, false);\n });\n activeEvent.move.forEach(function (event) {\n element.addEventListener(event, _this._onPinchMove, false);\n });\n activeEvent.end.forEach(function (event) {\n element.addEventListener(event, _this._onPinchEnd, false);\n });\n };\n __proto._detachEvent = function () {\n var _this = this;\n var activeEvent = this._activeEvent;\n var element = this.element;\n if (element) {\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.start.forEach(function (event) {\n element.removeEventListener(event, _this._onPinchStart, false);\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.move.forEach(function (event) {\n element.removeEventListener(event, _this._onPinchMove, false);\n });\n activeEvent === null || activeEvent === void 0 ? void 0 : activeEvent.end.forEach(function (event) {\n element.removeEventListener(event, _this._onPinchEnd, false);\n });\n }\n this._enabled = false;\n this._observer = null;\n };\n __proto._getOffset = function (pinchScale, prev) {\n if (prev === void 0) {\n prev = 1;\n }\n return this._baseValue * (pinchScale - prev) * this.options.scale;\n };\n __proto._getDistance = function (pinchScale) {\n return Math.abs(pinchScale - 1);\n };\n return PinchInput;\n}();\n\n/**\n * @typedef {Object} WheelInputOption The option object of the eg.Axes.WheelInput module\n * @ko eg.Axes.WheelInput 모듈의 옵션 객체\n * @param {String[]} [inputKey=[\"any\"]] List of key combinations to allow input\n * - any: any key\n * - shift: shift key\n * - ctrl: ctrl key and pinch gesture on the trackpad\n * - alt: alt key\n * - meta: meta key\n * - none: none of these keys are pressed <ko>입력을 허용할 키 조합 목록\n * - any: 아무 키\n * - shift: shift 키\n * - ctrl: ctrl 키 및 트랙패드의 pinch 제스쳐\n * - alt: alt 키\n * - meta: meta 키\n * - none: 아무 키도 눌리지 않은 상태 </ko>\n * @param {Number} [scale=1] Coordinate scale that a user can move<ko>사용자의 동작으로 이동하는 좌표의 배율</ko>\n * @param {Number} [releaseDelay=300] Millisecond that trigger release event after last input<ko>마지막 입력 이후 release 이벤트가 트리거되기까지의 밀리초</ko>\n * @param {Boolean} [useNormalized=true] Whether to calculate scroll speed the same in all browsers<ko>모든 브라우저에서 스크롤 속도를 동일하게 처리할지 여부</ko>\n * @param {Boolean} [useAnimation=false] Whether to process coordinate changes through the mouse wheel as a continuous animation<ko>마우스 휠을 통한 좌표 변화를 연속적인 애니메이션으로 처리할지 여부</ko>\n **/\n/**\n * A module that passes the amount of change to eg.Axes when the mouse wheel is moved. use one axis.\n * @ko 마우스 휠이 움직일때의 변화량을 eg.Axes에 전달하는 모듈. 두개 이하의 축을 사용한다.\n *\n * @example\n * ```js\n * const wheel = new eg.Axes.WheelInput(\"#area\", {\n * scale: 1\n * });\n *\n * // Connect only one 'something1' axis to the vertical mouse wheel.\n * axes.connect([\"something1\"], wheel); // or axes.connect(\"something1\", wheel);\n *\n * // Connect only one 'something2' axis to the horizontal mouse wheel.\n * axes.connect([\"\", \"something2\"], wheel); // or axes.connect(\" something2\", pan);\n *\n * // Connect the 'something1' axis to the vertical mouse wheel.\n * // Connect the 'something2' axis to the horizontal mouse wheel.\n * axes.connect([\"something1\", \"something2\"], wheel);\n * ```\n * @param {HTMLElement|String|jQuery} element An element to use the eg.Axes.WheelInput module <ko>eg.Axes.WheelInput 모듈을 사용할 엘리먼트</ko>\n * @param {WheelInputOption} [options] The option object of the eg.Axes.WheelInput module<ko>eg.Axes.WheelInput 모듈의 옵션 객체</ko>\n */\nvar WheelInput = /*#__PURE__*/function () {\n /**\n *\n */\n function WheelInput(el, options) {\n this.axes = [];\n this.element = null;\n this._enabled = false;\n this._holding = false;\n this._timer = null;\n this.element = $(el);\n this.options = __assign({\n inputKey: [ANY],\n scale: 1,\n releaseDelay: 300,\n useNormalized: true,\n useAnimation: false\n }, options);\n this._onWheel = this._onWheel.bind(this);\n }\n var __proto = WheelInput.prototype;\n __proto.mapAxes = function (axes) {\n // vertical mouse wheel is mapped into axes[0]\n this._direction = getDirection(!!axes[1], !!axes[0]);\n this.axes = axes;\n };\n __proto.connect = function (observer) {\n this._detachEvent();\n this._attachEvent(observer);\n return this;\n };\n __proto.disconnect = function () {\n this._detachEvent();\n return this;\n };\n /**\n * Destroys elements, properties, and events used in a module.\n * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.\n */\n __proto.destroy = function () {\n this.disconnect();\n this.element = null;\n };\n /**\n * Enables input devices\n * @ko 입력 장치를 사용할 수 있게 한다\n * @return {WheelInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.enable = function () {\n this._enabled = true;\n return this;\n };\n /**\n * Disables input devices\n * @ko 입력 장치를 사용할 수 없게 한다.\n * @return {WheelInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.disable = function () {\n this._enabled = false;\n return this;\n };\n /**\n * Returns whether to use an input device\n * @ko 입력 장치를 사용 여부를 반환한다.\n * @return {Boolean} Whether to use an input device <ko>입력장치 사용여부</ko>\n */\n __proto.isEnabled = function () {\n return this._enabled;\n };\n __proto._onWheel = function (event) {\n var _this = this;\n if (!this._enabled || !isValidKey(event, this.options.inputKey)) {\n return;\n }\n var offset = this._getOffset([event.deltaY, event.deltaX], [useDirection(DIRECTION_VERTICAL, this._direction), useDirection(DIRECTION_HORIZONTAL, this._direction)]);\n if (offset[0] === 0 && offset[1] === 0) {\n return;\n }\n event.preventDefault();\n if (!this._holding) {\n this._observer.hold(this, event);\n this._holding = true;\n }\n this._observer.change(this, event, toAxis(this.axes, offset), this.options.useAnimation);\n clearTimeout(this._timer);\n this._timer = setTimeout(function () {\n if (_this._holding) {\n _this._holding = false;\n _this._observer.release(_this, event, [0]);\n }\n }, this.options.releaseDelay);\n };\n __proto._getOffset = function (properties, direction) {\n var scale = this.options.scale;\n var useNormalized = this.options.useNormalized;\n return [direction[0] && properties[0] ? (properties[0] > 0 ? -1 : 1) * (useNormalized ? 1 : Math.abs(properties[0])) * scale : 0, direction[1] && properties[1] ? (properties[1] > 0 ? -1 : 1) * (useNormalized ? 1 : Math.abs(properties[1])) * scale : 0];\n };\n __proto._attachEvent = function (observer) {\n var element = this.element;\n if (!element) {\n throw new Error(\"Element to connect input does not exist.\");\n }\n this._observer = observer;\n element.addEventListener(\"wheel\", this._onWheel);\n this._enabled = true;\n };\n __proto._detachEvent = function () {\n var element = this.element;\n if (element) {\n this.element.removeEventListener(\"wheel\", this._onWheel);\n }\n this._enabled = false;\n this._observer = null;\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = null;\n }\n };\n return WheelInput;\n}();\n\nvar KEY_LEFT_ARROW = 37;\nvar KEY_A = 65;\nvar KEY_UP_ARROW = 38;\nvar KEY_W = 87;\nvar KEY_RIGHT_ARROW = 39;\nvar KEY_D = 68;\nvar KEY_DOWN_ARROW = 40;\nvar KEY_S = 83;\n/* eslint-disable */\nvar DIRECTION_REVERSE = -1;\nvar DIRECTION_FORWARD = 1;\nvar DIRECTION_HORIZONTAL$1 = -1;\nvar DIRECTION_VERTICAL$1 = 1;\nvar DELAY = 80;\n/**\n * @typedef {Object} MoveKeyInputOption The option object of the eg.Axes.MoveKeyInput module\n * @ko eg.Axes.MoveKeyInput 모듈의 옵션 객체\n * @param {Array<Number>} [scale] Coordinate scale that a user can move<ko>사용자의 동작으로 이동하는 좌표의 배율</ko>\n * @param {Number} [scale[0]=1] Coordinate scale for the first axis<ko>첫번째 축의 배율</ko>\n * @param {Number} [scale[1]=1] Coordinate scale for the decond axis<ko>두번째 축의 배율</ko>\n **/\n/**\n * A module that passes the amount of change to eg.Axes when the move key stroke is occured. use two axis.\n * @ko 이동키 입력이 발생했을 때의 변화량을 eg.Axes에 전달하는 모듈. 두 개 의 축을 사용한다.\n *\n * @example\n * ```js\n * const moveKey = new eg.Axes.MoveKeyInput(\"#area\", {\n * scale: [1, 1]\n * });\n *\n * // Connect 'x', 'y' axes when the moveKey is pressed.\n * axes.connect([\"x\", \"y\"], moveKey);\n * ```\n * @param {HTMLElement|String|jQuery} element An element to use the eg.Axes.MoveKeyInput module <ko>eg.Axes.MoveKeyInput 모듈을 사용할 엘리먼트</ko>\n * @param {MoveKeyInputOption} [options] The option object of the eg.Axes.MoveKeyInput module<ko>eg.Axes.MoveKeyInput 모듈의 옵션 객체</ko>\n */\nvar MoveKeyInput = /*#__PURE__*/function () {\n /**\n *\n */\n function MoveKeyInput(el, options) {\n this.axes = [];\n this.element = null;\n this._enabled = false;\n this._holding = false;\n this._timer = null;\n this.element = $(el);\n this.options = __assign({\n scale: [1, 1]\n }, options);\n this._onKeydown = this._onKeydown.bind(this);\n this._onKeyup = this._onKeyup.bind(this);\n }\n var __proto = MoveKeyInput.prototype;\n __proto.mapAxes = function (axes) {\n this.axes = axes;\n };\n __proto.connect = function (observer) {\n this._detachEvent();\n // add tabindex=\"0\" to the container for making it focusable\n if (this.element.getAttribute(\"tabindex\") !== \"0\") {\n this.element.setAttribute(\"tabindex\", \"0\");\n }\n this._attachEvent(observer);\n return this;\n };\n __proto.disconnect = function () {\n this._detachEvent();\n return this;\n };\n /**\n * Destroys elements, properties, and events used in a module.\n * @ko 모듈에 사용한 엘리먼트와 속성, 이벤트를 해제한다.\n */\n __proto.destroy = function () {\n this.disconnect();\n this.element = null;\n };\n /**\n * Enables input devices\n * @ko 입력 장치를 사용할 수 있게 한다\n * @return {MoveKeyInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.enable = function () {\n this._enabled = true;\n return this;\n };\n /**\n * Disables input devices\n * @ko 입력 장치를 사용할 수 없게 한다.\n * @return {MoveKeyInput} An instance of a module itself <ko>모듈 자신의 인스턴스</ko>\n */\n __proto.disable = function () {\n this._enabled = false;\n return this;\n };\n /**\n * Returns whether to use an input device\n * @ko 입력 장치를 사용 여부를 반환한다.\n * @return {Boolean} Whether to use an input device <ko>입력장치 사용여부</ko>\n */\n __proto.isEnabled = function () {\n return this._enabled;\n };\n __proto._onKeydown = function (event) {\n if (!this._enabled) {\n return;\n }\n var isMoveKey = true;\n var direction = DIRECTION_FORWARD;\n var move = DIRECTION_HORIZONTAL$1;\n switch (event.keyCode) {\n case KEY_LEFT_ARROW:\n case KEY_A:\n direction = DIRECTION_REVERSE;\n break;\n case KEY_RIGHT_ARROW:\n case KEY_D:\n break;\n case KEY_DOWN_ARROW:\n case KEY_S:\n direction = DIRECTION_REVERSE;\n move = DIRECTION_VERTICAL$1;\n break;\n case KEY_UP_ARROW:\n case KEY_W:\n move = DIRECTION_VERTICAL$1;\n break;\n default:\n isMoveKey = false;\n }\n if (move === DIRECTION_HORIZONTAL$1 && !this.axes[0] || move === DIRECTION_VERTICAL$1 && !this.axes[1]) {\n isMoveKey = false;\n }\n if (!isMoveKey) {\n return;\n }\n event.preventDefault();\n var offsets = move === DIRECTION_HORIZONTAL$1 ? [+this.options.scale[0] * direction, 0] : [0, +this.options.scale[1] * direction];\n if (!this._holding) {\n this._observer.hold(this, event);\n this._holding = true;\n }\n clearTimeout(this._timer);\n this._observer.change(this, event, toAxis(this.axes, offsets));\n };\n __proto._onKeyup = function (event) {\n var _this = this;\n if (!this._holding) {\n return;\n }\n clearTimeout(this._timer);\n this._timer = setTimeout(function () {\n _this._observer.release(_this, event, [0, 0]);\n _this._holding = false;\n }, DELAY);\n };\n __proto._attachEvent = function (observer) {\n var element = this.element;\n if (!element) {\n throw new Error(\"Element to connect input does not exist.\");\n }\n this._observer = observer;\n element.addEventListener(\"keydown\", this._onKeydown, false);\n element.addEventListener(\"keypress\", this._onKeydown, false);\n element.addEventListener(\"keyup\", this._onKeyup, false);\n this._enabled = true;\n };\n __proto._detachEvent = function () {\n var element = this.element;\n if (element) {\n element.removeEventListener(\"keydown\", this._onKeydown, false);\n element.removeEventListener(\"keypress\", this._onKeydown, false);\n element.removeEventListener(\"keyup\", this._onKeyup, false);\n }\n this._enabled = false;\n this._observer = null;\n };\n return MoveKeyInput;\n}();\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nvar REACTIVE_AXES = {\n methods: AXES_METHODS,\n events: AXES_EVENTS,\n created: function (data) {\n return new Axes(data.axis, data.options);\n },\n on: function (instance, name, callback) {\n instance.on(name, callback);\n },\n off: function (instance, name, callback) {\n instance.off(name, callback);\n },\n destroy: function (instance) {\n instance.destroy();\n }\n};\n\n/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\nexport default Axes;\nexport { PanInput, RotatePanInput, PinchInput, WheelInput, MoveKeyInput, AXES_METHODS, AXES_EVENTS, REACTIVE_AXES };\n//# sourceMappingURL=axes.esm.js.map\n",null,null,null,null,null,null],"names":["extendStatics","__extends","__assign","toArray","STATE_IDENTIFIER","StateMachine","getAgent","requestAnimationFrame","cancelAnimationFrame","ComponentEvent"],"mappings":"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"}