UNPKG

lisn.js

Version:

Simply handle user gestures and actions. Includes widgets.

1 lines 8.62 kB
{"version":3,"file":"track-gesture.cjs","names":["MH","_interopRequireWildcard","require","_validation","_gestureWatcher","_widget","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TrackGesture","Widget","element","instance","DUMMY_ID","isInstanceOf","register","registerWidget","WIDGET_NAME","config","configValidator","constructor","id","GestureWatcher","reuse","trackGesture","preventDefault","minTotalDeltaX","minDeltaX","maxTotalDeltaX","maxDeltaX","minTotalDeltaY","minDeltaY","maxTotalDeltaY","maxDeltaY","minTotalDeltaZ","minDeltaZ","maxTotalDeltaZ","maxDeltaZ","onDestroy","noTrackGesture","exports","validateBoolean","validateNumber"],"sources":["../../../src/ts/widgets/track-gesture.ts"],"sourcesContent":["/**\n * @module Widgets\n */\n\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport { validateBoolean, validateNumber } from \"@lisn/utils/validation\";\n\nimport { GestureWatcher } from \"@lisn/watchers/gesture-watcher\";\n\nimport {\n Widget,\n WidgetConfigValidatorObject,\n registerWidget,\n} from \"@lisn/widgets/widget\";\n\n/**\n * This is a simple wrapper around the {@link GestureWatcher}. If you are using\n * the JavaScript API, you should use the {@link GestureWatcher} directly. The\n * purpose of this widget is to expose the watcher's ability to track gestures\n * and set relevant CSS properties via the HTML API. See\n * {@link GestureWatcher.trackGesture}.\n *\n * -----\n *\n * To use with auto-widgets (HTML API) (see\n * {@link Settings.settings.autoWidgets | settings.autoWidgets}), the following\n * CSS classes or data attributes are recognized:\n * - `lisn-track-gesture` class or `data-lisn-track-gesture` attribute set on\n * the element that constitutes the widget.\n *\n * See below examples for what values you can use set for the data attributes\n * in order to modify the configuration of the automatically created widget.\n *\n * @example\n * This will track user gestures over this element and set the relevant CSS\n * properties. It will use the default {@link GestureWatcher} options.\n *\n * ```html\n * <div class=\"lisn-track-gesture\"></div>\n * ```\n *\n * @example\n * As above but with custom settings.\n *\n * ```html\n * <div data-lisn-track-gesture=\"prevent-default=false\n * | min-delta-x=-100\n * | max-delta-x=100\n * | min-delta-y=-100\n * | max-delta-y=100\n * | min-delta-z=0.5\n * | max-delta-z=2\"\n * ></div>\n * ```\n */\nexport class TrackGesture extends Widget {\n static get(element: Element): TrackGesture | null {\n const instance = super.get(element, DUMMY_ID);\n if (MH.isInstanceOf(instance, TrackGesture)) {\n return instance;\n }\n return null;\n }\n\n static register() {\n registerWidget(\n WIDGET_NAME,\n (element, config) => {\n if (!TrackGesture.get(element)) {\n return new TrackGesture(element, config);\n }\n return null;\n },\n configValidator,\n );\n }\n\n constructor(element: Element, config?: TrackGestureConfig) {\n super(element, { id: DUMMY_ID });\n\n GestureWatcher.reuse().trackGesture(element, null, {\n preventDefault: config?.preventDefault,\n minTotalDeltaX: config?.minDeltaX,\n maxTotalDeltaX: config?.maxDeltaX,\n minTotalDeltaY: config?.minDeltaY,\n maxTotalDeltaY: config?.maxDeltaY,\n minTotalDeltaZ: config?.minDeltaZ,\n maxTotalDeltaZ: config?.maxDeltaZ,\n });\n\n this.onDestroy(() => GestureWatcher.reuse().noTrackGesture(element));\n }\n}\n\n/**\n * @interface\n */\nexport type TrackGestureConfig = {\n /**\n * Corresponds to\n * {@link Watchers/GestureWatcher.OnGestureOptions.preventDefault | OnGestureOptions.preventDefault}.\n *\n * @defaultValue undefined // GestureWatcher default\n */\n preventDefault?: boolean;\n\n /**\n * Corresponds to\n * {@link Watchers/GestureWatcher.OnGestureOptions.minTotalDeltaX | OnGestureOptions.minTotalDeltaX}.\n *\n * @defaultValue undefined // GestureWatcher default\n */\n minDeltaX?: number;\n\n /**\n * Corresponds to\n * {@link Watchers/GestureWatcher.OnGestureOptions.maxTotalDeltaX | OnGestureOptions.maxTotalDeltaX}.\n *\n * @defaultValue undefined // GestureWatcher default\n */\n maxDeltaX?: number;\n\n /**\n * Corresponds to\n * {@link Watchers/GestureWatcher.OnGestureOptions.minTotalDeltaY | OnGestureOptions.minTotalDeltaY}.\n *\n * @defaultValue undefined // GestureWatcher default\n */\n minDeltaY?: number;\n\n /**\n * Corresponds to\n * {@link Watchers/GestureWatcher.OnGestureOptions.maxTotalDeltaY | OnGestureOptions.maxTotalDeltaY}.\n *\n * @defaultValue undefined // GestureWatcher default\n */\n maxDeltaY?: number;\n\n /**\n * Corresponds to\n * {@link Watchers/GestureWatcher.OnGestureOptions.minTotalDeltaZ | OnGestureOptions.minTotalDeltaZ}.\n *\n * @defaultValue undefined // GestureWatcher default\n */\n minDeltaZ?: number;\n\n /**\n * Corresponds to\n * {@link Watchers/GestureWatcher.OnGestureOptions.maxTotalDeltaZ | OnGestureOptions.maxTotalDeltaZ}.\n *\n * @defaultValue undefined // GestureWatcher default\n */\n maxDeltaZ?: number;\n};\n\n// --------------------\n\nconst WIDGET_NAME = \"track-gesture\";\n// Only one TrackGesture widget per element is allowed, but Widget requires a\n// non-blank ID.\nconst DUMMY_ID = WIDGET_NAME;\n\nconst configValidator: WidgetConfigValidatorObject<TrackGestureConfig> = {\n preventDefault: validateBoolean,\n minDeltaX: validateNumber,\n maxDeltaX: validateNumber,\n minDeltaY: validateNumber,\n maxDeltaY: validateNumber,\n minDeltaZ: validateNumber,\n maxDeltaZ: validateNumber,\n};\n"],"mappings":"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","ignoreList":[]}