@egjs/react-flicking 3.8.0 → 3.8.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.
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ChangeEvent, FlickingEvent, SelectEvent, Plugin, NeedPanelEvent, FlickingStatus, FlickingMethods, VisibleChangeEvent } from "@egjs/flicking";
2
+ import { ChangeEvent, FlickingEvent, SelectEvent, Plugin, NeedPanelEvent, FlickingStatus, FlickingMethods, VisibleChangeEvent, ContentErrorEvent, ContentLoadEvent } from "@egjs/flicking";
3
3
  import NativeFlicking from "@egjs/flicking";
4
4
  export declare type ParametersType<T, R> = T extends (...params: infer U) => any ? (...params: U) => R : never;
5
5
  export declare type FlickingType<T> = {
@@ -16,10 +16,12 @@ export interface FlickingProps {
16
16
  onMoveStart: (e: FlickingEvent) => any;
17
17
  onMove: (e: FlickingEvent) => any;
18
18
  onMoveEnd: (e: FlickingEvent) => any;
19
+ onChange: (e: ChangeEvent) => any;
19
20
  onRestore: (e: FlickingEvent) => any;
20
21
  onSelect: (e: SelectEvent) => any;
21
- onChange: (e: ChangeEvent) => any;
22
22
  onNeedPanel: (e: NeedPanelEvent) => any;
23
23
  onVisibleChange: (e: VisibleChangeEvent) => any;
24
+ onContentLoad: (e: ContentLoadEvent) => any;
25
+ onContentError: (e: ContentErrorEvent) => any;
24
26
  [key: string]: any;
25
27
  }
@@ -4,7 +4,7 @@ name: @egjs/react-flicking
4
4
  license: MIT
5
5
  author: NAVER Corp.
6
6
  repository: https://github.com/naver/egjs-flicking/tree/master/packages/react-flicking
7
- version: 3.8.0
7
+ version: 3.8.3
8
8
  */
9
9
  'use strict';
10
10
 
@@ -35,13 +35,14 @@ var extendStatics = function (d, b) {
35
35
  } instanceof Array && function (d, b) {
36
36
  d.__proto__ = b;
37
37
  } || function (d, b) {
38
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
38
+ for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
39
39
  };
40
40
 
41
41
  return extendStatics(d, b);
42
42
  };
43
43
 
44
44
  function __extends(d, b) {
45
+ if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
45
46
  extendStatics(d, b);
46
47
 
47
48
  function __() {
@@ -70,6 +71,8 @@ function __decorate(decorators, target, key, desc) {
70
71
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
71
72
  return c > 3 && r && Object.defineProperty(target, key, r), r;
72
73
  }
74
+ /** @deprecated */
75
+
73
76
  function __spreadArrays() {
74
77
  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
75
78
 
@@ -111,6 +114,8 @@ var FLICKING_PROPS = {
111
114
  onRestore: function (e) {},
112
115
  onSelect: function (e) {},
113
116
  onChange: function (e) {},
117
+ onContentLoad: function (e) {},
118
+ onContentError: function (e) {},
114
119
  onVisibleChange: function (e) {}
115
120
  };
116
121
 
@@ -224,6 +229,14 @@ function (_super) {
224
229
  _this.props.onVisibleChange(e);
225
230
 
226
231
  _this.forceUpdate();
232
+ },
233
+ contentLoad: function (e) {
234
+ _this.props.onContentLoad(e);
235
+
236
+ _this.forceUpdate();
237
+ },
238
+ contentError: function (e) {
239
+ return _this.props.onContentError(e);
227
240
  }
228
241
  });
229
242
  var children = this.getChildren();
@@ -1 +1 @@
1
- {"version":3,"file":"flicking.cjs.js","sources":["../src/react-flicking/Clone.tsx","../src/react-flicking/consts.ts","../src/react-flicking/Flicking.tsx"],"sourcesContent":["import { Component } from \"react\";\n\nexport class CloneComponent extends Component {\n public render() {\n return this.props.children;\n }\n}\n","import { ChangeEvent, FlickingEvent, SelectEvent, NeedPanelEvent, VisibleChangeEvent } from \"@egjs/flicking\";\nimport { FlickingProps } from \"./types\";\n\nexport const FLICKING_PROPS: FlickingProps = {\n tag: \"div\",\n viewportTag: \"div\",\n cameraTag: \"div\",\n classPrefix: \"eg-flick\",\n plugins: [],\n onNeedPanel: (e: NeedPanelEvent) => {},\n onMoveStart: (e: FlickingEvent) => {},\n onMove: (e: FlickingEvent) => {},\n onMoveEnd: (e: FlickingEvent) => {},\n onHoldStart: (e: FlickingEvent) => {},\n onHoldEnd: (e: FlickingEvent) => {},\n onRestore: (e: FlickingEvent) => {},\n onSelect: (e: SelectEvent) => {},\n onChange: (e: ChangeEvent) => {},\n onVisibleChange: (e: VisibleChangeEvent) => {},\n};\n","import NativeFlicking, { FlickingOptions, Plugin, FlickingEvent, NeedPanelEvent, withFlickingMethods, DEFAULT_OPTIONS, VisibleChangeEvent, SelectEvent, ChangeEvent } from \"@egjs/flicking\";\nimport * as React from \"react\";\nimport { CloneComponent } from \"./Clone\";\nimport { FLICKING_PROPS } from \"./consts\";\nimport { FlickingProps, FlickingType } from \"./types\";\nimport ListDiffer, { ListFormat } from \"@egjs/list-differ\";\nimport ChildrenDiffer from \"@egjs/children-differ\";\n\nclass Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>> {\n public static defaultProps: FlickingProps = FLICKING_PROPS;\n public state: {\n cloneCount: number,\n } = {\n cloneCount: 0,\n };\n // Flicking\n @withFlickingMethods\n private flicking?: NativeFlicking | null;\n private options: FlickingOptions = {\n ...DEFAULT_OPTIONS,\n renderExternal: true,\n };\n // differ\n private pluginsDiffer: ListDiffer<Plugin> = new ListDiffer<Plugin>();\n private childrenDiffer: ChildrenDiffer<HTMLElement>;\n private jsxDiffer: ListDiffer<string>;\n private containerElement: HTMLElement;\n private cameraElement: HTMLElement;\n\n // life cycle\n constructor(props: Partial<FlickingProps & FlickingOptions>) {\n super(props);\n const options = this.options;\n for (const name in props) {\n if (name in DEFAULT_OPTIONS) {\n options[name] = props[name];\n }\n }\n }\n\n public render() {\n const props = this.props;\n /* tslint:disable:naming-convention */\n const Tag = props.tag as any;\n const Viewport = props.viewportTag as any;\n const Camera = props.cameraTag as any;\n /* tslint:enable:naming-convention */\n const classPrefix = props.classPrefix;\n const attributes: { [key: string]: any } = {};\n\n for (const name in props) {\n if (!(name in FLICKING_PROPS) && !(name in DEFAULT_OPTIONS)) {\n attributes[name] = props[name];\n }\n }\n return (\n <Tag {...attributes} ref={e => {\n e && (this.containerElement = e);\n }}>\n <Viewport className={`${classPrefix}-viewport`}>\n <Camera className={`${classPrefix}-camera`} ref={e => {\n e && (this.cameraElement = e);\n }}>\n {this.renderPanels()}\n </Camera>\n </Viewport>\n </Tag>\n );\n }\n\n public componentDidUpdate() {\n const result = this.childrenDiffer!.update(this.getElements());\n this.flicking!.sync(result);\n this.checkPlugins();\n this.checkCloneCount();\n }\n\n public componentDidMount() {\n this.childrenDiffer = new ChildrenDiffer<HTMLElement>(this.getElements());\n this.flicking = new NativeFlicking(\n this.containerElement,\n {\n ...this.options,\n framework: \"react\",\n frameworkVersion: React.version,\n } as object,\n ).on({\n moveStart: (e: FlickingEvent) => this.props.onMoveStart!(e),\n move: (e: FlickingEvent) => this.props.onMove!(e),\n moveEnd: (e: FlickingEvent) => this.props.onMoveEnd!(e),\n holdStart: (e: FlickingEvent) => this.props.onHoldStart!(e),\n holdEnd: (e: FlickingEvent) => this.props.onHoldEnd!(e),\n select: (e: SelectEvent) => this.props.onSelect!(e),\n needPanel: (e: NeedPanelEvent) => this.props.onNeedPanel!(e),\n change: (e: ChangeEvent) => this.props.onChange!(e),\n restore: (e: FlickingEvent) => this.props.onRestore!(e),\n visibleChange: (e: VisibleChangeEvent) => {\n this.props.onVisibleChange!(e);\n this.forceUpdate();\n },\n });\n const children = this.getChildren();\n this.jsxDiffer = new ListDiffer<string>(children.map(child => `${child.key}`));\n\n if (this.props.status) {\n this.setStatus(this.props.status);\n }\n this.checkPlugins();\n this.checkCloneCount();\n\n if (this.props.renderOnlyVisible) {\n this.forceUpdate();\n }\n }\n\n public componentWillUnmount() {\n this.destroy({ preserveUI: true });\n }\n\n // private\n private checkPlugins() {\n const { list, added, removed, prevList } = this.pluginsDiffer.update(this.props.plugins!);\n\n this.flicking!.addPlugins(added.map(index => list[index]));\n this.flicking!.removePlugins(removed.map(index => prevList[index]));\n }\n\n private checkCloneCount() {\n const cloneCount = this.flicking!.getCloneCount();\n\n if (this.state.cloneCount !== cloneCount) {\n this.setState({\n cloneCount,\n });\n }\n }\n\n private renderPanels() {\n const { renderOnlyVisible } = this.props;\n const flicking = this.flicking;\n const reactChildren = this.getChildren();\n let panels: Array<React.ReactElement<any>>;\n\n if (flicking && renderOnlyVisible) {\n const diffResult = this.jsxDiffer.update(reactChildren.map(child => `${child.key}`));\n const panelCnt = reactChildren.length;\n\n flicking.beforeSync(diffResult);\n\n const indexesToRender = flicking.getRenderingIndexes(diffResult);\n panels = indexesToRender.map(index => {\n if (index >= panelCnt) {\n const relativeIndex = index % panelCnt;\n const cloneIndex = Math.floor(index / panelCnt) - 1;\n const origEl = reactChildren[relativeIndex];\n\n return <CloneComponent key={`clone${cloneIndex}${origEl.key}`}>{origEl}</CloneComponent>;\n } else {\n return reactChildren[index];\n }\n });\n } else {\n const cloneCount = this.state.cloneCount;\n panels = [...reactChildren];\n\n for (let i = 0; i < cloneCount; ++i) {\n panels = panels.concat(reactChildren.map(el => {\n return <CloneComponent key={`clone${i}${el.key}`}>{el}</CloneComponent>;\n }));\n }\n }\n\n return panels;\n }\n\n private getChildren() {\n const children = React.Children.toArray(this.props.children).slice() as Array<React.ReactElement<any>>;\n return typeof this.props.lastIndex === \"number\"\n ? children.slice(0, this.props.lastIndex + 1)\n : children;\n }\n\n private getElements(): ListFormat<HTMLElement> {\n return this.cameraElement.children as any;\n }\n}\ninterface Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>, FlickingType<Flicking> { }\nexport default Flicking;\n"],"names":["__extends","props","children","Component","FLICKING_PROPS","tag","viewportTag","cameraTag","classPrefix","plugins","onNeedPanel","e","onMoveStart","onMove","onMoveEnd","onHoldStart","onHoldEnd","onRestore","onSelect","onChange","onVisibleChange","_super","_this","cloneCount","DEFAULT_OPTIONS","renderExternal","ListDiffer","options","name","Tag","Viewport","Camera","attributes","React","ref","containerElement","className","cameraElement","renderPanels","result","childrenDiffer","update","getElements","flicking","sync","checkPlugins","checkCloneCount","ChildrenDiffer","NativeFlicking","__assign","framework","frameworkVersion","on","moveStart","move","moveEnd","holdStart","holdEnd","select","needPanel","change","restore","visibleChange","forceUpdate","getChildren","jsxDiffer","map","child","key","status","setStatus","renderOnlyVisible","destroy","preserveUI","_a","pluginsDiffer","list","added","removed","prevList","addPlugins","index","removePlugins","getCloneCount","state","setState","reactChildren","panels","diffResult","panelCnt_1","length","beforeSync","indexesToRender","getRenderingIndexes","relativeIndex","cloneIndex","Math","floor","origEl","CloneComponent","i","concat","el","toArray","slice","lastIndex","Flicking","__decorate","withFlickingMethods"],"mappings":"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"}
1
+ {"version":3,"file":"flicking.cjs.js","sources":["../src/react-flicking/Clone.tsx","../src/react-flicking/consts.ts","../src/react-flicking/Flicking.tsx"],"sourcesContent":["import { Component } from \"react\";\n\nexport class CloneComponent extends Component {\n public render() {\n return this.props.children;\n }\n}\n","import { ChangeEvent, FlickingEvent, SelectEvent, NeedPanelEvent, VisibleChangeEvent, ContentLoadEvent, ContentErrorEvent } from \"@egjs/flicking\";\nimport { FlickingProps } from \"./types\";\n\nexport const FLICKING_PROPS: FlickingProps = {\n tag: \"div\",\n viewportTag: \"div\",\n cameraTag: \"div\",\n classPrefix: \"eg-flick\",\n plugins: [],\n onNeedPanel: (e: NeedPanelEvent) => {},\n onMoveStart: (e: FlickingEvent) => {},\n onMove: (e: FlickingEvent) => {},\n onMoveEnd: (e: FlickingEvent) => {},\n onHoldStart: (e: FlickingEvent) => {},\n onHoldEnd: (e: FlickingEvent) => {},\n onRestore: (e: FlickingEvent) => {},\n onSelect: (e: SelectEvent) => {},\n onChange: (e: ChangeEvent) => {},\n onContentLoad: (e: ContentLoadEvent) => {},\n onContentError: (e: ContentErrorEvent) => {},\n onVisibleChange: (e: VisibleChangeEvent) => {},\n};\n","import NativeFlicking, {\n FlickingOptions,\n Plugin,\n FlickingEvent,\n NeedPanelEvent,\n withFlickingMethods,\n DEFAULT_OPTIONS,\n VisibleChangeEvent,\n SelectEvent,\n ChangeEvent,\n ContentLoadEvent,\n ContentErrorEvent\n} from \"@egjs/flicking\";\nimport * as React from \"react\";\nimport { CloneComponent } from \"./Clone\";\nimport { FLICKING_PROPS } from \"./consts\";\nimport { FlickingProps, FlickingType } from \"./types\";\nimport ListDiffer, { ListFormat } from \"@egjs/list-differ\";\nimport ChildrenDiffer from \"@egjs/children-differ\";\n\nclass Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>> {\n public static defaultProps: FlickingProps = FLICKING_PROPS;\n public state: {\n cloneCount: number,\n } = {\n cloneCount: 0,\n };\n // Flicking\n @withFlickingMethods\n private flicking?: NativeFlicking | null;\n private options: FlickingOptions = {\n ...DEFAULT_OPTIONS,\n renderExternal: true,\n };\n // differ\n private pluginsDiffer: ListDiffer<Plugin> = new ListDiffer<Plugin>();\n private childrenDiffer: ChildrenDiffer<HTMLElement>;\n private jsxDiffer: ListDiffer<string>;\n private containerElement: HTMLElement;\n private cameraElement: HTMLElement;\n\n // life cycle\n constructor(props: Partial<FlickingProps & FlickingOptions>) {\n super(props);\n const options = this.options;\n for (const name in props) {\n if (name in DEFAULT_OPTIONS) {\n options[name] = props[name];\n }\n }\n }\n\n public render() {\n const props = this.props;\n /* tslint:disable:naming-convention */\n const Tag = props.tag as any;\n const Viewport = props.viewportTag as any;\n const Camera = props.cameraTag as any;\n /* tslint:enable:naming-convention */\n const classPrefix = props.classPrefix;\n const attributes: { [key: string]: any } = {};\n\n for (const name in props) {\n if (!(name in FLICKING_PROPS) && !(name in DEFAULT_OPTIONS)) {\n attributes[name] = props[name];\n }\n }\n return (\n <Tag {...attributes} ref={e => {\n e && (this.containerElement = e);\n }}>\n <Viewport className={`${classPrefix}-viewport`}>\n <Camera className={`${classPrefix}-camera`} ref={e => {\n e && (this.cameraElement = e);\n }}>\n {this.renderPanels()}\n </Camera>\n </Viewport>\n </Tag>\n );\n }\n\n public componentDidUpdate() {\n const result = this.childrenDiffer!.update(this.getElements());\n this.flicking!.sync(result);\n this.checkPlugins();\n this.checkCloneCount();\n }\n\n public componentDidMount() {\n this.childrenDiffer = new ChildrenDiffer<HTMLElement>(this.getElements());\n this.flicking = new NativeFlicking(\n this.containerElement,\n {\n ...this.options,\n framework: \"react\",\n frameworkVersion: React.version,\n } as object,\n ).on({\n moveStart: (e: FlickingEvent) => this.props.onMoveStart!(e),\n move: (e: FlickingEvent) => this.props.onMove!(e),\n moveEnd: (e: FlickingEvent) => this.props.onMoveEnd!(e),\n holdStart: (e: FlickingEvent) => this.props.onHoldStart!(e),\n holdEnd: (e: FlickingEvent) => this.props.onHoldEnd!(e),\n select: (e: SelectEvent) => this.props.onSelect!(e),\n needPanel: (e: NeedPanelEvent) => this.props.onNeedPanel!(e),\n change: (e: ChangeEvent) => this.props.onChange!(e),\n restore: (e: FlickingEvent) => this.props.onRestore!(e),\n visibleChange: (e: VisibleChangeEvent) => {\n this.props.onVisibleChange!(e);\n this.forceUpdate();\n },\n contentLoad: (e: ContentLoadEvent) => {\n this.props.onContentLoad!(e);\n this.forceUpdate();\n },\n contentError: (e: ContentErrorEvent) => this.props.onContentError!(e)\n });\n const children = this.getChildren();\n this.jsxDiffer = new ListDiffer<string>(children.map(child => `${child.key}`));\n\n if (this.props.status) {\n this.setStatus(this.props.status);\n }\n this.checkPlugins();\n this.checkCloneCount();\n\n if (this.props.renderOnlyVisible) {\n this.forceUpdate();\n }\n }\n\n public componentWillUnmount() {\n this.destroy({ preserveUI: true });\n }\n\n // private\n private checkPlugins() {\n const { list, added, removed, prevList } = this.pluginsDiffer.update(this.props.plugins!);\n\n this.flicking!.addPlugins(added.map(index => list[index]));\n this.flicking!.removePlugins(removed.map(index => prevList[index]));\n }\n\n private checkCloneCount() {\n const cloneCount = this.flicking!.getCloneCount();\n\n if (this.state.cloneCount !== cloneCount) {\n this.setState({\n cloneCount,\n });\n }\n }\n\n private renderPanels() {\n const { renderOnlyVisible } = this.props;\n const flicking = this.flicking;\n const reactChildren = this.getChildren();\n let panels: Array<React.ReactElement<any>>;\n\n if (flicking && renderOnlyVisible) {\n const diffResult = this.jsxDiffer.update(reactChildren.map(child => `${child.key}`));\n const panelCnt = reactChildren.length;\n\n flicking.beforeSync(diffResult);\n\n const indexesToRender = flicking.getRenderingIndexes(diffResult);\n panels = indexesToRender.map(index => {\n if (index >= panelCnt) {\n const relativeIndex = index % panelCnt;\n const cloneIndex = Math.floor(index / panelCnt) - 1;\n const origEl = reactChildren[relativeIndex];\n\n return <CloneComponent key={`clone${cloneIndex}${origEl.key}`}>{origEl}</CloneComponent>;\n } else {\n return reactChildren[index];\n }\n });\n } else {\n const cloneCount = this.state.cloneCount;\n panels = [...reactChildren];\n\n for (let i = 0; i < cloneCount; ++i) {\n panels = panels.concat(reactChildren.map(el => {\n return <CloneComponent key={`clone${i}${el.key}`}>{el}</CloneComponent>;\n }));\n }\n }\n\n return panels;\n }\n\n private getChildren() {\n const children = React.Children.toArray(this.props.children).slice() as Array<React.ReactElement<any>>;\n return typeof this.props.lastIndex === \"number\"\n ? children.slice(0, this.props.lastIndex + 1)\n : children;\n }\n\n private getElements(): ListFormat<HTMLElement> {\n return this.cameraElement.children as any;\n }\n}\ninterface Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>, FlickingType<Flicking> { }\nexport default Flicking;\n"],"names":["__extends","props","children","Component","FLICKING_PROPS","tag","viewportTag","cameraTag","classPrefix","plugins","onNeedPanel","e","onMoveStart","onMove","onMoveEnd","onHoldStart","onHoldEnd","onRestore","onSelect","onChange","onContentLoad","onContentError","onVisibleChange","_super","_this","cloneCount","DEFAULT_OPTIONS","renderExternal","ListDiffer","options","name","Tag","Viewport","Camera","attributes","React","ref","containerElement","className","cameraElement","renderPanels","result","childrenDiffer","update","getElements","flicking","sync","checkPlugins","checkCloneCount","ChildrenDiffer","NativeFlicking","__assign","framework","frameworkVersion","on","moveStart","move","moveEnd","holdStart","holdEnd","select","needPanel","change","restore","visibleChange","forceUpdate","contentLoad","contentError","getChildren","jsxDiffer","map","child","key","status","setStatus","renderOnlyVisible","destroy","preserveUI","_a","pluginsDiffer","list","added","removed","prevList","addPlugins","index","removePlugins","getCloneCount","state","setState","reactChildren","panels","diffResult","panelCnt_1","length","beforeSync","indexesToRender","getRenderingIndexes","relativeIndex","cloneIndex","Math","floor","origEl","CloneComponent","i","concat","el","toArray","slice","lastIndex","Flicking","__decorate","withFlickingMethods"],"mappings":"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"}
@@ -4,7 +4,7 @@ name: @egjs/react-flicking
4
4
  license: MIT
5
5
  author: NAVER Corp.
6
6
  repository: https://github.com/naver/egjs-flicking/tree/master/packages/react-flicking
7
- version: 3.8.0
7
+ version: 3.8.3
8
8
  */
9
9
  import NativeFlicking, { DEFAULT_OPTIONS, withFlickingMethods } from '@egjs/flicking';
10
10
  import { Component, createElement, version, Children } from 'react';
@@ -33,13 +33,14 @@ var extendStatics = function (d, b) {
33
33
  } instanceof Array && function (d, b) {
34
34
  d.__proto__ = b;
35
35
  } || function (d, b) {
36
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
36
+ for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
37
37
  };
38
38
 
39
39
  return extendStatics(d, b);
40
40
  };
41
41
 
42
42
  function __extends(d, b) {
43
+ if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
43
44
  extendStatics(d, b);
44
45
 
45
46
  function __() {
@@ -68,6 +69,8 @@ function __decorate(decorators, target, key, desc) {
68
69
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
69
70
  return c > 3 && r && Object.defineProperty(target, key, r), r;
70
71
  }
72
+ /** @deprecated */
73
+
71
74
  function __spreadArrays() {
72
75
  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
73
76
 
@@ -109,6 +112,8 @@ var FLICKING_PROPS = {
109
112
  onRestore: function (e) {},
110
113
  onSelect: function (e) {},
111
114
  onChange: function (e) {},
115
+ onContentLoad: function (e) {},
116
+ onContentError: function (e) {},
112
117
  onVisibleChange: function (e) {}
113
118
  };
114
119
 
@@ -222,6 +227,14 @@ function (_super) {
222
227
  _this.props.onVisibleChange(e);
223
228
 
224
229
  _this.forceUpdate();
230
+ },
231
+ contentLoad: function (e) {
232
+ _this.props.onContentLoad(e);
233
+
234
+ _this.forceUpdate();
235
+ },
236
+ contentError: function (e) {
237
+ return _this.props.onContentError(e);
225
238
  }
226
239
  });
227
240
  var children = this.getChildren();
@@ -1 +1 @@
1
- {"version":3,"file":"flicking.esm.js","sources":["../src/react-flicking/Clone.tsx","../src/react-flicking/consts.ts","../src/react-flicking/Flicking.tsx"],"sourcesContent":["import { Component } from \"react\";\n\nexport class CloneComponent extends Component {\n public render() {\n return this.props.children;\n }\n}\n","import { ChangeEvent, FlickingEvent, SelectEvent, NeedPanelEvent, VisibleChangeEvent } from \"@egjs/flicking\";\nimport { FlickingProps } from \"./types\";\n\nexport const FLICKING_PROPS: FlickingProps = {\n tag: \"div\",\n viewportTag: \"div\",\n cameraTag: \"div\",\n classPrefix: \"eg-flick\",\n plugins: [],\n onNeedPanel: (e: NeedPanelEvent) => {},\n onMoveStart: (e: FlickingEvent) => {},\n onMove: (e: FlickingEvent) => {},\n onMoveEnd: (e: FlickingEvent) => {},\n onHoldStart: (e: FlickingEvent) => {},\n onHoldEnd: (e: FlickingEvent) => {},\n onRestore: (e: FlickingEvent) => {},\n onSelect: (e: SelectEvent) => {},\n onChange: (e: ChangeEvent) => {},\n onVisibleChange: (e: VisibleChangeEvent) => {},\n};\n","import NativeFlicking, { FlickingOptions, Plugin, FlickingEvent, NeedPanelEvent, withFlickingMethods, DEFAULT_OPTIONS, VisibleChangeEvent, SelectEvent, ChangeEvent } from \"@egjs/flicking\";\nimport * as React from \"react\";\nimport { CloneComponent } from \"./Clone\";\nimport { FLICKING_PROPS } from \"./consts\";\nimport { FlickingProps, FlickingType } from \"./types\";\nimport ListDiffer, { ListFormat } from \"@egjs/list-differ\";\nimport ChildrenDiffer from \"@egjs/children-differ\";\n\nclass Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>> {\n public static defaultProps: FlickingProps = FLICKING_PROPS;\n public state: {\n cloneCount: number,\n } = {\n cloneCount: 0,\n };\n // Flicking\n @withFlickingMethods\n private flicking?: NativeFlicking | null;\n private options: FlickingOptions = {\n ...DEFAULT_OPTIONS,\n renderExternal: true,\n };\n // differ\n private pluginsDiffer: ListDiffer<Plugin> = new ListDiffer<Plugin>();\n private childrenDiffer: ChildrenDiffer<HTMLElement>;\n private jsxDiffer: ListDiffer<string>;\n private containerElement: HTMLElement;\n private cameraElement: HTMLElement;\n\n // life cycle\n constructor(props: Partial<FlickingProps & FlickingOptions>) {\n super(props);\n const options = this.options;\n for (const name in props) {\n if (name in DEFAULT_OPTIONS) {\n options[name] = props[name];\n }\n }\n }\n\n public render() {\n const props = this.props;\n /* tslint:disable:naming-convention */\n const Tag = props.tag as any;\n const Viewport = props.viewportTag as any;\n const Camera = props.cameraTag as any;\n /* tslint:enable:naming-convention */\n const classPrefix = props.classPrefix;\n const attributes: { [key: string]: any } = {};\n\n for (const name in props) {\n if (!(name in FLICKING_PROPS) && !(name in DEFAULT_OPTIONS)) {\n attributes[name] = props[name];\n }\n }\n return (\n <Tag {...attributes} ref={e => {\n e && (this.containerElement = e);\n }}>\n <Viewport className={`${classPrefix}-viewport`}>\n <Camera className={`${classPrefix}-camera`} ref={e => {\n e && (this.cameraElement = e);\n }}>\n {this.renderPanels()}\n </Camera>\n </Viewport>\n </Tag>\n );\n }\n\n public componentDidUpdate() {\n const result = this.childrenDiffer!.update(this.getElements());\n this.flicking!.sync(result);\n this.checkPlugins();\n this.checkCloneCount();\n }\n\n public componentDidMount() {\n this.childrenDiffer = new ChildrenDiffer<HTMLElement>(this.getElements());\n this.flicking = new NativeFlicking(\n this.containerElement,\n {\n ...this.options,\n framework: \"react\",\n frameworkVersion: React.version,\n } as object,\n ).on({\n moveStart: (e: FlickingEvent) => this.props.onMoveStart!(e),\n move: (e: FlickingEvent) => this.props.onMove!(e),\n moveEnd: (e: FlickingEvent) => this.props.onMoveEnd!(e),\n holdStart: (e: FlickingEvent) => this.props.onHoldStart!(e),\n holdEnd: (e: FlickingEvent) => this.props.onHoldEnd!(e),\n select: (e: SelectEvent) => this.props.onSelect!(e),\n needPanel: (e: NeedPanelEvent) => this.props.onNeedPanel!(e),\n change: (e: ChangeEvent) => this.props.onChange!(e),\n restore: (e: FlickingEvent) => this.props.onRestore!(e),\n visibleChange: (e: VisibleChangeEvent) => {\n this.props.onVisibleChange!(e);\n this.forceUpdate();\n },\n });\n const children = this.getChildren();\n this.jsxDiffer = new ListDiffer<string>(children.map(child => `${child.key}`));\n\n if (this.props.status) {\n this.setStatus(this.props.status);\n }\n this.checkPlugins();\n this.checkCloneCount();\n\n if (this.props.renderOnlyVisible) {\n this.forceUpdate();\n }\n }\n\n public componentWillUnmount() {\n this.destroy({ preserveUI: true });\n }\n\n // private\n private checkPlugins() {\n const { list, added, removed, prevList } = this.pluginsDiffer.update(this.props.plugins!);\n\n this.flicking!.addPlugins(added.map(index => list[index]));\n this.flicking!.removePlugins(removed.map(index => prevList[index]));\n }\n\n private checkCloneCount() {\n const cloneCount = this.flicking!.getCloneCount();\n\n if (this.state.cloneCount !== cloneCount) {\n this.setState({\n cloneCount,\n });\n }\n }\n\n private renderPanels() {\n const { renderOnlyVisible } = this.props;\n const flicking = this.flicking;\n const reactChildren = this.getChildren();\n let panels: Array<React.ReactElement<any>>;\n\n if (flicking && renderOnlyVisible) {\n const diffResult = this.jsxDiffer.update(reactChildren.map(child => `${child.key}`));\n const panelCnt = reactChildren.length;\n\n flicking.beforeSync(diffResult);\n\n const indexesToRender = flicking.getRenderingIndexes(diffResult);\n panels = indexesToRender.map(index => {\n if (index >= panelCnt) {\n const relativeIndex = index % panelCnt;\n const cloneIndex = Math.floor(index / panelCnt) - 1;\n const origEl = reactChildren[relativeIndex];\n\n return <CloneComponent key={`clone${cloneIndex}${origEl.key}`}>{origEl}</CloneComponent>;\n } else {\n return reactChildren[index];\n }\n });\n } else {\n const cloneCount = this.state.cloneCount;\n panels = [...reactChildren];\n\n for (let i = 0; i < cloneCount; ++i) {\n panels = panels.concat(reactChildren.map(el => {\n return <CloneComponent key={`clone${i}${el.key}`}>{el}</CloneComponent>;\n }));\n }\n }\n\n return panels;\n }\n\n private getChildren() {\n const children = React.Children.toArray(this.props.children).slice() as Array<React.ReactElement<any>>;\n return typeof this.props.lastIndex === \"number\"\n ? children.slice(0, this.props.lastIndex + 1)\n : children;\n }\n\n private getElements(): ListFormat<HTMLElement> {\n return this.cameraElement.children as any;\n }\n}\ninterface Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>, FlickingType<Flicking> { }\nexport default Flicking;\n"],"names":["__extends","props","children","Component","FLICKING_PROPS","tag","viewportTag","cameraTag","classPrefix","plugins","onNeedPanel","e","onMoveStart","onMove","onMoveEnd","onHoldStart","onHoldEnd","onRestore","onSelect","onChange","onVisibleChange","_super","_this","cloneCount","DEFAULT_OPTIONS","renderExternal","ListDiffer","options","name","Tag","Viewport","Camera","attributes","React","ref","containerElement","className","cameraElement","renderPanels","result","childrenDiffer","update","getElements","flicking","sync","checkPlugins","checkCloneCount","ChildrenDiffer","NativeFlicking","__assign","framework","frameworkVersion","on","moveStart","move","moveEnd","holdStart","holdEnd","select","needPanel","change","restore","visibleChange","forceUpdate","getChildren","jsxDiffer","map","child","key","status","setStatus","renderOnlyVisible","destroy","preserveUI","_a","pluginsDiffer","list","added","removed","prevList","addPlugins","index","removePlugins","getCloneCount","state","setState","reactChildren","panels","diffResult","panelCnt_1","length","beforeSync","indexesToRender","getRenderingIndexes","relativeIndex","cloneIndex","Math","floor","origEl","CloneComponent","i","concat","el","toArray","slice","lastIndex","Flicking","__decorate","withFlickingMethods"],"mappings":"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"}
1
+ {"version":3,"file":"flicking.esm.js","sources":["../src/react-flicking/Clone.tsx","../src/react-flicking/consts.ts","../src/react-flicking/Flicking.tsx"],"sourcesContent":["import { Component } from \"react\";\n\nexport class CloneComponent extends Component {\n public render() {\n return this.props.children;\n }\n}\n","import { ChangeEvent, FlickingEvent, SelectEvent, NeedPanelEvent, VisibleChangeEvent, ContentLoadEvent, ContentErrorEvent } from \"@egjs/flicking\";\nimport { FlickingProps } from \"./types\";\n\nexport const FLICKING_PROPS: FlickingProps = {\n tag: \"div\",\n viewportTag: \"div\",\n cameraTag: \"div\",\n classPrefix: \"eg-flick\",\n plugins: [],\n onNeedPanel: (e: NeedPanelEvent) => {},\n onMoveStart: (e: FlickingEvent) => {},\n onMove: (e: FlickingEvent) => {},\n onMoveEnd: (e: FlickingEvent) => {},\n onHoldStart: (e: FlickingEvent) => {},\n onHoldEnd: (e: FlickingEvent) => {},\n onRestore: (e: FlickingEvent) => {},\n onSelect: (e: SelectEvent) => {},\n onChange: (e: ChangeEvent) => {},\n onContentLoad: (e: ContentLoadEvent) => {},\n onContentError: (e: ContentErrorEvent) => {},\n onVisibleChange: (e: VisibleChangeEvent) => {},\n};\n","import NativeFlicking, {\n FlickingOptions,\n Plugin,\n FlickingEvent,\n NeedPanelEvent,\n withFlickingMethods,\n DEFAULT_OPTIONS,\n VisibleChangeEvent,\n SelectEvent,\n ChangeEvent,\n ContentLoadEvent,\n ContentErrorEvent\n} from \"@egjs/flicking\";\nimport * as React from \"react\";\nimport { CloneComponent } from \"./Clone\";\nimport { FLICKING_PROPS } from \"./consts\";\nimport { FlickingProps, FlickingType } from \"./types\";\nimport ListDiffer, { ListFormat } from \"@egjs/list-differ\";\nimport ChildrenDiffer from \"@egjs/children-differ\";\n\nclass Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>> {\n public static defaultProps: FlickingProps = FLICKING_PROPS;\n public state: {\n cloneCount: number,\n } = {\n cloneCount: 0,\n };\n // Flicking\n @withFlickingMethods\n private flicking?: NativeFlicking | null;\n private options: FlickingOptions = {\n ...DEFAULT_OPTIONS,\n renderExternal: true,\n };\n // differ\n private pluginsDiffer: ListDiffer<Plugin> = new ListDiffer<Plugin>();\n private childrenDiffer: ChildrenDiffer<HTMLElement>;\n private jsxDiffer: ListDiffer<string>;\n private containerElement: HTMLElement;\n private cameraElement: HTMLElement;\n\n // life cycle\n constructor(props: Partial<FlickingProps & FlickingOptions>) {\n super(props);\n const options = this.options;\n for (const name in props) {\n if (name in DEFAULT_OPTIONS) {\n options[name] = props[name];\n }\n }\n }\n\n public render() {\n const props = this.props;\n /* tslint:disable:naming-convention */\n const Tag = props.tag as any;\n const Viewport = props.viewportTag as any;\n const Camera = props.cameraTag as any;\n /* tslint:enable:naming-convention */\n const classPrefix = props.classPrefix;\n const attributes: { [key: string]: any } = {};\n\n for (const name in props) {\n if (!(name in FLICKING_PROPS) && !(name in DEFAULT_OPTIONS)) {\n attributes[name] = props[name];\n }\n }\n return (\n <Tag {...attributes} ref={e => {\n e && (this.containerElement = e);\n }}>\n <Viewport className={`${classPrefix}-viewport`}>\n <Camera className={`${classPrefix}-camera`} ref={e => {\n e && (this.cameraElement = e);\n }}>\n {this.renderPanels()}\n </Camera>\n </Viewport>\n </Tag>\n );\n }\n\n public componentDidUpdate() {\n const result = this.childrenDiffer!.update(this.getElements());\n this.flicking!.sync(result);\n this.checkPlugins();\n this.checkCloneCount();\n }\n\n public componentDidMount() {\n this.childrenDiffer = new ChildrenDiffer<HTMLElement>(this.getElements());\n this.flicking = new NativeFlicking(\n this.containerElement,\n {\n ...this.options,\n framework: \"react\",\n frameworkVersion: React.version,\n } as object,\n ).on({\n moveStart: (e: FlickingEvent) => this.props.onMoveStart!(e),\n move: (e: FlickingEvent) => this.props.onMove!(e),\n moveEnd: (e: FlickingEvent) => this.props.onMoveEnd!(e),\n holdStart: (e: FlickingEvent) => this.props.onHoldStart!(e),\n holdEnd: (e: FlickingEvent) => this.props.onHoldEnd!(e),\n select: (e: SelectEvent) => this.props.onSelect!(e),\n needPanel: (e: NeedPanelEvent) => this.props.onNeedPanel!(e),\n change: (e: ChangeEvent) => this.props.onChange!(e),\n restore: (e: FlickingEvent) => this.props.onRestore!(e),\n visibleChange: (e: VisibleChangeEvent) => {\n this.props.onVisibleChange!(e);\n this.forceUpdate();\n },\n contentLoad: (e: ContentLoadEvent) => {\n this.props.onContentLoad!(e);\n this.forceUpdate();\n },\n contentError: (e: ContentErrorEvent) => this.props.onContentError!(e)\n });\n const children = this.getChildren();\n this.jsxDiffer = new ListDiffer<string>(children.map(child => `${child.key}`));\n\n if (this.props.status) {\n this.setStatus(this.props.status);\n }\n this.checkPlugins();\n this.checkCloneCount();\n\n if (this.props.renderOnlyVisible) {\n this.forceUpdate();\n }\n }\n\n public componentWillUnmount() {\n this.destroy({ preserveUI: true });\n }\n\n // private\n private checkPlugins() {\n const { list, added, removed, prevList } = this.pluginsDiffer.update(this.props.plugins!);\n\n this.flicking!.addPlugins(added.map(index => list[index]));\n this.flicking!.removePlugins(removed.map(index => prevList[index]));\n }\n\n private checkCloneCount() {\n const cloneCount = this.flicking!.getCloneCount();\n\n if (this.state.cloneCount !== cloneCount) {\n this.setState({\n cloneCount,\n });\n }\n }\n\n private renderPanels() {\n const { renderOnlyVisible } = this.props;\n const flicking = this.flicking;\n const reactChildren = this.getChildren();\n let panels: Array<React.ReactElement<any>>;\n\n if (flicking && renderOnlyVisible) {\n const diffResult = this.jsxDiffer.update(reactChildren.map(child => `${child.key}`));\n const panelCnt = reactChildren.length;\n\n flicking.beforeSync(diffResult);\n\n const indexesToRender = flicking.getRenderingIndexes(diffResult);\n panels = indexesToRender.map(index => {\n if (index >= panelCnt) {\n const relativeIndex = index % panelCnt;\n const cloneIndex = Math.floor(index / panelCnt) - 1;\n const origEl = reactChildren[relativeIndex];\n\n return <CloneComponent key={`clone${cloneIndex}${origEl.key}`}>{origEl}</CloneComponent>;\n } else {\n return reactChildren[index];\n }\n });\n } else {\n const cloneCount = this.state.cloneCount;\n panels = [...reactChildren];\n\n for (let i = 0; i < cloneCount; ++i) {\n panels = panels.concat(reactChildren.map(el => {\n return <CloneComponent key={`clone${i}${el.key}`}>{el}</CloneComponent>;\n }));\n }\n }\n\n return panels;\n }\n\n private getChildren() {\n const children = React.Children.toArray(this.props.children).slice() as Array<React.ReactElement<any>>;\n return typeof this.props.lastIndex === \"number\"\n ? children.slice(0, this.props.lastIndex + 1)\n : children;\n }\n\n private getElements(): ListFormat<HTMLElement> {\n return this.cameraElement.children as any;\n }\n}\ninterface Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>, FlickingType<Flicking> { }\nexport default Flicking;\n"],"names":["__extends","props","children","Component","FLICKING_PROPS","tag","viewportTag","cameraTag","classPrefix","plugins","onNeedPanel","e","onMoveStart","onMove","onMoveEnd","onHoldStart","onHoldEnd","onRestore","onSelect","onChange","onContentLoad","onContentError","onVisibleChange","_super","_this","cloneCount","DEFAULT_OPTIONS","renderExternal","ListDiffer","options","name","Tag","Viewport","Camera","attributes","React","ref","containerElement","className","cameraElement","renderPanels","result","childrenDiffer","update","getElements","flicking","sync","checkPlugins","checkCloneCount","ChildrenDiffer","NativeFlicking","__assign","framework","frameworkVersion","on","moveStart","move","moveEnd","holdStart","holdEnd","select","needPanel","change","restore","visibleChange","forceUpdate","contentLoad","contentError","getChildren","jsxDiffer","map","child","key","status","setStatus","renderOnlyVisible","destroy","preserveUI","_a","pluginsDiffer","list","added","removed","prevList","addPlugins","index","removePlugins","getCloneCount","state","setState","reactChildren","panels","diffResult","panelCnt_1","length","beforeSync","indexesToRender","getRenderingIndexes","relativeIndex","cloneIndex","Math","floor","origEl","CloneComponent","i","concat","el","toArray","slice","lastIndex","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": "3.8.0",
3
+ "version": "3.8.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",
@@ -9,7 +9,7 @@
9
9
  "types": "declaration/index.d.ts",
10
10
  "dependencies": {
11
11
  "@egjs/children-differ": "^1.0.1",
12
- "@egjs/flicking": "^3.9.0",
12
+ "@egjs/flicking": "~3.9.3",
13
13
  "@egjs/list-differ": "^1.0.0"
14
14
  },
15
15
  "devDependencies": {
@@ -20,10 +20,12 @@
20
20
  "@types/node": "12.0.0",
21
21
  "@types/react": "16.8.17",
22
22
  "@types/react-dom": "16.8.4",
23
+ "@typescript-eslint/eslint-plugin": "^5.12.0",
23
24
  "highlight.js": "^9.15.6",
24
25
  "react": "^16.8.6",
25
26
  "react-dom": "^16.8.6",
26
- "react-scripts": "3.0.1",
27
+ "react-router-dom": "^6.2.1",
28
+ "react-scripts": "^5.0.0",
27
29
  "typescript": "^3.9.7"
28
30
  },
29
31
  "repository": {
package/src/demo/App.tsx CHANGED
@@ -1,6 +1,7 @@
1
1
 
2
2
  import { Component } from "react";
3
3
  import * as React from "react";
4
+ import { BrowserRouter, Route, Routes } from "react-router-dom";
4
5
  import "./css/common.css";
5
6
  import "./css/features.css";
6
7
  import "./css/highlight.css";
@@ -13,6 +14,7 @@ import Snap from "./features/Snap";
13
14
  import Gap from "./features/Gap";
14
15
  import Progress from "./features/Progress";
15
16
  import Bound from "./features/Bound";
17
+ import ImageLoadDemo from "./features/Image";
16
18
  import ParallaxDemo from "./plugins/Parallax";
17
19
  import FadeDemo from "./plugins/Fade";
18
20
  import AutoPlayDemo from "./plugins/AutoPlay";
@@ -21,20 +23,26 @@ import Header from "./Header";
21
23
  export default class App extends Component<{}> {
22
24
  public render() {
23
25
  return (
24
- <div>
25
- <Header/>
26
- <InfiniteFlicking/>
27
- <FreeScroll/>
28
- <VariableSize/>
29
- <Align/>
30
- <Snap/>
31
- <Gap/>
32
- <Progress/>
33
- <Bound/>
34
- <ParallaxDemo/>
35
- <FadeDemo/>
36
- <AutoPlayDemo/>
37
- </div>);
26
+ <BrowserRouter>
27
+ <div>
28
+ <Header/>
29
+ <Routes>
30
+ <Route path="/infinite" element={<InfiniteFlicking/>}></Route>
31
+ <Route path="/free-scroll" element={<FreeScroll/>}></Route>
32
+ <Route path="/variable-size" element={<VariableSize/>}></Route>
33
+ <Route path="/align" element={<Align/>}></Route>
34
+ <Route path="/snap" element={<Snap/>}></Route>
35
+ <Route path="/gap" element={<Gap/>}></Route>
36
+ <Route path="/progress" element={<Progress/>}></Route>
37
+ <Route path="/bound" element={<Bound/>}></Route>
38
+ <Route path="/image" element={<ImageLoadDemo />}></Route>
39
+ <Route path="/parallax" element={<ParallaxDemo/>}></Route>
40
+ <Route path="/fade" element={<FadeDemo/>}></Route>
41
+ <Route path="/autoplay" element={<AutoPlayDemo/>}></Route>
42
+ </Routes>
43
+ </div>
44
+ </BrowserRouter>
45
+ );
38
46
  }
39
47
  public componentDidMount() {
40
48
  hljs.initHighlighting();
@@ -1,20 +1,22 @@
1
1
  import * as React from "react";
2
+ import { Link } from "react-router-dom";
2
3
 
3
4
  export default class Header extends React.Component {
4
5
  public render() {
5
6
  return (
6
7
  <ul className="header">
7
- <li><a href="#infinite">Infinite Flicking</a></li>
8
- <li><a href="#free-scroll">Free Scroll</a></li>
9
- <li><a href="#variable-size">Variable Size</a></li>
10
- <li><a href="#align">Align</a></li>
11
- <li><a href="#snap">Snap</a></li>
12
- <li><a href="#gap">Gap</a></li>
13
- <li><a href="#progress">Progress</a></li>
14
- <li><a href="#bound">Bound</a></li>
15
- <li><a href="#parallax">Parallax Plugin</a></li>
16
- <li><a href="#fade">Fade Plugin</a></li>
17
- <li><a href="#autoplay">AutoPlay Plugin</a></li>
8
+ <li><Link to="/infinite">Infinite Flicking</Link></li>
9
+ <li><Link to="/free-scroll">Free Scroll</Link></li>
10
+ <li><Link to="/variable-size">Variable Size</Link></li>
11
+ <li><Link to="/align">Align</Link></li>
12
+ <li><Link to="/snap">Snap</Link></li>
13
+ <li><Link to="/gap">Gap</Link></li>
14
+ <li><Link to="/progress">Progress</Link></li>
15
+ <li><Link to="/bound">Bound</Link></li>
16
+ <li><Link to="/image">Image</Link></li>
17
+ <li><Link to="/parallax">Parallax Plugin</Link></li>
18
+ <li><Link to="/fade">Fade Plugin</Link></li>
19
+ <li><Link to="/autoplay">AutoPlay Plugin</Link></li>
18
20
  </ul>
19
21
  );
20
22
  }
@@ -0,0 +1,24 @@
1
+
2
+ import * as React from "react";
3
+ import Flicking from "../../react-flicking/Flicking";
4
+ import "../css/infinite.css";
5
+
6
+ export default class ImageLoadDemo extends React.Component<{}, { show: boolean }> {
7
+ public state = {
8
+ show: false
9
+ };
10
+
11
+ public render() {
12
+ console.log("rendering")
13
+ return (
14
+ <div id="image" className="container">
15
+ <button onClick={() => { this.setState({ show: true }); }}>Click me</button>
16
+ {this.state.show && <Flicking circular={true} duration={300} resizeOnContentsReady={true}>
17
+ <img src="https://picsum.photos/seed/1/200/300" />
18
+ <img src="https://picsum.photos/seed/2/200/300" />
19
+ <img src="https://picsum.photos/seed/3/200/300" />
20
+ </Flicking>}
21
+ </div>
22
+ );
23
+ }
24
+ }
@@ -1,4 +1,16 @@
1
- import NativeFlicking, { FlickingOptions, Plugin, FlickingEvent, NeedPanelEvent, withFlickingMethods, DEFAULT_OPTIONS, VisibleChangeEvent, SelectEvent, ChangeEvent } from "@egjs/flicking";
1
+ import NativeFlicking, {
2
+ FlickingOptions,
3
+ Plugin,
4
+ FlickingEvent,
5
+ NeedPanelEvent,
6
+ withFlickingMethods,
7
+ DEFAULT_OPTIONS,
8
+ VisibleChangeEvent,
9
+ SelectEvent,
10
+ ChangeEvent,
11
+ ContentLoadEvent,
12
+ ContentErrorEvent
13
+ } from "@egjs/flicking";
2
14
  import * as React from "react";
3
15
  import { CloneComponent } from "./Clone";
4
16
  import { FLICKING_PROPS } from "./consts";
@@ -98,6 +110,11 @@ class Flicking extends React.Component<Partial<FlickingProps & FlickingOptions>>
98
110
  this.props.onVisibleChange!(e);
99
111
  this.forceUpdate();
100
112
  },
113
+ contentLoad: (e: ContentLoadEvent) => {
114
+ this.props.onContentLoad!(e);
115
+ this.forceUpdate();
116
+ },
117
+ contentError: (e: ContentErrorEvent) => this.props.onContentError!(e)
101
118
  });
102
119
  const children = this.getChildren();
103
120
  this.jsxDiffer = new ListDiffer<string>(children.map(child => `${child.key}`));
@@ -1,4 +1,4 @@
1
- import { ChangeEvent, FlickingEvent, SelectEvent, NeedPanelEvent, VisibleChangeEvent } from "@egjs/flicking";
1
+ import { ChangeEvent, FlickingEvent, SelectEvent, NeedPanelEvent, VisibleChangeEvent, ContentLoadEvent, ContentErrorEvent } from "@egjs/flicking";
2
2
  import { FlickingProps } from "./types";
3
3
 
4
4
  export const FLICKING_PROPS: FlickingProps = {
@@ -16,5 +16,7 @@ export const FLICKING_PROPS: FlickingProps = {
16
16
  onRestore: (e: FlickingEvent) => {},
17
17
  onSelect: (e: SelectEvent) => {},
18
18
  onChange: (e: ChangeEvent) => {},
19
+ onContentLoad: (e: ContentLoadEvent) => {},
20
+ onContentError: (e: ContentErrorEvent) => {},
19
21
  onVisibleChange: (e: VisibleChangeEvent) => {},
20
22
  };
@@ -1,4 +1,15 @@
1
- import { ChangeEvent, FlickingEvent, SelectEvent, Plugin, NeedPanelEvent, FlickingStatus, FlickingMethods, VisibleChangeEvent } from "@egjs/flicking";
1
+ import {
2
+ ChangeEvent,
3
+ FlickingEvent,
4
+ SelectEvent,
5
+ Plugin,
6
+ NeedPanelEvent,
7
+ FlickingStatus,
8
+ FlickingMethods,
9
+ VisibleChangeEvent,
10
+ ContentErrorEvent,
11
+ ContentLoadEvent
12
+ } from "@egjs/flicking";
2
13
  import NativeFlicking from "@egjs/flicking";
3
14
 
4
15
  export type ParametersType<T, R> = T extends (...params: infer U) => any ? (...params: U) => R : never;
@@ -19,10 +30,12 @@ export interface FlickingProps {
19
30
  onMoveStart: (e: FlickingEvent) => any;
20
31
  onMove: (e: FlickingEvent) => any;
21
32
  onMoveEnd: (e: FlickingEvent) => any;
33
+ onChange: (e: ChangeEvent) => any;
22
34
  onRestore: (e: FlickingEvent) => any;
23
35
  onSelect: (e: SelectEvent) => any;
24
- onChange: (e: ChangeEvent) => any;
25
36
  onNeedPanel: (e: NeedPanelEvent) => any;
26
37
  onVisibleChange: (e: VisibleChangeEvent) => any;
38
+ onContentLoad: (e: ContentLoadEvent) => any;
39
+ onContentError: (e: ContentErrorEvent) => any;
27
40
  [key: string]: any;
28
41
  }