lisn.js
Version:
Simply handle user gestures and actions. Includes widgets.
1 lines • 19 kB
Source Map (JSON)
{"version":3,"file":"pager.cjs","names":["MC","_interopRequireWildcard","require","MH","_math","_pager","_widget","_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","NextPage","register","registerAction","element","constructor","toggleState","_nextPage","_prevPage","getMethods","do","undo","S_TOGGLE","method","exports","PrevPage","GoToPage","args","toInt","pageNum","usageError","_goToPage","EnablePage","_enablePage","_disablePage","_togglePage","DisablePage","lastPageNum","nextPage","widget","prevPage","goToPage","altPageNum","currentNum","getCurrentPageNum","targetNum","enablePage","disablePage","togglePage","widgetPromise","fetchUniqueWidget","Pager","then","w"],"sources":["../../../src/ts/actions/pager.ts"],"sourcesContent":["/**\n * @module Actions\n *\n * @categoryDescription Controlling pagers\n * {@link NextPage} and {@link PrevPage} advance or reverse the {@link Pager}\n * widget setup for the given element.\n *\n * {@link GoToPage} sets the {@link Pager} to the given page or toggles to the\n * last saved one.\n *\n * {@link EnablePage} and {@link DisablePage} enable or disable the given page\n * of the {@link Pager} widget setup for the given element.\n */\n\nimport * as MC from \"@lisn/globals/minification-constants\";\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nimport { toInt } from \"@lisn/utils/math\";\n\nimport { Pager } from \"@lisn/widgets/pager\";\nimport { fetchUniqueWidget } from \"@lisn/widgets/widget\";\n\nimport { Action, registerAction } from \"@lisn/actions/action\";\n\n/**\n * Advances or reverses the {@link Pager} widget setup for the given element.\n *\n * -------\n *\n * To use with auto-widgets (HTML API) as part of a trigger specification:\n * - Action name: \"next-page\".\n * - Accepted string arguments: none\n * - Accepted options: none\n *\n * @example\n * ```html\n * <div class=\"lisn-pager\" data-lisn-on-click=\"@next-page +target=#myNextButton\"></div>\n * <button id=\"myNextButton\"></button>\n * ```\n *\n * @category Controlling pagers\n */\nexport class NextPage implements Action {\n /**\n * Advances the pager by one page.\n */\n readonly do: () => Promise<void>;\n\n /**\n * Reverses the pager by one page.\n */\n readonly undo: () => Promise<void>;\n\n /**\n * Undoes the last action: reverses the pager if {@link do} was last called\n * or advances it otherwise.\n */\n readonly toggle: () => Promise<void>;\n\n static register() {\n registerAction(\"next-page\", (element) => new NextPage(element));\n }\n\n constructor(element: Element) {\n let toggleState = false;\n const { _nextPage, _prevPage } = getMethods(element);\n\n this.do = () => {\n toggleState = true;\n return _nextPage();\n };\n\n this.undo = () => {\n toggleState = false;\n return _prevPage();\n };\n\n this[MC.S_TOGGLE] = () => {\n const method = toggleState ? _prevPage : _nextPage;\n toggleState = !toggleState;\n return method();\n };\n }\n}\n\n/**\n * Reverses or advances the {@link Pager} widget setup for the given element.\n *\n * -------\n *\n * To use with auto-widgets (HTML API) as part of a trigger specification:\n * - Action name: \"prev-page\".\n * - Accepted string arguments: none\n * - Accepted options: none\n *\n * @example\n * ```html\n * <div class=\"lisn-pager\" data-lisn-on-click=\"@prev-page +target=#myPrevButton\"></div>\n * <button id=\"myPrevButton\"></button>\n * ```\n *\n * @category Controlling pagers\n */\nexport class PrevPage implements Action {\n /**\n * Reverses the pager by one page.\n */\n readonly do: () => Promise<void>;\n\n /**\n * Advances the pager by one page.\n */\n readonly undo: () => Promise<void>;\n\n /**\n * Undoes the last action: advances the pager if {@link do} was last called\n * or reverses it otherwise.\n */\n readonly toggle: () => Promise<void>;\n\n static register() {\n registerAction(\"prev-page\", (element) => new PrevPage(element));\n }\n\n constructor(element: Element) {\n let toggleState = false;\n const { _nextPage, _prevPage } = getMethods(element);\n\n this.do = () => {\n toggleState = true;\n return _prevPage();\n };\n\n this.undo = () => {\n toggleState = false;\n return _nextPage();\n };\n\n this[MC.S_TOGGLE] = () => {\n const method = toggleState ? _nextPage : _prevPage;\n toggleState = !toggleState;\n return method();\n };\n }\n}\n\n/**\n * Goes to a given page, or to the last one beforehand, of the {@link Pager}\n * widget setup for the given element.\n *\n * -------\n *\n * To use with auto-widgets (HTML API) as part of a trigger specification:\n * - Action name: \"go-to-page\".\n * - Accepted string arguments: the number of the target page\n * - Accepted options: none\n *\n * @example\n * ```html\n * <div class=\"lisn-pager\" data-lisn-on-click=\"@go-to-page:2 +target=#myGoToButton\"></div>\n * <button id=\"myGoToButton\"></button>\n * ```\n *\n * @category Controlling pagers\n */\nexport class GoToPage implements Action {\n /**\n * Goes to the page number given to the constructor. Numbers start at 1.\n */\n readonly do: () => Promise<void>;\n\n /**\n * Goes to the last saved page number before the action was {@link do}ne. If\n * the action had never been done, does nothing.\n */\n readonly undo: () => Promise<void>;\n\n /**\n * Goes to the page number given to the constructor, or if already at this\n * number, goes to the last saved page if any. Numbers start at 1.\n */\n readonly toggle: () => Promise<void>;\n\n static register() {\n registerAction(\n \"go-to-page\",\n (element, args) => new GoToPage(element, toInt(args[0])),\n );\n }\n\n constructor(element: Element, pageNum: number) {\n if (!pageNum) {\n throw MH.usageError(\"Target page is required\");\n }\n\n const { _goToPage } = getMethods(element);\n\n this.do = () => _goToPage(pageNum);\n this.undo = () => _goToPage(-1);\n this[MC.S_TOGGLE] = () => _goToPage(pageNum, -1);\n }\n}\n\n/**\n * Enables or disables the given page of the {@link Pager} widget setup for the\n * given element.\n *\n * **IMPORTANT:** When constructed, it disables the given page 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-page\".\n * - Accepted string arguments: the number of the target page\n * - Accepted options: none\n *\n * @example\n * ```html\n * <div class=\"lisn-pager\" data-lisn-on-click=\"@enable-page:2 +target=#myEnableButton\"></div>\n * <button id=\"myEnableButton\"></button>\n * ```\n *\n * @category Controlling pagers\n */\nexport class EnablePage implements Action {\n /**\n * Enables the page number given to the constructor. Numbers start at 1.\n */\n readonly do: () => Promise<void>;\n\n /**\n * Disables the page number given to the constructor. Numbers start at 1.\n */\n readonly undo: () => Promise<void>;\n\n /**\n * Enables the page number given to the constructor, if it is disabled,\n * otherwise disables it. Numbers start at 1.\n */\n readonly toggle: () => Promise<void>;\n\n static register() {\n registerAction(\n \"enable-page\",\n (element, args) => new EnablePage(element, toInt(args[0])),\n );\n }\n\n constructor(element: Element, pageNum: number) {\n if (!pageNum) {\n throw MH.usageError(\"Target page number is required\");\n }\n\n const { _enablePage, _disablePage, _togglePage } = getMethods(element);\n _disablePage(pageNum); // initial state\n\n this.do = () => _enablePage(pageNum);\n this.undo = () => _disablePage(pageNum);\n this[MC.S_TOGGLE] = () => _togglePage(pageNum);\n }\n}\n\n/**\n * Disables or enables the given page of the {@link Pager} widget setup for the\n * given element.\n *\n * **IMPORTANT:** When constructed, it enables the given page 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-page\".\n * - Accepted string arguments: the number of the target page\n * - Accepted options: none\n *\n * @example\n * ```html\n * <button id=\"myDisableButton\"></button>\n * <div class=\"lisn-pager\" data-lisn-on-click=\"@disable-page:2 +target=#myDisableButton\"></div>\n * ```\n *\n * @category Controlling pagers\n */\nexport class DisablePage implements Action {\n /**\n * Disables the page number given to the constructor. Numbers start at 1.\n */\n readonly do: () => Promise<void>;\n\n /**\n * Enables the page number given to the constructor. Numbers start at 1.\n */\n readonly undo: () => Promise<void>;\n\n /**\n * Disables the page number given to the constructor, if it is enabled,\n * otherwise enables it. Numbers start at 1.\n */\n readonly toggle: () => Promise<void>;\n\n static register() {\n registerAction(\n \"disable-page\",\n (element, args) => new DisablePage(element, toInt(args[0])),\n );\n }\n\n constructor(element: Element, pageNum: number) {\n if (!pageNum) {\n throw MH.usageError(\"Target page number is required\");\n }\n\n const { _enablePage, _disablePage, _togglePage } = getMethods(element);\n _enablePage(pageNum); // initial state\n\n this.do = () => _disablePage(pageNum);\n this.undo = () => _enablePage(pageNum);\n this[MC.S_TOGGLE] = () => _togglePage(pageNum);\n }\n}\n\n// --------------------\n\nconst getMethods = (element: Element) => {\n let lastPageNum: number | null | undefined = null;\n\n const nextPage = (widget: Pager | null) => widget?.nextPage();\n const prevPage = (widget: Pager | null) => widget?.prevPage();\n\n const goToPage = async (\n widget: Pager | null,\n pageNum: number,\n altPageNum: number | null,\n ) => {\n const currentNum = widget?.getCurrentPageNum();\n let targetNum: number | null | undefined =\n currentNum === pageNum ? altPageNum : pageNum;\n if (targetNum === -1) {\n targetNum = lastPageNum;\n }\n\n if (targetNum) {\n if (pageNum !== -1) {\n // save the current number unless this is \"undo\"\n lastPageNum = currentNum;\n }\n\n await widget?.goToPage(targetNum);\n }\n };\n\n const enablePage = (widget: Pager | null, pageNum: number) =>\n widget?.enablePage(pageNum);\n const disablePage = (widget: Pager | null, pageNum: number) =>\n widget?.disablePage(pageNum);\n const togglePage = (widget: Pager | null, pageNum: number) =>\n widget?.togglePage(pageNum);\n\n const widgetPromise = fetchUniqueWidget(\"pager\", element, Pager);\n\n return {\n _nextPage: () => widgetPromise.then(nextPage),\n _prevPage: () => widgetPromise.then(prevPage),\n\n _goToPage: (pageNum: number, altPageNum: number | null = null) =>\n widgetPromise.then((w) => goToPage(w, pageNum, altPageNum)),\n\n _enablePage: (pageNum: number) =>\n widgetPromise.then((w) => enablePage(w, pageNum)),\n _disablePage: (pageNum: number) =>\n widgetPromise.then((w) => disablePage(w, pageNum)),\n _togglePage: (pageNum: number) =>\n widgetPromise.then((w) => togglePage(w, pageNum)),\n };\n};\n"],"mappings":"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","ignoreList":[]}