You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
10 KiB

{"ast":null,"code":"import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar InteractionManager = function () {\n function InteractionManager() {\n _classCallCheck(this, InteractionManager);\n _defineProperty(this, \"waitForRelations\", new Map());\n _defineProperty(this, \"simultaneousRelations\", new Map());\n }\n _createClass(InteractionManager, [{\n key: \"configureInteractions\",\n value: function configureInteractions(handler, config) {\n this.dropRelationsForHandlerWithTag(handler.getTag());\n if (config.waitFor) {\n var waitFor = [];\n config.waitFor.forEach(function (otherHandler) {\n if (typeof otherHandler === 'number') {\n waitFor.push(otherHandler);\n } else {\n waitFor.push(otherHandler.handlerTag);\n }\n });\n this.waitForRelations.set(handler.getTag(), waitFor);\n }\n if (config.simultaneousHandlers) {\n var simultaneousHandlers = [];\n config.simultaneousHandlers.forEach(function (otherHandler) {\n if (typeof otherHandler === 'number') {\n simultaneousHandlers.push(otherHandler);\n } else {\n simultaneousHandlers.push(otherHandler.handlerTag);\n }\n });\n this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);\n }\n }\n }, {\n key: \"shouldWaitForHandlerFailure\",\n value: function shouldWaitForHandlerFailure(handler, otherHandler) {\n var waitFor = this.waitForRelations.get(handler.getTag());\n if (!waitFor) {\n return false;\n }\n var shouldWait = false;\n waitFor.forEach(function (tag) {\n if (tag === otherHandler.getTag()) {\n shouldWait = true;\n return;\n }\n });\n return shouldWait;\n }\n }, {\n key: \"shouldRecognizeSimultaneously\",\n value: function shouldRecognizeSimultaneously(handler, otherHandler) {\n var simultaneousHandlers = this.simultaneousRelations.get(handler.getTag());\n if (!simultaneousHandlers) {\n return false;\n }\n var shouldRecognizeSimultaneously = false;\n simultaneousHandlers.forEach(function (tag) {\n if (tag === otherHandler.getTag()) {\n shouldRecognizeSimultaneously = true;\n return;\n }\n });\n return shouldRecognizeSimultaneously;\n }\n }, {\n key: \"shouldRequireHandlerToWaitForFailure\",\n value: function shouldRequireHandlerToWaitForFailure(_handler, _otherHandler) {\n return false;\n }\n }, {\n key: \"shouldHandlerBeCancelledBy\",\n value: function shouldHandlerBeCancelledBy(_handler, _otherHandler) {\n return false;\n }\n }, {\n key: \"dropRelationsForHandlerWithTag\",\n value: function dropRelationsForHandlerWithTag(handlerTag) {\n this.waitForRelations.delete(handlerTag);\n this.simultaneousRelations.delete(handlerTag);\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.waitForRelations.clear();\n this.simultaneousRelations.clear();\n }\n }], [{\n key: \"getInstance\",\n value: function getInstance() {\n if (!this.instance) {\n this.instance = new InteractionManager();\n }\n return this.instance;\n }\n }]);\n return InteractionManager;\n}();\nexport { InteractionManager as default };\n_defineProperty(InteractionManager, \"instance\", void 0);","map":{"version":3,"sources":["InteractionManager.ts"],"names":["InteractionManager","Map","constructor","configureInteractions","handler","config","dropRelationsForHandlerWithTag","getTag","waitFor","forEach","otherHandler","push","handlerTag","waitForRelations","set","simultaneousHandlers","simultaneousRelations","shouldWaitForHandlerFailure","get","shouldWait","tag","shouldRecognizeSimultaneously","shouldRequireHandlerToWaitForFailure","_handler","_otherHandler","shouldHandlerBeCancelledBy","delete","reset","clear","getInstance","instance"],"mappings":"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","sourcesContent":["import GestureHandler from '../handlers/GestureHandler';\nimport { Config, Handler } from '../interfaces';\n\nexport default class InteractionManager {\n private static instance: InteractionManager;\n private readonly waitForRelations: Map<number, number[]> = new Map();\n private readonly simultaneousRelations: Map<number, number[]> = new Map();\n\n // Private becaues of singleton\n // eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function\n private constructor() {}\n\n public configureInteractions(handler: GestureHandler, config: Config) {\n this.dropRelationsForHandlerWithTag(handler.getTag());\n\n if (config.waitFor) {\n const waitFor: number[] = [];\n config.waitFor.forEach((otherHandler: Handler): void => {\n // New API reference\n if (typeof otherHandler === 'number') {\n waitFor.push(otherHandler);\n } else {\n // Old API reference\n waitFor.push(otherHandler.handlerTag);\n }\n });\n\n this.waitForRelations.set(handler.getTag(), waitFor);\n }\n\n if (config.simultaneousHandlers) {\n const simultaneousHandlers: number[] = [];\n config.simultaneousHandlers.forEach((otherHandler: Handler): void => {\n if (typeof otherHandler === 'number') {\n simultaneousHandlers.push(otherHandler);\n } else {\n simultaneousHandlers.push(otherHandler.handlerTag);\n }\n });\n\n this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);\n }\n }\n\n public shouldWaitForHandlerFailure(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const waitFor: number[] | undefined = this.waitForRelations.get(\n handler.getTag()\n );\n if (!waitFor) {\n return false;\n }\n\n let shouldWait = false;\n\n waitFor.forEach((tag: number): void => {\n if (tag === otherHandler.getTag()) {\n shouldWait = true;\n return; //Returns from callback\n }\n });\n\n return shouldWait;\n }\n\n public shouldRecognizeSimultaneously(\n handler: GestureHandler,\n otherHandler: GestureHandler\n ): boolean {\n const simultaneousHandlers: number[] | undefined =\n this.simultaneousRelations.get(handler.getTag());\n if (!simultaneousHandlers) {\n return false;\n }\n\n let shouldRecognizeSimultaneously = false;\n\n simultaneousHandlers.forEach((tag: number): void => {\n if (tag === otherHandler.getTag()) {\n shouldRecognizeSimultaneously = true;\n return;\n }\n });\n\n return shouldRecognizeSimultaneously;\n }\n\n public shouldRequireHandlerToWaitForFailure(\n _handler: GestureHandler,\n _otherHandler: GestureHandler\n ): boolean {\n //TODO: Implement logic\n return false;\n }\n\n public shouldHandlerBeCancelledBy(\n _handler: GestureHandler,\n _otherHandler: GestureHandler\n ): boolean {\n //TODO: Implement logic\n return false;\n }\n\n public dropRelationsForHandlerWithTag(handlerTag: number): void {\n this.waitForRelations.delete(handlerTag);\n this.simultaneousRelations.delete(handlerTag);\n }\n\n public reset() {\n this.waitForRelations.clear();\n this.simultaneousRelations.clear();\n }\n\n public static getInstance(): InteractionManager {\n if (!this.instance) {\n this.instance = new InteractionManager();\n }\n\n return this.instance;\n }\n}\n"]},"metadata":{},"sourceType":"module"}