@egjs/react-flicking 4.3.2 → 4.4.3
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.
- package/declaration/Flicking.d.ts +14 -7
- package/declaration/NonStrictPanel.d.ts +10 -0
- package/declaration/ReactElementProvider.d.ts +12 -0
- package/declaration/ReactRenderer.d.ts +3 -3
- package/declaration/StrictPanel.d.ts +12 -0
- package/declaration/ViewportSlot.d.ts +1 -1
- package/declaration/types.d.ts +2 -1
- package/dist/flicking.cjs.js +272 -168
- package/dist/flicking.cjs.js.map +1 -1
- package/dist/flicking.esm.js +270 -170
- package/dist/flicking.esm.js.map +1 -1
- package/package.json +3 -4
- package/src/react-flicking/Flicking.tsx +130 -48
- package/src/react-flicking/NonStrictPanel.tsx +29 -0
- package/src/react-flicking/ReactElementProvider.ts +28 -0
- package/src/react-flicking/ReactRenderer.ts +22 -24
- package/src/react-flicking/StrictPanel.tsx +36 -0
- package/src/react-flicking/ViewportSlot.tsx +5 -1
- package/src/react-flicking/consts.ts +0 -1
- package/src/react-flicking/index.umd.ts +4 -0
- package/src/react-flicking/types.ts +3 -1
- package/declaration/NonStrictPanelComponent.d.ts +0 -8
- package/declaration/ReactPanel.d.ts +0 -9
- package/declaration/ReactPanelComponent.d.ts +0 -6
- package/declaration/StrictPanelComponent.d.ts +0 -10
- package/src/react-flicking/NonStrictPanelComponent.tsx +0 -18
- package/src/react-flicking/ReactPanel.ts +0 -20
- package/src/react-flicking/ReactPanelComponent.tsx +0 -6
- package/src/react-flicking/StrictPanelComponent.tsx +0 -24
package/dist/flicking.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flicking.esm.js","sources":["../src/react-flicking/consts.ts","../src/react-flicking/ReactPanel.ts","../src/react-flicking/ReactRenderer.ts","../src/react-flicking/NonStrictPanelComponent.tsx","../src/react-flicking/StrictPanelComponent.tsx","../src/react-flicking/ViewportSlot.tsx","../src/react-flicking/Flicking.tsx","../src/react-flicking/index.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 plugins: [],\n useFindDOMNode: false,\n hideBeforeInit: false,\n firstPanelSize: undefined,\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","import { ExternalPanel } from \"@egjs/flicking\";\n\nimport NonStrictPanelComponent from \"./NonStrictPanelComponent\";\n\nclass ReactPanel extends ExternalPanel<NonStrictPanelComponent> {\n public get element() {\n return this._externalComponent.element as HTMLElement;\n }\n public get rendered() { return !this._externalComponent.hide; }\n\n public markForShow() {\n this._externalComponent.hide = false;\n }\n\n public markForHide() {\n this._externalComponent.hide = true;\n }\n}\n\nexport default ReactPanel;\n","import { ExternalRenderer, PanelOptions, RendererOptions } from \"@egjs/flicking\";\n\nimport ReactFlicking from \"./Flicking\";\nimport ReactPanel from \"./ReactPanel\";\nimport NonStrictPanelComponent from \"./NonStrictPanelComponent\";\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 = this._flicking;\n const reactFlicking = this._reactFlicking;\n\n if (!flicking || !reactFlicking.mounted) return;\n\n this._updateRenderingPanels();\n\n return new Promise<void>(resolve => {\n reactFlicking.setRenderCallback(resolve);\n reactFlicking.setState({});\n });\n }\n\n public async forceRenderAllPanels() {\n const reactFlicking = this._reactFlicking;\n\n if (!reactFlicking.mounted) return;\n\n this._panels.forEach(panel => panel.markForShow());\n\n return new Promise<void>(resolve => {\n reactFlicking.setRenderCallback(resolve);\n reactFlicking.setState({});\n });\n }\n\n protected _collectPanels() {\n const align = this._getPanelAlign();\n const children = this._reactFlicking.reactPanels;\n\n this._panels = children.map((panelComponent, index) => new ReactPanel({\n flicking: this._flicking!,\n index,\n align,\n externalComponent: panelComponent\n }));\n }\n\n protected _createPanel(externalComponent: NonStrictPanelComponent, options: PanelOptions) {\n return new ReactPanel({ externalComponent, ...options });\n }\n}\n\nexport default ReactRenderer;\n","import * as React from \"react\";\nimport { findDOMNode } from \"react-dom\";\n\nimport ReactPanelComponent from \"./ReactPanelComponent\";\n\nclass NonStrictPanelComponent extends React.Component implements ReactPanelComponent {\n public hide: boolean = false;\n\n public get element() { return findDOMNode(this) as HTMLElement; }\n\n public render() {\n return this.hide\n ? <></>\n : this.props.children;\n }\n}\n\nexport default NonStrictPanelComponent;\n","import * as React from \"react\";\nimport ReactPanelComponent from \"./ReactPanelComponent\";\n\nclass StrictPanelComponent extends React.Component implements ReactPanelComponent {\n public hide: boolean = false;\n\n private _elRef: React.RefObject<HTMLElement> = React.createRef();\n\n public get element() { return this._elRef.current!; }\n\n public render() {\n return this.hide\n ? <></>\n : this._getElement();\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 StrictPanelComponent;\n","import React from \"react\";\n\nconst ViewportSlot: React.FC = ({ children }) => <>{children}</>;\n\nexport default ViewportSlot;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport * as React from \"react\";\nimport ListDiffer, { DiffResult } from \"@egjs/list-differ\";\nimport VanillaFlicking, {\n FlickingOptions,\n EVENTS,\n withFlickingMethods,\n sync,\n getRenderingPanels,\n getDefaultCameraTransform,\n Plugin\n} from \"@egjs/flicking\";\nimport { isFragment } from \"react-is\";\n\nimport { DEFAULT_PROPS } from \"./consts\";\nimport { FlickingProps } from \"./types\";\nimport ReactRenderer from \"./ReactRenderer\";\nimport ReactPanelComponent from \"./ReactPanelComponent\";\nimport NonStrictPanelComponent from \"./NonStrictPanelComponent\";\nimport StrictPanelComponent from \"./StrictPanelComponent\";\nimport ViewportSlot from \"./ViewportSlot\";\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<ReactPanelComponent>[] = [];\n private _pluginsDiffer: ListDiffer<any>;\n private _jsxDiffer: ListDiffer<React.ReactElement>;\n private _viewportElement: HTMLElement;\n private _diffResult: DiffResult<React.ReactElement> | null;\n private _mounted: boolean;\n private _renderCallback: () => any;\n\n public get mounted() { return this._mounted; }\n public get reactPanels() { return this._panels.map(panel => panel.current!); }\n\n public constructor(props) {\n super(props);\n\n this._panels = this._getChildren().map(() => React.createRef());\n }\n\n public setRenderCallback(callback: () => any) {\n this._renderCallback = callback;\n }\n\n public componentDidMount() {\n this._mounted = true;\n\n const props = this.props as Required<FlickingProps>;\n\n const flicking = new VanillaFlicking(\n this._viewportElement,\n {\n ...props,\n ...{ renderExternal: {\n renderer: ReactRenderer as any,\n rendererOptions: { reactFlicking: this }\n }}\n },\n );\n\n this._vanillaFlicking = flicking;\n this._bindEvents();\n\n const children = this._getChildren();\n this._jsxDiffer = new ListDiffer(children, panel => panel.key!);\n this._pluginsDiffer = new ListDiffer<any>();\n\n this._checkPlugins();\n }\n\n public componentWillUnmount() {\n this._mounted = false;\n\n this._vanillaFlicking.destroy();\n }\n\n public shouldComponentUpdate(nextProps: this[\"props\"]) {\n const children = this._getChildren(nextProps.children);\n const diffResult = this._jsxDiffer.update(children);\n\n this._panels = children.map(() => React.createRef());\n this._diffResult = diffResult;\n\n return true;\n }\n\n public componentDidUpdate() {\n const flicking = this._vanillaFlicking;\n const diffResult = this._diffResult;\n\n this._checkPlugins();\n this._renderCallback && this._renderCallback();\n\n if (!diffResult || !flicking.initialized) return;\n\n sync(flicking, diffResult, this.reactPanels);\n\n if (diffResult.added.length > 0 || diffResult.removed.length > 0) {\n this.setState({});\n }\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 const initialized = this._diffResult && flicking && flicking.initialized;\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 viewportClasses: string[] = [\"flicking-viewport\"];\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\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 children = initialized\n ? getRenderingPanels(flicking, this._diffResult!)\n : this._getChildren();\n const panels = this.props.useFindDOMNode\n ? children.map((child, idx) => <NonStrictPanelComponent key={child.key!} ref={this._panels[idx]}>{child}</NonStrictPanelComponent>)\n : children.map((child, idx) => <StrictPanelComponent key={child.key!} ref={this._panels[idx] as any}>{child}</StrictPanelComponent>)\n\n return (\n <Viewport {...attributes} className={viewportClasses.join(\" \")} ref={(e?: HTMLElement) => {\n e && (this._viewportElement = e);\n }}>\n <Camera className=\"flicking-camera\" {...cameraProps}>\n { panels }\n </Camera>\n { this._getViewportSlot() }\n </Viewport>\n );\n }\n\n private _bindEvents() {\n const flicking = this._vanillaFlicking!;\n const props = this.props as Required<FlickingProps>;\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 props[propName](e);\n });\n });\n\n flicking.once(EVENTS.READY, () => {\n this.forceUpdate();\n });\n }\n\n private _checkPlugins() {\n const { list, added, removed, prevList } = this._pluginsDiffer.update(this.props.plugins!) as DiffResult<Plugin>;\n\n this._vanillaFlicking.addPlugins(...added.map(index => list[index]));\n this._vanillaFlicking.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 isFragment(child)\n ? React.Children.toArray(child.props.children)\n .reduce((allChilds, fragChild) => [...allChilds, ...this._unpackFragment(fragChild)], [])\n : [child];\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\nexport * from \"@egjs/flicking\";\nexport * from \"./types\";\n\nexport {\n ViewportSlot\n}\nexport default Flicking;\n"],"names":["DEFAULT_PROPS","viewportTag","cameraTag","plugins","useFindDOMNode","hideBeforeInit","firstPanelSize","undefined","onReady","e","onBeforeResize","onAfterResize","onHoldStart","onHoldEnd","onMoveStart","onMove","onMoveEnd","onWillChange","onChanged","onWillRestore","onRestored","onSelect","onNeedPanel","onVisibleChange","onReachEdge","onPanelChange","__extends","Object","_externalComponent","element","hide","ExternalPanel","options","_super","_this","_reactFlicking","reactFlicking","flicking","_flicking","mounted","_updateRenderingPanels","Promise","resolve","setRenderCallback","setState","_panels","forEach","panel","markForShow","align","_getPanelAlign","children","reactPanels","map","panelComponent","index","ReactPanel","externalComponent","ExternalRenderer","findDOMNode","React","props","Component","createRef","_elRef","current","_getElement","cloneElement","Children","only","ref","ViewportSlot","_a","_getChildren","_mounted","callback","_renderCallback","VanillaFlicking","_viewportElement","renderExternal","renderer","ReactRenderer","rendererOptions","_vanillaFlicking","_bindEvents","_jsxDiffer","ListDiffer","key","_pluginsDiffer","_checkPlugins","destroy","nextProps","diffResult","update","_diffResult","initialized","sync","added","length","removed","Viewport","Camera","attributes","name","prototype","viewportClasses","isHorizontal","horizontal","push","className","cameraProps","style","transform","getDefaultCameraTransform","getRenderingPanels","panels","child","idx","NonStrictPanelComponent","StrictPanelComponent","join","_getViewportSlot","keys","EVENTS","eventKey","eventName","propName","charAt","toUpperCase","slice","on","currentTarget","once","READY","forceUpdate","_c","list","prevList","addPlugins","_b","removePlugins","toArray","filter","type","reduce","all","_unpackFragment","isFragment","allChilds","fragChild","Flicking","__decorate","withFlickingMethods"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"flicking.esm.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.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 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 strategy.updateRenderingPanels(flicking);\n strategy.renderPanels(flicking);\n\n return new Promise<void>(resolve => {\n reactFlicking.renderEmitter.once(\"render\", resolve);\n reactFlicking.forceUpdate();\n });\n }\n\n public async forceRenderAllPanels() {\n const reactFlicking = this._reactFlicking;\n\n await super.forceRenderAllPanels();\n\n return new Promise<void>(resolve => {\n reactFlicking.renderEmitter.once(\"render\", resolve);\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 {\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 {\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 from \"react\";\n\nconst ViewportSlot = React.memo(({ children }) => <>{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 props = this.props;\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\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 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\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=\"flicking-camera\" {...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 const props = this.props as Required<FlickingProps>;\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 props[propName](e);\n });\n });\n\n flicking.once(EVENTS.READY, () => {\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, fragChild) => [...allChilds, ...this._unpackFragment(fragChild)], [])\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 = 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: NonNullable<React.ReactNode>) {\n if ((child as React.ReactElement).type) {\n return (child as React.ReactElement).type === React.Fragment;\n }\n return child === 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\nexport * from \"@egjs/flicking\";\nexport * from \"./types\";\n\nexport {\n ViewportSlot\n}\nexport default Flicking;\n"],"names":["DEFAULT_PROPS","viewportTag","cameraTag","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","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","nextChildren","_diffResult","update","diffResult","trigger","initialized","sync","Viewport","Camera","attributes","RENDER","name","prototype","viewportClasses","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","READY","list","added","removed","prevList","addPlugins","index","removePlugins","toArray","filter","child","type","reduce","all","_unpackFragment","_isFragment","allChilds","fragChild","panelClass","renderingIndexes","renderer","getRenderingIndexesByOrder","firstPanel","size","width","height","idx","origChildren","vanillaFlicking","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.3
|
|
3
|
+
"version": "4.4.3",
|
|
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",
|
|
@@ -16,9 +16,8 @@
|
|
|
16
16
|
"eject": "react-scripts eject"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@egjs/flicking": "^4.
|
|
20
|
-
"@egjs/list-differ": "^1.0.0"
|
|
21
|
-
"react-is": "^17.0.2"
|
|
19
|
+
"@egjs/flicking": "^4.4.2",
|
|
20
|
+
"@egjs/list-differ": "^1.0.0"
|
|
22
21
|
},
|
|
23
22
|
"devDependencies": {
|
|
24
23
|
"@egjs/build-helper": "0.0.5",
|
|
@@ -3,108 +3,130 @@
|
|
|
3
3
|
* egjs projects are licensed under the MIT license
|
|
4
4
|
*/
|
|
5
5
|
import * as React from "react";
|
|
6
|
-
import
|
|
6
|
+
import Component from "@egjs/component";
|
|
7
|
+
import ListDiffer, { diff, DiffResult } from "@egjs/list-differ";
|
|
7
8
|
import VanillaFlicking, {
|
|
8
9
|
FlickingOptions,
|
|
10
|
+
VirtualRenderingStrategy,
|
|
9
11
|
EVENTS,
|
|
10
12
|
withFlickingMethods,
|
|
11
13
|
sync,
|
|
12
14
|
getRenderingPanels,
|
|
13
15
|
getDefaultCameraTransform,
|
|
14
|
-
Plugin
|
|
16
|
+
Plugin,
|
|
17
|
+
range,
|
|
18
|
+
NormalRenderingStrategy
|
|
15
19
|
} from "@egjs/flicking";
|
|
16
|
-
import { isFragment } from "react-is";
|
|
17
20
|
|
|
18
21
|
import { DEFAULT_PROPS } from "./consts";
|
|
19
22
|
import { FlickingProps } from "./types";
|
|
20
|
-
import ReactRenderer from "./ReactRenderer";
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import StrictPanelComponent from "./StrictPanelComponent";
|
|
23
|
+
import ReactRenderer, { ReactRendererOptions } from "./ReactRenderer";
|
|
24
|
+
import StrictPanel from "./StrictPanel";
|
|
25
|
+
import NonStrictPanel from "./NonStrictPanel";
|
|
24
26
|
import ViewportSlot from "./ViewportSlot";
|
|
27
|
+
import ReactElementProvider from "./ReactElementProvider";
|
|
28
|
+
|
|
29
|
+
enum LifeCycleState {
|
|
30
|
+
BEFORE_UPDATE,
|
|
31
|
+
RENDER,
|
|
32
|
+
UPDATED
|
|
33
|
+
}
|
|
25
34
|
|
|
26
35
|
class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>> {
|
|
27
36
|
public static defaultProps: FlickingProps = DEFAULT_PROPS;
|
|
28
37
|
|
|
29
38
|
@withFlickingMethods private _vanillaFlicking: VanillaFlicking;
|
|
30
|
-
private _panels: React.RefObject<
|
|
39
|
+
private _panels: React.RefObject<StrictPanel | NonStrictPanel | HTMLDivElement>[] = [];
|
|
31
40
|
private _pluginsDiffer: ListDiffer<any>;
|
|
32
41
|
private _jsxDiffer: ListDiffer<React.ReactElement>;
|
|
33
42
|
private _viewportElement: HTMLElement;
|
|
34
43
|
private _diffResult: DiffResult<React.ReactElement> | null;
|
|
35
|
-
private
|
|
36
|
-
private
|
|
44
|
+
private _renderEmitter = new Component<{ render: void }>();
|
|
45
|
+
private _currentState: LifeCycleState = LifeCycleState.BEFORE_UPDATE;
|
|
37
46
|
|
|
38
|
-
public get mounted() { return this._mounted; }
|
|
39
47
|
public get reactPanels() { return this._panels.map(panel => panel.current!); }
|
|
48
|
+
public get renderEmitter() { return this._renderEmitter; }
|
|
40
49
|
|
|
41
|
-
public constructor(props) {
|
|
50
|
+
public constructor(props: Partial<FlickingProps & FlickingOptions>) {
|
|
42
51
|
super(props);
|
|
43
52
|
|
|
44
|
-
this._panels = this.
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public setRenderCallback(callback: () => any) {
|
|
48
|
-
this._renderCallback = callback;
|
|
53
|
+
this._panels = this._createPanelRefs(props, this._getChildren());
|
|
49
54
|
}
|
|
50
55
|
|
|
51
56
|
public componentDidMount() {
|
|
52
|
-
this.
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
const props = this.props as Required<FlickingProps & FlickingOptions>;
|
|
58
|
+
const rendererOptions: ReactRendererOptions = {
|
|
59
|
+
reactFlicking: this,
|
|
60
|
+
align: props.align,
|
|
61
|
+
strategy: props.virtual && props.panelsPerView > 0
|
|
62
|
+
? new VirtualRenderingStrategy()
|
|
63
|
+
: new NormalRenderingStrategy({
|
|
64
|
+
providerCtor: ReactElementProvider
|
|
65
|
+
})
|
|
66
|
+
};
|
|
55
67
|
|
|
56
68
|
const flicking = new VanillaFlicking(
|
|
57
69
|
this._viewportElement,
|
|
58
70
|
{
|
|
59
71
|
...props,
|
|
60
|
-
|
|
61
|
-
renderer: ReactRenderer as any,
|
|
62
|
-
rendererOptions: { reactFlicking: this }
|
|
63
|
-
}}
|
|
72
|
+
externalRenderer: new ReactRenderer(rendererOptions)
|
|
64
73
|
},
|
|
65
74
|
);
|
|
66
75
|
|
|
67
76
|
this._vanillaFlicking = flicking;
|
|
68
|
-
this.
|
|
77
|
+
this._currentState = LifeCycleState.UPDATED;
|
|
69
78
|
|
|
70
79
|
const children = this._getChildren();
|
|
71
80
|
this._jsxDiffer = new ListDiffer(children, panel => panel.key!);
|
|
72
81
|
this._pluginsDiffer = new ListDiffer<any>();
|
|
73
82
|
|
|
83
|
+
this._bindEvents();
|
|
74
84
|
this._checkPlugins();
|
|
85
|
+
|
|
86
|
+
if (props.status) {
|
|
87
|
+
flicking.setStatus(props.status);
|
|
88
|
+
}
|
|
75
89
|
}
|
|
76
90
|
|
|
77
91
|
public componentWillUnmount() {
|
|
78
|
-
this.
|
|
79
|
-
|
|
80
|
-
this._vanillaFlicking.destroy();
|
|
92
|
+
this._vanillaFlicking?.destroy();
|
|
81
93
|
}
|
|
82
94
|
|
|
83
95
|
public shouldComponentUpdate(nextProps: this["props"]) {
|
|
84
|
-
const
|
|
85
|
-
|
|
96
|
+
const props = this.props;
|
|
97
|
+
|
|
98
|
+
if (this._currentState !== LifeCycleState.BEFORE_UPDATE && props.children !== nextProps.children) {
|
|
99
|
+
const nextChildren = this._getChildren(nextProps.children);
|
|
100
|
+
|
|
101
|
+
this._panels = this._createPanelRefs(nextProps, nextChildren);
|
|
102
|
+
this._diffResult = this._jsxDiffer.update(nextChildren);
|
|
103
|
+
}
|
|
86
104
|
|
|
87
|
-
this.
|
|
88
|
-
this._diffResult = diffResult;
|
|
105
|
+
this._currentState = LifeCycleState.BEFORE_UPDATE;
|
|
89
106
|
|
|
90
|
-
|
|
107
|
+
for (const key in nextProps) {
|
|
108
|
+
if (props[key] !== nextProps[key]) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return false;
|
|
91
114
|
}
|
|
92
115
|
|
|
93
116
|
public componentDidUpdate() {
|
|
94
117
|
const flicking = this._vanillaFlicking;
|
|
118
|
+
const renderEmitter = this._renderEmitter;
|
|
95
119
|
const diffResult = this._diffResult;
|
|
96
120
|
|
|
97
121
|
this._checkPlugins();
|
|
98
|
-
|
|
122
|
+
renderEmitter.trigger("render");
|
|
123
|
+
|
|
124
|
+
this._currentState = LifeCycleState.UPDATED;
|
|
99
125
|
|
|
100
126
|
if (!diffResult || !flicking.initialized) return;
|
|
101
127
|
|
|
102
128
|
sync(flicking, diffResult, this.reactPanels);
|
|
103
129
|
|
|
104
|
-
if (diffResult.added.length > 0 || diffResult.removed.length > 0) {
|
|
105
|
-
this.setState({});
|
|
106
|
-
}
|
|
107
|
-
|
|
108
130
|
this._diffResult = null;
|
|
109
131
|
}
|
|
110
132
|
|
|
@@ -114,7 +136,8 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
|
|
|
114
136
|
const Camera = props.cameraTag as any;
|
|
115
137
|
const attributes: { [key: string]: any } = {};
|
|
116
138
|
const flicking = this._vanillaFlicking;
|
|
117
|
-
|
|
139
|
+
|
|
140
|
+
this._currentState = LifeCycleState.RENDER;
|
|
118
141
|
|
|
119
142
|
for (const name in props) {
|
|
120
143
|
if (!(name in DEFAULT_PROPS) && !(name in VanillaFlicking.prototype)) {
|
|
@@ -122,6 +145,7 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
|
|
|
122
145
|
}
|
|
123
146
|
}
|
|
124
147
|
|
|
148
|
+
const initialized = flicking && flicking.initialized;
|
|
125
149
|
const viewportClasses: string[] = ["flicking-viewport"];
|
|
126
150
|
const isHorizontal = flicking
|
|
127
151
|
? flicking.horizontal
|
|
@@ -143,12 +167,9 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
|
|
|
143
167
|
}}
|
|
144
168
|
: {};
|
|
145
169
|
|
|
146
|
-
const
|
|
147
|
-
?
|
|
148
|
-
: this.
|
|
149
|
-
const panels = this.props.useFindDOMNode
|
|
150
|
-
? children.map((child, idx) => <NonStrictPanelComponent key={child.key!} ref={this._panels[idx]}>{child}</NonStrictPanelComponent>)
|
|
151
|
-
: children.map((child, idx) => <StrictPanelComponent key={child.key!} ref={this._panels[idx] as any}>{child}</StrictPanelComponent>)
|
|
170
|
+
const panels = !!props.virtual && (props.panelsPerView ?? -1) > 0
|
|
171
|
+
? this._getVirtualPanels()
|
|
172
|
+
: this._getPanels();
|
|
152
173
|
|
|
153
174
|
return (
|
|
154
175
|
<Viewport {...attributes} className={viewportClasses.join(" ")} ref={(e?: HTMLElement) => {
|
|
@@ -162,6 +183,14 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
|
|
|
162
183
|
);
|
|
163
184
|
}
|
|
164
185
|
|
|
186
|
+
private _createPanelRefs(props: this["props"], children: Array<React.ReactElement<any>>): React.RefObject<StrictPanel | NonStrictPanel | HTMLDivElement>[] {
|
|
187
|
+
const panelsPerView = props.panelsPerView ?? -1;
|
|
188
|
+
|
|
189
|
+
return panelsPerView > 0 && !!props.virtual
|
|
190
|
+
? range(panelsPerView + 1).map(() => React.createRef())
|
|
191
|
+
: children.map(() => React.createRef());
|
|
192
|
+
}
|
|
193
|
+
|
|
165
194
|
private _bindEvents() {
|
|
166
195
|
const flicking = this._vanillaFlicking!;
|
|
167
196
|
const props = this.props as Required<FlickingProps>;
|
|
@@ -183,10 +212,11 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
|
|
|
183
212
|
}
|
|
184
213
|
|
|
185
214
|
private _checkPlugins() {
|
|
215
|
+
const flicking = this._vanillaFlicking;
|
|
186
216
|
const { list, added, removed, prevList } = this._pluginsDiffer.update(this.props.plugins!) as DiffResult<Plugin>;
|
|
187
217
|
|
|
188
|
-
|
|
189
|
-
|
|
218
|
+
flicking.addPlugins(...added.map(index => list[index]));
|
|
219
|
+
flicking.removePlugins(...removed.map(index => prevList[index]));
|
|
190
220
|
}
|
|
191
221
|
|
|
192
222
|
private _getChildren(children: React.ReactNode = this.props.children) {
|
|
@@ -203,11 +233,63 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
|
|
|
203
233
|
}
|
|
204
234
|
|
|
205
235
|
private _unpackFragment(child: React.ReactElement) {
|
|
206
|
-
return
|
|
236
|
+
return this._isFragment(child)
|
|
207
237
|
? React.Children.toArray(child.props.children)
|
|
208
238
|
.reduce((allChilds, fragChild) => [...allChilds, ...this._unpackFragment(fragChild)], [])
|
|
209
239
|
: [child];
|
|
210
240
|
}
|
|
241
|
+
|
|
242
|
+
private _getVirtualPanels() {
|
|
243
|
+
const {
|
|
244
|
+
panelClass = "flicking-panel"
|
|
245
|
+
} = this.props.virtual!;
|
|
246
|
+
const panelsPerView = this.props.panelsPerView!;
|
|
247
|
+
const flicking = this._vanillaFlicking;
|
|
248
|
+
const initialized = flicking && flicking.initialized;
|
|
249
|
+
|
|
250
|
+
const renderingIndexes = initialized
|
|
251
|
+
? flicking.renderer.strategy.getRenderingIndexesByOrder(flicking)
|
|
252
|
+
: range(panelsPerView + 1);
|
|
253
|
+
|
|
254
|
+
const firstPanel = flicking && flicking.panels[0];
|
|
255
|
+
const size = firstPanel
|
|
256
|
+
? flicking.horizontal
|
|
257
|
+
? { width: firstPanel.size }
|
|
258
|
+
: { height: firstPanel.size }
|
|
259
|
+
: {};
|
|
260
|
+
|
|
261
|
+
return renderingIndexes.map(idx => {
|
|
262
|
+
return <div
|
|
263
|
+
key={idx}
|
|
264
|
+
data-element-index={idx}
|
|
265
|
+
ref={this._panels[idx] as React.RefObject<HTMLDivElement>}
|
|
266
|
+
className={panelClass}
|
|
267
|
+
style={size} />
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
private _getPanels() {
|
|
272
|
+
const origChildren = this._getChildren();
|
|
273
|
+
const vanillaFlicking = this._vanillaFlicking;
|
|
274
|
+
const diffResult = this._diffResult;
|
|
275
|
+
|
|
276
|
+
const children = vanillaFlicking && vanillaFlicking.initialized
|
|
277
|
+
? diffResult
|
|
278
|
+
? getRenderingPanels(vanillaFlicking, diffResult)
|
|
279
|
+
: getRenderingPanels(vanillaFlicking, diff(origChildren, origChildren))
|
|
280
|
+
: origChildren;
|
|
281
|
+
|
|
282
|
+
return this.props.useFindDOMNode
|
|
283
|
+
? children.map((child, idx) => <NonStrictPanel key={child.key!} ref={this._panels[idx] as any}>{child}</NonStrictPanel>)
|
|
284
|
+
: children.map((child, idx) => <StrictPanel key={child.key!} ref={this._panels[idx] as any}>{child}</StrictPanel>)
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
private _isFragment(child: NonNullable<React.ReactNode>) {
|
|
288
|
+
if ((child as React.ReactElement).type) {
|
|
289
|
+
return (child as React.ReactElement).type === React.Fragment;
|
|
290
|
+
}
|
|
291
|
+
return child === React.Fragment;
|
|
292
|
+
}
|
|
211
293
|
}
|
|
212
294
|
|
|
213
295
|
interface Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>, VanillaFlicking { }
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2015 NAVER Corp.
|
|
3
|
+
* egjs projects are licensed under the MIT license
|
|
4
|
+
*/
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { findDOMNode } from "react-dom";
|
|
7
|
+
|
|
8
|
+
class NonStrictPanel extends React.Component {
|
|
9
|
+
private _hide: boolean = false;
|
|
10
|
+
|
|
11
|
+
public get nativeElement() { return findDOMNode(this) as HTMLElement; }
|
|
12
|
+
public get rendered() { return !this._hide; }
|
|
13
|
+
|
|
14
|
+
public render() {
|
|
15
|
+
return this._hide
|
|
16
|
+
? <></>
|
|
17
|
+
: this.props.children;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public show() {
|
|
21
|
+
this._hide = false;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public hide() {
|
|
25
|
+
this._hide = true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export default NonStrictPanel;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2015 NAVER Corp.
|
|
3
|
+
* egjs projects are licensed under the MIT license
|
|
4
|
+
*/
|
|
5
|
+
import { ElementProvider } from "@egjs/flicking";
|
|
6
|
+
import StrictPanel from "./StrictPanel";
|
|
7
|
+
import NonStrictPanel from "./NonStrictPanel";
|
|
8
|
+
|
|
9
|
+
class ReactElementProvider implements ElementProvider {
|
|
10
|
+
private _el: StrictPanel | NonStrictPanel;
|
|
11
|
+
|
|
12
|
+
public get element() { return this._el.nativeElement; }
|
|
13
|
+
public get rendered() { return this._el.rendered; }
|
|
14
|
+
|
|
15
|
+
public constructor(el: StrictPanel | NonStrictPanel) {
|
|
16
|
+
this._el = el;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public show() {
|
|
20
|
+
this._el.show();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public hide() {
|
|
24
|
+
this._el.hide();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default ReactElementProvider;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2015 NAVER Corp.
|
|
3
|
+
* egjs projects are licensed under the MIT license
|
|
4
|
+
*/
|
|
5
|
+
import { ExternalRenderer, PanelOptions, RendererOptions, getFlickingAttached } from "@egjs/flicking";
|
|
2
6
|
|
|
3
7
|
import ReactFlicking from "./Flicking";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
8
|
+
import StrictPanel from "./StrictPanel";
|
|
9
|
+
import NonStrictPanel from "./NonStrictPanel";
|
|
6
10
|
|
|
7
11
|
export interface ReactRendererOptions extends RendererOptions {
|
|
8
12
|
reactFlicking: ReactFlicking;
|
|
@@ -20,46 +24,40 @@ class ReactRenderer extends ExternalRenderer {
|
|
|
20
24
|
|
|
21
25
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
22
26
|
public async render() {
|
|
23
|
-
const flicking = this._flicking;
|
|
27
|
+
const flicking = getFlickingAttached(this._flicking);
|
|
24
28
|
const reactFlicking = this._reactFlicking;
|
|
29
|
+
const strategy = this._strategy;
|
|
25
30
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this._updateRenderingPanels();
|
|
31
|
+
strategy.updateRenderingPanels(flicking);
|
|
32
|
+
strategy.renderPanels(flicking);
|
|
29
33
|
|
|
30
34
|
return new Promise<void>(resolve => {
|
|
31
|
-
reactFlicking.
|
|
32
|
-
reactFlicking.
|
|
35
|
+
reactFlicking.renderEmitter.once("render", resolve);
|
|
36
|
+
reactFlicking.forceUpdate();
|
|
33
37
|
});
|
|
34
38
|
}
|
|
35
39
|
|
|
36
40
|
public async forceRenderAllPanels() {
|
|
37
41
|
const reactFlicking = this._reactFlicking;
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
this._panels.forEach(panel => panel.markForShow());
|
|
43
|
+
await super.forceRenderAllPanels();
|
|
42
44
|
|
|
43
45
|
return new Promise<void>(resolve => {
|
|
44
|
-
reactFlicking.
|
|
45
|
-
reactFlicking.
|
|
46
|
+
reactFlicking.renderEmitter.once("render", resolve);
|
|
47
|
+
reactFlicking.forceUpdate();
|
|
46
48
|
});
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
protected _collectPanels() {
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
+
const flicking = getFlickingAttached(this._flicking);
|
|
53
|
+
const reactFlicking = this._reactFlicking;
|
|
54
|
+
const reactPanels = reactFlicking.reactPanels;
|
|
52
55
|
|
|
53
|
-
this._panels =
|
|
54
|
-
flicking: this._flicking!,
|
|
55
|
-
index,
|
|
56
|
-
align,
|
|
57
|
-
externalComponent: panelComponent
|
|
58
|
-
}));
|
|
56
|
+
this._panels = this._strategy.collectPanels(flicking, reactPanels);
|
|
59
57
|
}
|
|
60
58
|
|
|
61
|
-
protected _createPanel(externalComponent:
|
|
62
|
-
return
|
|
59
|
+
protected _createPanel(externalComponent: StrictPanel | NonStrictPanel | HTMLDivElement, options: PanelOptions) {
|
|
60
|
+
return this._strategy.createPanel(externalComponent, options);
|
|
63
61
|
}
|
|
64
62
|
}
|
|
65
63
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2015 NAVER Corp.
|
|
3
|
+
* egjs projects are licensed under the MIT license
|
|
4
|
+
*/
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
|
|
7
|
+
class StrictPanel extends React.Component {
|
|
8
|
+
private _hide: boolean = false;
|
|
9
|
+
|
|
10
|
+
private _elRef: React.RefObject<HTMLElement> = React.createRef();
|
|
11
|
+
|
|
12
|
+
public get nativeElement() { return this._elRef.current!; }
|
|
13
|
+
public get rendered() { return !this._hide; }
|
|
14
|
+
|
|
15
|
+
public render() {
|
|
16
|
+
return this._hide
|
|
17
|
+
? <></>
|
|
18
|
+
: this._getElement();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public show() {
|
|
22
|
+
this._hide = false;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public hide() {
|
|
26
|
+
this._hide = true;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
private _getElement() {
|
|
30
|
+
return React.cloneElement(React.Children.only(this.props.children) as React.ReactElement, {
|
|
31
|
+
ref: this._elRef
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export default StrictPanel;
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2015 NAVER Corp.
|
|
3
|
+
* egjs projects are licensed under the MIT license
|
|
4
|
+
*/
|
|
1
5
|
import React from "react";
|
|
2
6
|
|
|
3
|
-
const ViewportSlot
|
|
7
|
+
const ViewportSlot = React.memo(({ children }) => <>{children}</>);
|
|
4
8
|
|
|
5
9
|
export default ViewportSlot;
|
|
@@ -30,7 +30,6 @@ export const DEFAULT_PROPS: FlickingProps = {
|
|
|
30
30
|
plugins: [],
|
|
31
31
|
useFindDOMNode: false,
|
|
32
32
|
hideBeforeInit: false,
|
|
33
|
-
firstPanelSize: undefined,
|
|
34
33
|
onReady: (e: ReadyEvent) => {},
|
|
35
34
|
onBeforeResize: (e: BeforeResizeEvent) => {},
|
|
36
35
|
onAfterResize: (e: AfterResizeEvent) => {},
|