@egjs/react-flicking 4.10.1 → 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.
@@ -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\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 _prevProps: Partial<FlickingProps & FlickingOptions>;\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 this._prevProps = this.props;\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._prevProps = this.props;\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 if (!this._hasSameChildren(prevProps, nextProps)) return true;\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 return false;\n }\n\n public beforeRender() {\n const vanillaFlicking = this._vanillaFlicking;\n const nextProps = this.props;\n const prevProps = this._prevProps;\n\n // Ignore updates before init, they will be updated after \"ready\" event's force update\n if (!vanillaFlicking || !vanillaFlicking.initialized) return;\n\n if (!this._hasSameChildren(prevProps, nextProps)) {\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\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 this._prevProps = props;\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(prevProps: this[\"props\"], nextProps: this[\"props\"]) {\n const prevChildren = this._getChildren(prevProps.children);\n const nextChildren = this._getChildren(nextProps.children);\n\n if (prevChildren.length !== nextChildren.length) return false;\n\n const same = prevChildren.every((child, idx) => {\n const nextChild = nextChildren[idx];\n if ((child as React.ReactElement).key && (nextChild as React.ReactElement).key) {\n return (child as React.ReactElement).key === (nextChild as React.ReactElement).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","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","_createPanelRefs","_getChildren","_prevProps","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","_hasSameChildren","restProps","nextChildren","_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","prevChildren","same","every","child","idx","nextChild","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":"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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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@egjs/react-flicking",
3
- "version": "4.10.1",
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, {
@@ -36,7 +37,7 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
36
37
  private _viewportElement: HTMLElement;
37
38
  private _diffResult: DiffResult<React.ReactElement> | null;
38
39
  private _renderEmitter = new Component<{ render: void }>();
39
- private _prevProps: Partial<FlickingProps & FlickingOptions>;
40
+ private _prevChildren: React.ReactElement[];
40
41
 
41
42
  public get reactPanels() { return this._panels.map(panel => panel.current!); }
42
43
  public get renderEmitter() { return this._renderEmitter; }
@@ -44,8 +45,9 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
44
45
  public constructor(props: Partial<FlickingProps & FlickingOptions>) {
45
46
  super(props);
46
47
 
47
- this._panels = this._createPanelRefs(props, this._getChildren());
48
- this._prevProps = this.props;
48
+ const children = this._getChildren();
49
+ this._panels = this._createPanelRefs(props, children);
50
+ this._prevChildren = children;
49
51
  }
50
52
 
51
53
  public componentDidMount() {
@@ -73,7 +75,7 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
73
75
  const children = this._getChildren();
74
76
  this._jsxDiffer = new ListDiffer(children, panel => panel.key!);
75
77
  this._pluginsDiffer = new ListDiffer<any>();
76
- this._prevProps = this.props;
78
+ this._prevChildren = children;
77
79
 
78
80
  this._bindEvents();
79
81
  this._checkPlugins();
@@ -92,7 +94,6 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
92
94
  const prevProps = this.props;
93
95
 
94
96
  if (!vanillaFlicking || !vanillaFlicking.initialized) return false;
95
- if (!this._hasSameChildren(prevProps, nextProps)) return true;
96
97
 
97
98
  const { children, ...restProps } = nextProps;
98
99
 
@@ -102,22 +103,26 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
102
103
  }
103
104
  }
104
105
 
106
+ const prevChildren = this._prevChildren;
107
+ const nextChildren = this._getChildren(children);
108
+ if (nextProps.renderOnSameKey || !this._hasSameChildren(prevChildren, nextChildren)) return true;
109
+
105
110
  return false;
106
111
  }
107
112
 
108
113
  public beforeRender() {
109
114
  const vanillaFlicking = this._vanillaFlicking;
110
- const nextProps = this.props;
111
- const prevProps = this._prevProps;
115
+ const props = this.props;
116
+ const prevChildren = this._prevChildren;
112
117
 
113
118
  // Ignore updates before init, they will be updated after "ready" event's force update
114
119
  if (!vanillaFlicking || !vanillaFlicking.initialized) return;
115
120
 
116
- if (!this._hasSameChildren(prevProps, nextProps)) {
117
- const nextChildren = this._getChildren(nextProps.children);
118
-
119
- this._panels = this._createPanelRefs(nextProps, nextChildren);
121
+ const nextChildren = this._getChildren(props.children);
122
+ if (props.renderOnSameKey || !this._hasSameChildren(prevChildren, nextChildren)) {
123
+ this._panels = this._createPanelRefs(props, nextChildren);
120
124
  this._diffResult = this._jsxDiffer.update(nextChildren);
125
+ this._prevChildren = nextChildren;
121
126
  }
122
127
  }
123
128
 
@@ -182,8 +187,6 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
182
187
  ? this._getVirtualPanels()
183
188
  : this._getPanels();
184
189
 
185
- this._prevProps = props;
186
-
187
190
  return (
188
191
  <Viewport {...attributes} className={viewportClasses.join(" ")} ref={(e?: HTMLElement) => {
189
192
  e && (this._viewportElement = e);
@@ -229,7 +232,7 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
229
232
  this._diffResult = diffResult;
230
233
  }
231
234
 
232
- this.forceUpdate();
235
+ this.forceUpdate();
233
236
  });
234
237
  }
235
238
 
@@ -241,16 +244,16 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
241
244
  flicking.removePlugins(...removed.map(index => prevList[index]));
242
245
  }
243
246
 
244
- private _hasSameChildren(prevProps: this["props"], nextProps: this["props"]) {
245
- const prevChildren = this._getChildren(prevProps.children);
246
- const nextChildren = this._getChildren(nextProps.children);
247
-
248
- if (prevChildren.length !== nextChildren.length) return false;
247
+ private _hasSameChildren(prevChildren: React.ReactElement[], nextChildren: React.ReactElement[]) {
248
+ if (prevChildren.length !== nextChildren.length || prevChildren.length === 0) return false;
249
249
 
250
250
  const same = prevChildren.every((child, idx) => {
251
251
  const nextChild = nextChildren[idx];
252
- if ((child as React.ReactElement).key && (nextChild as React.ReactElement).key) {
253
- return (child as React.ReactElement).key === (nextChild as React.ReactElement).key;
252
+
253
+ console.log(child, nextChild);
254
+
255
+ if (child.key && nextChild.key) {
256
+ return child.key === nextChild.key;
254
257
  } else {
255
258
  return child === nextChild;
256
259
  }
@@ -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}
package/dist/flicking.css DELETED
@@ -1,44 +0,0 @@
1
- .flicking-viewport {
2
- position: relative;
3
- overflow: hidden;
4
- }
5
-
6
- .flicking-viewport.vertical {
7
- display: -webkit-inline-box;
8
- display: -ms-inline-flexbox;
9
- display: inline-flex;
10
- }
11
-
12
- .flicking-viewport.vertical > .flicking-camera {
13
- display: -webkit-inline-box;
14
- display: -ms-inline-flexbox;
15
- display: inline-flex;
16
- -webkit-box-orient: vertical;
17
- -webkit-box-direction: normal;
18
- -ms-flex-direction: column;
19
- flex-direction: column;
20
- }
21
-
22
- .flicking-viewport.flicking-hidden > .flicking-camera > * {
23
- visibility: hidden;
24
- }
25
-
26
- .flicking-camera {
27
- width: 100%;
28
- height: 100%;
29
- display: -webkit-box;
30
- display: -ms-flexbox;
31
- display: flex;
32
- position: relative;
33
- -webkit-box-orient: horizontal;
34
- -webkit-box-direction: normal;
35
- -ms-flex-direction: row;
36
- flex-direction: row;
37
- z-index: 1;
38
- will-change: transform;
39
- }
40
-
41
- .flicking-camera > * {
42
- -ms-flex-negative: 0;
43
- flex-shrink: 0;
44
- }
@@ -1 +0,0 @@
1
- .flicking-viewport{position:relative;overflow:hidden}.flicking-viewport.vertical{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.flicking-viewport.vertical>.flicking-camera{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.flicking-viewport.flicking-hidden>.flicking-camera>*{visibility:hidden}.flicking-camera{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;z-index:1;will-change:transform}.flicking-camera>*{-ms-flex-negative:0;flex-shrink:0}