@egjs/react-flicking 3.8.1 → 3.8.2

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.1
7
+ version: 3.8.2
8
8
  */
9
9
  'use strict';
10
10
 
@@ -114,6 +114,8 @@ var FLICKING_PROPS = {
114
114
  onRestore: function (e) {},
115
115
  onSelect: function (e) {},
116
116
  onChange: function (e) {},
117
+ onContentLoad: function (e) {},
118
+ onContentError: function (e) {},
117
119
  onVisibleChange: function (e) {}
118
120
  };
119
121
 
@@ -227,6 +229,14 @@ function (_super) {
227
229
  _this.props.onVisibleChange(e);
228
230
 
229
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);
230
240
  }
231
241
  });
232
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;AAAoCA,EAAAA,iCAAA;;AAApC,yBAAA;;AAIC;;;;AAHQ,gBAAA,GAAP;AACE,WAAO,KAAKC,KAAL,CAAWC,QAAlB;AACD,GAFM;;AAGT,uBAAA;AAJA,EAAoCC,gBAApC;;ACCO,IAAMC,cAAc,GAAkB;AAC3CC,EAAAA,GAAG,EAAE,KADsC;AAE3CC,EAAAA,WAAW,EAAE,KAF8B;AAG3CC,EAAAA,SAAS,EAAE,KAHgC;AAI3CC,EAAAA,WAAW,EAAE,UAJ8B;AAK3CC,EAAAA,OAAO,EAAE,EALkC;AAM3CC,EAAAA,WAAW,EAAE,UAACC,CAAD,IAN8B;AAO3CC,EAAAA,WAAW,EAAE,UAACD,CAAD,IAP8B;AAQ3CE,EAAAA,MAAM,EAAE,UAACF,CAAD,IARmC;AAS3CG,EAAAA,SAAS,EAAE,UAACH,CAAD,IATgC;AAU3CI,EAAAA,WAAW,EAAE,UAACJ,CAAD,IAV8B;AAW3CK,EAAAA,SAAS,EAAE,UAACL,CAAD,IAXgC;AAY3CM,EAAAA,SAAS,EAAE,UAACN,CAAD,IAZgC;AAa3CO,EAAAA,QAAQ,EAAE,UAACP,CAAD,IAbiC;AAc3CQ,EAAAA,QAAQ,EAAE,UAACR,CAAD,IAdiC;AAe3CS,EAAAA,eAAe,EAAE,UAACT,CAAD;AAf0B,CAAtC;;ACKP;;;AAAuBX,EAAAA,2BAAA;;;AAsBrB,mBAAA,CAAYC,KAAZ;AAAA,gBACEoB,WAAA,KAAA,EAAMpB,KAAN,SADF;;AApBOqB,IAAAA,WAAA,GAEH;AACAC,MAAAA,UAAU,EAAE;AADZ,KAFG;AAQCD,IAAAA,aAAA,yBACHE;AACHC,MAAAA,cAAc,EAAE;MAFV;;AAKAH,IAAAA,mBAAA,GAAoC,IAAII,UAAJ,EAApC;AASN,QAAMC,OAAO,GAAGL,KAAI,CAACK,OAArB;;AACA,SAAK,IAAMC,IAAX,IAAmB3B,KAAnB,EAA0B;AACxB,UAAI2B,IAAI,IAAIJ,8BAAZ,EAA6B;AAC3BG,QAAAA,OAAO,CAACC,IAAD,CAAP,GAAgB3B,KAAK,CAAC2B,IAAD,CAArB;AACD;AACF;;;AACF;;;;AAEM,gBAAA,GAAP;AAAA,oBAAA;;AACE,QAAM3B,KAAK,GAAG,KAAKA,KAAnB;AACA;;AACA,QAAM4B,GAAG,GAAG5B,KAAK,CAACI,GAAlB;AACA,QAAMyB,QAAQ,GAAG7B,KAAK,CAACK,WAAvB;AACA,QAAMyB,MAAM,GAAG9B,KAAK,CAACM,SAArB;AACA;;AACA,QAAMC,WAAW,GAAGP,KAAK,CAACO,WAA1B;AACA,QAAMwB,UAAU,GAA2B,EAA3C;;AAEA,SAAK,IAAMJ,IAAX,IAAmB3B,KAAnB,EAA0B;AACxB,UAAI,EAAE2B,IAAI,IAAIxB,cAAV,KAA6B,EAAEwB,IAAI,IAAIJ,8BAAV,CAAjC,EAA6D;AAC3DQ,QAAAA,UAAU,CAACJ,IAAD,CAAV,GAAmB3B,KAAK,CAAC2B,IAAD,CAAxB;AACD;AACF;;AACD,WACEK,mBAAA,CAACJ,GAAD,eAASG;AAAYE,MAAAA,GAAG,EAAE,UAAAvB,CAAA;AACxBA,QAAAA,CAAC,KAAKW,KAAI,CAACa,gBAAL,GAAwBxB,CAA7B,CAAD;AACD;MAFD,EAGEsB,mBAAA,CAACH,QAAD;AAAUM,MAAAA,SAAS,EAAK5B,WAAW;KAAnC,EACEyB,mBAAA,CAACF,MAAD;AAAQK,MAAAA,SAAS,EAAK5B,WAAW;AAAW0B,MAAAA,GAAG,EAAE,UAAAvB,CAAA;AAC/CA,QAAAA,CAAC,KAAKW,KAAI,CAACe,aAAL,GAAqB1B,CAA1B,CAAD;AACD;KAFD,EAGG,KAAK2B,YAAL,EAHH,CADF,CAHF,CADF;AAaD,GA5BM;;AA8BA,4BAAA,GAAP;AACE,QAAMC,MAAM,GAAG,KAAKC,cAAL,CAAqBC,MAArB,CAA4B,KAAKC,WAAL,EAA5B,CAAf;AACA,SAAKC,QAAL,CAAeC,IAAf,CAAoBL,MAApB;AACA,SAAKM,YAAL;AACA,SAAKC,eAAL;AACD,GALM;;AAOA,2BAAA,GAAP;AAAA,oBAAA;;AACE,SAAKN,cAAL,GAAsB,IAAIO,cAAJ,CAAgC,KAAKL,WAAL,EAAhC,CAAtB;AACA,SAAKC,QAAL,GAAgB,IAAIK,cAAJ,CACd,KAAKb,gBADS,EAEdc,sBACK,KAAKtB;AACRuB,MAAAA,SAAS,EAAE;AACXC,MAAAA,gBAAgB,EAAElB;MALN,EAOdmB,EAPc,CAOX;AACHC,MAAAA,SAAS,EAAE,UAAC1C,CAAD;AAAsB,eAAAW,KAAI,CAACrB,KAAL,CAAWW,WAAX,CAAwBD,CAAxB,CAAA;AAA0B,OADxD;AAEH2C,MAAAA,IAAI,EAAE,UAAC3C,CAAD;AAAsB,eAAAW,KAAI,CAACrB,KAAL,CAAWY,MAAX,CAAmBF,CAAnB,CAAA;AAAqB,OAF9C;AAGH4C,MAAAA,OAAO,EAAE,UAAC5C,CAAD;AAAsB,eAAAW,KAAI,CAACrB,KAAL,CAAWa,SAAX,CAAsBH,CAAtB,CAAA;AAAwB,OAHpD;AAIH6C,MAAAA,SAAS,EAAE,UAAC7C,CAAD;AAAsB,eAAAW,KAAI,CAACrB,KAAL,CAAWc,WAAX,CAAwBJ,CAAxB,CAAA;AAA0B,OAJxD;AAKH8C,MAAAA,OAAO,EAAE,UAAC9C,CAAD;AAAsB,eAAAW,KAAI,CAACrB,KAAL,CAAWe,SAAX,CAAsBL,CAAtB,CAAA;AAAwB,OALpD;AAMH+C,MAAAA,MAAM,EAAE,UAAC/C,CAAD;AAAoB,eAAAW,KAAI,CAACrB,KAAL,CAAWiB,QAAX,CAAqBP,CAArB,CAAA;AAAuB,OANhD;AAOHgD,MAAAA,SAAS,EAAE,UAAChD,CAAD;AAAuB,eAAAW,KAAI,CAACrB,KAAL,CAAWS,WAAX,CAAwBC,CAAxB,CAAA;AAA0B,OAPzD;AAQHiD,MAAAA,MAAM,EAAE,UAACjD,CAAD;AAAoB,eAAAW,KAAI,CAACrB,KAAL,CAAWkB,QAAX,CAAqBR,CAArB,CAAA;AAAuB,OARhD;AASHkD,MAAAA,OAAO,EAAE,UAAClD,CAAD;AAAsB,eAAAW,KAAI,CAACrB,KAAL,CAAWgB,SAAX,CAAsBN,CAAtB,CAAA;AAAwB,OATpD;AAUHmD,MAAAA,aAAa,EAAE,UAACnD,CAAD;AACbW,QAAAA,KAAI,CAACrB,KAAL,CAAWmB,eAAX,CAA4BT,CAA5B;;AACAW,QAAAA,KAAI,CAACyC,WAAL;AACD;AAbE,KAPW,CAAhB;AAsBA,QAAM7D,QAAQ,GAAG,KAAK8D,WAAL,EAAjB;AACA,SAAKC,SAAL,GAAiB,IAAIvC,UAAJ,CAAuBxB,QAAQ,CAACgE,GAAT,CAAa,UAAAC,KAAA;AAAS,aAAA,KAAGA,KAAK,CAACC,GAAT;AAAc,KAApC,CAAvB,CAAjB;;AAEA,QAAI,KAAKnE,KAAL,CAAWoE,MAAf,EAAuB;AACrB,WAAKC,SAAL,CAAe,KAAKrE,KAAL,CAAWoE,MAA1B;AACD;;AACD,SAAKxB,YAAL;AACA,SAAKC,eAAL;;AAEA,QAAI,KAAK7C,KAAL,CAAWsE,iBAAf,EAAkC;AAChC,WAAKR,WAAL;AACD;AACF,GApCM;;AAsCA,8BAAA,GAAP;AACE,SAAKS,OAAL,CAAa;AAAEC,MAAAA,UAAU,EAAE;AAAd,KAAb;AACD,GAFM;;;AAKC,sBAAA,GAAR;AACQ,QAAAC,KAAqC,KAAKC,aAAL,CAAmBlC,MAAnB,CAA0B,KAAKxC,KAAL,CAAWQ,OAArC,CAArC;AAAA,QAAEmE,IAAI,UAAN;AAAA,QAAQC,KAAK,WAAb;AAAA,QAAeC,OAAO,aAAtB;AAAA,QAAwBC,QAAQ,cAAhC;;AAEN,SAAKpC,QAAL,CAAeqC,UAAf,CAA0BH,KAAK,CAACX,GAAN,CAAU,UAAAe,KAAA;AAAS,aAAAL,IAAI,CAACK,KAAD,CAAJ;AAAW,KAA9B,CAA1B;AACA,SAAKtC,QAAL,CAAeuC,aAAf,CAA6BJ,OAAO,CAACZ,GAAR,CAAY,UAAAe,KAAA;AAAS,aAAAF,QAAQ,CAACE,KAAD,CAAR;AAAe,KAApC,CAA7B;AACD,GALO;;AAOA,yBAAA,GAAR;AACE,QAAM1D,UAAU,GAAG,KAAKoB,QAAL,CAAewC,aAAf,EAAnB;;AAEA,QAAI,KAAKC,KAAL,CAAW7D,UAAX,KAA0BA,UAA9B,EAA0C;AACxC,WAAK8D,QAAL,CAAc;AACZ9D,QAAAA,UAAU;AADE,OAAd;AAGD;AACF,GARO;;AAUA,sBAAA,GAAR;AACU,QAAAgD,iBAAiB,GAAK,KAAKtE,KAAL,kBAAtB;AACR,QAAM0C,QAAQ,GAAG,KAAKA,QAAtB;AACA,QAAM2C,aAAa,GAAG,KAAKtB,WAAL,EAAtB;AACA,QAAIuB,MAAJ;;AAEA,QAAI5C,QAAQ,IAAI4B,iBAAhB,EAAmC;AACjC,UAAMiB,UAAU,GAAG,KAAKvB,SAAL,CAAexB,MAAf,CAAsB6C,aAAa,CAACpB,GAAd,CAAkB,UAAAC,KAAA;AAAS,eAAA,KAAGA,KAAK,CAACC,GAAT;AAAc,OAAzC,CAAtB,CAAnB;AACA,UAAMqB,UAAQ,GAAGH,aAAa,CAACI,MAA/B;AAEA/C,MAAAA,QAAQ,CAACgD,UAAT,CAAoBH,UAApB;AAEA,UAAMI,eAAe,GAAGjD,QAAQ,CAACkD,mBAAT,CAA6BL,UAA7B,CAAxB;AACAD,MAAAA,MAAM,GAAGK,eAAe,CAAC1B,GAAhB,CAAoB,UAAAe,KAAA;AAC3B,YAAIA,KAAK,IAAIQ,UAAb,EAAuB;AACrB,cAAMK,aAAa,GAAGb,KAAK,GAAGQ,UAA9B;AACA,cAAMM,UAAU,GAAGC,IAAI,CAACC,KAAL,CAAWhB,KAAK,GAAGQ,UAAnB,IAA+B,CAAlD;AACA,cAAMS,MAAM,GAAGZ,aAAa,CAACQ,aAAD,CAA5B;AAEA,iBAAO7D,mBAAA,CAACkE,cAAD;AAAgB/B,YAAAA,GAAG,EAAE,UAAQ2B,UAAR,GAAqBG,MAAM,CAAC9B;WAAjD,EAAyD8B,MAAzD,CAAP;AACD,SAND,MAMO;AACL,iBAAOZ,aAAa,CAACL,KAAD,CAApB;AACD;AACF,OAVQ,CAAT;AAWD,KAlBD,MAkBO;AACL,UAAM1D,UAAU,GAAG,KAAK6D,KAAL,CAAW7D,UAA9B;AACAgE,MAAAA,MAAM,kBAAOD,cAAb;;8BAESc;AACPb,QAAAA,MAAM,GAAGA,MAAM,CAACc,MAAP,CAAcf,aAAa,CAACpB,GAAd,CAAkB,UAAAoC,EAAA;AACvC,iBAAOrE,mBAAA,CAACkE,cAAD;AAAgB/B,YAAAA,GAAG,EAAE,UAAQgC,CAAR,GAAYE,EAAE,CAAClC;WAApC,EAA4CkC,EAA5C,CAAP;AACD,SAFsB,CAAd,CAAT;;;AADF,WAAK,IAAIF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG7E,UAApB,EAAgC,EAAE6E,CAAlC;gBAASA;AAIR;AACF;;AAED,WAAOb,MAAP;AACD,GApCO;;AAsCA,qBAAA,GAAR;AACE,QAAMrF,QAAQ,GAAG+B,cAAA,CAAesE,OAAf,CAAuB,KAAKtG,KAAL,CAAWC,QAAlC,EAA4CsG,KAA5C,EAAjB;AACA,WAAO,OAAO,KAAKvG,KAAL,CAAWwG,SAAlB,KAAgC,QAAhC,GACHvG,QAAQ,CAACsG,KAAT,CAAe,CAAf,EAAkB,KAAKvG,KAAL,CAAWwG,SAAX,GAAuB,CAAzC,CADG,GAEHvG,QAFJ;AAGD,GALO;;AAOA,qBAAA,GAAR;AACE,WAAO,KAAKmC,aAAL,CAAmBnC,QAA1B;AACD,GAFO;;AA7KMwG,EAAAA,qBAAA,GAA8BtG,cAA9B;;AAQduG,EAAAA,YADCC,4EACD;;AAwKF,iBAAA;AAjLA,EAAuB3E,gBAAvB;;;;"}
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.1
7
+ version: 3.8.2
8
8
  */
9
9
  import NativeFlicking, { DEFAULT_OPTIONS, withFlickingMethods } from '@egjs/flicking';
10
10
  import { Component, createElement, version, Children } from 'react';
@@ -112,6 +112,8 @@ var FLICKING_PROPS = {
112
112
  onRestore: function (e) {},
113
113
  onSelect: function (e) {},
114
114
  onChange: function (e) {},
115
+ onContentLoad: function (e) {},
116
+ onContentError: function (e) {},
115
117
  onVisibleChange: function (e) {}
116
118
  };
117
119
 
@@ -225,6 +227,14 @@ function (_super) {
225
227
  _this.props.onVisibleChange(e);
226
228
 
227
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);
228
238
  }
229
239
  });
230
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.1",
3
+ "version": "3.8.2",
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.1",
12
+ "@egjs/flicking": "~3.9.2",
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
  }