@egjs/react-flicking 4.10.0 → 4.10.2-beta.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.
@@ -63,6 +63,16 @@ version: 4.10.0
63
63
 
64
64
  return __assign.apply(this, arguments);
65
65
  };
66
+ function __rest(s, e) {
67
+ var t = {};
68
+
69
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
70
+
71
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
72
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
73
+ }
74
+ return t;
75
+ }
66
76
  function __decorate(decorators, target, key, desc) {
67
77
  var c = arguments.length,
68
78
  r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
@@ -223,6 +233,7 @@ version: 4.10.0
223
233
  viewportTag: "div",
224
234
  cameraTag: "div",
225
235
  cameraClass: "",
236
+ renderOnSameKey: false,
226
237
  plugins: [],
227
238
  useFindDOMNode: false,
228
239
  hideBeforeInit: false,
@@ -425,9 +436,9 @@ version: 4.10.0
425
436
  return NonStrictPanel;
426
437
  }(React.Component);
427
438
 
428
- /*
429
- * Copyright (c) 2015 NAVER Corp.
430
- * egjs projects are licensed under the MIT license
439
+ /*
440
+ * Copyright (c) 2015 NAVER Corp.
441
+ * egjs projects are licensed under the MIT license
431
442
  */
432
443
  var ViewportSlot = React.memo(function (props) {
433
444
  return React.createElement(React.Fragment, null, props.children);
@@ -467,14 +478,6 @@ version: 4.10.0
467
478
  return ReactElementProvider;
468
479
  }();
469
480
 
470
- var LifeCycleState;
471
-
472
- (function (LifeCycleState) {
473
- LifeCycleState[LifeCycleState["BEFORE_UPDATE"] = 0] = "BEFORE_UPDATE";
474
- LifeCycleState[LifeCycleState["RENDER"] = 1] = "RENDER";
475
- LifeCycleState[LifeCycleState["UPDATED"] = 2] = "UPDATED";
476
- })(LifeCycleState || (LifeCycleState = {}));
477
-
478
481
  var Flicking =
479
482
  /*#__PURE__*/
480
483
  function (_super) {
@@ -485,8 +488,11 @@ version: 4.10.0
485
488
 
486
489
  _this._panels = [];
487
490
  _this._renderEmitter = new Component();
488
- _this._currentState = LifeCycleState.BEFORE_UPDATE;
489
- _this._panels = _this._createPanelRefs(props, _this._getChildren());
491
+
492
+ var children = _this._getChildren();
493
+
494
+ _this._panels = _this._createPanelRefs(props, children);
495
+ _this._prevChildren = children;
490
496
  return _this;
491
497
  }
492
498
 
@@ -521,7 +527,6 @@ version: 4.10.0
521
527
  externalRenderer: new ReactRenderer(rendererOptions)
522
528
  }));
523
529
  this._vanillaFlicking = flicking;
524
- this._currentState = LifeCycleState.UPDATED;
525
530
 
526
531
  var children = this._getChildren();
527
532
 
@@ -529,6 +534,7 @@ version: 4.10.0
529
534
  return panel.key;
530
535
  });
531
536
  this._pluginsDiffer = new ListDiffer();
537
+ this._prevChildren = children;
532
538
 
533
539
  this._bindEvents();
534
540
 
@@ -547,28 +553,42 @@ version: 4.10.0
547
553
 
548
554
  __proto.shouldComponentUpdate = function (nextProps) {
549
555
  var vanillaFlicking = this._vanillaFlicking;
550
- var props = this.props; // Ignore updates before init, they will be updated after "ready" event's force update
551
-
556
+ var prevProps = this.props;
552
557
  if (!vanillaFlicking || !vanillaFlicking.initialized) return false;
553
558
 
554
- if (this._currentState !== LifeCycleState.BEFORE_UPDATE && props.children !== nextProps.children) {
555
- var nextChildren = this._getChildren(nextProps.children);
556
-
557
- this._panels = this._createPanelRefs(nextProps, nextChildren);
558
- this._diffResult = this._jsxDiffer.update(nextChildren);
559
- }
559
+ var children = nextProps.children,
560
+ restProps = __rest(nextProps, ["children"]);
560
561
 
561
- this._currentState = LifeCycleState.BEFORE_UPDATE;
562
-
563
- for (var key in nextProps) {
564
- if (props[key] !== nextProps[key]) {
562
+ for (var key in restProps) {
563
+ if (prevProps[key] !== nextProps[key]) {
565
564
  return true;
566
565
  }
567
566
  }
568
567
 
568
+ var prevChildren = this._prevChildren;
569
+
570
+ var nextChildren = this._getChildren(children);
571
+
572
+ if (nextProps.renderOnSameKey || !this._hasSameChildren(prevChildren, nextChildren)) return true;
569
573
  return false;
570
574
  };
571
575
 
576
+ __proto.beforeRender = function () {
577
+ var vanillaFlicking = this._vanillaFlicking;
578
+ var props = this.props;
579
+ var prevChildren = this._prevChildren; // Ignore updates before init, they will be updated after "ready" event's force update
580
+
581
+ if (!vanillaFlicking || !vanillaFlicking.initialized) return;
582
+
583
+ var nextChildren = this._getChildren(props.children);
584
+
585
+ if (props.renderOnSameKey || !this._hasSameChildren(prevChildren, nextChildren)) {
586
+ this._panels = this._createPanelRefs(props, nextChildren);
587
+ this._diffResult = this._jsxDiffer.update(nextChildren);
588
+ this._prevChildren = nextChildren;
589
+ }
590
+ };
591
+
572
592
  __proto.componentDidUpdate = function () {
573
593
  var flicking = this._vanillaFlicking;
574
594
  var renderEmitter = this._renderEmitter;
@@ -578,7 +598,6 @@ version: 4.10.0
578
598
 
579
599
  renderEmitter.trigger("render");
580
600
  flicking.camera.updateOffset();
581
- this._currentState = LifeCycleState.UPDATED;
582
601
  if (!diffResult || !flicking.initialized) return;
583
602
  VanillaFlicking.sync(flicking, diffResult, this.reactPanels);
584
603
  this._diffResult = null;
@@ -594,7 +613,7 @@ version: 4.10.0
594
613
  var Camera = props.cameraTag;
595
614
  var attributes = {};
596
615
  var flicking = this._vanillaFlicking;
597
- this._currentState = LifeCycleState.RENDER;
616
+ this.beforeRender();
598
617
 
599
618
  for (var name in props) {
600
619
  if (!(name in DEFAULT_PROPS) && !(name in VanillaFlicking.prototype)) {
@@ -695,6 +714,21 @@ version: 4.10.0
695
714
  }));
696
715
  };
697
716
 
717
+ __proto._hasSameChildren = function (prevChildren, nextChildren) {
718
+ if (prevChildren.length !== nextChildren.length || prevChildren.length === 0) return false;
719
+ var same = prevChildren.every(function (child, idx) {
720
+ var nextChild = nextChildren[idx];
721
+ console.log(child, nextChild);
722
+
723
+ if (child.key && nextChild.key) {
724
+ return child.key === nextChild.key;
725
+ } else {
726
+ return child === nextChild;
727
+ }
728
+ });
729
+ return same;
730
+ };
731
+
698
732
  __proto._getChildren = function (children) {
699
733
  var _this = this;
700
734
 
@@ -785,9 +819,9 @@ version: 4.10.0
785
819
  return Flicking;
786
820
  }(React.Component);
787
821
 
788
- /*
789
- * Copyright (c) 2015 NAVER Corp.
790
- * egjs projects are licensed under the MIT license
822
+ /*
823
+ * Copyright (c) 2015 NAVER Corp.
824
+ * egjs projects are licensed under the MIT license
791
825
  */
792
826
  Flicking.ViewportSlot = ViewportSlot;
793
827
 
@@ -1 +1 @@
1
- {"version":3,"file":"flicking.umd.js","sources":["../src/react-flicking/consts.ts","../src/react-flicking/ReactRenderer.ts","../src/react-flicking/StrictPanel.tsx","../src/react-flicking/NonStrictPanel.tsx","../src/react-flicking/ViewportSlot.tsx","../src/react-flicking/ReactElementProvider.ts","../src/react-flicking/Flicking.tsx","../src/react-flicking/index.umd.ts"],"sourcesContent":["/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport {\n SelectEvent,\n NeedPanelEvent,\n VisibleChangeEvent,\n HoldStartEvent,\n HoldEndEvent,\n MoveStartEvent,\n MoveEvent,\n MoveEndEvent,\n WillChangeEvent,\n ChangedEvent,\n WillRestoreEvent,\n RestoredEvent,\n ReadyEvent,\n BeforeResizeEvent,\n AfterResizeEvent,\n ReachEdgeEvent,\n PanelChangeEvent\n} from \"@egjs/flicking\";\n\nimport { FlickingProps } from \"./types\";\n\nexport const DEFAULT_PROPS: FlickingProps = {\n viewportTag: \"div\",\n cameraTag: \"div\",\n cameraClass: \"\",\n plugins: [],\n useFindDOMNode: false,\n hideBeforeInit: false,\n onReady: (e: ReadyEvent) => {},\n onBeforeResize: (e: BeforeResizeEvent) => {},\n onAfterResize: (e: AfterResizeEvent) => {},\n onHoldStart: (e: HoldStartEvent) => {},\n onHoldEnd: (e: HoldEndEvent) => {},\n onMoveStart: (e: MoveStartEvent) => {},\n onMove: (e: MoveEvent) => {},\n onMoveEnd: (e: MoveEndEvent) => {},\n onWillChange: (e: WillChangeEvent) => {},\n onChanged: (e: ChangedEvent) => {},\n onWillRestore: (e: WillRestoreEvent) => {},\n onRestored: (e: RestoredEvent) => {},\n onSelect: (e: SelectEvent) => {},\n onNeedPanel: (e: NeedPanelEvent) => {},\n onVisibleChange: (e: VisibleChangeEvent) => {},\n onReachEdge: (e: ReachEdgeEvent) => {},\n onPanelChange: (e: PanelChangeEvent) => {}\n};\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { ExternalRenderer, PanelOptions, RendererOptions, getFlickingAttached } from \"@egjs/flicking\";\n\nimport ReactFlicking from \"./Flicking\";\nimport StrictPanel from \"./StrictPanel\";\nimport NonStrictPanel from \"./NonStrictPanel\";\n\nexport interface ReactRendererOptions extends RendererOptions {\n reactFlicking: ReactFlicking;\n}\n\nclass ReactRenderer extends ExternalRenderer {\n // Internal States\n protected _reactFlicking: ReactFlicking;\n\n public constructor(options: ReactRendererOptions) {\n super(options);\n\n this._reactFlicking = options.reactFlicking;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n public async render() {\n const flicking = getFlickingAttached(this._flicking);\n const reactFlicking = this._reactFlicking;\n const strategy = this._strategy;\n\n this._rendering = true;\n\n strategy.updateRenderingPanels(flicking);\n strategy.renderPanels(flicking);\n\n return new Promise<void>(resolve => {\n reactFlicking.renderEmitter.once(\"render\", () => {\n this._rendering = false;\n resolve()\n });\n reactFlicking.forceUpdate();\n });\n }\n\n public async forceRenderAllPanels() {\n const reactFlicking = this._reactFlicking;\n\n this._rendering = true;\n await super.forceRenderAllPanels();\n\n return new Promise<void>(resolve => {\n reactFlicking.renderEmitter.once(\"render\", () => {\n this._rendering = false;\n resolve();\n });\n reactFlicking.forceUpdate();\n });\n }\n\n protected _collectPanels() {\n const flicking = getFlickingAttached(this._flicking);\n const reactFlicking = this._reactFlicking;\n const reactPanels = reactFlicking.reactPanels;\n\n this._panels = this._strategy.collectPanels(flicking, reactPanels);\n }\n\n protected _createPanel(externalComponent: StrictPanel | NonStrictPanel | HTMLDivElement, options: PanelOptions) {\n return this._strategy.createPanel(externalComponent, options);\n }\n}\n\nexport default ReactRenderer;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport * as React from \"react\";\n\nclass StrictPanel extends React.Component<{ children?: React.ReactElement }> {\n private _hide: boolean = false;\n\n private _elRef: React.RefObject<HTMLElement> = React.createRef();\n\n public get nativeElement() { return this._elRef.current!; }\n public get rendered() { return !this._hide; }\n\n public render() {\n return this._hide\n ? <></>\n : this._getElement();\n }\n\n public show() {\n this._hide = false;\n }\n\n public hide() {\n this._hide = true;\n }\n\n private _getElement() {\n return React.cloneElement(React.Children.only(this.props.children) as React.ReactElement, {\n ref: this._elRef\n });\n }\n}\n\nexport default StrictPanel;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport * as React from \"react\";\nimport { findDOMNode } from \"react-dom\";\n\nclass NonStrictPanel extends React.Component<{ children?: React.ReactElement }> {\n private _hide: boolean = false;\n\n public get nativeElement() { return findDOMNode(this) as HTMLElement; }\n public get rendered() { return !this._hide; }\n\n public render() {\n return this._hide\n ? <></>\n : this.props.children;\n }\n\n public show() {\n this._hide = false;\n }\n\n public hide() {\n this._hide = true;\n }\n}\n\nexport default NonStrictPanel;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport React, { ReactNode } from \"react\";\n\nconst ViewportSlot = React.memo((props: { children?: ReactNode }) => <>{props.children}</>);\n\nexport default ViewportSlot;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { ElementProvider } from \"@egjs/flicking\";\nimport StrictPanel from \"./StrictPanel\";\nimport NonStrictPanel from \"./NonStrictPanel\";\n\nclass ReactElementProvider implements ElementProvider {\n private _el: StrictPanel | NonStrictPanel;\n\n public get element() { return this._el.nativeElement; }\n public get rendered() { return this._el.rendered; }\n\n public constructor(el: StrictPanel | NonStrictPanel) {\n this._el = el;\n }\n\n public show() {\n this._el.show();\n }\n\n public hide() {\n this._el.hide();\n }\n}\n\nexport default ReactElementProvider;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport * as React from \"react\";\nimport Component from \"@egjs/component\";\nimport ListDiffer, { diff, DiffResult } from \"@egjs/list-differ\";\nimport VanillaFlicking, {\n FlickingOptions,\n VirtualRenderingStrategy,\n EVENTS,\n withFlickingMethods,\n sync,\n getRenderingPanels,\n getDefaultCameraTransform,\n Plugin,\n range,\n NormalRenderingStrategy\n} from \"@egjs/flicking\";\n\nimport { DEFAULT_PROPS } from \"./consts\";\nimport { FlickingProps } from \"./types\";\nimport ReactRenderer, { ReactRendererOptions } from \"./ReactRenderer\";\nimport StrictPanel from \"./StrictPanel\";\nimport NonStrictPanel from \"./NonStrictPanel\";\nimport ViewportSlot from \"./ViewportSlot\";\nimport ReactElementProvider from \"./ReactElementProvider\";\n\nenum LifeCycleState {\n BEFORE_UPDATE,\n RENDER,\n UPDATED\n}\n\nclass Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>> {\n public static defaultProps: FlickingProps = DEFAULT_PROPS;\n\n @withFlickingMethods private _vanillaFlicking: VanillaFlicking;\n private _panels: React.RefObject<StrictPanel | NonStrictPanel | HTMLDivElement>[] = [];\n private _pluginsDiffer: ListDiffer<any>;\n private _jsxDiffer: ListDiffer<React.ReactElement>;\n private _viewportElement: HTMLElement;\n private _diffResult: DiffResult<React.ReactElement> | null;\n private _renderEmitter = new Component<{ render: void }>();\n private _currentState: LifeCycleState = LifeCycleState.BEFORE_UPDATE;\n\n public get reactPanels() { return this._panels.map(panel => panel.current!); }\n public get renderEmitter() { return this._renderEmitter; }\n\n public constructor(props: Partial<FlickingProps & FlickingOptions>) {\n super(props);\n\n this._panels = this._createPanelRefs(props, this._getChildren());\n }\n\n public componentDidMount() {\n const props = this.props as Required<FlickingProps & FlickingOptions>;\n const rendererOptions: ReactRendererOptions = {\n reactFlicking: this,\n align: props.align,\n strategy: props.virtual && props.panelsPerView > 0\n ? new VirtualRenderingStrategy()\n : new NormalRenderingStrategy({\n providerCtor: ReactElementProvider\n })\n };\n\n const flicking = new VanillaFlicking(\n this._viewportElement,\n {\n ...props,\n externalRenderer: new ReactRenderer(rendererOptions)\n },\n );\n\n this._vanillaFlicking = flicking;\n this._currentState = LifeCycleState.UPDATED;\n\n const children = this._getChildren();\n this._jsxDiffer = new ListDiffer(children, panel => panel.key!);\n this._pluginsDiffer = new ListDiffer<any>();\n\n this._bindEvents();\n this._checkPlugins();\n\n if (props.status) {\n flicking.setStatus(props.status);\n }\n }\n\n public componentWillUnmount() {\n this._vanillaFlicking?.destroy();\n }\n\n public shouldComponentUpdate(nextProps: this[\"props\"]) {\n const vanillaFlicking = this._vanillaFlicking;\n const props = this.props;\n\n // Ignore updates before init, they will be updated after \"ready\" event's force update\n if (!vanillaFlicking || !vanillaFlicking.initialized) return false;\n\n if (this._currentState !== LifeCycleState.BEFORE_UPDATE && props.children !== nextProps.children) {\n const nextChildren = this._getChildren(nextProps.children);\n\n this._panels = this._createPanelRefs(nextProps, nextChildren);\n this._diffResult = this._jsxDiffer.update(nextChildren);\n }\n\n this._currentState = LifeCycleState.BEFORE_UPDATE;\n\n for (const key in nextProps) {\n if (props[key] !== nextProps[key]) {\n return true;\n }\n }\n\n return false;\n }\n\n public componentDidUpdate() {\n const flicking = this._vanillaFlicking;\n const renderEmitter = this._renderEmitter;\n const diffResult = this._diffResult;\n\n this._checkPlugins();\n renderEmitter.trigger(\"render\");\n flicking.camera.updateOffset();\n\n this._currentState = LifeCycleState.UPDATED;\n\n if (!diffResult || !flicking.initialized) return;\n\n sync(flicking, diffResult, this.reactPanels);\n\n this._diffResult = null;\n }\n\n public render() {\n const props = this.props;\n const Viewport = props.viewportTag as any;\n const Camera = props.cameraTag as any;\n const attributes: { [key: string]: any } = {};\n const flicking = this._vanillaFlicking;\n\n this._currentState = LifeCycleState.RENDER;\n\n for (const name in props) {\n if (!(name in DEFAULT_PROPS) && !(name in VanillaFlicking.prototype)) {\n attributes[name] = props[name];\n }\n }\n\n const initialized = flicking && flicking.initialized;\n const viewportClasses: string[] = [\"flicking-viewport\"];\n const cameraClasses: string[] = [\"flicking-camera\"];\n const isHorizontal = flicking\n ? flicking.horizontal\n : props.horizontal ?? true;\n\n if (!isHorizontal) {\n viewportClasses.push(\"vertical\");\n }\n if (props.hideBeforeInit && !initialized) {\n viewportClasses.push(\"flicking-hidden\");\n }\n if (attributes.className) {\n viewportClasses.push(attributes.className);\n }\n if (props.cameraClass) {\n cameraClasses.push(props.cameraClass);\n }\n\n const cameraProps = !initialized && props.firstPanelSize\n ? { style: {\n transform: getDefaultCameraTransform(this.props.align, this.props.horizontal, this.props.firstPanelSize)\n }}\n : {};\n\n const panels = !!props.virtual && (props.panelsPerView ?? -1) > 0\n ? this._getVirtualPanels()\n : this._getPanels();\n\n return (\n <Viewport {...attributes} className={viewportClasses.join(\" \")} ref={(e?: HTMLElement) => {\n e && (this._viewportElement = e);\n }}>\n <Camera className={cameraClasses.join(\" \")} {...cameraProps}>\n { panels }\n </Camera>\n { this._getViewportSlot() }\n </Viewport>\n );\n }\n\n private _createPanelRefs(props: this[\"props\"], children: Array<React.ReactElement<any>>): React.RefObject<StrictPanel | NonStrictPanel | HTMLDivElement>[] {\n const panelsPerView = props.panelsPerView ?? -1;\n\n return panelsPerView > 0 && !!props.virtual\n ? range(panelsPerView + 1).map(() => React.createRef())\n : children.map(() => React.createRef());\n }\n\n private _bindEvents() {\n const flicking = this._vanillaFlicking!;\n\n Object.keys(EVENTS).forEach((eventKey: keyof typeof EVENTS) => {\n const eventName = EVENTS[eventKey];\n const propName = `on${eventName.charAt(0).toUpperCase() + eventName.slice(1)}`;\n\n flicking.on(eventName, e => {\n e.currentTarget = this;\n\n const evtHandler = this.props[propName];\n evtHandler(e);\n });\n });\n\n flicking.once(EVENTS.READY, () => {\n const children = this._getChildren();\n const diffResult = this._jsxDiffer.update(children);\n\n // children is changed before init\n if (diffResult.added.length > 0 || diffResult.removed.length > 0) {\n this._panels = this._createPanelRefs(this.props, children);\n this._diffResult = diffResult;\n }\n\n this.forceUpdate();\n });\n }\n\n private _checkPlugins() {\n const flicking = this._vanillaFlicking;\n const { list, added, removed, prevList } = this._pluginsDiffer.update(this.props.plugins!) as DiffResult<Plugin>;\n\n flicking.addPlugins(...added.map(index => list[index]));\n flicking.removePlugins(...removed.map(index => prevList[index]));\n }\n\n private _getChildren(children: React.ReactNode = this.props.children) {\n return (React.Children.toArray(children) as Array<React.ReactElement<any>>)\n .filter(child => child.type !== ViewportSlot)\n .reduce((all, child) => {\n return [...all, ...this._unpackFragment(child)];\n }, []) as Array<React.ReactElement<any>>;\n }\n\n private _getViewportSlot() {\n return (React.Children.toArray(this.props.children) as Array<React.ReactElement<any>>)\n .filter(child => child.type === ViewportSlot);\n }\n\n private _unpackFragment(child: React.ReactElement) {\n return this._isFragment(child)\n ? React.Children.toArray(child.props.children)\n .reduce((allChilds: React.ReactElement[], fragChild: React.ReactElement) => [...allChilds, ...this._unpackFragment(fragChild)], [] as React.ReactElement[])\n : [child];\n }\n\n private _getVirtualPanels() {\n const {\n panelClass = \"flicking-panel\"\n } = this.props.virtual!;\n const panelsPerView = this.props.panelsPerView!;\n const flicking = this._vanillaFlicking;\n const initialized = flicking && flicking.initialized;\n\n const renderingIndexes = initialized\n ? flicking.renderer.strategy.getRenderingIndexesByOrder(flicking)\n : range(panelsPerView + 1);\n\n const firstPanel = flicking && flicking.panels[0];\n const size = firstPanel\n ? flicking.horizontal\n ? { width: firstPanel.size }\n : { height: firstPanel.size }\n : {};\n\n return renderingIndexes.map(idx => {\n return <div\n key={idx}\n data-element-index={idx}\n ref={this._panels[idx] as React.RefObject<HTMLDivElement>}\n className={panelClass}\n style={size} />\n });\n }\n\n private _getPanels() {\n const origChildren = this._getChildren();\n const vanillaFlicking = this._vanillaFlicking;\n const diffResult = this._diffResult;\n\n const children: React.ReactElement[] = vanillaFlicking && vanillaFlicking.initialized\n ? diffResult\n ? getRenderingPanels(vanillaFlicking, diffResult)\n : getRenderingPanels(vanillaFlicking, diff(origChildren, origChildren))\n : origChildren;\n\n return this.props.useFindDOMNode\n ? children.map((child, idx) => <NonStrictPanel key={child.key!} ref={this._panels[idx] as any}>{child}</NonStrictPanel>)\n : children.map((child, idx) => <StrictPanel key={child.key!} ref={this._panels[idx] as any}>{child}</StrictPanel>)\n }\n\n private _isFragment(child: React.ReactElement) {\n if (child.type) {\n return child.type === React.Fragment;\n }\n\n return (child as any) === React.Fragment;\n }\n}\n\ninterface Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>, VanillaFlicking { }\nexport default Flicking;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport Flicking from \"./Flicking\";\nimport ViewportSlot from \"./ViewportSlot\";\n\n(Flicking as any).ViewportSlot = ViewportSlot;\nexport default Flicking;\n"],"names":["DEFAULT_PROPS","viewportTag","cameraTag","cameraClass","plugins","useFindDOMNode","hideBeforeInit","onReady","e","onBeforeResize","onAfterResize","onHoldStart","onHoldEnd","onMoveStart","onMove","onMoveEnd","onWillChange","onChanged","onWillRestore","onRestored","onSelect","onNeedPanel","onVisibleChange","onReachEdge","onPanelChange","__extends","options","_super","_this","_reactFlicking","reactFlicking","flicking","getFlickingAttached","_flicking","strategy","_strategy","_rendering","updateRenderingPanels","renderPanels","Promise","resolve","renderEmitter","once","forceUpdate","forceRenderAllPanels","_a","reactPanels","_panels","collectPanels","externalComponent","createPanel","ExternalRenderer","React","createRef","Object","_elRef","current","_hide","_getElement","cloneElement","Children","only","props","children","ref","Component","findDOMNode","ViewportSlot","memo","el","_el","nativeElement","rendered","show","hide","LifeCycleState","BEFORE_UPDATE","_createPanelRefs","_getChildren","map","panel","_renderEmitter","rendererOptions","align","virtual","panelsPerView","VirtualRenderingStrategy","NormalRenderingStrategy","providerCtor","ReactElementProvider","VanillaFlicking","_viewportElement","externalRenderer","ReactRenderer","_vanillaFlicking","_currentState","UPDATED","_jsxDiffer","ListDiffer","key","_pluginsDiffer","_bindEvents","_checkPlugins","status","setStatus","destroy","nextProps","vanillaFlicking","initialized","nextChildren","_diffResult","update","diffResult","trigger","camera","updateOffset","sync","Viewport","Camera","attributes","RENDER","name","prototype","viewportClasses","cameraClasses","isHorizontal","horizontal","push","className","cameraProps","firstPanelSize","style","transform","getDefaultCameraTransform","panels","_getVirtualPanels","_getPanels","join","_getViewportSlot","range","keys","EVENTS","forEach","eventKey","eventName","propName","charAt","toUpperCase","slice","on","currentTarget","evtHandler","READY","added","length","removed","list","prevList","addPlugins","index","removePlugins","toArray","filter","child","type","reduce","all","_unpackFragment","_isFragment","allChilds","fragChild","panelClass","renderingIndexes","renderer","getRenderingIndexesByOrder","firstPanel","size","width","height","idx","origChildren","getRenderingPanels","diff","NonStrictPanel","StrictPanel","Fragment","Flicking","__decorate","withFlickingMethods"],"mappings":"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"}
1
+ {"version":3,"file":"flicking.umd.js","sources":["../src/react-flicking/consts.ts","../src/react-flicking/ReactRenderer.ts","../src/react-flicking/StrictPanel.tsx","../src/react-flicking/NonStrictPanel.tsx","../src/react-flicking/ViewportSlot.tsx","../src/react-flicking/ReactElementProvider.ts","../src/react-flicking/Flicking.tsx","../src/react-flicking/index.umd.ts"],"sourcesContent":["/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport {\n SelectEvent,\n NeedPanelEvent,\n VisibleChangeEvent,\n HoldStartEvent,\n HoldEndEvent,\n MoveStartEvent,\n MoveEvent,\n MoveEndEvent,\n WillChangeEvent,\n ChangedEvent,\n WillRestoreEvent,\n RestoredEvent,\n ReadyEvent,\n BeforeResizeEvent,\n AfterResizeEvent,\n ReachEdgeEvent,\n PanelChangeEvent\n} from \"@egjs/flicking\";\n\nimport { FlickingProps } from \"./types\";\n\nexport const DEFAULT_PROPS: FlickingProps = {\n viewportTag: \"div\",\n cameraTag: \"div\",\n cameraClass: \"\",\n renderOnSameKey: false,\n plugins: [],\n useFindDOMNode: false,\n hideBeforeInit: false,\n onReady: (e: ReadyEvent) => {},\n onBeforeResize: (e: BeforeResizeEvent) => {},\n onAfterResize: (e: AfterResizeEvent) => {},\n onHoldStart: (e: HoldStartEvent) => {},\n onHoldEnd: (e: HoldEndEvent) => {},\n onMoveStart: (e: MoveStartEvent) => {},\n onMove: (e: MoveEvent) => {},\n onMoveEnd: (e: MoveEndEvent) => {},\n onWillChange: (e: WillChangeEvent) => {},\n onChanged: (e: ChangedEvent) => {},\n onWillRestore: (e: WillRestoreEvent) => {},\n onRestored: (e: RestoredEvent) => {},\n onSelect: (e: SelectEvent) => {},\n onNeedPanel: (e: NeedPanelEvent) => {},\n onVisibleChange: (e: VisibleChangeEvent) => {},\n onReachEdge: (e: ReachEdgeEvent) => {},\n onPanelChange: (e: PanelChangeEvent) => {}\n};\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { flushSync } from \"react-dom\";\nimport { ExternalRenderer, PanelOptions, RendererOptions, getFlickingAttached } from \"@egjs/flicking\";\n\nimport ReactFlicking from \"./Flicking\";\nimport StrictPanel from \"./StrictPanel\";\nimport NonStrictPanel from \"./NonStrictPanel\";\n\nexport interface ReactRendererOptions extends RendererOptions {\n reactFlicking: ReactFlicking;\n}\n\nclass ReactRenderer extends ExternalRenderer {\n // Internal States\n protected _reactFlicking: ReactFlicking;\n\n public constructor(options: ReactRendererOptions) {\n super(options);\n\n this._reactFlicking = options.reactFlicking;\n }\n\n // eslint-disable-next-line @typescript-eslint/require-await\n public async render() {\n const flicking = getFlickingAttached(this._flicking);\n const reactFlicking = this._reactFlicking;\n const strategy = this._strategy;\n\n this._rendering = true;\n\n strategy.updateRenderingPanels(flicking);\n strategy.renderPanels(flicking);\n\n return new Promise<void>(resolve => {\n reactFlicking.renderEmitter.once(\"render\", () => {\n this._rendering = false;\n resolve()\n });\n reactFlicking.forceUpdate();\n });\n }\n\n public async forceRenderAllPanels() {\n const reactFlicking = this._reactFlicking;\n\n this._rendering = true;\n await super.forceRenderAllPanels();\n\n return new Promise<void>(resolve => {\n reactFlicking.renderEmitter.once(\"render\", () => {\n this._rendering = false;\n resolve();\n });\n reactFlicking.forceUpdate();\n });\n }\n\n protected _collectPanels() {\n const flicking = getFlickingAttached(this._flicking);\n const reactFlicking = this._reactFlicking;\n const reactPanels = reactFlicking.reactPanels;\n\n this._panels = this._strategy.collectPanels(flicking, reactPanels);\n }\n\n protected _createPanel(externalComponent: StrictPanel | NonStrictPanel | HTMLDivElement, options: PanelOptions) {\n return this._strategy.createPanel(externalComponent, options);\n }\n}\n\nexport default ReactRenderer;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport * as React from \"react\";\n\nclass StrictPanel extends React.Component<{ children?: React.ReactElement }> {\n private _hide: boolean = false;\n\n private _elRef: React.RefObject<HTMLElement> = React.createRef();\n\n public get nativeElement() { return this._elRef.current!; }\n public get rendered() { return !this._hide; }\n\n public render() {\n return this._hide\n ? <></>\n : this._getElement();\n }\n\n public show() {\n this._hide = false;\n }\n\n public hide() {\n this._hide = true;\n }\n\n private _getElement() {\n return React.cloneElement(React.Children.only(this.props.children) as React.ReactElement, {\n ref: this._elRef\n });\n }\n}\n\nexport default StrictPanel;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport * as React from \"react\";\nimport { findDOMNode } from \"react-dom\";\n\nclass NonStrictPanel extends React.Component<{ children?: React.ReactElement }> {\n private _hide: boolean = false;\n\n public get nativeElement() { return findDOMNode(this) as HTMLElement; }\n public get rendered() { return !this._hide; }\n\n public render() {\n return this._hide\n ? <></>\n : this.props.children;\n }\n\n public show() {\n this._hide = false;\n }\n\n public hide() {\n this._hide = true;\n }\n}\n\nexport default NonStrictPanel;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport React, { ReactNode } from \"react\";\n\nconst ViewportSlot = React.memo((props: { children?: ReactNode }) => <>{props.children}</>);\n\nexport default ViewportSlot;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { ElementProvider } from \"@egjs/flicking\";\nimport StrictPanel from \"./StrictPanel\";\nimport NonStrictPanel from \"./NonStrictPanel\";\n\nclass ReactElementProvider implements ElementProvider {\n private _el: StrictPanel | NonStrictPanel;\n\n public get element() { return this._el.nativeElement; }\n public get rendered() { return this._el.rendered; }\n\n public constructor(el: StrictPanel | NonStrictPanel) {\n this._el = el;\n }\n\n public show() {\n this._el.show();\n }\n\n public hide() {\n this._el.hide();\n }\n}\n\nexport default ReactElementProvider;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport Component from \"@egjs/component\";\nimport ListDiffer, { diff, DiffResult } from \"@egjs/list-differ\";\nimport VanillaFlicking, {\n FlickingOptions,\n VirtualRenderingStrategy,\n EVENTS,\n withFlickingMethods,\n sync,\n getRenderingPanels,\n getDefaultCameraTransform,\n Plugin,\n range,\n NormalRenderingStrategy\n} from \"@egjs/flicking\";\n\nimport { DEFAULT_PROPS } from \"./consts\";\nimport { FlickingProps } from \"./types\";\nimport ReactRenderer, { ReactRendererOptions } from \"./ReactRenderer\";\nimport StrictPanel from \"./StrictPanel\";\nimport NonStrictPanel from \"./NonStrictPanel\";\nimport ViewportSlot from \"./ViewportSlot\";\nimport ReactElementProvider from \"./ReactElementProvider\";\n\nclass Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>> {\n public static defaultProps: FlickingProps = DEFAULT_PROPS;\n\n @withFlickingMethods private _vanillaFlicking: VanillaFlicking;\n private _panels: React.RefObject<StrictPanel | NonStrictPanel | HTMLDivElement>[] = [];\n private _pluginsDiffer: ListDiffer<any>;\n private _jsxDiffer: ListDiffer<React.ReactElement>;\n private _viewportElement: HTMLElement;\n private _diffResult: DiffResult<React.ReactElement> | null;\n private _renderEmitter = new Component<{ render: void }>();\n private _prevChildren: React.ReactElement[];\n\n public get reactPanels() { return this._panels.map(panel => panel.current!); }\n public get renderEmitter() { return this._renderEmitter; }\n\n public constructor(props: Partial<FlickingProps & FlickingOptions>) {\n super(props);\n\n const children = this._getChildren();\n this._panels = this._createPanelRefs(props, children);\n this._prevChildren = children;\n }\n\n public componentDidMount() {\n const props = this.props as Required<FlickingProps & FlickingOptions>;\n const rendererOptions: ReactRendererOptions = {\n reactFlicking: this,\n align: props.align,\n strategy: props.virtual && props.panelsPerView > 0\n ? new VirtualRenderingStrategy()\n : new NormalRenderingStrategy({\n providerCtor: ReactElementProvider\n })\n };\n\n const flicking = new VanillaFlicking(\n this._viewportElement,\n {\n ...props,\n externalRenderer: new ReactRenderer(rendererOptions)\n },\n );\n\n this._vanillaFlicking = flicking;\n\n const children = this._getChildren();\n this._jsxDiffer = new ListDiffer(children, panel => panel.key!);\n this._pluginsDiffer = new ListDiffer<any>();\n this._prevChildren = children;\n\n this._bindEvents();\n this._checkPlugins();\n\n if (props.status) {\n flicking.setStatus(props.status);\n }\n }\n\n public componentWillUnmount() {\n this._vanillaFlicking?.destroy();\n }\n\n public shouldComponentUpdate(nextProps: Readonly<Partial<FlickingProps & FlickingOptions>>): boolean {\n const vanillaFlicking = this._vanillaFlicking;\n const prevProps = this.props;\n\n if (!vanillaFlicking || !vanillaFlicking.initialized) return false;\n\n const { children, ...restProps } = nextProps;\n\n for (const key in restProps) {\n if (prevProps[key] !== nextProps[key]) {\n return true;\n }\n }\n\n const prevChildren = this._prevChildren;\n const nextChildren = this._getChildren(children);\n if (nextProps.renderOnSameKey || !this._hasSameChildren(prevChildren, nextChildren)) return true;\n\n return false;\n }\n\n public beforeRender() {\n const vanillaFlicking = this._vanillaFlicking;\n const props = this.props;\n const prevChildren = this._prevChildren;\n\n // Ignore updates before init, they will be updated after \"ready\" event's force update\n if (!vanillaFlicking || !vanillaFlicking.initialized) return;\n\n const nextChildren = this._getChildren(props.children);\n if (props.renderOnSameKey || !this._hasSameChildren(prevChildren, nextChildren)) {\n this._panels = this._createPanelRefs(props, nextChildren);\n this._diffResult = this._jsxDiffer.update(nextChildren);\n this._prevChildren = nextChildren;\n }\n }\n\n public componentDidUpdate() {\n const flicking = this._vanillaFlicking;\n const renderEmitter = this._renderEmitter;\n const diffResult = this._diffResult;\n\n this._checkPlugins();\n renderEmitter.trigger(\"render\");\n flicking.camera.updateOffset();\n\n if (!diffResult || !flicking.initialized) return;\n\n sync(flicking, diffResult, this.reactPanels);\n\n this._diffResult = null;\n }\n\n public render() {\n const props = this.props;\n const Viewport = props.viewportTag as any;\n const Camera = props.cameraTag as any;\n const attributes: { [key: string]: any } = {};\n const flicking = this._vanillaFlicking;\n\n this.beforeRender();\n\n for (const name in props) {\n if (!(name in DEFAULT_PROPS) && !(name in VanillaFlicking.prototype)) {\n attributes[name] = props[name];\n }\n }\n\n const initialized = flicking && flicking.initialized;\n const viewportClasses: string[] = [\"flicking-viewport\"];\n const cameraClasses: string[] = [\"flicking-camera\"];\n const isHorizontal = flicking\n ? flicking.horizontal\n : props.horizontal ?? true;\n\n if (!isHorizontal) {\n viewportClasses.push(\"vertical\");\n }\n if (props.hideBeforeInit && !initialized) {\n viewportClasses.push(\"flicking-hidden\");\n }\n if (attributes.className) {\n viewportClasses.push(attributes.className);\n }\n if (props.cameraClass) {\n cameraClasses.push(props.cameraClass);\n }\n\n const cameraProps = !initialized && props.firstPanelSize\n ? { style: {\n transform: getDefaultCameraTransform(this.props.align, this.props.horizontal, this.props.firstPanelSize)\n }}\n : {};\n\n const panels = !!props.virtual && (props.panelsPerView ?? -1) > 0\n ? this._getVirtualPanels()\n : this._getPanels();\n\n return (\n <Viewport {...attributes} className={viewportClasses.join(\" \")} ref={(e?: HTMLElement) => {\n e && (this._viewportElement = e);\n }}>\n <Camera className={cameraClasses.join(\" \")} {...cameraProps}>\n { panels }\n </Camera>\n { this._getViewportSlot() }\n </Viewport>\n );\n }\n\n private _createPanelRefs(props: this[\"props\"], children: Array<React.ReactElement<any>>): React.RefObject<StrictPanel | NonStrictPanel | HTMLDivElement>[] {\n const panelsPerView = props.panelsPerView ?? -1;\n\n return panelsPerView > 0 && !!props.virtual\n ? range(panelsPerView + 1).map(() => React.createRef())\n : children.map(() => React.createRef());\n }\n\n private _bindEvents() {\n const flicking = this._vanillaFlicking!;\n\n Object.keys(EVENTS).forEach((eventKey: keyof typeof EVENTS) => {\n const eventName = EVENTS[eventKey];\n const propName = `on${eventName.charAt(0).toUpperCase() + eventName.slice(1)}`;\n\n flicking.on(eventName, e => {\n e.currentTarget = this;\n\n const evtHandler = this.props[propName];\n evtHandler(e);\n });\n });\n\n flicking.once(EVENTS.READY, () => {\n const children = this._getChildren();\n const diffResult = this._jsxDiffer.update(children);\n\n // children is changed before init\n if (diffResult.added.length > 0 || diffResult.removed.length > 0) {\n this._panels = this._createPanelRefs(this.props, children);\n this._diffResult = diffResult;\n }\n\n this.forceUpdate();\n });\n }\n\n private _checkPlugins() {\n const flicking = this._vanillaFlicking;\n const { list, added, removed, prevList } = this._pluginsDiffer.update(this.props.plugins!) as DiffResult<Plugin>;\n\n flicking.addPlugins(...added.map(index => list[index]));\n flicking.removePlugins(...removed.map(index => prevList[index]));\n }\n\n private _hasSameChildren(prevChildren: React.ReactElement[], nextChildren: React.ReactElement[]) {\n if (prevChildren.length !== nextChildren.length || prevChildren.length === 0) return false;\n\n const same = prevChildren.every((child, idx) => {\n const nextChild = nextChildren[idx];\n\n console.log(child, nextChild);\n\n if (child.key && nextChild.key) {\n return child.key === nextChild.key;\n } else {\n return child === nextChild;\n }\n });\n\n return same;\n }\n\n private _getChildren(children: React.ReactNode = this.props.children) {\n return (React.Children.toArray(children) as Array<React.ReactElement<any>>)\n .filter(child => child.type !== ViewportSlot)\n .reduce((all, child) => {\n return [...all, ...this._unpackFragment(child)];\n }, []) as Array<React.ReactElement<any>>;\n }\n\n private _getViewportSlot() {\n return (React.Children.toArray(this.props.children) as Array<React.ReactElement<any>>)\n .filter(child => child.type === ViewportSlot);\n }\n\n private _unpackFragment(child: React.ReactElement) {\n return this._isFragment(child)\n ? React.Children.toArray(child.props.children)\n .reduce((allChilds: React.ReactElement[], fragChild: React.ReactElement) => [...allChilds, ...this._unpackFragment(fragChild)], [] as React.ReactElement[])\n : [child];\n }\n\n private _getVirtualPanels() {\n const {\n panelClass = \"flicking-panel\"\n } = this.props.virtual!;\n const panelsPerView = this.props.panelsPerView!;\n const flicking = this._vanillaFlicking;\n const initialized = flicking && flicking.initialized;\n\n const renderingIndexes = initialized\n ? flicking.renderer.strategy.getRenderingIndexesByOrder(flicking)\n : range(panelsPerView + 1);\n\n const firstPanel = flicking && flicking.panels[0];\n const size = firstPanel\n ? flicking.horizontal\n ? { width: firstPanel.size }\n : { height: firstPanel.size }\n : {};\n\n return renderingIndexes.map(idx => {\n return <div\n key={idx}\n data-element-index={idx}\n ref={this._panels[idx] as React.RefObject<HTMLDivElement>}\n className={panelClass}\n style={size} />\n });\n }\n\n private _getPanels() {\n const origChildren = this._getChildren();\n const vanillaFlicking = this._vanillaFlicking;\n const diffResult = this._diffResult;\n\n const children: React.ReactElement[] = vanillaFlicking && vanillaFlicking.initialized\n ? diffResult\n ? getRenderingPanels(vanillaFlicking, diffResult)\n : getRenderingPanels(vanillaFlicking, diff(origChildren, origChildren))\n : origChildren;\n\n return this.props.useFindDOMNode\n ? children.map((child, idx) => <NonStrictPanel key={child.key!} ref={this._panels[idx] as any}>{child}</NonStrictPanel>)\n : children.map((child, idx) => <StrictPanel key={child.key!} ref={this._panels[idx] as any}>{child}</StrictPanel>)\n }\n\n private _isFragment(child: React.ReactElement) {\n if (child.type) {\n return child.type === React.Fragment;\n }\n\n return (child as any) === React.Fragment;\n }\n}\n\ninterface Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>, VanillaFlicking { }\nexport default Flicking;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport Flicking from \"./Flicking\";\nimport ViewportSlot from \"./ViewportSlot\";\n\n(Flicking as any).ViewportSlot = ViewportSlot;\nexport default Flicking;\n"],"names":["DEFAULT_PROPS","viewportTag","cameraTag","cameraClass","renderOnSameKey","plugins","useFindDOMNode","hideBeforeInit","onReady","e","onBeforeResize","onAfterResize","onHoldStart","onHoldEnd","onMoveStart","onMove","onMoveEnd","onWillChange","onChanged","onWillRestore","onRestored","onSelect","onNeedPanel","onVisibleChange","onReachEdge","onPanelChange","__extends","options","_super","_this","_reactFlicking","reactFlicking","flicking","getFlickingAttached","_flicking","strategy","_strategy","_rendering","updateRenderingPanels","renderPanels","Promise","resolve","renderEmitter","once","forceUpdate","forceRenderAllPanels","_a","reactPanels","_panels","collectPanels","externalComponent","createPanel","ExternalRenderer","React","createRef","Object","_elRef","current","_hide","_getElement","cloneElement","Children","only","props","children","ref","Component","findDOMNode","ViewportSlot","memo","el","_el","nativeElement","rendered","show","hide","_getChildren","_createPanelRefs","_prevChildren","map","panel","_renderEmitter","rendererOptions","align","virtual","panelsPerView","VirtualRenderingStrategy","NormalRenderingStrategy","providerCtor","ReactElementProvider","VanillaFlicking","_viewportElement","externalRenderer","ReactRenderer","_vanillaFlicking","_jsxDiffer","ListDiffer","key","_pluginsDiffer","_bindEvents","_checkPlugins","status","setStatus","destroy","nextProps","vanillaFlicking","prevProps","initialized","restProps","prevChildren","nextChildren","_hasSameChildren","_diffResult","update","diffResult","trigger","camera","updateOffset","sync","Viewport","Camera","attributes","beforeRender","name","prototype","viewportClasses","cameraClasses","isHorizontal","horizontal","push","className","cameraProps","firstPanelSize","style","transform","getDefaultCameraTransform","panels","_getVirtualPanels","_getPanels","join","_getViewportSlot","range","keys","EVENTS","forEach","eventKey","eventName","propName","charAt","toUpperCase","slice","on","currentTarget","evtHandler","READY","added","length","removed","list","prevList","addPlugins","index","removePlugins","same","every","child","idx","nextChild","console","log","toArray","filter","type","reduce","all","_unpackFragment","_isFragment","allChilds","fragChild","panelClass","renderingIndexes","renderer","getRenderingIndexesByOrder","firstPanel","size","width","height","origChildren","getRenderingPanels","diff","NonStrictPanel","StrictPanel","Fragment","Flicking","__decorate","withFlickingMethods"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0BO,IAAMA,aAAa,GAAkB;IAC1CC,EAAAA,WAAW,EAAE,KAD6B;IAE1CC,EAAAA,SAAS,EAAE,KAF+B;IAG1CC,EAAAA,WAAW,EAAE,EAH6B;IAI1CC,EAAAA,eAAe,EAAE,KAJyB;IAK1CC,EAAAA,OAAO,EAAE,EALiC;IAM1CC,EAAAA,cAAc,EAAE,KAN0B;IAO1CC,EAAAA,cAAc,EAAE,KAP0B;IAQ1CC,EAAAA,OAAO,EAAE,UAACC,CAAD,IARiC;IAS1CC,EAAAA,cAAc,EAAE,UAACD,CAAD,IAT0B;IAU1CE,EAAAA,aAAa,EAAE,UAACF,CAAD,IAV2B;IAW1CG,EAAAA,WAAW,EAAE,UAACH,CAAD,IAX6B;IAY1CI,EAAAA,SAAS,EAAE,UAACJ,CAAD,IAZ+B;IAa1CK,EAAAA,WAAW,EAAE,UAACL,CAAD,IAb6B;IAc1CM,EAAAA,MAAM,EAAE,UAACN,CAAD,IAdkC;IAe1CO,EAAAA,SAAS,EAAE,UAACP,CAAD,IAf+B;IAgB1CQ,EAAAA,YAAY,EAAE,UAACR,CAAD,IAhB4B;IAiB1CS,EAAAA,SAAS,EAAE,UAACT,CAAD,IAjB+B;IAkB1CU,EAAAA,aAAa,EAAE,UAACV,CAAD,IAlB2B;IAmB1CW,EAAAA,UAAU,EAAE,UAACX,CAAD,IAnB8B;IAoB1CY,EAAAA,QAAQ,EAAE,UAACZ,CAAD,IApBgC;IAqB1Ca,EAAAA,WAAW,EAAE,UAACb,CAAD,IArB6B;IAsB1Cc,EAAAA,eAAe,EAAE,UAACd,CAAD,IAtByB;IAuB1Ce,EAAAA,WAAW,EAAE,UAACf,CAAD,IAvB6B;IAwB1CgB,EAAAA,aAAa,EAAE,UAAChB,CAAD;IAxB2B,CAArC;;ICXP;;;IAA4BiB,EAAAA,gCAAA;;IAI1B,wBAAA,CAAmBC,OAAnB;IAAA,gBACEC,WAAA,KAAA,EAAMD,OAAN,SADF;;IAGEE,IAAAA,KAAI,CAACC,cAAL,GAAsBH,OAAO,CAACI,aAA9B;;IACD;;;;;IAGY,gBAAA,GAAb;;;;;;;IACQC,QAAAA,QAAQ,GAAGC,mCAAmB,CAAC,KAAKC,SAAN,CAA9B;IACAH,QAAAA,aAAa,GAAG,KAAKD,cAArB;IACAK,QAAAA,QAAQ,GAAG,KAAKC,SAAhB;IAEN,aAAKC,UAAL,GAAkB,IAAlB;IAEAF,QAAAA,QAAQ,CAACG,qBAAT,CAA+BN,QAA/B;IACAG,QAAAA,QAAQ,CAACI,YAAT,CAAsBP,QAAtB;IAEA;;cAAO,IAAIQ,OAAJ,CAAkB,UAAAC,OAAA;IACvBV,UAAAA,aAAa,CAACW,aAAd,CAA4BC,IAA5B,CAAiC,QAAjC,EAA2C;IACzCd,YAAAA,KAAI,CAACQ,UAAL,GAAkB,KAAlB;IACAI,YAAAA,OAAO;IACR,WAHD;IAIEV,UAAAA,aAAa,CAACa,WAAd;IACH,SANM,EAAP;;;IAOD,GAjBY;;IAmBA,8BAAA,GAAb;;;;;;;;;IACQb,YAAAA,aAAa,GAAG,KAAKD,cAArB;IAEN,iBAAKO,UAAL,GAAkB,IAAlB;IACA;;kBAAMT,gBAAA,CAAMiB,oBAAN,KAAA,KAAA,EAAN;;;IAAAC,YAAAA,OAAA;;IAEA;;kBAAO,IAAIN,OAAJ,CAAkB,UAAAC,OAAA;IACvBV,cAAAA,aAAa,CAACW,aAAd,CAA4BC,IAA5B,CAAiC,QAAjC,EAA2C;IACzCd,gBAAAA,KAAI,CAACQ,UAAL,GAAkB,KAAlB;IACAI,gBAAAA,OAAO;IACR,eAHD;IAIEV,cAAAA,aAAa,CAACa,WAAd;IACH,aANM,EAAP;;;;IAOD,GAbY;;IAeH,wBAAA,GAAV;IACE,QAAMZ,QAAQ,GAAGC,mCAAmB,CAAC,KAAKC,SAAN,CAApC;IACA,QAAMH,aAAa,GAAG,KAAKD,cAA3B;IACA,QAAMiB,WAAW,GAAGhB,aAAa,CAACgB,WAAlC;IAEA,SAAKC,OAAL,GAAe,KAAKZ,SAAL,CAAea,aAAf,CAA6BjB,QAA7B,EAAuCe,WAAvC,CAAf;IACD,GANS;;IAQA,sBAAA,GAAV,UAAuBG,iBAAvB,EAAyFvB,OAAzF;IACE,WAAO,KAAKS,SAAL,CAAee,WAAf,CAA2BD,iBAA3B,EAA8CvB,OAA9C,CAAP;IACD,GAFS;;IAGZ,sBAAA;IAxDA,EAA4ByB,iCAA5B;;ICTA;;;IAA0B1B,EAAAA,8BAAA;;IAA1B,sBAAA;IAAA,wEAAA;;IACUG,IAAAA,WAAA,GAAiB,KAAjB;IAEAA,IAAAA,YAAA,GAAuCwB,KAAK,CAACC,SAAN,EAAvC;;IAwBT;;;IAtBCC,EAAAA,qBAAA,yBAAA;aAAA;IAA6B,aAAO,KAAKC,MAAL,CAAYC,OAAnB;IAA8B;;;OAA3D;IACAF,EAAAA,qBAAA,oBAAA;aAAA;IAAwB,aAAO,CAAC,KAAKG,KAAb;IAAqB;;;OAA7C;;IAEO,gBAAA,GAAP;IACE,WAAO,KAAKA,KAAL,GACHL,mBAAA,eAAA,MAAA,CADG,GAEH,KAAKM,WAAL,EAFJ;IAGD,GAJM;;IAMA,cAAA,GAAP;IACE,SAAKD,KAAL,GAAa,KAAb;IACD,GAFM;;IAIA,cAAA,GAAP;IACE,SAAKA,KAAL,GAAa,IAAb;IACD,GAFM;;IAIC,qBAAA,GAAR;IACE,WAAOL,KAAK,CAACO,YAAN,CAAmBP,KAAK,CAACQ,QAAN,CAAeC,IAAf,CAAoB,KAAKC,KAAL,CAAWC,QAA/B,CAAnB,EAAmF;IACxFC,MAAAA,GAAG,EAAE,KAAKT;IAD8E,KAAnF,CAAP;IAGD,GAJO;;IAKV,oBAAA;IAAC,EA3ByBH,KAAK,CAACa,UAAhC;;ICCA;;;IAA6BxC,EAAAA,iCAAA;;IAA7B,yBAAA;IAAA,wEAAA;;IACUG,IAAAA,WAAA,GAAiB,KAAjB;;IAkBT;;;IAhBC0B,EAAAA,qBAAA,yBAAA;aAAA;IAA6B,aAAOY,oBAAW,CAAC,IAAD,CAAlB;IAA0C;;;OAAvE;IACAZ,EAAAA,qBAAA,oBAAA;aAAA;IAAwB,aAAO,CAAC,KAAKG,KAAb;IAAqB;;;OAA7C;;IAEO,gBAAA,GAAP;IACE,WAAO,KAAKA,KAAL,GACHL,mBAAA,eAAA,MAAA,CADG,GAEH,KAAKU,KAAL,CAAWC,QAFf;IAGD,GAJM;;IAMA,cAAA,GAAP;IACE,SAAKN,KAAL,GAAa,KAAb;IACD,GAFM;;IAIA,cAAA,GAAP;IACE,SAAKA,KAAL,GAAa,IAAb;IACD,GAFM;;IAGT,uBAAA;IAAC,EAnB4BL,KAAK,CAACa,UAAnC;;ICPA;;;;IAMA,IAAME,YAAY,GAAGf,KAAK,CAACgB,IAAN,CAAW,UAACN,KAAD;IAAqC,SAAAV,mBAAA,eAAA,MAAA,EAAGU,KAAK,CAACC,QAAT,CAAA;IAAqB,CAArE,CAArB;;ICEA;;;IAME,+BAAA,CAAmBM,EAAnB;IACE,SAAKC,GAAL,GAAWD,EAAX;IACD;;;IALDf,EAAAA,qBAAA,mBAAA;aAAA;IAAuB,aAAO,KAAKgB,GAAL,CAASC,aAAhB;IAAgC;;;OAAvD;IACAjB,EAAAA,qBAAA,oBAAA;aAAA;IAAwB,aAAO,KAAKgB,GAAL,CAASE,QAAhB;IAA2B;;;OAAnD;;IAMO,cAAA,GAAP;IACE,SAAKF,GAAL,CAASG,IAAT;IACD,GAFM;;IAIA,cAAA,GAAP;IACE,SAAKH,GAAL,CAASI,IAAT;IACD,GAFM;;IAGT,6BAAA;IAAC,GAjBD;;;;;ICqBuBjD,EAAAA,2BAAA;;IAerB,mBAAA,CAAmBqC,KAAnB;IAAA,gBACEnC,WAAA,KAAA,EAAMmC,KAAN,SADF;;IAXQlC,IAAAA,aAAA,GAA4E,EAA5E;IAKAA,IAAAA,oBAAA,GAAiB,IAAIqC,SAAJ,EAAjB;;IASN,QAAMF,QAAQ,GAAGnC,KAAI,CAAC+C,YAAL,EAAjB;;IACA/C,IAAAA,KAAI,CAACmB,OAAL,GAAenB,KAAI,CAACgD,gBAAL,CAAsBd,KAAtB,EAA6BC,QAA7B,CAAf;IACAnC,IAAAA,KAAI,CAACiD,aAAL,GAAqBd,QAArB;;IACD;;;IATDT,EAAAA,qBAAA,uBAAA;aAAA;IAA2B,aAAO,KAAKP,OAAL,CAAa+B,GAAb,CAAiB,UAAAC,KAAA;IAAS,eAAAA,KAAK,CAACvB,OAAN;IAAc,OAAxC,CAAP;IAAmD;;;OAA9E;IACAF,EAAAA,qBAAA,yBAAA;aAAA;IAA6B,aAAO,KAAK0B,cAAZ;IAA6B;;;OAA1D;;IAUO,2BAAA,GAAP;IACE,QAAMlB,KAAK,GAAG,KAAKA,KAAnB;IACA,QAAMmB,eAAe,GAAyB;IAC5CnD,MAAAA,aAAa,EAAE,IAD6B;IAE5CoD,MAAAA,KAAK,EAAEpB,KAAK,CAACoB,KAF+B;IAG5ChD,MAAAA,QAAQ,EAAE4B,KAAK,CAACqB,OAAN,IAAiBrB,KAAK,CAACsB,aAAN,GAAsB,CAAvC,GACN,IAAIC,wCAAJ,EADM,GAEN,IAAIC,uCAAJ,CAA4B;IAC5BC,QAAAA,YAAY,EAAEC;IADc,OAA5B;IALwC,KAA9C;IAUA,QAAMzD,QAAQ,GAAG,IAAI0D,eAAJ,CACf,KAAKC,gBADU,wBAGV5B;IACH6B,MAAAA,gBAAgB,EAAE,IAAIC,aAAJ,CAAkBX,eAAlB;UAJL,CAAjB;IAQA,SAAKY,gBAAL,GAAwB9D,QAAxB;;IAEA,QAAMgC,QAAQ,GAAG,KAAKY,YAAL,EAAjB;;IACA,SAAKmB,UAAL,GAAkB,IAAIC,UAAJ,CAAehC,QAAf,EAAyB,UAAAgB,KAAA;IAAS,aAAAA,KAAK,CAACiB,GAAN;IAAU,KAA5C,CAAlB;IACA,SAAKC,cAAL,GAAsB,IAAIF,UAAJ,EAAtB;IACA,SAAKlB,aAAL,GAAqBd,QAArB;;IAEA,SAAKmC,WAAL;;IACA,SAAKC,aAAL;;IAEA,QAAIrC,KAAK,CAACsC,MAAV,EAAkB;IAChBrE,MAAAA,QAAQ,CAACsE,SAAT,CAAmBvC,KAAK,CAACsC,MAAzB;IACD;IACF,GAjCM;;IAmCA,8BAAA,GAAP;;;IACE,UAAA,KAAKP,gBAAL,UAAA,iBAAA,SAAA,MAAuBS,SAAvB;IACD,GAFM;;IAIA,+BAAA,GAAP,UAA6BC,SAA7B;IACE,QAAMC,eAAe,GAAG,KAAKX,gBAA7B;IACA,QAAMY,SAAS,GAAG,KAAK3C,KAAvB;IAEA,QAAI,CAAC0C,eAAD,IAAoB,CAACA,eAAe,CAACE,WAAzC,EAAsD,OAAO,KAAP;;IAE9C,QAAA3C,QAAQ,GAAmBwC,SAAS,SAApC;IAAA,QAAaI,SAAS,UAAKJ,WAA7B,WAAA,EAAE;;IAER,SAAK,IAAMP,GAAX,IAAkBW,SAAlB,EAA6B;IAC3B,UAAIF,SAAS,CAACT,GAAD,CAAT,KAAmBO,SAAS,CAACP,GAAD,CAAhC,EAAuC;IACrC,eAAO,IAAP;IACD;IACF;;IAED,QAAMY,YAAY,GAAG,KAAK/B,aAA1B;;IACA,QAAMgC,YAAY,GAAG,KAAKlC,YAAL,CAAkBZ,QAAlB,CAArB;;IACA,QAAIwC,SAAS,CAACpG,eAAV,IAA6B,CAAC,KAAK2G,gBAAL,CAAsBF,YAAtB,EAAoCC,YAApC,CAAlC,EAAqF,OAAO,IAAP;IAErF,WAAO,KAAP;IACD,GAnBM;;IAqBA,sBAAA,GAAP;IACE,QAAML,eAAe,GAAG,KAAKX,gBAA7B;IACA,QAAM/B,KAAK,GAAG,KAAKA,KAAnB;IACA,QAAM8C,YAAY,GAAG,KAAK/B,aAA1B;;IAGA,QAAI,CAAC2B,eAAD,IAAoB,CAACA,eAAe,CAACE,WAAzC,EAAsD;;IAEtD,QAAMG,YAAY,GAAG,KAAKlC,YAAL,CAAkBb,KAAK,CAACC,QAAxB,CAArB;;IACA,QAAID,KAAK,CAAC3D,eAAN,IAAyB,CAAC,KAAK2G,gBAAL,CAAsBF,YAAtB,EAAoCC,YAApC,CAA9B,EAAiF;IAC/E,WAAK9D,OAAL,GAAe,KAAK6B,gBAAL,CAAsBd,KAAtB,EAA6B+C,YAA7B,CAAf;IACA,WAAKE,WAAL,GAAmB,KAAKjB,UAAL,CAAgBkB,MAAhB,CAAuBH,YAAvB,CAAnB;IACA,WAAKhC,aAAL,GAAqBgC,YAArB;IACD;IACF,GAdM;;IAgBA,4BAAA,GAAP;IACE,QAAM9E,QAAQ,GAAG,KAAK8D,gBAAtB;IACA,QAAMpD,aAAa,GAAG,KAAKuC,cAA3B;IACA,QAAMiC,UAAU,GAAG,KAAKF,WAAxB;;IAEA,SAAKZ,aAAL;;IACA1D,IAAAA,aAAa,CAACyE,OAAd,CAAsB,QAAtB;IACAnF,IAAAA,QAAQ,CAACoF,MAAT,CAAgBC,YAAhB;IAEA,QAAI,CAACH,UAAD,IAAe,CAAClF,QAAQ,CAAC2E,WAA7B,EAA0C;IAE1CW,IAAAA,oBAAI,CAACtF,QAAD,EAAWkF,UAAX,EAAuB,KAAKnE,WAA5B,CAAJ;IAEA,SAAKiE,WAAL,GAAmB,IAAnB;IACD,GAdM;;IAgBA,gBAAA,GAAP;IAAA,oBAAA;;;;IACE,QAAMjD,KAAK,GAAG,KAAKA,KAAnB;IACA,QAAMwD,QAAQ,GAAGxD,KAAK,CAAC9D,WAAvB;IACA,QAAMuH,MAAM,GAAGzD,KAAK,CAAC7D,SAArB;IACA,QAAMuH,UAAU,GAA2B,EAA3C;IACA,QAAMzF,QAAQ,GAAG,KAAK8D,gBAAtB;IAEA,SAAK4B,YAAL;;IAEA,SAAK,IAAMC,IAAX,IAAmB5D,KAAnB,EAA0B;IACxB,UAAI,EAAE4D,IAAI,IAAI3H,aAAV,KAA4B,EAAE2H,IAAI,IAAIjC,eAAe,CAACkC,SAA1B,CAAhC,EAAsE;IACpEH,QAAAA,UAAU,CAACE,IAAD,CAAV,GAAmB5D,KAAK,CAAC4D,IAAD,CAAxB;IACD;IACF;;IAED,QAAMhB,WAAW,GAAG3E,QAAQ,IAAIA,QAAQ,CAAC2E,WAAzC;IACA,QAAMkB,eAAe,GAAa,CAAC,mBAAD,CAAlC;IACA,QAAMC,aAAa,GAAa,CAAC,iBAAD,CAAhC;IACA,QAAMC,YAAY,GAAG/F,QAAQ,GACzBA,QAAQ,CAACgG,UADgB,GAEzB,MAAAjE,KAAK,CAACiE,UAAN,UAAA,iBAAA,KAAA,GAAoB,IAFxB;;IAIA,QAAI,CAACD,YAAL,EAAmB;IACjBF,MAAAA,eAAe,CAACI,IAAhB,CAAqB,UAArB;IACD;;IACD,QAAIlE,KAAK,CAACxD,cAAN,IAAwB,CAACoG,WAA7B,EAA0C;IACxCkB,MAAAA,eAAe,CAACI,IAAhB,CAAqB,iBAArB;IACD;;IACD,QAAIR,UAAU,CAACS,SAAf,EAA0B;IACxBL,MAAAA,eAAe,CAACI,IAAhB,CAAqBR,UAAU,CAACS,SAAhC;IACD;;IACD,QAAInE,KAAK,CAAC5D,WAAV,EAAuB;IACrB2H,MAAAA,aAAa,CAACG,IAAd,CAAmBlE,KAAK,CAAC5D,WAAzB;IACD;;IAED,QAAMgI,WAAW,GAAG,CAACxB,WAAD,IAAgB5C,KAAK,CAACqE,cAAtB,GAChB;IAAEC,MAAAA,KAAK,EAAE;IACTC,QAAAA,SAAS,EAAEC,yCAAyB,CAAC,KAAKxE,KAAL,CAAWoB,KAAZ,EAAmB,KAAKpB,KAAL,CAAWiE,UAA9B,EAA0C,KAAKjE,KAAL,CAAWqE,cAArD;IAD3B;IAAT,KADgB,GAIhB,EAJJ;IAMA,QAAMI,MAAM,GAAG,CAAC,CAACzE,KAAK,CAACqB,OAAR,IAAmB,CAAC,MAAArB,KAAK,CAACsB,aAAN,UAAA,iBAAA,KAAA,GAAuB,CAAC,CAAzB,IAA8B,CAAjD,GACX,KAAKoD,iBAAL,EADW,GAEX,KAAKC,UAAL,EAFJ;IAIA,WACErF,mBAAA,CAACkE,QAAD,eAAcE;IAAYS,MAAAA,SAAS,EAAEL,eAAe,CAACc,IAAhB,CAAqB,GAArB;IAA2B1E,MAAAA,GAAG,EAAE,UAACxD,CAAD;IACnEA,QAAAA,CAAC,KAAKoB,KAAI,CAAC8D,gBAAL,GAAwBlF,CAA7B,CAAD;IACD;UAFD,EAGE4C,mBAAA,CAACmE,MAAD;IAAQU,MAAAA,SAAS,EAAEJ,aAAa,CAACa,IAAd,CAAmB,GAAnB;WAA6BR,YAAhD,EACIK,MADJ,CAHF,EAMI,KAAKI,gBAAL,EANJ,CADF;IAUD,GAvDM;;IAyDC,0BAAA,GAAR,UAAyB7E,KAAzB,EAA+CC,QAA/C;;;IACE,QAAMqB,aAAa,GAAG,MAAAtB,KAAK,CAACsB,aAAN,UAAA,iBAAA,KAAA,GAAuB,CAAC,CAA9C;IAEA,WAAOA,aAAa,GAAG,CAAhB,IAAqB,CAAC,CAACtB,KAAK,CAACqB,OAA7B,GACHyD,qBAAK,CAACxD,aAAa,GAAG,CAAjB,CAAL,CAAyBN,GAAzB,CAA6B;IAAM,aAAA1B,KAAK,CAACC,SAAN,EAAA;IAAiB,KAApD,CADG,GAEHU,QAAQ,CAACe,GAAT,CAAa;IAAM,aAAA1B,KAAK,CAACC,SAAN,EAAA;IAAiB,KAApC,CAFJ;IAGD,GANO;;IAQA,qBAAA,GAAR;IAAA,oBAAA;;IACE,QAAMtB,QAAQ,GAAG,KAAK8D,gBAAtB;IAEAvC,IAAAA,MAAM,CAACuF,IAAP,CAAYC,sBAAZ,EAAoBC,OAApB,CAA4B,UAACC,QAAD;IAC1B,UAAMC,SAAS,GAAGH,sBAAM,CAACE,QAAD,CAAxB;IACA,UAAME,QAAQ,GAAG,WAAA,CAAKD,SAAS,CAACE,MAAV,CAAiB,CAAjB,EAAoBC,WAApB,KAAoCH,SAAS,CAACI,KAAV,CAAgB,CAAhB,CAAzC,CAAjB;IAEAtH,MAAAA,QAAQ,CAACuH,EAAT,CAAYL,SAAZ,EAAuB,UAAAzI,CAAA;IACrBA,QAAAA,CAAC,CAAC+I,aAAF,GAAkB3H,KAAlB;IAEA,YAAM4H,UAAU,GAAG5H,KAAI,CAACkC,KAAL,CAAWoF,QAAX,CAAnB;IACAM,QAAAA,UAAU,CAAChJ,CAAD,CAAV;IACD,OALD;IAMD,KAVD;IAYAuB,IAAAA,QAAQ,CAACW,IAAT,CAAcoG,sBAAM,CAACW,KAArB,EAA4B;IAC1B,UAAM1F,QAAQ,GAAGnC,KAAI,CAAC+C,YAAL,EAAjB;;IACA,UAAMsC,UAAU,GAAGrF,KAAI,CAACkE,UAAL,CAAgBkB,MAAhB,CAAuBjD,QAAvB,CAAnB;;;IAGA,UAAIkD,UAAU,CAACyC,KAAX,CAAiBC,MAAjB,GAA0B,CAA1B,IAA+B1C,UAAU,CAAC2C,OAAX,CAAmBD,MAAnB,GAA4B,CAA/D,EAAkE;IAChE/H,QAAAA,KAAI,CAACmB,OAAL,GAAenB,KAAI,CAACgD,gBAAL,CAAsBhD,KAAI,CAACkC,KAA3B,EAAkCC,QAAlC,CAAf;IACAnC,QAAAA,KAAI,CAACmF,WAAL,GAAmBE,UAAnB;IACD;;IAECrF,MAAAA,KAAI,CAACe,WAAL;IACH,KAXD;IAYD,GA3BO;;IA6BA,uBAAA,GAAR;IACE,QAAMZ,QAAQ,GAAG,KAAK8D,gBAAtB;;IACM,QAAAhD,KAAqC,KAAKoD,cAAL,CAAoBe,MAApB,CAA2B,KAAKlD,KAAL,CAAW1D,OAAtC,CAArC;IAAA,QAAEyJ,IAAI,UAAN;IAAA,QAAQH,KAAK,WAAb;IAAA,QAAeE,OAAO,aAAtB;IAAA,QAAwBE,QAAQ,cAAhC;;IAEN/H,IAAAA,QAAQ,CAACgI,UAAT,MAAA,CAAAhI,QAAA,EAAuB2H,KAAK,CAAC5E,GAAN,CAAU,UAAAkF,KAAA;IAAS,aAAAH,IAAI,CAACG,KAAD,CAAJ;IAAW,KAA9B,CAAvB;IACAjI,IAAAA,QAAQ,CAACkI,aAAT,MAAA,CAAAlI,QAAA,EAA0B6H,OAAO,CAAC9E,GAAR,CAAY,UAAAkF,KAAA;IAAS,aAAAF,QAAQ,CAACE,KAAD,CAAR;IAAe,KAApC,CAA1B;IACD,GANO;;IAQA,0BAAA,GAAR,UAAyBpD,YAAzB,EAA6DC,YAA7D;IACE,QAAID,YAAY,CAAC+C,MAAb,KAAwB9C,YAAY,CAAC8C,MAArC,IAA+C/C,YAAY,CAAC+C,MAAb,KAAwB,CAA3E,EAA8E,OAAO,KAAP;IAE9E,QAAMO,IAAI,GAAGtD,YAAY,CAACuD,KAAb,CAAmB,UAACC,KAAD,EAAQC,GAAR;IAC9B,UAAMC,SAAS,GAAGzD,YAAY,CAACwD,GAAD,CAA9B;IAEAE,MAAAA,OAAO,CAACC,GAAR,CAAYJ,KAAZ,EAAmBE,SAAnB;;IAEA,UAAIF,KAAK,CAACpE,GAAN,IAAasE,SAAS,CAACtE,GAA3B,EAAgC;IAC9B,eAAOoE,KAAK,CAACpE,GAAN,KAAcsE,SAAS,CAACtE,GAA/B;IACD,OAFD,MAEO;IACL,eAAOoE,KAAK,KAAKE,SAAjB;IACD;IACF,KAVY,CAAb;IAYA,WAAOJ,IAAP;IACD,GAhBO;;IAkBA,sBAAA,GAAR,UAAqBnG,QAArB;IAAA,oBAAA;;IAAqB,2BAAA,EAAA;IAAAA,MAAAA,WAA4B,KAAKD,KAAL,CAAWC,QAAvC;;;IACnB,WAAQX,KAAK,CAACQ,QAAN,CAAe6G,OAAf,CAAuB1G,QAAvB,EACL2G,MADK,CACE,UAAAN,KAAA;IAAS,aAAAA,KAAK,CAACO,IAAN,KAAexG,YAAf;IAA2B,KADtC,EAELyG,MAFK,CAEE,UAACC,GAAD,EAAMT,KAAN;IACN,6CAAWS,YAAQjJ,KAAI,CAACkJ,eAAL,CAAqBV,KAArB,QAAnB;IACD,KAJK,EAIH,EAJG,CAAR;IAKD,GANO;;IAQA,0BAAA,GAAR;IACE,WAAQhH,KAAK,CAACQ,QAAN,CAAe6G,OAAf,CAAuB,KAAK3G,KAAL,CAAWC,QAAlC,EACL2G,MADK,CACE,UAAAN,KAAA;IAAS,aAAAA,KAAK,CAACO,IAAN,KAAexG,YAAf;IAA2B,KADtC,CAAR;IAED,GAHO;;IAKA,yBAAA,GAAR,UAAwBiG,KAAxB;IAAA,oBAAA;;IACE,WAAO,KAAKW,WAAL,CAAiBX,KAAjB,IACHhH,KAAK,CAACQ,QAAN,CAAe6G,OAAf,CAAuBL,KAAK,CAACtG,KAAN,CAAYC,QAAnC,EACC6G,MADD,CACQ,UAACI,SAAD,EAAkCC,SAAlC;IAAoE,6CAAID,kBAAcpJ,KAAI,CAACkJ,eAAL,CAAqBG,SAArB,QAAlB;IAAkD,KAD9H,EACgI,EADhI,CADG,GAGH,CAACb,KAAD,CAHJ;IAID,GALO;;IAOA,2BAAA,GAAR;IAAA,oBAAA;;IAEI,QAAAvH,KACE,KAAKiB,KAAL,CAAWqB,OAAX,WADF;IAAA,QAAA+F,UAAU,mBAAG,qBAAb;IAEF,QAAM9F,aAAa,GAAG,KAAKtB,KAAL,CAAWsB,aAAjC;IACA,QAAMrD,QAAQ,GAAG,KAAK8D,gBAAtB;IACA,QAAMa,WAAW,GAAG3E,QAAQ,IAAIA,QAAQ,CAAC2E,WAAzC;IAEA,QAAMyE,gBAAgB,GAAGzE,WAAW,GAChC3E,QAAQ,CAACqJ,QAAT,CAAkBlJ,QAAlB,CAA2BmJ,0BAA3B,CAAsDtJ,QAAtD,CADgC,GAEhC6G,qBAAK,CAACxD,aAAa,GAAG,CAAjB,CAFT;IAIA,QAAMkG,UAAU,GAAGvJ,QAAQ,IAAIA,QAAQ,CAACwG,MAAT,CAAgB,CAAhB,CAA/B;IACA,QAAMgD,IAAI,GAAGD,UAAU,GACnBvJ,QAAQ,CAACgG,UAAT,GACE;IAAEyD,MAAAA,KAAK,EAAEF,UAAU,CAACC;IAApB,KADF,GAEE;IAAEE,MAAAA,MAAM,EAAEH,UAAU,CAACC;IAArB,KAHiB,GAInB,EAJJ;IAMA,WAAOJ,gBAAgB,CAACrG,GAAjB,CAAqB,UAAAuF,GAAA;IAC1B,aAAOjH,mBAAA,MAAA;IACL4C,QAAAA,GAAG,EAAEqE;kCACeA;IACpBrG,QAAAA,GAAG,EAAEpC,KAAI,CAACmB,OAAL,CAAasH,GAAb;IACLpC,QAAAA,SAAS,EAAEiD;IACX9C,QAAAA,KAAK,EAAEmD;WALF,CAAP;IAMD,KAPM,CAAP;IAQD,GA3BO;;IA6BA,oBAAA,GAAR;IAAA,oBAAA;;IACE,QAAMG,YAAY,GAAG,KAAK/G,YAAL,EAArB;;IACA,QAAM6B,eAAe,GAAG,KAAKX,gBAA7B;IACA,QAAMoB,UAAU,GAAG,KAAKF,WAAxB;IAEA,QAAMhD,QAAQ,GAAyByC,eAAe,IAAIA,eAAe,CAACE,WAAnC,GACnCO,UAAU,GACR0E,kCAAkB,CAACnF,eAAD,EAAkBS,UAAlB,CADV,GAER0E,kCAAkB,CAACnF,eAAD,EAAkBoF,eAAI,CAACF,YAAD,EAAeA,YAAf,CAAtB,CAHe,GAInCA,YAJJ;IAMA,WAAO,KAAK5H,KAAL,CAAWzD,cAAX,GACH0D,QAAQ,CAACe,GAAT,CAAa,UAACsF,KAAD,EAAQC,GAAR;IAAgB,aAAAjH,mBAAA,CAACyI,cAAD;IAAgB7F,QAAAA,GAAG,EAAEoE,KAAK,CAACpE;IAAMhC,QAAAA,GAAG,EAAEpC,KAAI,CAACmB,OAAL,CAAasH,GAAb;WAAtC,EAAiED,KAAjE,CAAA;IAAwF,KAArH,CADG,GAEHrG,QAAQ,CAACe,GAAT,CAAa,UAACsF,KAAD,EAAQC,GAAR;IAAgB,aAAAjH,mBAAA,CAAC0I,WAAD;IAAa9F,QAAAA,GAAG,EAAEoE,KAAK,CAACpE;IAAMhC,QAAAA,GAAG,EAAEpC,KAAI,CAACmB,OAAL,CAAasH,GAAb;WAAnC,EAA8DD,KAA9D,CAAA;IAAkF,KAA/G,CAFJ;IAGD,GAdO;;IAgBA,qBAAA,GAAR,UAAoBA,KAApB;IACE,QAAIA,KAAK,CAACO,IAAV,EAAgB;IACd,aAAOP,KAAK,CAACO,IAAN,KAAevH,KAAK,CAAC2I,QAA5B;IACD;;IAED,WAAQ3B,KAAa,KAAKhH,KAAK,CAAC2I,QAAhC;IACD,GANO;;IA3SMC,EAAAA,qBAAA,GAA8BjM,aAA9B;;IAEOkM,EAAAA,YAApBC,qFAAoB;;IAgTvB,iBAAA;IAnTA,EAAuB9I,KAAK,CAACa;;IC7B7B;;;;IAOC+H,QAAgB,CAAC7H,YAAjB,GAAgCA,YAAhC;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@egjs/react-flicking",
3
- "version": "4.10.0",
3
+ "version": "4.10.2-beta.0",
4
4
  "description": "Everyday 30 million people experience. It's reliable, flexible and extendable carousel.",
5
5
  "main": "dist/flicking.cjs.js",
6
6
  "module": "dist/flicking.esm.js",
@@ -29,7 +29,7 @@
29
29
  "@types/jest": "24.0.12",
30
30
  "@types/node": "12.0.0",
31
31
  "@types/react": "^18.0.5",
32
- "@types/react-dom": "16.8.4",
32
+ "@types/react-dom": "18.0.0",
33
33
  "@types/react-is": "^17.0.0",
34
34
  "cpx": "^1.5.0",
35
35
  "highlight.js": "^9.15.6",
@@ -3,6 +3,7 @@
3
3
  * egjs projects are licensed under the MIT license
4
4
  */
5
5
  import * as React from "react";
6
+ import { flushSync } from "react-dom";
6
7
  import Component from "@egjs/component";
7
8
  import ListDiffer, { diff, DiffResult } from "@egjs/list-differ";
8
9
  import VanillaFlicking, {
@@ -26,12 +27,6 @@ import NonStrictPanel from "./NonStrictPanel";
26
27
  import ViewportSlot from "./ViewportSlot";
27
28
  import ReactElementProvider from "./ReactElementProvider";
28
29
 
29
- enum LifeCycleState {
30
- BEFORE_UPDATE,
31
- RENDER,
32
- UPDATED
33
- }
34
-
35
30
  class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>> {
36
31
  public static defaultProps: FlickingProps = DEFAULT_PROPS;
37
32
 
@@ -42,7 +37,7 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
42
37
  private _viewportElement: HTMLElement;
43
38
  private _diffResult: DiffResult<React.ReactElement> | null;
44
39
  private _renderEmitter = new Component<{ render: void }>();
45
- private _currentState: LifeCycleState = LifeCycleState.BEFORE_UPDATE;
40
+ private _prevChildren: React.ReactElement[];
46
41
 
47
42
  public get reactPanels() { return this._panels.map(panel => panel.current!); }
48
43
  public get renderEmitter() { return this._renderEmitter; }
@@ -50,7 +45,9 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
50
45
  public constructor(props: Partial<FlickingProps & FlickingOptions>) {
51
46
  super(props);
52
47
 
53
- this._panels = this._createPanelRefs(props, this._getChildren());
48
+ const children = this._getChildren();
49
+ this._panels = this._createPanelRefs(props, children);
50
+ this._prevChildren = children;
54
51
  }
55
52
 
56
53
  public componentDidMount() {
@@ -74,11 +71,11 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
74
71
  );
75
72
 
76
73
  this._vanillaFlicking = flicking;
77
- this._currentState = LifeCycleState.UPDATED;
78
74
 
79
75
  const children = this._getChildren();
80
76
  this._jsxDiffer = new ListDiffer(children, panel => panel.key!);
81
77
  this._pluginsDiffer = new ListDiffer<any>();
78
+ this._prevChildren = children;
82
79
 
83
80
  this._bindEvents();
84
81
  this._checkPlugins();
@@ -92,31 +89,43 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
92
89
  this._vanillaFlicking?.destroy();
93
90
  }
94
91
 
95
- public shouldComponentUpdate(nextProps: this["props"]) {
92
+ public shouldComponentUpdate(nextProps: Readonly<Partial<FlickingProps & FlickingOptions>>): boolean {
96
93
  const vanillaFlicking = this._vanillaFlicking;
97
- const props = this.props;
94
+ const prevProps = this.props;
98
95
 
99
- // Ignore updates before init, they will be updated after "ready" event's force update
100
96
  if (!vanillaFlicking || !vanillaFlicking.initialized) return false;
101
97
 
102
- if (this._currentState !== LifeCycleState.BEFORE_UPDATE && props.children !== nextProps.children) {
103
- const nextChildren = this._getChildren(nextProps.children);
104
-
105
- this._panels = this._createPanelRefs(nextProps, nextChildren);
106
- this._diffResult = this._jsxDiffer.update(nextChildren);
107
- }
108
-
109
- this._currentState = LifeCycleState.BEFORE_UPDATE;
98
+ const { children, ...restProps } = nextProps;
110
99
 
111
- for (const key in nextProps) {
112
- if (props[key] !== nextProps[key]) {
100
+ for (const key in restProps) {
101
+ if (prevProps[key] !== nextProps[key]) {
113
102
  return true;
114
103
  }
115
104
  }
116
105
 
106
+ const prevChildren = this._prevChildren;
107
+ const nextChildren = this._getChildren(children);
108
+ if (nextProps.renderOnSameKey || !this._hasSameChildren(prevChildren, nextChildren)) return true;
109
+
117
110
  return false;
118
111
  }
119
112
 
113
+ public beforeRender() {
114
+ const vanillaFlicking = this._vanillaFlicking;
115
+ const props = this.props;
116
+ const prevChildren = this._prevChildren;
117
+
118
+ // Ignore updates before init, they will be updated after "ready" event's force update
119
+ if (!vanillaFlicking || !vanillaFlicking.initialized) return;
120
+
121
+ const nextChildren = this._getChildren(props.children);
122
+ if (props.renderOnSameKey || !this._hasSameChildren(prevChildren, nextChildren)) {
123
+ this._panels = this._createPanelRefs(props, nextChildren);
124
+ this._diffResult = this._jsxDiffer.update(nextChildren);
125
+ this._prevChildren = nextChildren;
126
+ }
127
+ }
128
+
120
129
  public componentDidUpdate() {
121
130
  const flicking = this._vanillaFlicking;
122
131
  const renderEmitter = this._renderEmitter;
@@ -126,8 +135,6 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
126
135
  renderEmitter.trigger("render");
127
136
  flicking.camera.updateOffset();
128
137
 
129
- this._currentState = LifeCycleState.UPDATED;
130
-
131
138
  if (!diffResult || !flicking.initialized) return;
132
139
 
133
140
  sync(flicking, diffResult, this.reactPanels);
@@ -142,7 +149,7 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
142
149
  const attributes: { [key: string]: any } = {};
143
150
  const flicking = this._vanillaFlicking;
144
151
 
145
- this._currentState = LifeCycleState.RENDER;
152
+ this.beforeRender();
146
153
 
147
154
  for (const name in props) {
148
155
  if (!(name in DEFAULT_PROPS) && !(name in VanillaFlicking.prototype)) {
@@ -225,7 +232,7 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
225
232
  this._diffResult = diffResult;
226
233
  }
227
234
 
228
- this.forceUpdate();
235
+ this.forceUpdate();
229
236
  });
230
237
  }
231
238
 
@@ -237,6 +244,24 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
237
244
  flicking.removePlugins(...removed.map(index => prevList[index]));
238
245
  }
239
246
 
247
+ private _hasSameChildren(prevChildren: React.ReactElement[], nextChildren: React.ReactElement[]) {
248
+ if (prevChildren.length !== nextChildren.length || prevChildren.length === 0) return false;
249
+
250
+ const same = prevChildren.every((child, idx) => {
251
+ const nextChild = nextChildren[idx];
252
+
253
+ console.log(child, nextChild);
254
+
255
+ if (child.key && nextChild.key) {
256
+ return child.key === nextChild.key;
257
+ } else {
258
+ return child === nextChild;
259
+ }
260
+ });
261
+
262
+ return same;
263
+ }
264
+
240
265
  private _getChildren(children: React.ReactNode = this.props.children) {
241
266
  return (React.Children.toArray(children) as Array<React.ReactElement<any>>)
242
267
  .filter(child => child.type !== ViewportSlot)
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) 2015 NAVER Corp.
3
3
  * egjs projects are licensed under the MIT license
4
4
  */
5
+ import { flushSync } from "react-dom";
5
6
  import { ExternalRenderer, PanelOptions, RendererOptions, getFlickingAttached } from "@egjs/flicking";
6
7
 
7
8
  import ReactFlicking from "./Flicking";
@@ -38,7 +39,7 @@ class ReactRenderer extends ExternalRenderer {
38
39
  this._rendering = false;
39
40
  resolve()
40
41
  });
41
- reactFlicking.forceUpdate();
42
+ reactFlicking.forceUpdate();
42
43
  });
43
44
  }
44
45
 
@@ -53,7 +54,7 @@ class ReactRenderer extends ExternalRenderer {
53
54
  this._rendering = false;
54
55
  resolve();
55
56
  });
56
- reactFlicking.forceUpdate();
57
+ reactFlicking.forceUpdate();
57
58
  });
58
59
  }
59
60
 
@@ -28,6 +28,7 @@ export const DEFAULT_PROPS: FlickingProps = {
28
28
  viewportTag: "div",
29
29
  cameraTag: "div",
30
30
  cameraClass: "",
31
+ renderOnSameKey: false,
31
32
  plugins: [],
32
33
  useFindDOMNode: false,
33
34
  hideBeforeInit: false,
@@ -29,6 +29,7 @@ export interface FlickingProps {
29
29
  viewportTag: keyof JSX.IntrinsicElements;
30
30
  cameraTag: keyof JSX.IntrinsicElements;
31
31
  cameraClass: string;
32
+ renderOnSameKey: boolean;
32
33
  plugins: Plugin[];
33
34
  status?: Status;
34
35
  useFindDOMNode: boolean;
@@ -1,45 +0,0 @@
1
- .flicking-viewport {
2
- position: relative;
3
- overflow: hidden;
4
- }
5
-
6
- .flicking-viewport:not(.vertical) {
7
- width: 100%;
8
- height: 100%;
9
- }
10
-
11
- .flicking-viewport.vertical,
12
- .flicking-viewport.vertical > .flicking-camera {
13
- display: inline-block;
14
- }
15
-
16
- .flicking-viewport.vertical.middle > .flicking-camera > * {
17
- vertical-align: middle;
18
- }
19
-
20
- .flicking-viewport.vertical.bottom > .flicking-camera > * {
21
- vertical-align: bottom;
22
- }
23
-
24
- .flicking-viewport.vertical > .flicking-camera > * {
25
- display: block;
26
- }
27
-
28
- .flicking-viewport.flicking-hidden > .flicking-camera > * {
29
- visibility: hidden;
30
- }
31
-
32
- .flicking-camera {
33
- width: 100%;
34
- height: 100%;
35
- position: relative;
36
- z-index: 1;
37
- white-space: nowrap;
38
- will-change: transform;
39
- }
40
-
41
- .flicking-camera > * {
42
- display: inline-block;
43
- white-space: normal;
44
- vertical-align: top;
45
- }
@@ -1 +0,0 @@
1
- .flicking-viewport{position:relative;overflow:hidden}.flicking-viewport:not(.vertical){width:100%;height:100%}.flicking-viewport.vertical,.flicking-viewport.vertical>.flicking-camera{display:inline-block}.flicking-viewport.vertical.middle>.flicking-camera>*{vertical-align:middle}.flicking-viewport.vertical.bottom>.flicking-camera>*{vertical-align:bottom}.flicking-viewport.vertical>.flicking-camera>*{display:block}.flicking-viewport.flicking-hidden>.flicking-camera>*{visibility:hidden}.flicking-camera{width:100%;height:100%;position:relative;z-index:1;white-space:nowrap;will-change:transform}.flicking-camera>*{display:inline-block;white-space:normal;vertical-align:top}