vscroll 1.5.2 → 1.5.3-passive

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.
Files changed (73) hide show
  1. package/dist/bundles/vscroll.esm5.js +120 -62
  2. package/dist/bundles/vscroll.esm5.js.map +1 -1
  3. package/dist/bundles/vscroll.esm5.min.js +2 -2
  4. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  5. package/dist/bundles/vscroll.esm6.js +115 -56
  6. package/dist/bundles/vscroll.esm6.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.min.js +2 -2
  8. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  9. package/dist/bundles/vscroll.umd.js +121 -63
  10. package/dist/bundles/vscroll.umd.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.min.js +2 -2
  12. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  13. package/dist/esm2015/classes/adapter/context.js +11 -5
  14. package/dist/esm2015/classes/adapter/context.js.map +1 -1
  15. package/dist/esm2015/classes/adapter/props.js +4 -2
  16. package/dist/esm2015/classes/adapter/props.js.map +1 -1
  17. package/dist/esm2015/classes/adapter/wanted.js +29 -0
  18. package/dist/esm2015/classes/adapter/wanted.js.map +1 -0
  19. package/dist/esm2015/classes/adapter.js +65 -29
  20. package/dist/esm2015/classes/adapter.js.map +1 -1
  21. package/dist/esm2015/classes/datasource.js +2 -0
  22. package/dist/esm2015/classes/datasource.js.map +1 -1
  23. package/dist/esm2015/classes/domRoutines.js +1 -1
  24. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  25. package/dist/esm2015/classes/logger.js +1 -1
  26. package/dist/esm2015/classes/logger.js.map +1 -1
  27. package/dist/esm2015/inputs/validation.js.map +1 -1
  28. package/dist/esm2015/interfaces/adapter.js.map +1 -1
  29. package/dist/esm2015/interfaces/index.js.map +1 -1
  30. package/dist/esm2015/interfaces/process.js.map +1 -1
  31. package/dist/esm2015/interfaces/workflow.js.map +1 -1
  32. package/dist/esm2015/processes/end.js +5 -18
  33. package/dist/esm2015/processes/end.js.map +1 -1
  34. package/dist/esm2015/scroller.js +1 -1
  35. package/dist/esm2015/scroller.js.map +1 -1
  36. package/dist/esm2015/version.js +1 -1
  37. package/dist/esm2015/version.js.map +1 -1
  38. package/dist/esm2015/workflow.js.map +1 -1
  39. package/dist/esm5/classes/adapter/context.js +11 -6
  40. package/dist/esm5/classes/adapter/context.js.map +1 -1
  41. package/dist/esm5/classes/adapter/props.js +4 -2
  42. package/dist/esm5/classes/adapter/props.js.map +1 -1
  43. package/dist/esm5/classes/adapter/wanted.js +30 -0
  44. package/dist/esm5/classes/adapter/wanted.js.map +1 -0
  45. package/dist/esm5/classes/adapter.js +69 -34
  46. package/dist/esm5/classes/adapter.js.map +1 -1
  47. package/dist/esm5/classes/datasource.js +2 -0
  48. package/dist/esm5/classes/datasource.js.map +1 -1
  49. package/dist/esm5/classes/domRoutines.js +1 -1
  50. package/dist/esm5/classes/domRoutines.js.map +1 -1
  51. package/dist/esm5/classes/logger.js +1 -1
  52. package/dist/esm5/classes/logger.js.map +1 -1
  53. package/dist/esm5/inputs/validation.js.map +1 -1
  54. package/dist/esm5/interfaces/adapter.js.map +1 -1
  55. package/dist/esm5/interfaces/index.js.map +1 -1
  56. package/dist/esm5/interfaces/process.js.map +1 -1
  57. package/dist/esm5/interfaces/workflow.js.map +1 -1
  58. package/dist/esm5/processes/end.js +5 -18
  59. package/dist/esm5/processes/end.js.map +1 -1
  60. package/dist/esm5/scroller.js +1 -1
  61. package/dist/esm5/scroller.js.map +1 -1
  62. package/dist/esm5/version.js +1 -1
  63. package/dist/esm5/version.js.map +1 -1
  64. package/dist/esm5/workflow.js.map +1 -1
  65. package/dist/typings/classes/adapter/wanted.d.ts +14 -0
  66. package/dist/typings/classes/adapter.d.ts +7 -4
  67. package/dist/typings/classes/logger.d.ts +1 -1
  68. package/dist/typings/interfaces/adapter.d.ts +6 -0
  69. package/dist/typings/interfaces/index.d.ts +2 -2
  70. package/dist/typings/interfaces/workflow.d.ts +1 -1
  71. package/dist/typings/processes/end.d.ts +1 -2
  72. package/dist/typings/workflow.d.ts +1 -1
  73. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"domRoutines.js","sourceRoot":"","sources":["../../../src/classes/domRoutines.ts"],"names":[],"mappings":"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","sourcesContent":["import { Settings } from './settings';\nimport { Direction } from '../inputs/index';\nimport { IRoutines, CustomRoutinesClass } from '../interfaces/index';\n\ntype MethodContainer = { [key: string]: (...args: unknown[]) => void };\n\nexport class Routines implements IRoutines {\n\n readonly settings: IRoutines['settings'];\n readonly element: HTMLElement;\n readonly viewport: HTMLElement;\n\n constructor(element: HTMLElement, settings: Settings, CustomRoutines?: CustomRoutinesClass) {\n this.element = element;\n this.settings = {\n viewport: settings.viewport,\n horizontal: settings.horizontal,\n window: settings.windowViewport\n };\n // provide custom overrides for IRoutines methods\n if (CustomRoutines) {\n const self = (this as unknown as MethodContainer);\n const routines = new CustomRoutines(element, this.settings) as MethodContainer;\n Object.getOwnPropertyNames(Object.getPrototypeOf(routines))\n .filter(method =>\n method !== 'constructor' &&\n typeof routines[method] === 'function' &&\n typeof self[method] === 'function'\n )\n .forEach(method =>\n self[method] = (...args: unknown[]) =>\n routines[method].apply(this, args)\n );\n }\n // initialization\n this.viewport = this.getViewportElement();\n this.onInit(settings);\n }\n\n checkElement(element: HTMLElement): void {\n if (!element) {\n throw new Error('HTML element is not defined');\n }\n }\n\n getViewportElement(): HTMLElement {\n if (this.settings.window) {\n return document.documentElement;\n }\n if (this.settings.viewport) {\n return this.settings.viewport;\n }\n this.checkElement(this.element);\n const parent = this.element.parentElement as HTMLElement;\n this.checkElement(parent);\n return parent;\n }\n\n onInit(settings: Settings): void {\n if (settings.windowViewport) {\n if ('scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n }\n if (settings.dismissOverflowAnchor) {\n this.viewport.style.overflowAnchor = 'none';\n }\n }\n\n findElementBySelector(element: HTMLElement, selector: string): HTMLElement | null {\n this.checkElement(element);\n return element.querySelector(selector);\n }\n\n findPaddingElement(direction: Direction): HTMLElement | null {\n return this.findElementBySelector(this.element, `[data-padding-${direction}]`);\n }\n\n findItemElement(id: string): HTMLElement | null {\n return this.findElementBySelector(this.element, `[data-sid=\"${id}\"]`);\n }\n\n getScrollPosition(): number {\n if (this.settings.window) {\n return this.settings.horizontal ? window.pageXOffset : window.pageYOffset;\n }\n return this.viewport[this.settings.horizontal ? 'scrollLeft' : 'scrollTop'];\n }\n\n setScrollPosition(value: number): void {\n value = Math.max(0, value);\n if (this.settings.window) {\n if (this.settings.horizontal) {\n window.scrollTo(value, window.scrollY);\n } else {\n window.scrollTo(window.scrollX, value);\n }\n return;\n }\n this.viewport[this.settings.horizontal ? 'scrollLeft' : 'scrollTop'] = value;\n }\n\n getElementParams(element: HTMLElement): DOMRect {\n this.checkElement(element);\n return element.getBoundingClientRect();\n }\n\n getWindowParams(): DOMRect {\n const { clientWidth, clientHeight, clientLeft, clientTop } = this.viewport;\n return {\n 'height': clientHeight,\n 'width': clientWidth,\n 'top': clientTop,\n 'bottom': clientTop + clientHeight,\n 'left': clientLeft,\n 'right': clientLeft + clientWidth,\n 'x': clientLeft,\n 'y': clientTop,\n 'toJSON': () => null,\n };\n }\n\n getSize(element: HTMLElement): number {\n return this.getElementParams(element)[this.settings.horizontal ? 'width' : 'height'];\n }\n\n getScrollerSize(): number {\n return this.getElementParams(this.element)[this.settings.horizontal ? 'width' : 'height'];\n }\n\n getViewportSize(): number {\n if (this.settings.window) {\n return this.getWindowParams()[this.settings.horizontal ? 'width' : 'height'];\n }\n return this.getSize(this.viewport);\n }\n\n getSizeStyle(element: HTMLElement): number {\n this.checkElement(element);\n const size = element.style[this.settings.horizontal ? 'width' : 'height'];\n return parseFloat(size as string) || 0;\n }\n\n setSizeStyle(element: HTMLElement, value: number): void {\n this.checkElement(element);\n value = Math.max(0, Math.round(value));\n element.style[this.settings.horizontal ? 'width' : 'height'] = `${value}px`;\n }\n\n getEdge(element: HTMLElement, direction: Direction): number {\n const { horizontal } = this.settings;\n const params = this.getElementParams(element);\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (horizontal ? 'right' : 'bottom') : (horizontal ? 'left' : 'top')];\n }\n\n getViewportEdge(direction: Direction): number {\n const { window, horizontal } = this.settings;\n if (window) {\n const params = this.getWindowParams();\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (horizontal ? 'right' : 'bottom') : (horizontal ? 'left' : 'top')];\n }\n return this.getEdge(this.viewport, direction);\n }\n\n makeElementVisible(element: HTMLElement): void {\n this.checkElement(element);\n element.style.left = '';\n element.style.top = '';\n element.style.position = '';\n }\n\n hideElement(element: HTMLElement): void {\n this.checkElement(element);\n element.style.display = 'none';\n }\n\n getOffset(): number {\n const get = (element: HTMLElement) =>\n (this.settings.horizontal ? element.offsetLeft : element.offsetTop) || 0;\n return get(this.element) - (!this.settings.window ? get(this.viewport) : 0);\n }\n\n scrollTo(element: HTMLElement, argument?: boolean | ScrollIntoViewOptions): void {\n this.checkElement(element);\n element.scrollIntoView(argument);\n }\n\n render(cb: () => void): () => void {\n const timeoutId = setTimeout(() => cb());\n return () => clearTimeout(timeoutId);\n }\n\n animate(cb: () => void): () => void {\n const animationFrameId = requestAnimationFrame(() => cb());\n return () => cancelAnimationFrame(animationFrameId);\n }\n\n onScroll(handler: EventListener): () => void {\n const eventReceiver = this.settings.window ? window : this.viewport;\n eventReceiver.addEventListener('scroll', handler);\n return () => eventReceiver.removeEventListener('scroll', handler);\n }\n\n}\n"]}
1
+ {"version":3,"file":"domRoutines.js","sourceRoot":"","sources":["../../../src/classes/domRoutines.ts"],"names":[],"mappings":"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","sourcesContent":["import { Settings } from './settings';\nimport { Direction } from '../inputs/index';\nimport { IRoutines, CustomRoutinesClass } from '../interfaces/index';\n\ntype MethodContainer = { [key: string]: (...args: unknown[]) => void };\n\nexport class Routines implements IRoutines {\n\n readonly settings: IRoutines['settings'];\n readonly element: HTMLElement;\n readonly viewport: HTMLElement;\n\n constructor(element: HTMLElement, settings: Settings, CustomRoutines?: CustomRoutinesClass) {\n this.element = element;\n this.settings = {\n viewport: settings.viewport,\n horizontal: settings.horizontal,\n window: settings.windowViewport\n };\n // provide custom overrides for IRoutines methods\n if (CustomRoutines) {\n const self = (this as unknown as MethodContainer);\n const routines = new CustomRoutines(element, this.settings) as MethodContainer;\n Object.getOwnPropertyNames(Object.getPrototypeOf(routines))\n .filter(method =>\n method !== 'constructor' &&\n typeof routines[method] === 'function' &&\n typeof self[method] === 'function'\n )\n .forEach(method =>\n self[method] = (...args: unknown[]) =>\n routines[method].apply(this, args)\n );\n }\n // initialization\n this.viewport = this.getViewportElement();\n this.onInit(settings);\n }\n\n checkElement(element: HTMLElement): void {\n if (!element) {\n throw new Error('HTML element is not defined');\n }\n }\n\n getViewportElement(): HTMLElement {\n if (this.settings.window) {\n return document.documentElement;\n }\n if (this.settings.viewport) {\n return this.settings.viewport;\n }\n this.checkElement(this.element);\n const parent = this.element.parentElement as HTMLElement;\n this.checkElement(parent);\n return parent;\n }\n\n onInit(settings: Settings): void {\n if (settings.windowViewport) {\n if ('scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n }\n if (settings.dismissOverflowAnchor) {\n this.viewport.style.overflowAnchor = 'none';\n }\n }\n\n findElementBySelector(element: HTMLElement, selector: string): HTMLElement | null {\n this.checkElement(element);\n return element.querySelector(selector);\n }\n\n findPaddingElement(direction: Direction): HTMLElement | null {\n return this.findElementBySelector(this.element, `[data-padding-${direction}]`);\n }\n\n findItemElement(id: string): HTMLElement | null {\n return this.findElementBySelector(this.element, `[data-sid=\"${id}\"]`);\n }\n\n getScrollPosition(): number {\n if (this.settings.window) {\n return this.settings.horizontal ? window.pageXOffset : window.pageYOffset;\n }\n return this.viewport[this.settings.horizontal ? 'scrollLeft' : 'scrollTop'];\n }\n\n setScrollPosition(value: number): void {\n value = Math.max(0, value);\n if (this.settings.window) {\n if (this.settings.horizontal) {\n window.scrollTo(value, window.scrollY);\n } else {\n window.scrollTo(window.scrollX, value);\n }\n return;\n }\n this.viewport[this.settings.horizontal ? 'scrollLeft' : 'scrollTop'] = value;\n }\n\n getElementParams(element: HTMLElement): DOMRect {\n this.checkElement(element);\n return element.getBoundingClientRect();\n }\n\n getWindowParams(): DOMRect {\n const { clientWidth, clientHeight, clientLeft, clientTop } = this.viewport;\n return {\n 'height': clientHeight,\n 'width': clientWidth,\n 'top': clientTop,\n 'bottom': clientTop + clientHeight,\n 'left': clientLeft,\n 'right': clientLeft + clientWidth,\n 'x': clientLeft,\n 'y': clientTop,\n 'toJSON': () => null,\n };\n }\n\n getSize(element: HTMLElement): number {\n return this.getElementParams(element)[this.settings.horizontal ? 'width' : 'height'];\n }\n\n getScrollerSize(): number {\n return this.getElementParams(this.element)[this.settings.horizontal ? 'width' : 'height'];\n }\n\n getViewportSize(): number {\n if (this.settings.window) {\n return this.getWindowParams()[this.settings.horizontal ? 'width' : 'height'];\n }\n return this.getSize(this.viewport);\n }\n\n getSizeStyle(element: HTMLElement): number {\n this.checkElement(element);\n const size = element.style[this.settings.horizontal ? 'width' : 'height'];\n return parseFloat(size as string) || 0;\n }\n\n setSizeStyle(element: HTMLElement, value: number): void {\n this.checkElement(element);\n value = Math.max(0, Math.round(value));\n element.style[this.settings.horizontal ? 'width' : 'height'] = `${value}px`;\n }\n\n getEdge(element: HTMLElement, direction: Direction): number {\n const { horizontal } = this.settings;\n const params = this.getElementParams(element);\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (horizontal ? 'right' : 'bottom') : (horizontal ? 'left' : 'top')];\n }\n\n getViewportEdge(direction: Direction): number {\n const { window, horizontal } = this.settings;\n if (window) {\n const params = this.getWindowParams();\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (horizontal ? 'right' : 'bottom') : (horizontal ? 'left' : 'top')];\n }\n return this.getEdge(this.viewport, direction);\n }\n\n makeElementVisible(element: HTMLElement): void {\n this.checkElement(element);\n element.style.left = '';\n element.style.top = '';\n element.style.position = '';\n }\n\n hideElement(element: HTMLElement): void {\n this.checkElement(element);\n element.style.display = 'none';\n }\n\n getOffset(): number {\n const get = (element: HTMLElement) =>\n (this.settings.horizontal ? element.offsetLeft : element.offsetTop) || 0;\n return get(this.element) - (!this.settings.window ? get(this.viewport) : 0);\n }\n\n scrollTo(element: HTMLElement, argument?: boolean | ScrollIntoViewOptions): void {\n this.checkElement(element);\n element.scrollIntoView(argument);\n }\n\n render(cb: () => void): () => void {\n const timeoutId = setTimeout(() => cb());\n return () => clearTimeout(timeoutId);\n }\n\n animate(cb: () => void): () => void {\n const animationFrameId = requestAnimationFrame(() => cb());\n return () => cancelAnimationFrame(animationFrameId);\n }\n\n onScroll(handler: EventListener): () => void {\n const eventReceiver = this.settings.window ? window : this.viewport;\n eventReceiver.addEventListener('scroll', handler, { passive: true });\n return () => eventReceiver.removeEventListener('scroll', handler);\n }\n\n}\n"]}
@@ -180,7 +180,7 @@ var Logger = /** @class */ (function () {
180
180
  }
181
181
  }
182
182
  };
183
- // logNow(...args: any[]) {
183
+ // logNow(...args: unknown[]) {
184
184
  // const immediateLog = this.immediateLog;
185
185
  // const debug = this.debug;
186
186
  // (this as any).debug = true;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/classes/logger.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAK5F;IAcE,gBAAY,QAAkB,EAAE,WAAsB,EAAE,OAAwB;QAAhF,iBAqCC;QAvCO,SAAI,GAAgB,EAAE,CAAC;QAyI/B,qBAAgB,GAAG,UAAC,UAAkB,EAAE,IAAc,EAAE,GAAY;YAClE,IAAI,CAAC,KAAI,CAAC,KAAK,EAAE;gBACf,OAAO;aACR;YACD,IAAM,MAAM,GAAG,CACb,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAC7D;iBACE,GAAG,CAAC,UAAC,GAAY;gBAChB,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;oBAC7B,OAAO,MAAM,CAAC;iBACf;qBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE;oBAC1C,OAAO,GAAG,CAAC;iBACZ;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBAC7B,OAAO,cAAO,GAAG,CAAC,MAAM,MAAG,CAAC;iBAC7B;gBACD,OAAO,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACnD,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,KAAI,CAAC,GAAG,CAAC,mBAAY,UAAU,cAAI,MAAM,IAAI,EAAE,cAAI,GAAG,IAAI,EAAE,CAAE,CAAC,CAAC;QAClE,CAAC,CAAC;QAzJQ,IAAA,QAAQ,GAAK,QAAQ,SAAb,CAAc;QAC9B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG;YACb,OAAA,QAAQ,CAAC,KAAK,IAAI,oBAAa,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAE;QAApD,CAAoD,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG;YACL,IAAA,MAAM,GAAe,QAAQ,OAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;YACtC,IAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAC3C,IAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACzC,OAAO,OAAO,GAAG,QAAQ,CAAC,cAAc,GAAG,IAAI;gBAC7C,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,EAAE,GAAG,IAAI;gBAC9C,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI;gBAClD,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI;gBACjD,WAAW,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,IAAI;gBACjD,SAAS,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,IAAI;gBAChD,SAAS,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,WAAI,KAAK,CAAC,MAAM,eAAK,IAAI,CAAC,MAAM,MAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,GAAG;YACb,IAAA,KAAqD,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAvD,KAAK,iBAAA,EAAmB,IAAI,gBAA2B,CAAC;YAChF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAChD,CAAC,CAAC,WAAI,KAAK,eAAK,IAAI,MAAG;gBACvB,CAAC,CAAC,IAAI,CAAC;QACX,CAAC,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,cAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAA3B,CAA2B,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,cAAc,OAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAA/B,CAA+B,CAAC;QACnE,IAAI,CAAC,oBAAoB,GAAG;YAC1B,OAAA,UAAG,QAAQ,CAAC,aAAa,cAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAE;QAAzD,CAAyD,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,cAAM,OAAA,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAArC,CAAqC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC;YACP,OAAA,qCAAqC;gBACrC,gBAAS,WAAW,CAAC,IAAI,CAAC,IAAI,eAAK,WAAW,CAAC,IAAI,CAAC,OAAO,OAAI;gBAC/D,oBAAa,WAAW,CAAC,QAAQ,CAAC,IAAI,eAAK,WAAW,CAAC,QAAQ,CAAC,OAAO,OAAI;gBAC3E,6BAAsB,QAAQ,CAAC,aAAa,eAAY;gBACxD,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAa,OAAO,CAAC,EAAE,CAAE,CAAC;QAJ9D,CAI8D,CAC/D,CAAC;IACJ,CAAC;IAED,uBAAM,GAAN,UAAO,GAAW,EAAE,GAAY,EAAE,SAAmB;QACnD,IAAI,CAAC,GAAG,CAAC,cAAM,OAAA;YACb,GAAG;YACH,SAAS;gBACP,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAC,CAAC,EAAE,CAAC;oBACzB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACnB,OAAO,KAAK,CAAC;qBACd;oBACD,IAAI,CAAC,KAAK,QAAQ,EAAE;wBAClB,OAAO,UAAU,CAAC;qBACnB;oBACD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;wBACnB,OAAO,WAAW,CAAC;qBACpB;oBACD,IAAI,CAAC,YAAY,OAAO,EAAE;wBACxB,OAAO,aAAa,CAAC;qBACtB;oBACD,IAAI,CAAC,YAAY,YAAY,EAAE;wBAC7B,OAAO,cAAc,CAAC;qBACvB;oBACD,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE;wBAC3B,OAAO,UAAU,CAAC;qBACnB;oBACD,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC;qBACC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;qBACjB,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;qBAC3B,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;gBAC1B,CAAC,CAAC,GAAG;SACR,EA5Bc,CA4Bd,CAAC,CAAC;IACL,CAAC;IAED,qBAAI,GAAJ,UAAK,GAAY;QAAjB,iBAQC;QAPC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAM,WAAS,GAAG;gBAChB,8DAA8D;gBAC9D,8BAA8B;aAC/B,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,cAAM,sBAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAI,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,KAAI,CAAC,OAAO,EAAE,UAAK,WAAS,WAA1E,CAA2E,CAAC,CAAC;SAC7F;IACH,CAAC;IAED,sBAAK,GAAL,UAAM,GAAY;QAAlB,iBAMC;QALC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAM,OAAK,GAAG,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAI,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,IAAM,WAAS,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,cAAM,sBAAC,YAAK,OAAK,iBAAO,KAAI,CAAC,aAAa,EAAE,CAAE,UAAK,WAAS,WAAtD,CAAuD,CAAC,CAAC;SACzE;IACH,CAAC;IAED,8BAAa,GAAb,UAAc,IAAa;QACzB,OAAO,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,MAAM;YACzC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1B,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,2BAAU,GAAV,UAAW,IAAoB;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO;SACR;QACO,IAAA,OAAO,GAAsB,IAAI,QAA1B,EAAE,MAAM,GAAc,IAAI,OAAlB,EAAE,OAAO,GAAK,IAAI,QAAT,CAAU;QAE1C,2BAA2B;QAC3B,IAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IACE,OAAO,KAAK,aAAa,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,EACxD;YACA,OAAO,CAAC,IAAI,CAAC,wBAAiB,IAAI,CAAC,aAAa,EAAE,WAAQ,CAAC,CAAC;SAC7D;aAAM,IACL,OAAO,KAAK,aAAa,CAAC,GAAG,EAC7B;YACA,OAAO,CAAC,IAAI,CAAC,wBAAiB,IAAI,CAAC,SAAS,EAAE,UAAO,CAAC,CAAC;YACvD,IAAM,QAAM,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;YAC1C,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAM,KAAK,cAAc,CAAC,KAAK,IAAI,QAAM,KAAK,cAAc,CAAC,MAAM,CAAC,EAAE;gBACnG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAU,IAAI,CAAC,aAAa,EAAE,WAAQ,CAAC;aACtD;SACF;QACD,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,cAAM,8CAAI,OAAO,YAAE,iBAAiB,WAA9B,CAA+B,CAAC,CAAC;SACjD;IACH,CAAC;IAED,yBAAQ,GAAR,UAAS,KAAY;QAAZ,sBAAA,EAAA,YAAY;QACnB,IAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,IAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;QACrD,IAAM,SAAS,GAAG,gEAAyD,MAAM,wBAAqB,CAAC;QACvG,IAAI,CAAC,GAAG,CAAC,cAAM,OAAA,CAAC,4BAAqB,OAAO,cAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,WAAQ,EAAE,SAAS,CAAC,EAApF,CAAoF,CAAC,CAAC;IACvG,CAAC;IAED,yBAAQ,GAAR,UAAS,GAAW;QAApB,iBAKC;QAJC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAM,WAAS,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YAClD,IAAI,CAAC,GAAG,CAAC,cAAM,sBAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAI,GAAG,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,mBAAY,KAAI,CAAC,aAAa,EAAE,MAAG,UAAK,WAAS,WAAxF,CAAyF,CAAC,CAAC;SAC3G;IACH,CAAC;IAuBD,oBAAG,GAAH;QAAA,iBAqBC;QArBG,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;gBACjC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACxB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;iBACf;aACF;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,KAAK,KAAK,CAAC,EAAf,CAAe,CAAC,EAAE;gBACvC,OAAO;aACR;YACD,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,0CAAO,IAAI,YAAE,IAAI,CAAC,OAAO,EAAE,SAAC,CAAC;aAClC;YACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,GAAY,IAAK,OAAA,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAvB,CAAuB,CAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAe,CAAC,CAAC;aAC1C;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACtB;SACF;IACH,CAAC;IAED,2BAA2B;IAC3B,4CAA4C;IAC5C,8BAA8B;IAC9B,gCAAgC;IAChC,uCAAuC;IACvC,gCAAgC;IAChC,iCAAiC;IACjC,+CAA+C;IAC/C,IAAI;IAEJ,yBAAQ,GAAR;QAAA,iBAUC;QAVQ,cAAkB;aAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;YAAlB,yBAAkB;;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAI,EAAE,OAAO,CAAC,EAAhC,CAAgC,CAAC,CAAC;gBAC/D,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;aAChB;YACD,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAe,CAAC,CAAC;aAC1C;SACF;IACH,CAAC;IACH,aAAC;AAAD,CAAC,AAtND,IAsNC","sourcesContent":["import { Scroller } from '../scroller';\nimport { CommonProcess, AdapterProcess, ProcessStatus as Status } from '../processes/index';\nimport { IPackages, ProcessSubject } from '../interfaces/index';\n\ntype LogType = [unknown?, ...unknown[]];\n\nexport class Logger {\n\n readonly debug: boolean;\n readonly immediateLog: boolean;\n readonly logTime: boolean;\n readonly getTime: () => string;\n readonly getStat: () => string;\n readonly getFetchRange: () => string;\n readonly getWorkflowCycleData: () => string;\n readonly getLoopId: () => string;\n readonly getLoopIdNext: () => string;\n readonly getScrollPosition: () => number;\n private logs: unknown[][] = [];\n\n constructor(scroller: Scroller, packageInfo: IPackages, adapter?: { id: number }) {\n const { settings } = scroller;\n this.debug = settings.debug;\n this.immediateLog = settings.immediateLog;\n this.logTime = settings.logTime;\n this.getTime = (): string =>\n scroller.state && ` // time: ${scroller.state.time}`;\n this.getStat = (): string => {\n const { buffer, viewport } = scroller;\n const first = buffer.getFirstVisibleItem();\n const last = buffer.getLastVisibleItem();\n return 'pos: ' + viewport.scrollPosition + ', ' +\n 'size: ' + viewport.getScrollableSize() + ', ' +\n 'bwd_p: ' + viewport.paddings.backward.size + ', ' +\n 'fwd_p: ' + viewport.paddings.forward.size + ', ' +\n 'default: ' + (buffer.defaultSize || 'no') + ', ' +\n 'items: ' + buffer.getVisibleItemsCount() + ', ' +\n 'range: ' + (first && last ? `[${first.$index}..${last.$index}]` : 'no');\n };\n this.getFetchRange = (): string => {\n const { first: { index: first }, last: { index: last } } = scroller.state.fetch;\n return !Number.isNaN(first) && !Number.isNaN(last)\n ? `[${first}..${last}]`\n : 'no';\n };\n this.getLoopId = (): string => scroller.state.cycle.loopId;\n this.getLoopIdNext = (): string => scroller.state.cycle.loopIdNext;\n this.getWorkflowCycleData = (): string =>\n `${settings.instanceIndex}-${scroller.state.cycle.count}`;\n this.getScrollPosition = () => scroller.routines.getScrollPosition();\n this.log(() =>\n 'vscroll Workflow has been started, ' +\n `core: ${packageInfo.core.name} v${packageInfo.core.version}, ` +\n `consumer: ${packageInfo.consumer.name} v${packageInfo.consumer.version}, ` +\n `scroller instance: ${settings.instanceIndex}, adapter ` +\n (!adapter ? 'is not instantiated' : `instance: ${adapter.id}`)\n );\n }\n\n object(str: string, obj: unknown, stringify?: boolean): void {\n this.log(() => [\n str,\n stringify\n ? JSON.stringify(obj, (k, v) => {\n if (Number.isNaN(v)) {\n return 'NaN';\n }\n if (v === Infinity) {\n return 'Infinity';\n }\n if (v === -Infinity) {\n return '-Infinity';\n }\n if (v instanceof Element) {\n return 'HTMLElement';\n }\n if (v instanceof HTMLDocument) {\n return 'HTMLDocument';\n }\n if (typeof v === 'function') {\n return 'Function';\n }\n return v;\n })\n .replace(/\"/g, '')\n .replace(/(\\{|:|,)/g, '$1 ')\n .replace(/(\\})/g, ' $1')\n : obj\n ]);\n }\n\n stat(str?: string): void {\n if (this.debug) {\n const logStyles = [\n 'color: #888; border: dashed #888 0; border-bottom-width: 0px',\n 'color: #000; border-width: 0'\n ];\n this.log(() => ['%cstat' + (str ? ` ${str}` : '') + ',%c ' + this.getStat(), ...logStyles]);\n }\n }\n\n fetch(str?: string): void {\n if (this.debug) {\n const _text = 'fetch interval' + (str ? ` ${str}` : '');\n const logStyles = ['color: #888', 'color: #000'];\n this.log(() => [`%c${_text}: %c${this.getFetchRange()}`, ...logStyles]);\n }\n }\n\n prepareForLog(data: unknown): unknown {\n return data instanceof Event && data.target\n ? this.getScrollPosition()\n : data;\n }\n\n logProcess(data: ProcessSubject): void {\n if (!this.debug) {\n return;\n }\n const { process, status, payload } = data;\n\n // inner loop start-end log\n const loopLog: string[] = [];\n if (\n process === CommonProcess.init && status === Status.next\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopIdNext()} start`);\n } else if (\n process === CommonProcess.end\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopId()} done`);\n const parent = payload && payload.process;\n if (status === Status.next && (parent !== AdapterProcess.reset && parent !== AdapterProcess.reload)) {\n loopLog[0] += `, loop ${this.getLoopIdNext()} start`;\n }\n }\n if (loopLog.length) {\n this.log(() => [...loopLog, 'color: #006600;']);\n }\n }\n\n logCycle(start = true): void {\n const logData = this.getWorkflowCycleData();\n const border = start ? '1px 0 0 1px' : '0 0 1px 1px';\n const logStyles = `color: #0000aa; border: solid #555 1px; border-width: ${border}; margin-left: -2px`;\n this.log(() => [`%c ~~~ WF Cycle ${logData} ${start ? 'STARTED' : 'FINALIZED'} ~~~ `, logStyles]);\n }\n\n logError(str: string): void {\n if (this.debug) {\n const logStyles = ['color: #a00;', 'color: #000'];\n this.log(() => ['error:%c' + (str ? ` ${str}` : '') + `%c (loop ${this.getLoopIdNext()})`, ...logStyles]);\n }\n }\n\n logAdapterMethod = (methodName: string, args?: unknown, add?: string): void => {\n if (!this.debug) {\n return;\n }\n const params = (\n args === void 0 ? [] : (Array.isArray(args) ? args : [args])\n )\n .map((arg: unknown) => {\n if (typeof arg === 'function') {\n return 'func';\n } else if (typeof arg !== 'object' || !arg) {\n return arg;\n } else if (Array.isArray(arg)) {\n return `[of ${arg.length}]`;\n }\n return '{ ' + Object.keys(arg).join(', ') + ' }';\n })\n .join(', ');\n this.log(`adapter: ${methodName}(${params || ''})${add || ''}`);\n };\n\n log(...args: any[]): void {\n if (this.debug) {\n if (typeof args[0] === 'function') {\n args = args[0]();\n if (!Array.isArray(args)) {\n args = [args];\n }\n }\n if (args.every(item => item === void 0)) {\n return;\n }\n if (this.logTime) {\n args = [...args, this.getTime()];\n }\n args = args.map((arg: unknown) => this.prepareForLog(arg));\n if (this.immediateLog) {\n console.log.apply(this, args as LogType);\n } else {\n this.logs.push(args);\n }\n }\n }\n\n // logNow(...args: any[]) {\n // const immediateLog = this.immediateLog;\n // const debug = this.debug;\n // (this as any).debug = true;\n // (this as any).immediateLog = true;\n // this.log.apply(this, args);\n // (this as any).debug = debug;\n // (this as any).immediateLog = immediateLog;\n // }\n\n logForce(...args: unknown[]): void {\n if (this.debug) {\n if (!this.immediateLog && this.logs.length) {\n this.logs.forEach(logArgs => console.log.apply(this, logArgs));\n this.logs = [];\n }\n if (args.length) {\n console.log.apply(this, args as LogType);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/classes/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../scroller';\nimport { CommonProcess, AdapterProcess, ProcessStatus as Status } from '../processes/index';\nimport { IPackages, ProcessSubject } from '../interfaces/index';\n\ntype LogType = [unknown?, ...unknown[]];\n\nexport class Logger {\n\n readonly debug: boolean;\n readonly immediateLog: boolean;\n readonly logTime: boolean;\n readonly getTime: () => string;\n readonly getStat: () => string;\n readonly getFetchRange: () => string;\n readonly getWorkflowCycleData: () => string;\n readonly getLoopId: () => string;\n readonly getLoopIdNext: () => string;\n readonly getScrollPosition: () => number;\n private logs: unknown[][] = [];\n\n constructor(scroller: Scroller, packageInfo: IPackages, adapter?: { id: number }) {\n const { settings } = scroller;\n this.debug = settings.debug;\n this.immediateLog = settings.immediateLog;\n this.logTime = settings.logTime;\n this.getTime = (): string =>\n scroller.state && ` // time: ${scroller.state.time}`;\n this.getStat = (): string => {\n const { buffer, viewport } = scroller;\n const first = buffer.getFirstVisibleItem();\n const last = buffer.getLastVisibleItem();\n return 'pos: ' + viewport.scrollPosition + ', ' +\n 'size: ' + viewport.getScrollableSize() + ', ' +\n 'bwd_p: ' + viewport.paddings.backward.size + ', ' +\n 'fwd_p: ' + viewport.paddings.forward.size + ', ' +\n 'default: ' + (buffer.defaultSize || 'no') + ', ' +\n 'items: ' + buffer.getVisibleItemsCount() + ', ' +\n 'range: ' + (first && last ? `[${first.$index}..${last.$index}]` : 'no');\n };\n this.getFetchRange = (): string => {\n const { first: { index: first }, last: { index: last } } = scroller.state.fetch;\n return !Number.isNaN(first) && !Number.isNaN(last)\n ? `[${first}..${last}]`\n : 'no';\n };\n this.getLoopId = (): string => scroller.state.cycle.loopId;\n this.getLoopIdNext = (): string => scroller.state.cycle.loopIdNext;\n this.getWorkflowCycleData = (): string =>\n `${settings.instanceIndex}-${scroller.state.cycle.count}`;\n this.getScrollPosition = () => scroller.routines.getScrollPosition();\n this.log(() =>\n 'vscroll Workflow has been started, ' +\n `core: ${packageInfo.core.name} v${packageInfo.core.version}, ` +\n `consumer: ${packageInfo.consumer.name} v${packageInfo.consumer.version}, ` +\n `scroller instance: ${settings.instanceIndex}, adapter ` +\n (!adapter ? 'is not instantiated' : `instance: ${adapter.id}`)\n );\n }\n\n object(str: string, obj: unknown, stringify?: boolean): void {\n this.log(() => [\n str,\n stringify\n ? JSON.stringify(obj, (k, v) => {\n if (Number.isNaN(v)) {\n return 'NaN';\n }\n if (v === Infinity) {\n return 'Infinity';\n }\n if (v === -Infinity) {\n return '-Infinity';\n }\n if (v instanceof Element) {\n return 'HTMLElement';\n }\n if (v instanceof HTMLDocument) {\n return 'HTMLDocument';\n }\n if (typeof v === 'function') {\n return 'Function';\n }\n return v;\n })\n .replace(/\"/g, '')\n .replace(/(\\{|:|,)/g, '$1 ')\n .replace(/(\\})/g, ' $1')\n : obj\n ]);\n }\n\n stat(str?: string): void {\n if (this.debug) {\n const logStyles = [\n 'color: #888; border: dashed #888 0; border-bottom-width: 0px',\n 'color: #000; border-width: 0'\n ];\n this.log(() => ['%cstat' + (str ? ` ${str}` : '') + ',%c ' + this.getStat(), ...logStyles]);\n }\n }\n\n fetch(str?: string): void {\n if (this.debug) {\n const _text = 'fetch interval' + (str ? ` ${str}` : '');\n const logStyles = ['color: #888', 'color: #000'];\n this.log(() => [`%c${_text}: %c${this.getFetchRange()}`, ...logStyles]);\n }\n }\n\n prepareForLog(data: unknown): unknown {\n return data instanceof Event && data.target\n ? this.getScrollPosition()\n : data;\n }\n\n logProcess(data: ProcessSubject): void {\n if (!this.debug) {\n return;\n }\n const { process, status, payload } = data;\n\n // inner loop start-end log\n const loopLog: string[] = [];\n if (\n process === CommonProcess.init && status === Status.next\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopIdNext()} start`);\n } else if (\n process === CommonProcess.end\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopId()} done`);\n const parent = payload && payload.process;\n if (status === Status.next && (parent !== AdapterProcess.reset && parent !== AdapterProcess.reload)) {\n loopLog[0] += `, loop ${this.getLoopIdNext()} start`;\n }\n }\n if (loopLog.length) {\n this.log(() => [...loopLog, 'color: #006600;']);\n }\n }\n\n logCycle(start = true): void {\n const logData = this.getWorkflowCycleData();\n const border = start ? '1px 0 0 1px' : '0 0 1px 1px';\n const logStyles = `color: #0000aa; border: solid #555 1px; border-width: ${border}; margin-left: -2px`;\n this.log(() => [`%c ~~~ WF Cycle ${logData} ${start ? 'STARTED' : 'FINALIZED'} ~~~ `, logStyles]);\n }\n\n logError(str: string): void {\n if (this.debug) {\n const logStyles = ['color: #a00;', 'color: #000'];\n this.log(() => ['error:%c' + (str ? ` ${str}` : '') + `%c (loop ${this.getLoopIdNext()})`, ...logStyles]);\n }\n }\n\n logAdapterMethod = (methodName: string, args?: unknown, add?: string): void => {\n if (!this.debug) {\n return;\n }\n const params = (\n args === void 0 ? [] : (Array.isArray(args) ? args : [args])\n )\n .map((arg: unknown) => {\n if (typeof arg === 'function') {\n return 'func';\n } else if (typeof arg !== 'object' || !arg) {\n return arg;\n } else if (Array.isArray(arg)) {\n return `[of ${arg.length}]`;\n }\n return '{ ' + Object.keys(arg).join(', ') + ' }';\n })\n .join(', ');\n this.log(`adapter: ${methodName}(${params || ''})${add || ''}`);\n };\n\n log(...args: unknown[]): void {\n if (this.debug) {\n if (typeof args[0] === 'function') {\n args = args[0]();\n if (!Array.isArray(args)) {\n args = [args];\n }\n }\n if (args.every(item => item === void 0)) {\n return;\n }\n if (this.logTime) {\n args = [...args, this.getTime()];\n }\n args = args.map((arg: unknown) => this.prepareForLog(arg));\n if (this.immediateLog) {\n console.log.apply(this, args as LogType);\n } else {\n this.logs.push(args);\n }\n }\n }\n\n // logNow(...args: unknown[]) {\n // const immediateLog = this.immediateLog;\n // const debug = this.debug;\n // (this as any).debug = true;\n // (this as any).immediateLog = true;\n // this.log.apply(this, args);\n // (this as any).debug = debug;\n // (this as any).immediateLog = immediateLog;\n // }\n\n logForce(...args: unknown[]): void {\n if (this.debug) {\n if (!this.immediateLog && this.logs.length) {\n this.logs.forEach(logArgs => console.log.apply(this, logArgs));\n this.logs = [];\n }\n if (args.length) {\n console.log.apply(this, args as LogType);\n }\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/inputs/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IValidationContext } from '../interfaces/validation';\nimport {\n IValidator,\n ValidatedValue,\n IValidatedData,\n IValidatedCommonProps,\n ICommonProps,\n ICommonProp,\n} from '../interfaces/index';\n\nexport enum ValidatorType {\n number = 'must be a number',\n integer = 'must be an integer',\n integerUnlimited = 'must be an integer or infinity',\n moreOrEqual = 'must be a number greater than (or equal to) {arg1}',\n itemList = 'must be an array of items {arg1}',\n boolean = 'must be a boolean',\n object = 'must be an object',\n element = 'must be an html element',\n function = 'must be a function',\n funcOfxArguments = 'must have {arg1} argument(s)',\n funcOfxAndMoreArguments = 'must have at least {arg1} argument(s)',\n funcOfXToYArguments = 'must have {arg1} to {arg2} arguments',\n oneOfCan = 'can be present as only one item of {arg1} list',\n oneOfMust = 'must be present as only one item of {arg1} list',\n or = 'must satisfy at least 1 validator from {arg1} list',\n enum = 'must belong to {arg1} list',\n}\n\nconst getError = (msg: ValidatorType, args?: string[]) =>\n (args || ['']).reduce((acc, arg, index) => acc.replace(`{arg${index + 1}}`, arg), msg);\n\nconst getNumber = (value: unknown): number =>\n typeof value === 'number' || (typeof value === 'string' && value !== '')\n ? Number(value)\n : NaN;\n\nconst onNumber = (value: unknown): ValidatedValue => {\n const parsedValue = getNumber(value);\n const errors = [];\n if (Number.isNaN(parsedValue)) {\n errors.push(ValidatorType.number);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onInteger = (value: unknown): ValidatedValue => {\n const errors = [];\n value = getNumber(value);\n const parsedValue = parseInt(String(value), 10);\n if (value !== parsedValue) {\n errors.push(ValidatorType.integer);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onIntegerUnlimited = (value: unknown): ValidatedValue => {\n let parsedValue = value;\n const errors = [];\n value = getNumber(value);\n if (!Number.isFinite(value)) {\n parsedValue = value;\n } else {\n parsedValue = parseInt(String(value), 10);\n }\n if (value !== parsedValue) {\n errors.push(ValidatorType.integerUnlimited);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onMoreOrEqual = (limit: number, fallback?: boolean) => (value: unknown): ValidatedValue => {\n const result = onNumber(value);\n if (!result.isValid) {\n return result;\n }\n let parsedValue = result.value as number;\n const errors = [];\n if (parsedValue < limit) {\n if (!fallback) {\n errors.push(getError(ValidatorType.moreOrEqual, [String(limit)]));\n } else {\n parsedValue = limit;\n }\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onBoolean = (value: unknown): ValidatedValue => {\n const errors = [];\n let parsedValue = value;\n if (value === 'true') {\n parsedValue = true;\n } else if (value === 'false') {\n parsedValue = false;\n }\n if (typeof parsedValue !== 'boolean') {\n errors.push(ValidatorType.boolean);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onObject = (value: unknown): ValidatedValue => {\n const errors = [];\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n errors.push(ValidatorType.object);\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onHtmlElement = (value: unknown): ValidatedValue => {\n const errors = [];\n if (!(value instanceof Element) && !(value instanceof HTMLDocument)) {\n errors.push(ValidatorType.element);\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onItemList = (value: unknown): ValidatedValue => {\n let parsedValue = value;\n const errors = [];\n if (!Array.isArray(value)) {\n errors.push(ValidatorType.itemList);\n parsedValue = [];\n } else if (!value.length) {\n errors.push(getError(ValidatorType.itemList, ['with at least 1 item']));\n } else if (value.length > 1) {\n const type = typeof value[0];\n for (let i = value.length - 1; i >= 0; i--) {\n if (typeof value[i] !== type) {\n errors.push(getError(ValidatorType.itemList, ['of items of the same type']));\n break;\n }\n }\n }\n return { value: parsedValue as unknown[], isSet: true, isValid: !errors.length, errors };\n};\n\ntype Func = (...args: any[]) => void;\n\nconst onFunction = (value: unknown): ValidatedValue => {\n const errors = [];\n if (typeof value !== 'function') {\n errors.push(ValidatorType.function);\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXArguments = (argsCount: number) => (value: unknown) => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length !== argsCount) {\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXAndMoreArguments = (argsCount: number) => (value: unknown): ValidatedValue => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length < argsCount) {\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXToYArguments = (from: number, to: number) => (value: unknown): ValidatedValue => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length < from || (value as Func).length > to) {\n errors.push(getError(ValidatorType.funcOfXToYArguments, [String(from), String(to)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onOneOf = (tokens: string[], must: boolean) => (value: unknown, context?: IValidationContext): ValidatedValue => {\n const errors = [];\n const isSet = value !== void 0;\n let noOneIsPresent = !isSet;\n const err = must ? ValidatorType.oneOfMust : ValidatorType.oneOfCan;\n if (!Array.isArray(tokens) || !tokens.length) {\n errors.push(getError(err, ['undefined']));\n } else {\n for (let i = tokens.length - 1; i >= 0; i--) {\n const token = tokens[i];\n if (typeof token !== 'string') {\n errors.push(getError(err, [tokens.join('\", \"')]) + ' (non-string token)');\n break;\n }\n const isAnotherPresent = context && Object.prototype.hasOwnProperty.call(context, token);\n if (isSet && isAnotherPresent) {\n errors.push(getError(err, [tokens.join('\", \"')]) + ` (${token} is present)`);\n break;\n }\n if (noOneIsPresent && isAnotherPresent) {\n noOneIsPresent = false;\n }\n }\n if (must && noOneIsPresent) {\n errors.push(getError(err, [tokens.join('\", \"')]));\n }\n }\n return { value, isSet, isValid: !errors.length, errors };\n};\n\nconst onOr = (validators: IValidator[]) => (value: unknown): ValidatedValue => {\n const errors = [];\n if (validators.every(validator => !validator.method(value).isValid)) {\n errors.push(validators.map(v => v.type).join(' OR '));\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nenum AbstractEnum { }\ntype TEnum = typeof AbstractEnum;\n\nconst onEnum = (list: TEnum) => (value: unknown): ValidatedValue => {\n const errors = [];\n const values = Object.keys(list).filter(k => isNaN(Number(k))).map(k => list[k as unknown as number]);\n if (!values.some(item => item === value)) {\n errors.push(getError(ValidatorType.enum, ['[' + values.join(',') + ']']));\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nexport const VALIDATORS = {\n NUMBER: {\n type: ValidatorType.number,\n method: onNumber\n },\n INTEGER: {\n type: ValidatorType.integer,\n method: onInteger\n },\n INTEGER_UNLIMITED: {\n type: ValidatorType.integerUnlimited,\n method: onIntegerUnlimited\n },\n MORE_OR_EQUAL: (limit: number, fallback?: boolean): IValidator => ({\n type: ValidatorType.moreOrEqual,\n method: onMoreOrEqual(limit, fallback)\n }),\n BOOLEAN: {\n type: ValidatorType.boolean,\n method: onBoolean\n },\n OBJECT: {\n type: ValidatorType.object,\n method: onObject\n },\n ITEM_LIST: {\n type: ValidatorType.itemList,\n method: onItemList\n },\n ELEMENT: {\n type: ValidatorType.element,\n method: onHtmlElement\n },\n FUNC: {\n type: ValidatorType.function,\n method: onFunction\n },\n FUNC_WITH_X_ARGUMENTS: (count: number): IValidator => ({\n type: ValidatorType.funcOfxArguments,\n method: onFunctionWithXArguments(count)\n }),\n FUNC_WITH_X_AND_MORE_ARGUMENTS: (count: number): IValidator => ({\n type: ValidatorType.funcOfxAndMoreArguments,\n method: onFunctionWithXAndMoreArguments(count)\n }),\n FUNC_WITH_X_TO_Y_ARGUMENTS: (from: number, to: number): IValidator => ({\n type: ValidatorType.funcOfXToYArguments,\n method: onFunctionWithXToYArguments(from, to)\n }),\n ONE_OF_CAN: (list: string[]): IValidator => ({\n type: ValidatorType.oneOfCan,\n method: onOneOf(list, false)\n }),\n ONE_OF_MUST: (list: string[]): IValidator => ({\n type: ValidatorType.oneOfMust,\n method: onOneOf(list, true)\n }),\n OR: (list: IValidator[]): IValidator => ({\n type: ValidatorType.or,\n method: onOr(list)\n }),\n ENUM: (list: TEnum): IValidator => ({\n type: ValidatorType.enum,\n method: onEnum(list)\n })\n};\n\nexport class ValidatedData implements IValidatedData {\n\n context: IValidationContext;\n isValidContext: boolean;\n isValid: boolean;\n errors: string[];\n params: IValidatedCommonProps<PropertyKey>;\n\n private contextErrors: string[];\n\n constructor(context: unknown) {\n this.params = {};\n this.contextErrors = [];\n this.errors = [];\n this.isValid = true;\n this.setContext(context);\n }\n\n private setContext(context: unknown): void {\n if (!context || Object.prototype.toString.call(context) !== '[object Object]') {\n this.setCommonError('context is not an object');\n this.isValidContext = false;\n } else {\n this.isValidContext = true;\n }\n this.context = context as IValidationContext;\n }\n\n private setValidity() {\n this.errors = Object.keys(this.params).reduce((acc: string[], key: string) => [\n ...acc, ...this.params[key].errors\n ], []);\n this.isValid = !this.errors.length;\n }\n\n setCommonError(error: string): void {\n this.contextErrors.push(error);\n this.errors.push(error);\n this.isValid = false;\n }\n\n setParam(token: string, value: ValidatedValue): void {\n if (!value.isValid) {\n value.errors = !value.isSet\n ? [`\"${token}\" must be set`]\n : value.errors.map((err: string) =>\n `\"${token}\" ${err}`\n );\n }\n this.params[token] = value;\n this.setValidity();\n }\n\n showErrors(): string {\n return this.errors.length\n ? 'validation failed: ' + this.errors.join(', ')\n : '';\n }\n}\n\nexport const runValidator = (\n current: ValidatedValue,\n validator: IValidator,\n context: IValidationContext\n): ValidatedValue => {\n const { value, errors } = current;\n const result = validator.method(value, context);\n const _errors = [...errors, ...result.errors];\n return {\n value: result.value,\n isSet: result.isSet,\n isValid: !_errors.length,\n errors: _errors\n };\n};\n\nconst getDefault = (value: unknown, prop: ICommonProp): ValidatedValue => {\n const empty = value === void 0;\n const auto = !prop.mandatory && prop.defaultValue !== void 0;\n return {\n value: !empty ? value : (auto ? prop.defaultValue : void 0),\n isSet: !empty || auto,\n isValid: !empty || !prop.mandatory,\n errors: []\n };\n};\n\nexport const validateOne = (\n context: IValidationContext, name: string, prop: ICommonProp\n): ValidatedValue => {\n const result = getDefault(context[name], prop);\n if (!result.isSet) {\n const oneOfMust = prop.validators.find(v => v.type === ValidatorType.oneOfMust);\n if (oneOfMust) {\n return runValidator(result, oneOfMust, context);\n }\n } else {\n for (const validator of Object.values(prop.validators)) {\n const current = runValidator(result, validator, context);\n if (!current.isValid && prop.defaultValue !== void 0) {\n return {\n value: prop.defaultValue,\n isSet: true,\n isValid: true,\n errors: []\n };\n }\n Object.assign(result, current);\n }\n }\n return result;\n};\n\nexport const validate = (\n context: unknown, params: ICommonProps<PropertyKey>\n): IValidatedData => {\n const data = new ValidatedData(context);\n Object.entries(params).forEach(([key, prop]) =>\n data.setParam(key, data.isValidContext\n ? validateOne(data.context, key, prop)\n : getDefault(void 0, prop)\n )\n );\n return data;\n};\n"]}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/inputs/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IValidationContext } from '../interfaces/validation';\nimport {\n IValidator,\n ValidatedValue,\n IValidatedData,\n IValidatedCommonProps,\n ICommonProps,\n ICommonProp,\n} from '../interfaces/index';\n\nexport enum ValidatorType {\n number = 'must be a number',\n integer = 'must be an integer',\n integerUnlimited = 'must be an integer or infinity',\n moreOrEqual = 'must be a number greater than (or equal to) {arg1}',\n itemList = 'must be an array of items {arg1}',\n boolean = 'must be a boolean',\n object = 'must be an object',\n element = 'must be an html element',\n function = 'must be a function',\n funcOfxArguments = 'must have {arg1} argument(s)',\n funcOfxAndMoreArguments = 'must have at least {arg1} argument(s)',\n funcOfXToYArguments = 'must have {arg1} to {arg2} arguments',\n oneOfCan = 'can be present as only one item of {arg1} list',\n oneOfMust = 'must be present as only one item of {arg1} list',\n or = 'must satisfy at least 1 validator from {arg1} list',\n enum = 'must belong to {arg1} list',\n}\n\nconst getError = (msg: ValidatorType, args?: string[]) =>\n (args || ['']).reduce((acc, arg, index) => acc.replace(`{arg${index + 1}}`, arg), msg);\n\nconst getNumber = (value: unknown): number =>\n typeof value === 'number' || (typeof value === 'string' && value !== '')\n ? Number(value)\n : NaN;\n\nconst onNumber = (value: unknown): ValidatedValue => {\n const parsedValue = getNumber(value);\n const errors = [];\n if (Number.isNaN(parsedValue)) {\n errors.push(ValidatorType.number);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onInteger = (value: unknown): ValidatedValue => {\n const errors = [];\n value = getNumber(value);\n const parsedValue = parseInt(String(value), 10);\n if (value !== parsedValue) {\n errors.push(ValidatorType.integer);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onIntegerUnlimited = (value: unknown): ValidatedValue => {\n let parsedValue = value;\n const errors = [];\n value = getNumber(value);\n if (!Number.isFinite(value)) {\n parsedValue = value;\n } else {\n parsedValue = parseInt(String(value), 10);\n }\n if (value !== parsedValue) {\n errors.push(ValidatorType.integerUnlimited);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onMoreOrEqual = (limit: number, fallback?: boolean) => (value: unknown): ValidatedValue => {\n const result = onNumber(value);\n if (!result.isValid) {\n return result;\n }\n let parsedValue = result.value as number;\n const errors = [];\n if (parsedValue < limit) {\n if (!fallback) {\n errors.push(getError(ValidatorType.moreOrEqual, [String(limit)]));\n } else {\n parsedValue = limit;\n }\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onBoolean = (value: unknown): ValidatedValue => {\n const errors = [];\n let parsedValue = value;\n if (value === 'true') {\n parsedValue = true;\n } else if (value === 'false') {\n parsedValue = false;\n }\n if (typeof parsedValue !== 'boolean') {\n errors.push(ValidatorType.boolean);\n }\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onObject = (value: unknown): ValidatedValue => {\n const errors = [];\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n errors.push(ValidatorType.object);\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onHtmlElement = (value: unknown): ValidatedValue => {\n const errors = [];\n if (!(value instanceof Element) && !(value instanceof HTMLDocument)) {\n errors.push(ValidatorType.element);\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onItemList = (value: unknown): ValidatedValue => {\n let parsedValue = value;\n const errors = [];\n if (!Array.isArray(value)) {\n errors.push(ValidatorType.itemList);\n parsedValue = [];\n } else if (!value.length) {\n errors.push(getError(ValidatorType.itemList, ['with at least 1 item']));\n } else if (value.length > 1) {\n const type = typeof value[0];\n for (let i = value.length - 1; i >= 0; i--) {\n if (typeof value[i] !== type) {\n errors.push(getError(ValidatorType.itemList, ['of items of the same type']));\n break;\n }\n }\n }\n return { value: parsedValue as unknown[], isSet: true, isValid: !errors.length, errors };\n};\n\ntype Func = (...args: unknown[]) => void;\n\nconst onFunction = (value: unknown): ValidatedValue => {\n const errors = [];\n if (typeof value !== 'function') {\n errors.push(ValidatorType.function);\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXArguments = (argsCount: number) => (value: unknown) => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length !== argsCount) {\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXAndMoreArguments = (argsCount: number) => (value: unknown): ValidatedValue => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length < argsCount) {\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onFunctionWithXToYArguments = (from: number, to: number) => (value: unknown): ValidatedValue => {\n const result = onFunction(value);\n if (!result.isValid) {\n return result;\n }\n value = result.value;\n const errors = [];\n if ((value as Func).length < from || (value as Func).length > to) {\n errors.push(getError(ValidatorType.funcOfXToYArguments, [String(from), String(to)]));\n }\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\n};\n\nconst onOneOf = (tokens: string[], must: boolean) => (value: unknown, context?: IValidationContext): ValidatedValue => {\n const errors = [];\n const isSet = value !== void 0;\n let noOneIsPresent = !isSet;\n const err = must ? ValidatorType.oneOfMust : ValidatorType.oneOfCan;\n if (!Array.isArray(tokens) || !tokens.length) {\n errors.push(getError(err, ['undefined']));\n } else {\n for (let i = tokens.length - 1; i >= 0; i--) {\n const token = tokens[i];\n if (typeof token !== 'string') {\n errors.push(getError(err, [tokens.join('\", \"')]) + ' (non-string token)');\n break;\n }\n const isAnotherPresent = context && Object.prototype.hasOwnProperty.call(context, token);\n if (isSet && isAnotherPresent) {\n errors.push(getError(err, [tokens.join('\", \"')]) + ` (${token} is present)`);\n break;\n }\n if (noOneIsPresent && isAnotherPresent) {\n noOneIsPresent = false;\n }\n }\n if (must && noOneIsPresent) {\n errors.push(getError(err, [tokens.join('\", \"')]));\n }\n }\n return { value, isSet, isValid: !errors.length, errors };\n};\n\nconst onOr = (validators: IValidator[]) => (value: unknown): ValidatedValue => {\n const errors = [];\n if (validators.every(validator => !validator.method(value).isValid)) {\n errors.push(validators.map(v => v.type).join(' OR '));\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nenum AbstractEnum { }\ntype TEnum = typeof AbstractEnum;\n\nconst onEnum = (list: TEnum) => (value: unknown): ValidatedValue => {\n const errors = [];\n const values = Object.keys(list).filter(k => isNaN(Number(k))).map(k => list[k as unknown as number]);\n if (!values.some(item => item === value)) {\n errors.push(getError(ValidatorType.enum, ['[' + values.join(',') + ']']));\n }\n return { value, isSet: true, isValid: !errors.length, errors };\n};\n\nexport const VALIDATORS = {\n NUMBER: {\n type: ValidatorType.number,\n method: onNumber\n },\n INTEGER: {\n type: ValidatorType.integer,\n method: onInteger\n },\n INTEGER_UNLIMITED: {\n type: ValidatorType.integerUnlimited,\n method: onIntegerUnlimited\n },\n MORE_OR_EQUAL: (limit: number, fallback?: boolean): IValidator => ({\n type: ValidatorType.moreOrEqual,\n method: onMoreOrEqual(limit, fallback)\n }),\n BOOLEAN: {\n type: ValidatorType.boolean,\n method: onBoolean\n },\n OBJECT: {\n type: ValidatorType.object,\n method: onObject\n },\n ITEM_LIST: {\n type: ValidatorType.itemList,\n method: onItemList\n },\n ELEMENT: {\n type: ValidatorType.element,\n method: onHtmlElement\n },\n FUNC: {\n type: ValidatorType.function,\n method: onFunction\n },\n FUNC_WITH_X_ARGUMENTS: (count: number): IValidator => ({\n type: ValidatorType.funcOfxArguments,\n method: onFunctionWithXArguments(count)\n }),\n FUNC_WITH_X_AND_MORE_ARGUMENTS: (count: number): IValidator => ({\n type: ValidatorType.funcOfxAndMoreArguments,\n method: onFunctionWithXAndMoreArguments(count)\n }),\n FUNC_WITH_X_TO_Y_ARGUMENTS: (from: number, to: number): IValidator => ({\n type: ValidatorType.funcOfXToYArguments,\n method: onFunctionWithXToYArguments(from, to)\n }),\n ONE_OF_CAN: (list: string[]): IValidator => ({\n type: ValidatorType.oneOfCan,\n method: onOneOf(list, false)\n }),\n ONE_OF_MUST: (list: string[]): IValidator => ({\n type: ValidatorType.oneOfMust,\n method: onOneOf(list, true)\n }),\n OR: (list: IValidator[]): IValidator => ({\n type: ValidatorType.or,\n method: onOr(list)\n }),\n ENUM: (list: TEnum): IValidator => ({\n type: ValidatorType.enum,\n method: onEnum(list)\n })\n};\n\nexport class ValidatedData implements IValidatedData {\n\n context: IValidationContext;\n isValidContext: boolean;\n isValid: boolean;\n errors: string[];\n params: IValidatedCommonProps<PropertyKey>;\n\n private contextErrors: string[];\n\n constructor(context: unknown) {\n this.params = {};\n this.contextErrors = [];\n this.errors = [];\n this.isValid = true;\n this.setContext(context);\n }\n\n private setContext(context: unknown): void {\n if (!context || Object.prototype.toString.call(context) !== '[object Object]') {\n this.setCommonError('context is not an object');\n this.isValidContext = false;\n } else {\n this.isValidContext = true;\n }\n this.context = context as IValidationContext;\n }\n\n private setValidity() {\n this.errors = Object.keys(this.params).reduce((acc: string[], key: string) => [\n ...acc, ...this.params[key].errors\n ], []);\n this.isValid = !this.errors.length;\n }\n\n setCommonError(error: string): void {\n this.contextErrors.push(error);\n this.errors.push(error);\n this.isValid = false;\n }\n\n setParam(token: string, value: ValidatedValue): void {\n if (!value.isValid) {\n value.errors = !value.isSet\n ? [`\"${token}\" must be set`]\n : value.errors.map((err: string) =>\n `\"${token}\" ${err}`\n );\n }\n this.params[token] = value;\n this.setValidity();\n }\n\n showErrors(): string {\n return this.errors.length\n ? 'validation failed: ' + this.errors.join(', ')\n : '';\n }\n}\n\nexport const runValidator = (\n current: ValidatedValue,\n validator: IValidator,\n context: IValidationContext\n): ValidatedValue => {\n const { value, errors } = current;\n const result = validator.method(value, context);\n const _errors = [...errors, ...result.errors];\n return {\n value: result.value,\n isSet: result.isSet,\n isValid: !_errors.length,\n errors: _errors\n };\n};\n\nconst getDefault = (value: unknown, prop: ICommonProp): ValidatedValue => {\n const empty = value === void 0;\n const auto = !prop.mandatory && prop.defaultValue !== void 0;\n return {\n value: !empty ? value : (auto ? prop.defaultValue : void 0),\n isSet: !empty || auto,\n isValid: !empty || !prop.mandatory,\n errors: []\n };\n};\n\nexport const validateOne = (\n context: IValidationContext, name: string, prop: ICommonProp\n): ValidatedValue => {\n const result = getDefault(context[name], prop);\n if (!result.isSet) {\n const oneOfMust = prop.validators.find(v => v.type === ValidatorType.oneOfMust);\n if (oneOfMust) {\n return runValidator(result, oneOfMust, context);\n }\n } else {\n for (const validator of Object.values(prop.validators)) {\n const current = runValidator(result, validator, context);\n if (!current.isValid && prop.defaultValue !== void 0) {\n return {\n value: prop.defaultValue,\n isSet: true,\n isValid: true,\n errors: []\n };\n }\n Object.assign(result, current);\n }\n }\n return result;\n};\n\nexport const validate = (\n context: unknown, params: ICommonProps<PropertyKey>\n): IValidatedData => {\n const data = new ValidatedData(context);\n Object.entries(params).forEach(([key, prop]) =>\n data.setParam(key, data.isValidContext\n ? validateOne(data.context, key, prop)\n : getDefault(void 0, prop)\n )\n );\n return data;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/interfaces/adapter.ts"],"names":[],"mappings":"","sourcesContent":["import { AdapterPropName, AdapterPropType } from '../classes/adapter/props';\r\nimport { Reactive } from '../classes/reactive';\r\nimport { IDatasourceOptional } from './datasource';\r\nimport { IValidatedData } from './validation';\r\n\r\nexport interface IReactivePropConfig {\r\n source: unknown;\r\n emit: (source: unknown, value: unknown) => void;\r\n}\r\n\r\ninterface IReactivePropStore extends IReactivePropConfig {\r\n default: Reactive<unknown>;\r\n}\r\n\r\nexport type IReactivePropsConfig = {\r\n [key in AdapterPropName]?: IReactivePropConfig;\r\n};\r\n\r\nexport type IReactivePropsStore = {\r\n [key in AdapterPropName]?: IReactivePropStore;\r\n};\r\n\r\nexport interface IAdapterConfig {\r\n mock: boolean;\r\n reactive?: IReactivePropsConfig;\r\n}\r\n\r\nexport interface IAdapterProp {\r\n name: AdapterPropName;\r\n type: AdapterPropType;\r\n value: unknown;\r\n reactive?: AdapterPropName;\r\n wanted?: boolean;\r\n onDemand?: boolean;\r\n permanent?: boolean;\r\n}\r\n\r\nexport interface ItemAdapter<Data = unknown> {\r\n $index: number;\r\n data: Data;\r\n element?: HTMLElement;\r\n}\r\n\r\nexport type ItemsPredicate<T = unknown> = (item: ItemAdapter<T>) => boolean;\r\nexport type ItemsUpdater<T = unknown> = (item: ItemAdapter<T>, update: () => void) => void;\r\nexport type ItemsProcessor<T = unknown> = (items: ItemAdapter<T>[]) => void;\r\nexport type BufferUpdater<T = unknown> = (item: ItemAdapter<T>) => unknown;\r\n\r\nexport interface IPackage {\r\n name: string;\r\n version: string;\r\n}\r\n\r\nexport interface IPackages {\r\n core: IPackage;\r\n consumer: IPackage;\r\n}\r\n\r\nexport interface IBufferInfo {\r\n firstIndex: number;\r\n lastIndex: number;\r\n minIndex: number;\r\n maxIndex: number;\r\n absMinIndex: number;\r\n absMaxIndex: number;\r\n defaultSize: number;\r\n}\r\n\r\nexport interface IAdapterInput<T> {\r\n data: IValidatedData;\r\n params?: T;\r\n}\r\n\r\nexport interface AdapterAppendOptions<Data = unknown> {\r\n items: Data[];\r\n eof?: boolean;\r\n decrease?: boolean;\r\n}\r\n\r\nexport interface AdapterPrependOptions<Data = unknown> {\r\n items: Data[];\r\n bof?: boolean;\r\n increase?: boolean;\r\n}\r\n\r\nexport interface AdapterRemoveOptions<Data = unknown> {\r\n predicate?: ItemsPredicate<Data>;\r\n indexes?: number[];\r\n increase?: boolean;\r\n}\r\n\r\nexport interface AdapterClipOptions {\r\n forwardOnly?: boolean;\r\n backwardOnly?: boolean;\r\n}\r\n\r\nexport interface AdapterInsertOptions<Data = unknown> {\r\n items: Data[];\r\n before?: ItemsPredicate<Data>;\r\n after?: ItemsPredicate<Data>;\r\n beforeIndex?: number;\r\n afterIndex?: number;\r\n decrease?: boolean;\r\n}\r\n\r\nexport interface AdapterReplaceOptions<Data = unknown> {\r\n items: Data[];\r\n predicate: ItemsPredicate<Data>;\r\n fixRight?: boolean;\r\n}\r\n\r\nexport interface AdapterUpdateOptions<Data = unknown> {\r\n predicate: BufferUpdater<Data>;\r\n fixRight?: boolean;\r\n}\r\n\r\nexport interface AdapterFixOptions<Data = unknown> {\r\n scrollPosition?: number;\r\n minIndex?: number;\r\n maxIndex?: number;\r\n updater?: ItemsUpdater<Data>;\r\n scrollToItem?: ItemsPredicate<Data>;\r\n scrollToItemOpt?: boolean | ScrollIntoViewOptions;\r\n}\r\n\r\nexport interface AdapterMethodResult {\r\n success: boolean;\r\n immediate: boolean;\r\n details: string | null;\r\n}\r\ntype MethodResult = Promise<AdapterMethodResult>;\r\n\r\nexport interface IAdapter<Data = unknown> {\r\n readonly id: number;\r\n readonly mock: boolean;\r\n readonly augmented: boolean;\r\n readonly version: string;\r\n readonly init: boolean;\r\n readonly init$: Reactive<boolean>;\r\n readonly packageInfo: IPackages;\r\n readonly itemsCount: number;\r\n readonly bufferInfo: IBufferInfo;\r\n readonly isLoading: boolean;\r\n readonly isLoading$: Reactive<boolean>;\r\n readonly loopPending: boolean;\r\n readonly loopPending$: Reactive<boolean>;\r\n readonly firstVisible: ItemAdapter<Data>;\r\n readonly firstVisible$: Reactive<ItemAdapter<Data>>;\r\n readonly lastVisible: ItemAdapter<Data>;\r\n readonly lastVisible$: Reactive<ItemAdapter<Data>>;\r\n readonly bof: boolean;\r\n readonly bof$: Reactive<boolean>;\r\n readonly eof: boolean;\r\n readonly eof$: Reactive<boolean>;\r\n reset(datasource?: IDatasourceOptional): MethodResult;\r\n reload(reloadIndex?: number | string): MethodResult;\r\n append(options: AdapterAppendOptions<Data>): MethodResult;\r\n append(items: Data | Data[], eof?: boolean): MethodResult; // old signature\r\n prepend(options: AdapterPrependOptions<Data>): MethodResult;\r\n prepend(items: Data | Data[], bof?: boolean): MethodResult; // old signature\r\n check(): MethodResult;\r\n remove(args: AdapterRemoveOptions<Data>): MethodResult;\r\n remove(args: ItemsPredicate<Data>): MethodResult; // old signature\r\n clip(options?: AdapterClipOptions): MethodResult;\r\n insert(options: AdapterInsertOptions<Data>): MethodResult;\r\n replace(options: AdapterReplaceOptions<Data>): MethodResult;\r\n update(options: AdapterUpdateOptions<Data>): MethodResult;\r\n fix(options: AdapterFixOptions<Data>): MethodResult; // experimental\r\n relax(callback?: () => void): MethodResult;\r\n showLog(): void;\r\n}\r\n"]}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/interfaces/adapter.ts"],"names":[],"mappings":"","sourcesContent":["import { AdapterPropName, AdapterPropType } from '../classes/adapter/props';\r\nimport { Reactive } from '../classes/reactive';\r\nimport { IDatasourceOptional } from './datasource';\r\nimport { IValidatedData } from './validation';\r\n\r\nexport interface IReactivePropConfig {\r\n source: unknown;\r\n emit: (source: unknown, value: unknown) => void;\r\n}\r\n\r\ninterface IReactivePropStore extends IReactivePropConfig {\r\n default: Reactive<unknown>;\r\n}\r\n\r\nexport type IReactivePropsConfig = {\r\n [key in AdapterPropName]?: IReactivePropConfig;\r\n};\r\n\r\nexport type IReactivePropsStore = {\r\n [key in AdapterPropName]?: IReactivePropStore;\r\n};\r\n\r\nexport interface IWanted {\r\n box: { [key: string]: boolean };\r\n block: boolean;\r\n}\r\n\r\nexport interface IAdapterConfig {\r\n mock: boolean;\r\n reactive?: IReactivePropsConfig;\r\n}\r\n\r\nexport interface IAdapterProp {\r\n name: AdapterPropName;\r\n type: AdapterPropType;\r\n value: unknown;\r\n reactive?: AdapterPropName;\r\n wanted?: boolean;\r\n onDemand?: boolean;\r\n permanent?: boolean;\r\n}\r\n\r\nexport interface ItemAdapter<Data = unknown> {\r\n $index: number;\r\n data: Data;\r\n element?: HTMLElement;\r\n}\r\n\r\nexport type ItemsPredicate<T = unknown> = (item: ItemAdapter<T>) => boolean;\r\nexport type ItemsUpdater<T = unknown> = (item: ItemAdapter<T>, update: () => void) => void;\r\nexport type ItemsProcessor<T = unknown> = (items: ItemAdapter<T>[]) => void;\r\nexport type BufferUpdater<T = unknown> = (item: ItemAdapter<T>) => unknown;\r\n\r\nexport interface IPackage {\r\n name: string;\r\n version: string;\r\n}\r\n\r\nexport interface IPackages {\r\n core: IPackage;\r\n consumer: IPackage;\r\n}\r\n\r\nexport interface IBufferInfo {\r\n firstIndex: number;\r\n lastIndex: number;\r\n minIndex: number;\r\n maxIndex: number;\r\n absMinIndex: number;\r\n absMaxIndex: number;\r\n defaultSize: number;\r\n}\r\n\r\nexport interface IAdapterInput<T> {\r\n data: IValidatedData;\r\n params?: T;\r\n}\r\n\r\nexport interface AdapterAppendOptions<Data = unknown> {\r\n items: Data[];\r\n eof?: boolean;\r\n decrease?: boolean;\r\n}\r\n\r\nexport interface AdapterPrependOptions<Data = unknown> {\r\n items: Data[];\r\n bof?: boolean;\r\n increase?: boolean;\r\n}\r\n\r\nexport interface AdapterRemoveOptions<Data = unknown> {\r\n predicate?: ItemsPredicate<Data>;\r\n indexes?: number[];\r\n increase?: boolean;\r\n}\r\n\r\nexport interface AdapterClipOptions {\r\n forwardOnly?: boolean;\r\n backwardOnly?: boolean;\r\n}\r\n\r\nexport interface AdapterInsertOptions<Data = unknown> {\r\n items: Data[];\r\n before?: ItemsPredicate<Data>;\r\n after?: ItemsPredicate<Data>;\r\n beforeIndex?: number;\r\n afterIndex?: number;\r\n decrease?: boolean;\r\n}\r\n\r\nexport interface AdapterReplaceOptions<Data = unknown> {\r\n items: Data[];\r\n predicate: ItemsPredicate<Data>;\r\n fixRight?: boolean;\r\n}\r\n\r\nexport interface AdapterUpdateOptions<Data = unknown> {\r\n predicate: BufferUpdater<Data>;\r\n fixRight?: boolean;\r\n}\r\n\r\nexport interface AdapterFixOptions<Data = unknown> {\r\n scrollPosition?: number;\r\n minIndex?: number;\r\n maxIndex?: number;\r\n updater?: ItemsUpdater<Data>;\r\n scrollToItem?: ItemsPredicate<Data>;\r\n scrollToItemOpt?: boolean | ScrollIntoViewOptions;\r\n}\r\n\r\nexport interface AdapterMethodResult {\r\n success: boolean;\r\n immediate: boolean;\r\n details: string | null;\r\n}\r\ntype MethodResult = Promise<AdapterMethodResult>;\r\n\r\nexport interface IAdapter<Data = unknown> {\r\n readonly id: number;\r\n readonly mock: boolean;\r\n readonly augmented: boolean;\r\n readonly version: string;\r\n readonly init: boolean;\r\n readonly init$: Reactive<boolean>;\r\n readonly packageInfo: IPackages;\r\n readonly itemsCount: number;\r\n readonly bufferInfo: IBufferInfo;\r\n readonly isLoading: boolean;\r\n readonly isLoading$: Reactive<boolean>;\r\n readonly loopPending: boolean;\r\n readonly loopPending$: Reactive<boolean>;\r\n readonly firstVisible: ItemAdapter<Data>;\r\n readonly firstVisible$: Reactive<ItemAdapter<Data>>;\r\n readonly lastVisible: ItemAdapter<Data>;\r\n readonly lastVisible$: Reactive<ItemAdapter<Data>>;\r\n readonly bof: boolean;\r\n readonly bof$: Reactive<boolean>;\r\n readonly eof: boolean;\r\n readonly eof$: Reactive<boolean>;\r\n reset(datasource?: IDatasourceOptional): MethodResult;\r\n reload(reloadIndex?: number | string): MethodResult;\r\n append(options: AdapterAppendOptions<Data>): MethodResult;\r\n append(items: Data | Data[], eof?: boolean): MethodResult; // old signature\r\n prepend(options: AdapterPrependOptions<Data>): MethodResult;\r\n prepend(items: Data | Data[], bof?: boolean): MethodResult; // old signature\r\n check(): MethodResult;\r\n remove(args: AdapterRemoveOptions<Data>): MethodResult;\r\n remove(args: ItemsPredicate<Data>): MethodResult; // old signature\r\n clip(options?: AdapterClipOptions): MethodResult;\r\n insert(options: AdapterInsertOptions<Data>): MethodResult;\r\n replace(options: AdapterReplaceOptions<Data>): MethodResult;\r\n update(options: AdapterUpdateOptions<Data>): MethodResult;\r\n fix(options: AdapterFixOptions<Data>): MethodResult; // experimental\r\n relax(callback?: () => void): MethodResult;\r\n showLog(): void;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"","sourcesContent":["import {\n ObservableLike,\n DatasourceGet,\n IDatasourceOptional,\n IDatasource,\n IDatasourceConstructed,\n} from './datasource';\nimport {\n OnDataChanged,\n WorkflowParams,\n ScrollerWorkflow,\n ScrollerParams,\n WorkflowGetter,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n StateMachineParams,\n} from './workflow';\nimport { Item } from './item';\nimport {\n IReactivePropConfig,\n IReactivePropsConfig,\n IReactivePropsStore,\n IAdapterConfig,\n IAdapterProp,\n ItemAdapter,\n ItemsPredicate,\n ItemsUpdater,\n ItemsProcessor,\n BufferUpdater,\n IPackage,\n IPackages,\n IBufferInfo,\n IAdapterInput,\n AdapterAppendOptions,\n AdapterPrependOptions,\n AdapterRemoveOptions,\n AdapterClipOptions,\n AdapterInsertOptions,\n AdapterReplaceOptions,\n AdapterUpdateOptions,\n AdapterFixOptions,\n AdapterMethodResult,\n IAdapter,\n} from './adapter';\nimport { Settings, DevSettings } from './settings';\nimport { IRoutines, CustomRoutinesClass } from './routines';\nimport { ScrollEventData, State } from './state';\nimport {\n ProcessName,\n ProcessClass,\n ProcessPayload,\n ProcessSubject,\n AdapterProcessMap,\n IBaseProcess,\n IBaseAdapterProcess,\n} from './process';\nimport {\n ValidatedValue,\n IValidator,\n ICommonProp,\n ICommonProps,\n IValidatedCommonProps,\n IValidatedData,\n} from './validation';\n\nexport {\n ObservableLike,\n DatasourceGet,\n IDatasourceOptional,\n IDatasource,\n IDatasourceConstructed,\n OnDataChanged,\n WorkflowParams,\n ScrollerWorkflow,\n ScrollerParams,\n WorkflowGetter,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n StateMachineParams,\n Item,\n IReactivePropConfig,\n IReactivePropsConfig,\n IReactivePropsStore,\n IAdapterConfig,\n IAdapterProp,\n ItemAdapter,\n AdapterMethodResult,\n IAdapter,\n ItemsPredicate,\n ItemsUpdater,\n ItemsProcessor,\n BufferUpdater,\n IPackage,\n IPackages,\n IBufferInfo,\n IAdapterInput,\n AdapterAppendOptions,\n AdapterPrependOptions,\n AdapterRemoveOptions,\n AdapterClipOptions,\n AdapterInsertOptions,\n AdapterReplaceOptions,\n AdapterUpdateOptions,\n AdapterFixOptions,\n Settings,\n DevSettings,\n IRoutines,\n CustomRoutinesClass,\n ScrollEventData,\n State,\n ProcessName,\n ProcessClass,\n ProcessPayload,\n ProcessSubject,\n AdapterProcessMap,\n IBaseProcess,\n IBaseAdapterProcess,\n ValidatedValue,\n IValidator,\n ICommonProp,\n ICommonProps,\n IValidatedCommonProps,\n IValidatedData,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"","sourcesContent":["import {\n ObservableLike,\n DatasourceGet,\n IDatasourceOptional,\n IDatasource,\n IDatasourceConstructed,\n} from './datasource';\nimport {\n OnDataChanged,\n WorkflowParams,\n ScrollerWorkflow,\n ScrollerParams,\n WorkflowGetter,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n StateMachineParams,\n} from './workflow';\nimport { Item } from './item';\nimport {\n IReactivePropConfig,\n IReactivePropsConfig,\n IReactivePropsStore,\n IWanted,\n IAdapterConfig,\n IAdapterProp,\n ItemAdapter,\n ItemsPredicate,\n ItemsUpdater,\n ItemsProcessor,\n BufferUpdater,\n IPackage,\n IPackages,\n IBufferInfo,\n IAdapterInput,\n AdapterAppendOptions,\n AdapterPrependOptions,\n AdapterRemoveOptions,\n AdapterClipOptions,\n AdapterInsertOptions,\n AdapterReplaceOptions,\n AdapterUpdateOptions,\n AdapterFixOptions,\n AdapterMethodResult,\n IAdapter,\n} from './adapter';\nimport { Settings, DevSettings } from './settings';\nimport { IRoutines, CustomRoutinesClass } from './routines';\nimport { ScrollEventData, State } from './state';\nimport {\n ProcessName,\n ProcessClass,\n ProcessPayload,\n ProcessSubject,\n AdapterProcessMap,\n IBaseProcess,\n IBaseAdapterProcess,\n} from './process';\nimport {\n ValidatedValue,\n IValidator,\n ICommonProp,\n ICommonProps,\n IValidatedCommonProps,\n IValidatedData,\n} from './validation';\n\nexport {\n ObservableLike,\n DatasourceGet,\n IDatasourceOptional,\n IDatasource,\n IDatasourceConstructed,\n OnDataChanged,\n WorkflowParams,\n ScrollerWorkflow,\n ScrollerParams,\n WorkflowGetter,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n StateMachineParams,\n Item,\n IReactivePropConfig,\n IReactivePropsConfig,\n IReactivePropsStore,\n IWanted,\n IAdapterConfig,\n IAdapterProp,\n ItemAdapter,\n AdapterMethodResult,\n IAdapter,\n ItemsPredicate,\n ItemsUpdater,\n ItemsProcessor,\n BufferUpdater,\n IPackage,\n IPackages,\n IBufferInfo,\n IAdapterInput,\n AdapterAppendOptions,\n AdapterPrependOptions,\n AdapterRemoveOptions,\n AdapterClipOptions,\n AdapterInsertOptions,\n AdapterReplaceOptions,\n AdapterUpdateOptions,\n AdapterFixOptions,\n Settings,\n DevSettings,\n IRoutines,\n CustomRoutinesClass,\n ScrollEventData,\n State,\n ProcessName,\n ProcessClass,\n ProcessPayload,\n ProcessSubject,\n AdapterProcessMap,\n IBaseProcess,\n IBaseAdapterProcess,\n ValidatedValue,\n IValidator,\n ICommonProp,\n ICommonProps,\n IValidatedCommonProps,\n IValidatedData,\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/interfaces/process.ts"],"names":[],"mappings":"","sourcesContent":["import { Scroller } from '../scroller';\r\nimport { CommonProcess, AdapterProcess, ProcessStatus } from '../processes/index';\r\nimport { IDatasourceConstructed } from './datasource';\r\nimport { IAdapterInput } from './adapter';\r\n\r\nexport type ProcessName = CommonProcess | AdapterProcess;\r\n\r\nexport interface ProcessClass {\r\n process: ProcessName;\r\n run: (scroller: Scroller, ...args: any[]) => void;\r\n name: string;\r\n}\r\n\r\nexport interface ProcessPayload {\r\n process?: ProcessName;\r\n options?: unknown;\r\n event?: Event;\r\n finalize?: boolean;\r\n doClip?: boolean;\r\n doRender?: boolean;\r\n datasource?: IDatasourceConstructed;\r\n error?: unknown;\r\n}\r\n\r\nexport interface ProcessSubject {\r\n process: ProcessName;\r\n status: ProcessStatus;\r\n payload?: ProcessPayload;\r\n}\r\n\r\nexport type AdapterProcessMap<T> = {\r\n [key in AdapterProcess]: T;\r\n};\r\n\r\nexport interface IBaseProcess {\r\n new(): any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n process: ProcessName;\r\n}\r\n\r\nexport interface IBaseAdapterProcess extends IBaseProcess {\r\n parseInput: <T>(\r\n scroller: Scroller, options: T, ignoreErrors?: boolean, process?: AdapterProcess\r\n ) => IAdapterInput<T>;\r\n}\r\n"]}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/interfaces/process.ts"],"names":[],"mappings":"","sourcesContent":["import { Scroller } from '../scroller';\r\nimport { CommonProcess, AdapterProcess, ProcessStatus } from '../processes/index';\r\nimport { IDatasourceConstructed } from './datasource';\r\nimport { IAdapterInput } from './adapter';\r\n\r\nexport type ProcessName = CommonProcess | AdapterProcess;\r\n\r\nexport interface ProcessClass {\r\n process: ProcessName;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n run: (scroller: Scroller, ...args: any[]) => void;\r\n name: string;\r\n}\r\n\r\nexport interface ProcessPayload {\r\n process?: ProcessName;\r\n options?: unknown;\r\n event?: Event;\r\n finalize?: boolean;\r\n doClip?: boolean;\r\n doRender?: boolean;\r\n datasource?: IDatasourceConstructed;\r\n error?: unknown;\r\n}\r\n\r\nexport interface ProcessSubject {\r\n process: ProcessName;\r\n status: ProcessStatus;\r\n payload?: ProcessPayload;\r\n}\r\n\r\nexport type AdapterProcessMap<T> = {\r\n [key in AdapterProcess]: T;\r\n};\r\n\r\nexport interface IBaseProcess {\r\n new(): any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n process: ProcessName;\r\n}\r\n\r\nexport interface IBaseAdapterProcess extends IBaseProcess {\r\n parseInput: <T>(\r\n scroller: Scroller, options: T, ignoreErrors?: boolean, process?: AdapterProcess\r\n ) => IAdapterInput<T>;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/interfaces/workflow.ts"],"names":[],"mappings":"","sourcesContent":["import { ProcessClass, ProcessName, ProcessPayload, ProcessSubject } from './process';\nimport { IDatasource } from './datasource';\nimport { IPackage } from './adapter';\nimport { Item } from '../classes/item';\nimport { CustomRoutinesClass } from './routines';\nimport { Scroller } from '../scroller';\n\nexport type OnDataChanged<Data> = (items: Item<Data>[]) => void;\n\nexport interface WorkflowParams<ItemData> {\n datasource: IDatasource<ItemData>;\n consumer: IPackage;\n element: HTMLElement;\n run: OnDataChanged<ItemData>;\n Routines?: CustomRoutinesClass;\n}\n\ninterface CallWorkflow {\n (process: ProcessSubject): void;\n interrupted?: boolean;\n}\n\nexport interface ScrollerWorkflow<ItemData = unknown> {\n call: CallWorkflow;\n onDataChanged: OnDataChanged<ItemData>;\n}\n\nexport interface ScrollerParams<ItemData> {\n datasource: IDatasource<ItemData>;\n consumer?: IPackage;\n element?: HTMLElement;\n workflow?: ScrollerWorkflow<ItemData>;\n Routines?: CustomRoutinesClass;\n scroller?: Scroller<ItemData>; // for re-instantiation\n}\n\nexport type WorkflowGetter<ItemData> = () => ScrollerWorkflow<ItemData>;\n\nexport interface WorkflowError {\n loop: string;\n time: number;\n message: string;\n process: ProcessName;\n}\n\nexport interface InterruptParams<ItemData> {\n process: ProcessName;\n finalize?: boolean;\n datasource?: IDatasource<ItemData>;\n}\n\nexport interface StateMachineMethods<ItemData> {\n run: (process: ProcessClass) => (...args: any[]) => void;\n interrupt: (params: InterruptParams<ItemData>) => void;\n done: () => void;\n onError: (process: ProcessName, payload: ProcessPayload) => void;\n}\n\nexport interface StateMachineParams<ItemData = unknown> {\n input: ProcessSubject;\n methods: StateMachineMethods<ItemData>;\n}\n"]}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/interfaces/workflow.ts"],"names":[],"mappings":"","sourcesContent":["import { ProcessClass, ProcessName, ProcessPayload, ProcessSubject } from './process';\nimport { IDatasource } from './datasource';\nimport { IPackage } from './adapter';\nimport { Item } from '../classes/item';\nimport { CustomRoutinesClass } from './routines';\nimport { Scroller } from '../scroller';\n\nexport type OnDataChanged<Data> = (items: Item<Data>[]) => void;\n\nexport interface WorkflowParams<ItemData> {\n datasource: IDatasource<ItemData>;\n consumer: IPackage;\n element: HTMLElement;\n run: OnDataChanged<ItemData>;\n Routines?: CustomRoutinesClass;\n}\n\ninterface CallWorkflow {\n (process: ProcessSubject): void;\n interrupted?: boolean;\n}\n\nexport interface ScrollerWorkflow<ItemData = unknown> {\n call: CallWorkflow;\n onDataChanged: OnDataChanged<ItemData>;\n}\n\nexport interface ScrollerParams<ItemData> {\n datasource: IDatasource<ItemData>;\n consumer?: IPackage;\n element?: HTMLElement;\n workflow?: ScrollerWorkflow<ItemData>;\n Routines?: CustomRoutinesClass;\n scroller?: Scroller<ItemData>; // for re-instantiation\n}\n\nexport type WorkflowGetter<ItemData> = () => ScrollerWorkflow<ItemData>;\n\nexport interface WorkflowError {\n loop: string;\n time: number;\n message: string;\n process: ProcessName;\n}\n\nexport interface InterruptParams<ItemData> {\n process: ProcessName;\n finalize?: boolean;\n datasource?: IDatasource<ItemData>;\n}\n\nexport interface StateMachineMethods<ItemData> {\n run: (process: ProcessClass) => (...args: unknown[]) => void;\n interrupt: (params: InterruptParams<ItemData>) => void;\n done: () => void;\n onError: (process: ProcessName, payload: ProcessPayload) => void;\n}\n\nexport interface StateMachineParams<ItemData = unknown> {\n input: ProcessSubject;\n methods: StateMachineMethods<ItemData>;\n}\n"]}
@@ -1,7 +1,5 @@
1
1
  import { __assign, __extends } from "tslib";
2
2
  import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
- import { Direction } from '../inputs/index';
4
- import { EMPTY_ITEM } from '../classes/adapter/props';
5
3
  var isInterrupted = function (_a) {
6
4
  var call = _a.call;
7
5
  return !!call.interrupted;
@@ -16,7 +14,7 @@ var End = /** @class */ (function (_super) {
16
14
  var workflow = scroller.workflow, interrupter = scroller.state.cycle.interrupter;
17
15
  if (!error && !interrupter) {
18
16
  // set out params accessible via Adapter
19
- End.calculateParams(scroller, workflow);
17
+ End.calculateParams(scroller);
20
18
  }
21
19
  // explicit interruption for we don't want to go through the inner loop finalizing
22
20
  if (isInterrupted(workflow)) {
@@ -31,21 +29,10 @@ var End = /** @class */ (function (_super) {
31
29
  payload: __assign({}, (interrupter ? { process: interrupter } : {}))
32
30
  });
33
31
  };
34
- End.calculateParams = function (scroller, workflow) {
35
- var adapter = scroller.adapter, viewport = scroller.viewport, items = scroller.buffer.items;
36
- if (adapter.wanted.firstVisible) {
37
- var item = viewport.getEdgeVisibleItem(items, Direction.backward).item;
38
- if (!item || item.element !== adapter.firstVisible.element) {
39
- adapter.firstVisible = item ? item.get() : EMPTY_ITEM;
40
- }
41
- }
42
- // the workflow can be interrupter on firstVisible change
43
- if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {
44
- var item = viewport.getEdgeVisibleItem(items, Direction.forward).item;
45
- if (!item || item.element !== adapter.lastVisible.element) {
46
- adapter.lastVisible = item ? item.get() : EMPTY_ITEM;
47
- }
48
- }
32
+ End.calculateParams = function (scroller) {
33
+ var adapter = scroller.adapter, workflow = scroller.workflow;
34
+ adapter.setFirstOrLastVisible({ first: true, workflow: workflow });
35
+ adapter.setFirstOrLastVisible({ last: true, workflow: workflow });
49
36
  };
50
37
  End.shouldContinueRun = function (scroller, error) {
51
38
  var _a = scroller.state, cycle = _a.cycle, fetch = _a.fetch, render = _a.render;
@@ -1 +1 @@
1
- {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/processes/end.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\nimport { EMPTY_ITEM } from '../classes/adapter/props';\nimport { ScrollerWorkflow } from '../interfaces/index';\n\nconst isInterrupted = ({ call }: ScrollerWorkflow): boolean => !!call.interrupted;\n\nexport default class End extends BaseProcessFactory(CommonProcess.end) {\n\n static run(scroller: Scroller, { error }: { error?: unknown } = {}): void {\n const { workflow, state: { cycle: { interrupter } } } = scroller;\n\n if (!error && !interrupter) {\n // set out params accessible via Adapter\n End.calculateParams(scroller, workflow);\n }\n\n // explicit interruption for we don't want to go through the inner loop finalizing\n if (isInterrupted(workflow)) {\n workflow.call({ process: End.process, status: ProcessStatus.done });\n return;\n }\n\n const next = End.shouldContinueRun(scroller, error);\n scroller.state.endInnerLoop();\n\n workflow.call({\n process: End.process,\n status: next ? ProcessStatus.next : ProcessStatus.done,\n payload: { ...(interrupter ? { process: interrupter } : {}) }\n });\n }\n\n static calculateParams(scroller: Scroller, workflow: ScrollerWorkflow): void {\n const { adapter, viewport, buffer: { items } } = scroller;\n\n if (adapter.wanted.firstVisible) {\n const { item } = viewport.getEdgeVisibleItem(items, Direction.backward);\n if (!item || item.element !== adapter.firstVisible.element) {\n adapter.firstVisible = item ? item.get() : EMPTY_ITEM;\n }\n }\n\n // the workflow can be interrupter on firstVisible change\n if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {\n const { item } = viewport.getEdgeVisibleItem(items, Direction.forward);\n if (!item || item.element !== adapter.lastVisible.element) {\n adapter.lastVisible = item ? item.get() : EMPTY_ITEM;\n }\n }\n }\n\n static shouldContinueRun(scroller: Scroller, error: unknown): boolean {\n const { cycle, fetch, render } = scroller.state;\n // Adapter.reload or Adapter.reset\n if (cycle.interrupter) {\n return true;\n }\n // critical error\n if (error) {\n return false;\n }\n // Adapter.check\n if (fetch.simulate && fetch.isCheck && !render.noSize) {\n return true;\n }\n // Adapter.remove or Adapter.update with clip\n if (fetch.simulate && fetch.doRemove) {\n return true;\n }\n // common inner loop (App start, scroll, Adapter.clip) with full fetch\n if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {\n return true;\n }\n return false;\n }\n\n}\n"]}
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/processes/end.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIhF,IAAM,aAAa,GAAG,UAAC,EAA0B;QAAxB,IAAI,UAAA;IAAkC,OAAA,CAAC,CAAC,IAAI,CAAC,WAAW;AAAlB,CAAkB,CAAC;AAElF;IAAiC,uBAAqC;IAAtE;;IA0DA,CAAC;IAxDQ,OAAG,GAAV,UAAW,QAAkB,EAAE,EAAmC;YAAnC,qBAAiC,EAAE,KAAA,EAAjC,KAAK,WAAA;QAC5B,IAAA,QAAQ,GAAwC,QAAQ,SAAhD,EAAoB,WAAW,GAAS,QAAQ,wBAAjB,CAAkB;QAEjE,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE;YAC1B,wCAAwC;YACxC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,kFAAkF;QAClF,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;YAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,OAAO;SACR;QAED,IAAM,IAAI,GAAG,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;YACtD,OAAO,eAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAEM,mBAAe,GAAtB,UAAuB,QAAkB;QAC/B,IAAA,OAAO,GAAe,QAAQ,QAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;QAEvC,OAAO,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEM,qBAAiB,GAAxB,UAAyB,QAAkB,EAAE,KAAc;QACnD,IAAA,KAA2B,QAAQ,CAAC,KAAK,EAAvC,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAmB,CAAC;QAChD,kCAAkC;QAClC,IAAI,KAAK,CAAC,WAAW,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QACD,iBAAiB;QACjB,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QACD,gBAAgB;QAChB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrD,OAAO,IAAI,CAAC;SACb;QACD,6CAA6C;QAC7C,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QACD,sEAAsE;QACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;YACtF,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEH,UAAC;AAAD,CAAC,AA1DD,CAAiC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,GA0DrE","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { ScrollerWorkflow } from '../interfaces/index';\n\nconst isInterrupted = ({ call }: ScrollerWorkflow): boolean => !!call.interrupted;\n\nexport default class End extends BaseProcessFactory(CommonProcess.end) {\n\n static run(scroller: Scroller, { error }: { error?: unknown } = {}): void {\n const { workflow, state: { cycle: { interrupter } } } = scroller;\n\n if (!error && !interrupter) {\n // set out params accessible via Adapter\n End.calculateParams(scroller);\n }\n\n // explicit interruption for we don't want to go through the inner loop finalizing\n if (isInterrupted(workflow)) {\n workflow.call({ process: End.process, status: ProcessStatus.done });\n return;\n }\n\n const next = End.shouldContinueRun(scroller, error);\n scroller.state.endInnerLoop();\n\n workflow.call({\n process: End.process,\n status: next ? ProcessStatus.next : ProcessStatus.done,\n payload: { ...(interrupter ? { process: interrupter } : {}) }\n });\n }\n\n static calculateParams(scroller: Scroller): void {\n const { adapter, workflow } = scroller;\n\n adapter.setFirstOrLastVisible({ first: true, workflow });\n adapter.setFirstOrLastVisible({ last: true, workflow });\n }\n\n static shouldContinueRun(scroller: Scroller, error: unknown): boolean {\n const { cycle, fetch, render } = scroller.state;\n // Adapter.reload or Adapter.reset\n if (cycle.interrupter) {\n return true;\n }\n // critical error\n if (error) {\n return false;\n }\n // Adapter.check\n if (fetch.simulate && fetch.isCheck && !render.noSize) {\n return true;\n }\n // Adapter.remove or Adapter.update with clip\n if (fetch.simulate && fetch.doRemove) {\n return true;\n }\n // common inner loop (App start, scroll, Adapter.clip) with full fetch\n if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {\n return true;\n }\n return false;\n }\n\n}\n"]}
@@ -57,7 +57,7 @@ var Scroller = /** @class */ (function () {
57
57
  Scroller.prototype.init = function (adapterRun$) {
58
58
  this.viewport.reset(this.buffer.startIndex);
59
59
  this.logger.stat('initialization');
60
- this.adapter.initialize(this.buffer, this.state, this.logger, adapterRun$);
60
+ this.adapter.initialize(this.buffer, this.state, this.viewport, this.logger, adapterRun$);
61
61
  };
62
62
  Scroller.prototype.dispose = function (forever) {
63
63
  if (forever) { // Adapter is not re-instantiated on reset
@@ -1 +1 @@
1
- {"version":3,"file":"scroller.js","sourceRoot":"","sources":["../../src/scroller.ts"],"names":[],"mappings":"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","sourcesContent":["import { DatasourceGeneric, makeDatasource } from './classes/datasource';\nimport { Settings } from './classes/settings';\nimport { Logger } from './classes/logger';\nimport { Routines } from './classes/domRoutines';\nimport { Viewport } from './classes/viewport';\nimport { Buffer } from './classes/buffer';\nimport { State } from './classes/state';\nimport { Adapter } from './classes/adapter';\nimport { Reactive } from './classes/reactive';\nimport { validate, DATASOURCE } from './inputs/index';\nimport core from './version';\nimport {\n ScrollerWorkflow, IDatasource, IDatasourceConstructed, ScrollerParams, IPackages, ProcessSubject\n} from './interfaces/index';\n\nexport const INVALID_DATASOURCE_PREFIX = 'Invalid datasource:';\n\nlet instanceCount = 0;\n\nexport class Scroller<Data = unknown> {\n public datasource: IDatasourceConstructed<Data>;\n public workflow: ScrollerWorkflow<Data>;\n\n public settings: Settings<Data>;\n public logger: Logger;\n public routines: Routines;\n public viewport: Viewport;\n public buffer: Buffer<Data>;\n public state: State;\n public adapter: Adapter<Data>;\n\n constructor({\n datasource, consumer, element, workflow, Routines: CustomRoutines, scroller\n }: ScrollerParams<Data>) {\n const { params: { get } } = validate(datasource, DATASOURCE);\n if (!get.isValid) {\n throw new Error(`${INVALID_DATASOURCE_PREFIX} ${get.errors[0]}`);\n }\n\n const packageInfo = scroller ? scroller.state.packageInfo : ({ consumer, core } as IPackages);\n element = scroller ? scroller.routines.element : (element as HTMLElement);\n workflow = scroller ? scroller.workflow : (workflow as ScrollerWorkflow<Data>);\n\n this.workflow = workflow;\n this.settings = new Settings<Data>(datasource.settings, datasource.devSettings, ++instanceCount);\n this.logger = new Logger(this as Scroller, packageInfo, datasource.adapter);\n this.routines = new Routines(element, this.settings, CustomRoutines);\n this.state = new State(packageInfo, this.settings, scroller ? scroller.state : void 0);\n this.buffer = new Buffer<Data>(this.settings, workflow.onDataChanged, this.logger);\n this.viewport = new Viewport(this.settings, this.routines, this.state, this.logger);\n this.logger.object('vscroll settings object', this.settings, true);\n\n this.initDatasource(datasource, scroller);\n }\n\n initDatasource(datasource: IDatasource<Data>, scroller?: Scroller<Data>): void {\n if (scroller) { // scroller re-instantiating case\n this.datasource = datasource as IDatasourceConstructed<Data>;\n this.adapter = scroller.adapter;\n // todo: what about (this.settings.adapter !== scroller.setting.adapter) case?\n return;\n }\n // scroller is being instantiated for the first time\n const constructed = datasource instanceof DatasourceGeneric;\n const mockAdapter = !constructed && !this.settings.adapter;\n if (constructed) { // datasource is already instantiated\n this.datasource = datasource as IDatasourceConstructed<Data>;\n } else { // datasource as POJO\n const DS = makeDatasource(() => ({ mock: mockAdapter }));\n this.datasource = new DS<Data>(datasource);\n if (this.settings.adapter) {\n datasource.adapter = this.datasource.adapter;\n }\n }\n const publicContext = !mockAdapter ? this.datasource.adapter : null;\n this.adapter = new Adapter<Data>(publicContext, () => this.workflow, this.logger);\n }\n\n init(adapterRun$?: Reactive<ProcessSubject>): void {\n this.viewport.reset(this.buffer.startIndex);\n this.logger.stat('initialization');\n this.adapter.initialize(this.buffer, this.state, this.logger, adapterRun$);\n }\n\n dispose(forever?: boolean): void {\n if (forever) { // Adapter is not re-instantiated on reset\n this.adapter.dispose();\n }\n this.buffer.dispose();\n this.state.dispose();\n }\n\n finalize(): void {\n }\n\n}\n"]}
1
+ {"version":3,"file":"scroller.js","sourceRoot":"","sources":["../../src/scroller.ts"],"names":[],"mappings":"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","sourcesContent":["import { DatasourceGeneric, makeDatasource } from './classes/datasource';\nimport { Settings } from './classes/settings';\nimport { Logger } from './classes/logger';\nimport { Routines } from './classes/domRoutines';\nimport { Viewport } from './classes/viewport';\nimport { Buffer } from './classes/buffer';\nimport { State } from './classes/state';\nimport { Adapter } from './classes/adapter';\nimport { Reactive } from './classes/reactive';\nimport { validate, DATASOURCE } from './inputs/index';\nimport core from './version';\nimport {\n ScrollerWorkflow, IDatasource, IDatasourceConstructed, ScrollerParams, IPackages, ProcessSubject\n} from './interfaces/index';\n\nexport const INVALID_DATASOURCE_PREFIX = 'Invalid datasource:';\n\nlet instanceCount = 0;\n\nexport class Scroller<Data = unknown> {\n public datasource: IDatasourceConstructed<Data>;\n public workflow: ScrollerWorkflow<Data>;\n\n public settings: Settings<Data>;\n public logger: Logger;\n public routines: Routines;\n public viewport: Viewport;\n public buffer: Buffer<Data>;\n public state: State;\n public adapter: Adapter<Data>;\n\n constructor({\n datasource, consumer, element, workflow, Routines: CustomRoutines, scroller\n }: ScrollerParams<Data>) {\n const { params: { get } } = validate(datasource, DATASOURCE);\n if (!get.isValid) {\n throw new Error(`${INVALID_DATASOURCE_PREFIX} ${get.errors[0]}`);\n }\n\n const packageInfo = scroller ? scroller.state.packageInfo : ({ consumer, core } as IPackages);\n element = scroller ? scroller.routines.element : (element as HTMLElement);\n workflow = scroller ? scroller.workflow : (workflow as ScrollerWorkflow<Data>);\n\n this.workflow = workflow;\n this.settings = new Settings<Data>(datasource.settings, datasource.devSettings, ++instanceCount);\n this.logger = new Logger(this as Scroller, packageInfo, datasource.adapter);\n this.routines = new Routines(element, this.settings, CustomRoutines);\n this.state = new State(packageInfo, this.settings, scroller ? scroller.state : void 0);\n this.buffer = new Buffer<Data>(this.settings, workflow.onDataChanged, this.logger);\n this.viewport = new Viewport(this.settings, this.routines, this.state, this.logger);\n this.logger.object('vscroll settings object', this.settings, true);\n\n this.initDatasource(datasource, scroller);\n }\n\n initDatasource(datasource: IDatasource<Data>, scroller?: Scroller<Data>): void {\n if (scroller) { // scroller re-instantiating case\n this.datasource = datasource as IDatasourceConstructed<Data>;\n this.adapter = scroller.adapter;\n // todo: what about (this.settings.adapter !== scroller.setting.adapter) case?\n return;\n }\n // scroller is being instantiated for the first time\n const constructed = datasource instanceof DatasourceGeneric;\n const mockAdapter = !constructed && !this.settings.adapter;\n if (constructed) { // datasource is already instantiated\n this.datasource = datasource as IDatasourceConstructed<Data>;\n } else { // datasource as POJO\n const DS = makeDatasource(() => ({ mock: mockAdapter }));\n this.datasource = new DS<Data>(datasource);\n if (this.settings.adapter) {\n datasource.adapter = this.datasource.adapter;\n }\n }\n const publicContext = !mockAdapter ? this.datasource.adapter : null;\n this.adapter = new Adapter<Data>(publicContext, () => this.workflow, this.logger);\n }\n\n init(adapterRun$?: Reactive<ProcessSubject>): void {\n this.viewport.reset(this.buffer.startIndex);\n this.logger.stat('initialization');\n this.adapter.initialize(this.buffer, this.state, this.viewport, this.logger, adapterRun$);\n }\n\n dispose(forever?: boolean): void {\n if (forever) { // Adapter is not re-instantiated on reset\n this.adapter.dispose();\n }\n this.buffer.dispose();\n this.state.dispose();\n }\n\n finalize(): void {\n }\n\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  export default {
2
2
  name: 'vscroll',
3
- version: '1.5.2'
3
+ version: '1.5.3-passive'
4
4
  };
5
5
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;CACjB,CAAC","sourcesContent":["export default {\n name: 'vscroll',\n version: '1.5.2'\n};\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,eAAe;CACzB,CAAC","sourcesContent":["export default {\n name: 'vscroll',\n version: '1.5.3-passive'\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/workflow.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from './scroller';\nimport { runStateMachine } from './workflow-transducer';\nimport { Reactive } from './classes/reactive';\nimport { Item } from './classes/item';\nimport { CommonProcess, ProcessStatus as Status, } from './processes/index';\nimport {\n WorkflowParams,\n ProcessName,\n ProcessPayload,\n ProcessClass,\n ProcessSubject,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n ScrollerWorkflow,\n} from './interfaces/index';\n\nexport class Workflow<ItemData = unknown> {\n\n isInitialized: boolean;\n initTimer: ReturnType<typeof setTimeout> | null;\n adapterRun$: Reactive<ProcessSubject>;\n cyclesDone: number;\n interruptionCount: number;\n errors: WorkflowError[];\n\n private offScroll: () => void;\n readonly propagateChanges: WorkflowParams<ItemData>['run'];\n readonly stateMachineMethods: StateMachineMethods<ItemData>;\n\n scroller: Scroller<ItemData>;\n\n constructor({ element, datasource, consumer, run, Routines }: WorkflowParams<ItemData>) {\n this.isInitialized = false;\n this.initTimer = null;\n this.adapterRun$ = new Reactive();\n this.cyclesDone = 0;\n this.interruptionCount = 0;\n this.errors = [];\n this.offScroll = () => null;\n this.propagateChanges = run;\n this.stateMachineMethods = {\n run: this.runProcess(),\n interrupt: this.interrupt.bind(this),\n done: this.done.bind(this),\n onError: this.onError.bind(this)\n };\n\n this.scroller = new Scroller<ItemData>({\n element, datasource, consumer, workflow: this.getUpdater(), Routines\n });\n\n if (this.scroller.settings.initializeDelay) {\n this.initTimer = setTimeout(() => {\n this.initTimer = null;\n this.init();\n }, this.scroller.settings.initializeDelay);\n } else {\n this.init();\n }\n }\n\n init(): void {\n this.scroller.init(this.adapterRun$);\n this.isInitialized = true;\n\n // run the Workflow\n this.callWorkflow({\n process: CommonProcess.init,\n status: Status.start\n });\n\n // set up scroll event listener\n const { routines } = this.scroller;\n const onScrollHandler: EventListener =\n event => this.callWorkflow({\n process: CommonProcess.scroll,\n status: Status.start,\n payload: { event }\n });\n this.offScroll = routines.onScroll(onScrollHandler);\n }\n\n changeItems(items: Item<ItemData>[]): void {\n this.propagateChanges(items);\n }\n\n callWorkflow(processSubject: ProcessSubject): void {\n if (!this.isInitialized) {\n return;\n }\n const { process, status } = processSubject;\n if (process && process.startsWith('adapter') && status !== Status.next) {\n this.adapterRun$.set(processSubject);\n }\n this.process(processSubject);\n }\n\n getUpdater(): ScrollerWorkflow<ItemData> {\n return {\n call: this.callWorkflow.bind(this),\n onDataChanged: this.changeItems.bind(this),\n };\n }\n\n process(data: ProcessSubject): void {\n const { status, process, payload } = data;\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%cfire%c', ...['color: #cc7777;', 'color: #000000;'],\n process, `\"${status}\"`, ...(payload !== void 0 ? [payload] : [])\n ]);\n }\n this.scroller.logger.logProcess(data);\n\n if (process === CommonProcess.end) {\n this.scroller.finalize();\n }\n runStateMachine({\n input: data,\n methods: this.stateMachineMethods as StateMachineMethods<unknown>\n });\n }\n\n runProcess() {\n return ({ run, process, name }: ProcessClass) =>\n (...args: any[]): void => {\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%crun%c', ...['color: #333399;', 'color: #000000;'],\n process || name, ...args\n ]);\n }\n run(this.scroller as Scroller, ...args);\n };\n }\n\n onError(process: ProcessName, payload?: ProcessPayload): void {\n const message: string = payload && String(payload.error) || '';\n const { time, cycle } = this.scroller.state;\n this.errors.push({\n process,\n message,\n time,\n loop: cycle.loopIdNext\n });\n this.scroller.logger.logError(message);\n }\n\n interrupt({ process, finalize, datasource }: InterruptParams<ItemData>): void {\n if (finalize) {\n const { workflow, logger } = this.scroller;\n // we are going to create a new reference for the scroller.workflow object\n // calling the old version of the scroller.workflow by any outstanding async processes will be skipped\n workflow.call = (p: ProcessSubject) => // eslint-disable-line @typescript-eslint/no-unused-vars\n logger.log('[skip wf call]');\n workflow.call.interrupted = true;\n this.scroller.workflow = this.getUpdater();\n this.interruptionCount++;\n logger.log(() => `workflow had been interrupted by the ${process} process (${this.interruptionCount})`);\n }\n if (datasource) { // Scroller re-initialization case\n this.scroller.adapter.relax(() => {\n this.scroller.logger.log('new Scroller instantiation');\n const scroller = new Scroller<ItemData>({ datasource, scroller: this.scroller });\n this.scroller.dispose();\n this.scroller = scroller;\n this.scroller.init();\n });\n }\n }\n\n done(): void {\n const { state, logger } = this.scroller;\n this.cyclesDone++;\n logger.logCycle(false);\n state.endWorkflowCycle(this.cyclesDone + 1);\n this.finalize();\n }\n\n dispose(): void {\n if (this.initTimer) {\n clearTimeout(this.initTimer);\n }\n this.offScroll();\n this.adapterRun$.dispose();\n this.scroller.dispose(true);\n Object.getOwnPropertyNames(this).forEach(prop => {\n delete (this as Record<string, unknown>)[prop];\n });\n }\n\n finalize(): void {\n }\n\n}\n"]}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/workflow.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from './scroller';\nimport { runStateMachine } from './workflow-transducer';\nimport { Reactive } from './classes/reactive';\nimport { Item } from './classes/item';\nimport { CommonProcess, ProcessStatus as Status, } from './processes/index';\nimport {\n WorkflowParams,\n ProcessName,\n ProcessPayload,\n ProcessClass,\n ProcessSubject,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n ScrollerWorkflow,\n} from './interfaces/index';\n\nexport class Workflow<ItemData = unknown> {\n\n isInitialized: boolean;\n initTimer: ReturnType<typeof setTimeout> | null;\n adapterRun$: Reactive<ProcessSubject>;\n cyclesDone: number;\n interruptionCount: number;\n errors: WorkflowError[];\n\n private offScroll: () => void;\n readonly propagateChanges: WorkflowParams<ItemData>['run'];\n readonly stateMachineMethods: StateMachineMethods<ItemData>;\n\n scroller: Scroller<ItemData>;\n\n constructor({ element, datasource, consumer, run, Routines }: WorkflowParams<ItemData>) {\n this.isInitialized = false;\n this.initTimer = null;\n this.adapterRun$ = new Reactive();\n this.cyclesDone = 0;\n this.interruptionCount = 0;\n this.errors = [];\n this.offScroll = () => null;\n this.propagateChanges = run;\n this.stateMachineMethods = {\n run: this.runProcess(),\n interrupt: this.interrupt.bind(this),\n done: this.done.bind(this),\n onError: this.onError.bind(this)\n };\n\n this.scroller = new Scroller<ItemData>({\n element, datasource, consumer, workflow: this.getUpdater(), Routines\n });\n\n if (this.scroller.settings.initializeDelay) {\n this.initTimer = setTimeout(() => {\n this.initTimer = null;\n this.init();\n }, this.scroller.settings.initializeDelay);\n } else {\n this.init();\n }\n }\n\n init(): void {\n this.scroller.init(this.adapterRun$);\n this.isInitialized = true;\n\n // run the Workflow\n this.callWorkflow({\n process: CommonProcess.init,\n status: Status.start\n });\n\n // set up scroll event listener\n const { routines } = this.scroller;\n const onScrollHandler: EventListener =\n event => this.callWorkflow({\n process: CommonProcess.scroll,\n status: Status.start,\n payload: { event }\n });\n this.offScroll = routines.onScroll(onScrollHandler);\n }\n\n changeItems(items: Item<ItemData>[]): void {\n this.propagateChanges(items);\n }\n\n callWorkflow(processSubject: ProcessSubject): void {\n if (!this.isInitialized) {\n return;\n }\n const { process, status } = processSubject;\n if (process && process.startsWith('adapter') && status !== Status.next) {\n this.adapterRun$.set(processSubject);\n }\n this.process(processSubject);\n }\n\n getUpdater(): ScrollerWorkflow<ItemData> {\n return {\n call: this.callWorkflow.bind(this),\n onDataChanged: this.changeItems.bind(this),\n };\n }\n\n process(data: ProcessSubject): void {\n const { status, process, payload } = data;\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%cfire%c', ...['color: #cc7777;', 'color: #000000;'],\n process, `\"${status}\"`, ...(payload !== void 0 ? [payload] : [])\n ]);\n }\n this.scroller.logger.logProcess(data);\n\n if (process === CommonProcess.end) {\n this.scroller.finalize();\n }\n runStateMachine({\n input: data,\n methods: this.stateMachineMethods as StateMachineMethods<unknown>\n });\n }\n\n runProcess() {\n return ({ run, process, name }: ProcessClass) =>\n (...args: unknown[]): void => {\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%crun%c', ...['color: #333399;', 'color: #000000;'],\n process || name, ...args\n ]);\n }\n run(this.scroller as Scroller, ...args);\n };\n }\n\n onError(process: ProcessName, payload?: ProcessPayload): void {\n const message: string = payload && String(payload.error) || '';\n const { time, cycle } = this.scroller.state;\n this.errors.push({\n process,\n message,\n time,\n loop: cycle.loopIdNext\n });\n this.scroller.logger.logError(message);\n }\n\n interrupt({ process, finalize, datasource }: InterruptParams<ItemData>): void {\n if (finalize) {\n const { workflow, logger } = this.scroller;\n // we are going to create a new reference for the scroller.workflow object\n // calling the old version of the scroller.workflow by any outstanding async processes will be skipped\n workflow.call = (p: ProcessSubject) => // eslint-disable-line @typescript-eslint/no-unused-vars\n logger.log('[skip wf call]');\n workflow.call.interrupted = true;\n this.scroller.workflow = this.getUpdater();\n this.interruptionCount++;\n logger.log(() => `workflow had been interrupted by the ${process} process (${this.interruptionCount})`);\n }\n if (datasource) { // Scroller re-initialization case\n this.scroller.adapter.relax(() => {\n this.scroller.logger.log('new Scroller instantiation');\n const scroller = new Scroller<ItemData>({ datasource, scroller: this.scroller });\n this.scroller.dispose();\n this.scroller = scroller;\n this.scroller.init();\n });\n }\n }\n\n done(): void {\n const { state, logger } = this.scroller;\n this.cyclesDone++;\n logger.logCycle(false);\n state.endWorkflowCycle(this.cyclesDone + 1);\n this.finalize();\n }\n\n dispose(): void {\n if (this.initTimer) {\n clearTimeout(this.initTimer);\n }\n this.offScroll();\n this.adapterRun$.dispose();\n this.scroller.dispose(true);\n Object.getOwnPropertyNames(this).forEach(prop => {\n delete (this as Record<string, unknown>)[prop];\n });\n }\n\n finalize(): void {\n }\n\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { IAdapterProp } from '../../interfaces/index';
2
+ interface IWanted {
3
+ box: {
4
+ [key: string]: boolean;
5
+ };
6
+ block: boolean;
7
+ }
8
+ export declare const wantedUtils: {
9
+ getBox: (id?: number | undefined) => IWanted['box'] | undefined;
10
+ setBox: ({ name, wanted }: IAdapterProp, id?: number | undefined) => boolean;
11
+ setBlock: (value: boolean, id?: number | undefined) => void;
12
+ };
13
+ export declare const wantedStorage: Map<number, IWanted>;
14
+ export {};