@egjs/flicking 4.3.1 → 4.5.0

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 (92) hide show
  1. package/README.md +1 -2
  2. package/declaration/Flicking.d.ts +30 -12
  3. package/declaration/camera/Camera.d.ts +29 -26
  4. package/declaration/camera/index.d.ts +2 -4
  5. package/declaration/camera/mode/BoundCameraMode.d.ts +13 -0
  6. package/declaration/camera/mode/CameraMode.d.ts +19 -0
  7. package/declaration/camera/mode/CircularCameraMode.d.ts +18 -0
  8. package/declaration/camera/mode/LinearCameraMode.d.ts +9 -0
  9. package/declaration/camera/mode/index.d.ts +6 -0
  10. package/declaration/const/error.d.ts +3 -1
  11. package/declaration/const/external.d.ts +9 -0
  12. package/declaration/core/AutoResizer.d.ts +13 -0
  13. package/declaration/core/VirtualManager.d.ts +37 -0
  14. package/declaration/core/index.d.ts +2 -1
  15. package/declaration/core/panel/Panel.d.ts +13 -7
  16. package/declaration/core/panel/VirtualPanel.d.ts +19 -0
  17. package/declaration/core/panel/index.d.ts +4 -4
  18. package/declaration/core/panel/provider/ElementProvider.d.ts +8 -0
  19. package/declaration/core/panel/provider/VanillaElementProvider.d.ts +12 -0
  20. package/declaration/core/panel/provider/VirtualElementProvider.d.ts +15 -0
  21. package/declaration/core/panel/provider/index.d.ts +5 -0
  22. package/declaration/index.d.ts +11 -1
  23. package/declaration/renderer/ExternalRenderer.d.ts +1 -1
  24. package/declaration/renderer/Renderer.d.ts +17 -12
  25. package/declaration/renderer/VanillaRenderer.d.ts +2 -7
  26. package/declaration/renderer/index.d.ts +1 -0
  27. package/declaration/renderer/strategy/NormalRenderingStrategy.d.ts +23 -0
  28. package/declaration/renderer/strategy/RenderingStrategy.d.ts +15 -0
  29. package/declaration/renderer/strategy/VirtualRenderingStrategy.d.ts +17 -0
  30. package/declaration/renderer/strategy/index.d.ts +5 -0
  31. package/declaration/type/external.d.ts +1 -3
  32. package/declaration/utils.d.ts +7 -1
  33. package/dist/flicking.esm.js +2526 -1475
  34. package/dist/flicking.esm.js.map +1 -1
  35. package/dist/flicking.js +2561 -1485
  36. package/dist/flicking.js.map +1 -1
  37. package/dist/flicking.min.js +2 -2
  38. package/dist/flicking.min.js.map +1 -1
  39. package/dist/flicking.pkgd.js +9006 -8312
  40. package/dist/flicking.pkgd.js.map +1 -1
  41. package/dist/flicking.pkgd.min.js +2 -2
  42. package/dist/flicking.pkgd.min.js.map +1 -1
  43. package/package.json +12 -24
  44. package/src/Flicking.ts +172 -45
  45. package/src/camera/Camera.ts +201 -93
  46. package/src/camera/index.ts +3 -7
  47. package/src/camera/{BoundCamera.ts → mode/BoundCameraMode.ts} +46 -43
  48. package/src/camera/mode/CameraMode.ts +77 -0
  49. package/src/camera/mode/CircularCameraMode.ts +171 -0
  50. package/src/camera/mode/LinearCameraMode.ts +23 -0
  51. package/src/camera/mode/index.ts +14 -0
  52. package/src/cfc/sync.ts +10 -5
  53. package/src/const/error.ts +6 -3
  54. package/src/const/external.ts +18 -0
  55. package/src/control/AxesController.ts +11 -6
  56. package/src/control/Control.ts +6 -6
  57. package/src/control/FreeControl.ts +2 -2
  58. package/src/control/SnapControl.ts +3 -3
  59. package/src/control/StrictControl.ts +2 -2
  60. package/src/core/AutoResizer.ts +81 -0
  61. package/src/core/Viewport.ts +4 -4
  62. package/src/core/VirtualManager.ts +188 -0
  63. package/src/core/index.ts +3 -1
  64. package/src/core/panel/Panel.ts +54 -34
  65. package/src/core/panel/VirtualPanel.ts +110 -0
  66. package/src/core/panel/index.ts +5 -7
  67. package/src/core/panel/provider/ElementProvider.ts +14 -0
  68. package/src/core/panel/provider/VanillaElementProvider.ts +45 -0
  69. package/src/core/panel/provider/VirtualElementProvider.ts +48 -0
  70. package/src/core/panel/provider/index.ts +16 -0
  71. package/src/index.ts +12 -1
  72. package/src/index.umd.ts +2 -0
  73. package/src/renderer/ExternalRenderer.ts +7 -7
  74. package/src/renderer/Renderer.ts +106 -65
  75. package/src/renderer/VanillaRenderer.ts +28 -86
  76. package/src/renderer/index.ts +2 -0
  77. package/src/renderer/strategy/NormalRenderingStrategy.ts +106 -0
  78. package/src/renderer/strategy/RenderingStrategy.ts +21 -0
  79. package/src/renderer/strategy/VirtualRenderingStrategy.ts +110 -0
  80. package/src/renderer/strategy/index.ts +17 -0
  81. package/src/utils.ts +36 -2
  82. package/declaration/camera/BoundCamera.d.ts +0 -9
  83. package/declaration/camera/CircularCamera.d.ts +0 -36
  84. package/declaration/camera/LinearCamera.d.ts +0 -5
  85. package/declaration/core/panel/ElementPanel.d.ts +0 -14
  86. package/declaration/core/panel/ExternalPanel.d.ts +0 -9
  87. package/declaration/exports.d.ts +0 -10
  88. package/src/camera/CircularCamera.ts +0 -269
  89. package/src/camera/LinearCamera.ts +0 -35
  90. package/src/core/panel/ElementPanel.ts +0 -52
  91. package/src/core/panel/ExternalPanel.ts +0 -32
  92. package/src/exports.ts +0 -16
@@ -1,40 +1,45 @@
1
1
  import Flicking, { FlickingOptions } from "../Flicking";
2
2
  import Panel, { PanelOptions } from "../core/panel/Panel";
3
+ import RenderingStrategy from "./strategy/RenderingStrategy";
3
4
  export interface RendererOptions {
4
- align: FlickingOptions["align"];
5
+ align?: FlickingOptions["align"];
6
+ strategy: RenderingStrategy;
5
7
  }
6
8
  declare abstract class Renderer {
7
9
  protected _flicking: Flicking | null;
8
10
  protected _panels: Panel[];
9
- protected _align: RendererOptions["align"];
11
+ protected _align: NonNullable<RendererOptions["align"]>;
12
+ protected _strategy: RendererOptions["strategy"];
10
13
  get panels(): Panel[];
11
14
  get panelCount(): number;
12
- get align(): RendererOptions["align"];
13
- set align(val: RendererOptions["align"]);
14
- constructor({ align }?: Partial<RendererOptions>);
15
+ get strategy(): RenderingStrategy;
16
+ get align(): NonNullable<RendererOptions["align"]>;
17
+ set align(val: NonNullable<RendererOptions["align"]>);
18
+ constructor({ align, strategy }: RendererOptions);
15
19
  abstract render(): Promise<void>;
16
- abstract forceRenderAllPanels(): Promise<void>;
17
20
  protected abstract _collectPanels(): void;
18
- protected abstract _createPanel(el: any, options: PanelOptions): Panel;
19
- protected abstract _insertPanelElements(panels: Panel[], nextSibling: Panel | null): void;
20
- protected abstract _removePanelElements(panels: Panel[]): void;
21
+ protected abstract _createPanel(el: any, options: Omit<PanelOptions, "elementProvider">): Panel;
21
22
  init(flicking: Flicking): this;
22
23
  destroy(): void;
23
24
  getPanel(index: number): Panel | null;
25
+ forceRenderAllPanels(): Promise<void>;
24
26
  updatePanelSize(): this;
25
27
  batchInsert(...items: Array<{
26
28
  index: number;
27
29
  elements: any[];
30
+ hasDOMInElements: boolean;
28
31
  }>): Panel[];
29
32
  batchRemove(...items: Array<{
30
33
  index: number;
31
34
  deleteCount: number;
35
+ hasDOMInElements: boolean;
32
36
  }>): Panel[];
33
37
  checkPanelContentsReady(checkingPanels: Panel[]): void;
34
- protected _getPanelAlign(): string | number;
35
38
  protected _updateCameraAndControl(): void;
36
- protected _updateRenderingPanels(): void;
37
39
  protected _showOnlyVisiblePanels(flicking: Flicking): void;
38
- protected _updatePanelSizeByGrid(flicking: Flicking): void;
40
+ protected _updatePanelSizeByGrid(referencePanel: Panel, panels: Panel[]): void;
41
+ protected _removeAllChildsFromCamera(): void;
42
+ protected _insertPanelElements(panels: Panel[], nextSibling?: Panel | null): void;
43
+ protected _removePanelElements(panels: Panel[]): void;
39
44
  }
40
45
  export default Renderer;
@@ -1,15 +1,10 @@
1
1
  import Panel, { PanelOptions } from "../core/panel/Panel";
2
- import ElementPanel from "../core/panel/ElementPanel";
3
2
  import Renderer from "./Renderer";
4
3
  declare class VanillaRenderer extends Renderer {
5
4
  render(): Promise<void>;
6
- forceRenderAllPanels(): Promise<void>;
7
5
  protected _collectPanels(): void;
8
- protected _createPanel(el: HTMLElement, options: PanelOptions): ElementPanel;
9
- protected _insertPanelElements(panels: Panel[], nextSibling: Panel | null): this;
10
- protected _removePanelElements(panels: Panel[]): this;
6
+ protected _createPanel(el: HTMLElement, options: Omit<PanelOptions, "elementProvider">): Panel;
11
7
  private _resetPanelElementOrder;
12
- private _removeAllChildsFromCamera;
13
- private _getRenderingPanelsByOrder;
8
+ private _removeAllTextNodes;
14
9
  }
15
10
  export default VanillaRenderer;
@@ -1,5 +1,6 @@
1
1
  import Renderer, { RendererOptions } from "./Renderer";
2
2
  import VanillaRenderer from "./VanillaRenderer";
3
3
  import ExternalRenderer from "./ExternalRenderer";
4
+ export * from "./strategy";
4
5
  export { Renderer, VanillaRenderer, ExternalRenderer };
5
6
  export type { RendererOptions };
@@ -0,0 +1,23 @@
1
+ import Flicking from "../../Flicking";
2
+ import Panel, { PanelOptions } from "../../core/panel/Panel";
3
+ import ElementProvider from "../../core/panel/provider/ElementProvider";
4
+ import RenderingStrategy from "./RenderingStrategy";
5
+ export interface NormalRenderingStrategyOptions {
6
+ providerCtor: new (...args: any) => ElementProvider;
7
+ }
8
+ declare class NormalRenderingStrategy implements RenderingStrategy {
9
+ private _providerCtor;
10
+ constructor({ providerCtor }: NormalRenderingStrategyOptions);
11
+ renderPanels(): void;
12
+ getRenderingIndexesByOrder(flicking: Flicking): number[];
13
+ getRenderingElementsByOrder(flicking: Flicking): HTMLElement[];
14
+ updateRenderingPanels(flicking: Flicking): void;
15
+ collectPanels(flicking: Flicking, elements: any[]): Panel[];
16
+ createPanel(element: any, options: Omit<PanelOptions, "elementProvider">): Panel;
17
+ updatePanelSizes(flicking: Flicking, size: Partial<{
18
+ width: number | string;
19
+ height: number | string;
20
+ }>): void;
21
+ private _showOnlyVisiblePanels;
22
+ }
23
+ export default NormalRenderingStrategy;
@@ -0,0 +1,15 @@
1
+ import Flicking from "../../Flicking";
2
+ import Panel, { PanelOptions } from "../../core/panel/Panel";
3
+ interface RenderingStrategy {
4
+ renderPanels(flicking: Flicking): void;
5
+ getRenderingIndexesByOrder(flicking: Flicking): number[];
6
+ getRenderingElementsByOrder(flicking: Flicking): HTMLElement[];
7
+ updateRenderingPanels(flicking: Flicking): void;
8
+ createPanel(element: any, options: Omit<PanelOptions, "elementProvider">): Panel;
9
+ collectPanels(flicking: Flicking, elements: any[]): Panel[];
10
+ updatePanelSizes(flicking: Flicking, size: Partial<{
11
+ width: number | string;
12
+ height: number | string;
13
+ }>): void;
14
+ }
15
+ export default RenderingStrategy;
@@ -0,0 +1,17 @@
1
+ import Flicking from "../../Flicking";
2
+ import { PanelOptions } from "../../core/panel/Panel";
3
+ import VirtualPanel from "../../core/panel/VirtualPanel";
4
+ import RenderingStrategy from "./RenderingStrategy";
5
+ declare class VirtualRenderingStrategy implements RenderingStrategy {
6
+ renderPanels(flicking: Flicking): void;
7
+ getRenderingIndexesByOrder(flicking: Flicking): number[];
8
+ getRenderingElementsByOrder(flicking: Flicking): HTMLElement[];
9
+ updateRenderingPanels(flicking: Flicking): void;
10
+ collectPanels(flicking: Flicking): VirtualPanel[];
11
+ createPanel(_el: any, options: PanelOptions): VirtualPanel;
12
+ updatePanelSizes(flicking: Flicking, size: Partial<{
13
+ width: number | string;
14
+ height: number | string;
15
+ }>): void;
16
+ }
17
+ export default VirtualRenderingStrategy;
@@ -0,0 +1,5 @@
1
+ import RenderingStrategy from "./RenderingStrategy";
2
+ import NormalRenderingStrategy, { NormalRenderingStrategyOptions } from "./NormalRenderingStrategy";
3
+ import VirtualRenderingStrategy from "./VirtualRenderingStrategy";
4
+ export { NormalRenderingStrategy, VirtualRenderingStrategy };
5
+ export type { RenderingStrategy, NormalRenderingStrategyOptions };
@@ -20,9 +20,7 @@ export interface Status {
20
20
  html?: string;
21
21
  }>;
22
22
  }
23
- export declare type MoveTypeOptions<T extends ValueOf<typeof MOVE_TYPE>> = T extends typeof MOVE_TYPE.SNAP ? [T] | [T, Partial<SnapControlOptions>] : T extends typeof MOVE_TYPE.FREE_SCROLL ? [T] | [T, Partial<FreeControlOptions>] : T extends typeof MOVE_TYPE.STRICT ? [T] | [T, Partial<StrictControlOptions>] : [
24
- T
25
- ];
23
+ export declare type MoveTypeOptions<T extends ValueOf<typeof MOVE_TYPE>> = T extends typeof MOVE_TYPE.SNAP ? [T] | [T, Partial<SnapControlOptions>] : T extends typeof MOVE_TYPE.FREE_SCROLL ? [T] | [T, Partial<FreeControlOptions>] : T extends typeof MOVE_TYPE.STRICT ? [T] | [T, Partial<StrictControlOptions>] : [T];
26
24
  export interface ControlParams {
27
25
  range: {
28
26
  min: number;
@@ -6,7 +6,7 @@ export declare const merge: <From extends object, To extends object>(target: Fro
6
6
  export declare const getElement: (el: HTMLElement | string | null, parent?: HTMLElement) => HTMLElement;
7
7
  export declare const checkExistence: (value: any, nameOnErrMsg: string) => void;
8
8
  export declare const clamp: (x: number, min: number, max: number) => number;
9
- export declare const getFlickingAttached: (val: Flicking | null, nameToThrowOnError: string) => Flicking;
9
+ export declare const getFlickingAttached: (val: Flicking | null) => Flicking;
10
10
  export declare const toArray: <T>(iterable: ArrayLike<T>) => T[];
11
11
  export declare const parseAlign: (align: LiteralUnion<ValueOf<typeof ALIGN>> | number, size: number) => number;
12
12
  export declare const parseBounce: (bounce: FlickingOptions["bounce"], size: number) => number[];
@@ -16,6 +16,7 @@ export declare const parseArithmeticExpression: (cssValue: number | string) => {
16
16
  absolute: number;
17
17
  } | null;
18
18
  export declare const parseCSSSizeValue: (val: string | number) => string;
19
+ export declare const parsePanelAlign: (align: FlickingOptions["align"]) => string | number;
19
20
  export declare const getDirection: (start: number, end: number) => ValueOf<typeof DIRECTION>;
20
21
  export declare const parseElement: (element: ElementLike | ElementLike[]) => HTMLElement[];
21
22
  export declare const getMinusCompensatedIndex: (idx: number, max: number) => number;
@@ -27,6 +28,11 @@ export declare const findRight: <T>(array: T[], checker: (val: T) => boolean) =>
27
28
  export declare const findIndex: <T>(array: T[], checker: (val: T) => boolean) => number;
28
29
  export declare const getProgress: (pos: number, prev: number, next: number) => number;
29
30
  export declare const getStyle: (el: HTMLElement) => CSSStyleDeclaration;
31
+ export declare const setSize: (el: HTMLElement, { width, height }: Partial<{
32
+ width: number | string;
33
+ height: number | string;
34
+ }>) => void;
30
35
  export declare const isBetween: (val: number, min: number, max: number) => boolean;
31
36
  export declare const circulateIndex: (index: number, max: number) => number;
37
+ export declare const range: (end: number) => number[];
32
38
  export declare const setPrototypeOf: (o: any, proto: object) => any;