UNPKG

lisn.js

Version:

Simply handle user gestures and actions. Includes widgets.

1 lines 12.3 kB
{"version":3,"file":"trigger.cjs","names":["MC","_interopRequireWildcard","require","MH","_log","_tasks","_text","_trigger","_action","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","Enable","register","registerAction","element","ids","constructor","_enable","_disable","_toggleEnable","getMethods","do","undo","S_TOGGLE","exports","Disable","Run","_run","_reverse","_toggle","triggerPromises","getTriggers","method","triggers","trigger","lengthOf","logWarn","id","Trigger","waitForDelay","formatAsString","push"],"sources":["../../../src/ts/actions/trigger.ts"],"sourcesContent":["/**\n * @module Actions\n *\n * @categoryDescription Controlling triggers\n * {@link Enable} and {@link Disable} enable or disable a list of triggers\n * defined on the given element.\n *\n * {@link Run} runs or reverses a list of triggers defined on the given\n * element.\n */\n\nimport * as MC from \"@lisn/globals/minification-constants\";\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport { logWarn } from \"@lisn/utils/log\";\nimport { waitForDelay } from \"@lisn/utils/tasks\";\nimport { formatAsString } from \"@lisn/utils/text\";\n\nimport { Trigger } from \"@lisn/triggers/trigger\";\n\nimport { Action, registerAction } from \"@lisn/actions/action\";\n\n/**\n * Enables or disables a list of triggers defined on the given element.\n *\n * **IMPORTANT:** When constructed, it disables all given triggers as a form of\n * initialization.\n *\n * -------\n *\n * To use with auto-widgets (HTML API) as part of a trigger specification:\n * - Action name: \"enable\".\n * - Arguments (required): one or more unique IDs of triggers defined on the\n * given element\n * - Options: none\n *\n * @example\n * ```html\n * <button id=\"btn\">Enable/disable</button>\n * <button data-lisn-on-click=\"\n * @enable: triggerA,triggerB +target=#btn\n * @add-class: clsA +id=triggerA\n * \"\n * data-lisn-on-click=\"@add-class: clsB +id=triggerB\"\n * ></button>\n * ```\n *\n * @category Controlling triggers\n */\nexport class Enable implements Action {\n /**\n * Enables the triggers with IDs given to the constructor.\n */\n readonly do: () => Promise<void>;\n\n /**\n * Disables the triggers with IDs given to the constructor.\n */\n readonly undo: () => Promise<void>;\n\n /**\n * Toggles the enabled state on each trigger given to the constructor.\n */\n readonly toggle: () => Promise<void>;\n\n static register() {\n registerAction(\"enable\", (element, ids) => new Enable(element, ...ids));\n }\n\n constructor(element: Element, ...ids: string[]) {\n const { _enable, _disable, _toggleEnable } = getMethods(element, ids);\n _disable(); // initial state\n\n this.do = _enable;\n this.undo = _disable;\n this[MC.S_TOGGLE] = _toggleEnable;\n }\n}\n\n/**\n * Disables or enables a list of triggers defined on the given element.\n *\n * **IMPORTANT:** When constructed, it enables all given triggers as a form of\n * initialization.\n *\n * -------\n *\n * To use with auto-widgets (HTML API) as part of a trigger specification:\n * - Action name: \"disable\".\n * - Arguments (required): one or more unique IDs of triggers defined on the\n * given element\n * - Options: none\n *\n * @example\n * ```html\n * <button id=\"btn\">Enable/disable</button>\n * <button data-lisn-on-click=\"\n * @disable: triggerA,triggerB +target=#btn\n * @add-class: clsA +id=triggerA\n * \"\n * data-lisn-on-click=\"@add-class: clsB +id=triggerB\"\n * ></button>\n * ```\n *\n * @category Controlling triggers\n */\nexport class Disable implements Action {\n /**\n * Disables the triggers with IDs given to the constructor.\n */\n readonly do: () => Promise<void>;\n\n /**\n * Enables the triggers with IDs given to the constructor.\n */\n readonly undo: () => Promise<void>;\n\n /**\n * Toggles the enabled state on each trigger given to the constructor.\n */\n readonly toggle: () => Promise<void>;\n\n static register() {\n registerAction(\"disable\", (element, ids) => new Disable(element, ...ids));\n }\n\n constructor(element: Element, ...ids: string[]) {\n const { _enable, _disable, _toggleEnable } = getMethods(element, ids);\n _enable(); // initial state\n\n this.do = _disable;\n this.undo = _enable;\n this[MC.S_TOGGLE] = _toggleEnable;\n }\n}\n\n/**\n * Runs or reverses a list of triggers defined on the given element.\n *\n * -------\n *\n * To use with auto-widgets (HTML API) as part of a trigger specification:\n * - Action name: \"run\".\n * - Arguments (required): one or more unique IDs of triggers defined on the\n * given element\n * - Options: none\n *\n * @example\n * ```html\n * <button data-lisn-on-click=\"\n * @run: triggerA,triggerB\n * @add-class: clsA +id=triggerA\n * \"\n * data-lisn-on-run=\"@add-class: clsB +id=triggerB\"\n * ></button>\n * ```\n *\n * @category Controlling triggers\n */\nexport class Run implements Action {\n /**\n * Runs the triggers with IDs given to the constructor.\n */\n readonly do: () => Promise<void>;\n\n /**\n * Reverses the triggers with IDs given to the constructor.\n */\n readonly undo: () => Promise<void>;\n\n /**\n * Toggles the triggers with IDs given to the constructor.\n */\n readonly toggle: () => Promise<void>;\n\n static register() {\n registerAction(\"run\", (element, ids) => new Run(element, ...ids));\n }\n\n constructor(element: Element, ...ids: string[]) {\n const { _run, _reverse, _toggle } = getMethods(element, ids);\n\n this.do = _run;\n this.undo = _reverse;\n this[MC.S_TOGGLE] = _toggle;\n }\n}\n\n// --------------------\n\nconst getMethods = (element: Element, ids: string[]) => {\n const triggerPromises = getTriggers(element, ids);\n const call = async (\n method:\n | \"enable\"\n | \"disable\"\n | \"toggleEnable\"\n | \"run\"\n | \"reverse\"\n | \"toggle\",\n ) => {\n const triggers = await triggerPromises;\n for (const trigger of triggers) {\n trigger[method]();\n }\n };\n\n return {\n _enable: () => call(\"enable\"),\n _disable: () => call(\"disable\"),\n _toggleEnable: () => call(\"toggleEnable\"),\n _run: () => call(\"run\"),\n _reverse: () => call(\"reverse\"),\n _toggle: () => call(MC.S_TOGGLE),\n };\n};\n\nconst getTriggers = async (element: Element, ids: string[]) => {\n const triggers: Trigger[] = [];\n if (!MH.lengthOf(ids)) {\n logWarn(\"At least 1 ID is required for enable action\");\n return triggers;\n }\n\n for (const id of ids) {\n let trigger = Trigger.get(element, id);\n if (!trigger) {\n await waitForDelay(0); // in case it's being processed now\n trigger = Trigger.get(element, id);\n\n if (!trigger) {\n logWarn(\n `No trigger with ID ${id} for element ${formatAsString(element)}`,\n );\n continue;\n }\n }\n\n triggers.push(trigger);\n }\n\n return triggers;\n};\n"],"mappings":"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","ignoreList":[]}