@egjs/vue3-flicking 4.4.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,12 +4,11 @@ name: @egjs/vue3-flicking
4
4
  license: MIT
5
5
  author: NAVER Corp.
6
6
  repository: https://github.com/naver/egjs-flicking/tree/master/packages/vue3-flicking
7
- version: 4.4.0
7
+ version: 4.5.0
8
8
  */
9
9
  'use strict';
10
10
 
11
11
  var vue = require('vue');
12
- var vueClassComponent = require('vue-class-component');
13
12
  var ListDiffer = require('@egjs/list-differ');
14
13
  var Component = require('@egjs/component');
15
14
  var VanillaFlicking = require('@egjs/flicking');
@@ -65,13 +64,6 @@ var __assign = function () {
65
64
 
66
65
  return __assign.apply(this, arguments);
67
66
  };
68
- function __decorate(decorators, target, key, desc) {
69
- var c = arguments.length,
70
- r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
71
- d;
72
- 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;
73
- return c > 3 && r && Object.defineProperty(target, key, r), r;
74
- }
75
67
  function __awaiter(thisArg, _arguments, P, generator) {
76
68
  function adopt(value) {
77
69
  return value instanceof P ? value : new P(function (resolve) {
@@ -221,45 +213,45 @@ function __spreadArray(to, from, pack) {
221
213
  return to.concat(ar || Array.prototype.slice.call(from));
222
214
  }
223
215
 
224
- /*
225
- * Copyright (c) 2015 NAVER Corp.
226
- * egjs projects are licensed under the MIT license
227
- */
228
-
229
- var FlickingProps =
230
- /*#__PURE__*/
231
- function () {
232
- function FlickingProps() {
233
- this.viewportTag = vueClassComponent.prop({
234
- required: false,
235
- default: "div"
236
- });
237
- this.cameraTag = vueClassComponent.prop({
238
- required: false,
239
- default: "div"
240
- });
241
- this.hideBeforeInit = vueClassComponent.prop({
242
- required: false,
243
- default: false
244
- });
245
- this.firstPanelSize = vueClassComponent.prop({
246
- required: false
247
- });
248
- this.options = vueClassComponent.prop({
249
- required: false,
250
- default: {}
251
- });
252
- this.plugins = vueClassComponent.prop({
253
- required: false,
254
- default: []
255
- });
256
- this.status = vueClassComponent.prop({
257
- required: false
258
- });
216
+ var FlickingProps = {
217
+ viewportTag: {
218
+ type: String,
219
+ default: "div",
220
+ required: false
221
+ },
222
+ cameraTag: {
223
+ type: String,
224
+ default: "div",
225
+ required: false
226
+ },
227
+ hideBeforeInit: {
228
+ type: Boolean,
229
+ default: false,
230
+ required: false
231
+ },
232
+ firstPanelSize: {
233
+ type: String,
234
+ required: false
235
+ },
236
+ options: {
237
+ type: Object,
238
+ default: function () {
239
+ return {};
240
+ },
241
+ required: false
242
+ },
243
+ plugins: {
244
+ type: Array,
245
+ default: function () {
246
+ return [];
247
+ },
248
+ required: false
249
+ },
250
+ status: {
251
+ type: Object,
252
+ required: false
259
253
  }
260
-
261
- return FlickingProps;
262
- }();
254
+ };
263
255
 
264
256
  var VueRenderer =
265
257
  /*#__PURE__*/
@@ -336,34 +328,21 @@ function (_super) {
336
328
  return VueRenderer;
337
329
  }(VanillaFlicking.ExternalRenderer);
338
330
 
339
- var VuePanel =
340
- /*#__PURE__*/
341
- function (_super) {
342
- __extends(VuePanel, _super);
343
-
344
- function VuePanel() {
345
- var _this = _super !== null && _super.apply(this, arguments) || this;
346
-
347
- _this.hide = false;
348
- return _this;
349
- }
350
-
351
- var __proto = VuePanel.prototype;
352
- Object.defineProperty(__proto, "nativeElement", {
353
- get: function () {
354
- return this.$.subTree.children[0].el;
355
- },
356
- enumerable: false,
357
- configurable: true
358
- });
359
-
360
- __proto.render = function () {
331
+ /*
332
+ * Copyright (c) 2015 NAVER Corp.
333
+ * egjs projects are licensed under the MIT license
334
+ */
335
+ var VuePanel = vue.defineComponent({
336
+ data: function () {
337
+ return {
338
+ hide: false
339
+ };
340
+ },
341
+ render: function () {
361
342
  if (this.hide || !this.$slots.default) return;
362
343
  return this.$slots.default();
363
- };
364
-
365
- return VuePanel;
366
- }(vueClassComponent.Vue);
344
+ }
345
+ });
367
346
 
368
347
  var VueElementProvider =
369
348
  /*#__PURE__*/
@@ -373,16 +352,22 @@ function () {
373
352
  }
374
353
 
375
354
  var __proto = VueElementProvider.prototype;
376
- Object.defineProperty(__proto, "element", {
355
+ Object.defineProperty(__proto, "rendered", {
377
356
  get: function () {
378
- return this._el.nativeElement;
357
+ return !this._el.hide;
379
358
  },
380
359
  enumerable: false,
381
360
  configurable: true
382
361
  });
383
- Object.defineProperty(__proto, "rendered", {
362
+ Object.defineProperty(__proto, "element", {
384
363
  get: function () {
385
- return !this._el.hide;
364
+ var el = this._el.$el.nextSibling;
365
+
366
+ if (el && el.nodeType === Node.ELEMENT_NODE) {
367
+ this._cachedElement = el;
368
+ }
369
+
370
+ return this._cachedElement;
386
371
  },
387
372
  enumerable: false,
388
373
  configurable: true
@@ -399,19 +384,22 @@ function () {
399
384
  return VueElementProvider;
400
385
  }();
401
386
 
402
- var Flicking =
403
- /*#__PURE__*/
404
- function (_super) {
405
- __extends(Flicking, _super);
406
-
407
- function Flicking() {
408
- var _this = _super !== null && _super.apply(this, arguments) || this;
387
+ var Flicking = vue.defineComponent({
388
+ props: FlickingProps,
389
+ components: {
390
+ Panel: VuePanel
391
+ },
392
+ data: function () {
393
+ return {};
394
+ },
395
+ created: function () {
396
+ var _this = this;
409
397
 
410
- _this.renderEmitter = new Component();
411
- _this.vanillaFlicking = null;
412
- _this.diffResult = undefined;
398
+ this.vanillaFlicking = null;
399
+ this.renderEmitter = new Component();
400
+ this.diffResult = null;
413
401
 
414
- _this.getPanels = function () {
402
+ this.getPanels = function () {
415
403
  var componentInstance = vue.getCurrentInstance();
416
404
  var vueFlicking = componentInstance === null || componentInstance === void 0 ? void 0 : componentInstance.ctx;
417
405
  var flicking = _this.vanillaFlicking;
@@ -432,7 +420,7 @@ function (_super) {
432
420
  return panels;
433
421
  };
434
422
 
435
- _this.getVirtualPanels = function () {
423
+ this.getVirtualPanels = function () {
436
424
  var options = _this.options;
437
425
  var _a = options.virtual.panelClass,
438
426
  panelClass = _a === void 0 ? "flicking-panel" : _a;
@@ -452,19 +440,14 @@ function (_super) {
452
440
  ref: idx.toString(),
453
441
  class: panelClass,
454
442
  style: size,
455
- domProps: {
456
- "data-element-index": idx
457
- }
443
+ "data-element-index": idx
458
444
  });
459
445
  });
460
446
  };
461
447
 
462
- return _this;
463
- }
464
-
465
- var __proto = Flicking.prototype;
466
-
467
- __proto.mounted = function () {
448
+ VanillaFlicking.withFlickingMethods(this, "vanillaFlicking");
449
+ },
450
+ mounted: function () {
468
451
  var _this = this;
469
452
 
470
453
  var _a;
@@ -473,16 +456,13 @@ function (_super) {
473
456
  var viewportEl = this.$el;
474
457
  var rendererOptions = {
475
458
  vueFlicking: this,
459
+ align: options.align,
476
460
  strategy: options.virtual && ((_a = options.panelsPerView) !== null && _a !== void 0 ? _a : -1) > 0 ? new VanillaFlicking.VirtualRenderingStrategy() : new VanillaFlicking.NormalRenderingStrategy({
477
- providerCtor: VueElementProvider,
478
- panelCtor: VanillaFlicking.ExternalPanel
461
+ providerCtor: VueElementProvider
479
462
  })
480
463
  };
481
- var flicking = new VanillaFlicking(viewportEl, __assign(__assign({}, this.options), {
482
- renderExternal: {
483
- renderer: VueRenderer,
484
- rendererOptions: rendererOptions
485
- }
464
+ var flicking = new VanillaFlicking(viewportEl, __assign(__assign({}, options), {
465
+ externalRenderer: new VueRenderer(rendererOptions)
486
466
  }));
487
467
  this.vanillaFlicking = flicking;
488
468
  flicking.once(VanillaFlicking.EVENTS.READY, function () {
@@ -499,24 +479,20 @@ function (_super) {
499
479
  if (this.status) {
500
480
  flicking.setStatus(this.status);
501
481
  }
502
- };
503
-
504
- __proto.beforeDestroy = function () {
482
+ },
483
+ beforeUnmount: function () {
505
484
  var _a;
506
485
 
507
486
  (_a = this.vanillaFlicking) === null || _a === void 0 ? void 0 : _a.destroy();
508
- };
509
-
510
- __proto.beforeMount = function () {
487
+ },
488
+ beforeMount: function () {
511
489
  this.fillKeys();
512
- };
513
-
514
- __proto.beforeUpdate = function () {
490
+ },
491
+ beforeUpdate: function () {
515
492
  this.fillKeys();
516
493
  this.diffResult = this.slotDiffer.update(this.getSlots());
517
- };
518
-
519
- __proto.updated = function () {
494
+ },
495
+ updated: function () {
520
496
  var flicking = this.vanillaFlicking;
521
497
  var diffResult = this.diffResult;
522
498
  this.checkPlugins();
@@ -530,9 +506,8 @@ function (_super) {
530
506
  }
531
507
 
532
508
  this.diffResult = undefined;
533
- };
534
-
535
- __proto.render = function () {
509
+ },
510
+ render: function () {
536
511
  var _a;
537
512
 
538
513
  var flicking = this.vanillaFlicking;
@@ -559,96 +534,83 @@ function (_super) {
559
534
  return vue.h(this.viewportTag, viewportData, __spreadArray([vue.h(this.cameraTag, cameraData, {
560
535
  default: panels
561
536
  })], viewportSlots, true));
562
- };
563
-
564
- __proto.getSlots = function () {
565
- var _this = this;
537
+ },
538
+ methods: {
539
+ getSlots: function () {
540
+ var _this = this;
541
+
542
+ var slots = this.$slots.default ? this.$slots.default() : [];
543
+ return slots.reduce(function (elementSlots, slot) {
544
+ return __spreadArray(__spreadArray([], elementSlots, true), _this.getElementVNodes(slot), true);
545
+ }, []);
546
+ },
547
+ getElementVNodes: function (slot, childSlots) {
548
+ var _this = this;
566
549
 
567
- var slots = this.$slots.default ? this.$slots.default() : [];
568
- return slots.reduce(function (elementSlots, slot) {
569
- return __spreadArray(__spreadArray([], elementSlots, true), _this.getElementVNodes(slot), true);
570
- }, []);
571
- };
550
+ if (childSlots === void 0) {
551
+ childSlots = [];
552
+ }
572
553
 
573
- __proto.getElementVNodes = function (slot, childSlots) {
574
- var _this = this;
554
+ if (slot.type === vue.Fragment && Array.isArray(slot.children)) {
555
+ slot.children.filter(function (child) {
556
+ return child && typeof child === "object";
557
+ }).forEach(function (child) {
558
+ return _this.getElementVNodes(child, childSlots);
559
+ });
560
+ } else {
561
+ childSlots.push(slot);
562
+ }
575
563
 
576
- if (childSlots === void 0) {
577
- childSlots = [];
578
- }
564
+ return childSlots;
565
+ },
566
+ bindEvents: function () {
567
+ var _this = this;
579
568
 
580
- if (slot.type === vue.Fragment && Array.isArray(slot.children)) {
581
- slot.children.filter(function (child) {
582
- return child && typeof child === "object";
583
- }).forEach(function (child) {
584
- return _this.getElementVNodes(child, childSlots);
569
+ var flicking = this.vanillaFlicking;
570
+ var events = Object.keys(VanillaFlicking.EVENTS).map(function (key) {
571
+ return VanillaFlicking.EVENTS[key];
585
572
  });
586
- } else {
587
- childSlots.push(slot);
588
- }
573
+ events.forEach(function (eventName) {
574
+ flicking.on(eventName, function (e) {
575
+ e.currentTarget = _this; // Make events from camelCase to kebab-case
589
576
 
590
- return childSlots;
591
- };
592
-
593
- __proto.bindEvents = function () {
594
- var _this = this;
595
-
596
- var flicking = this.vanillaFlicking;
597
- var events = Object.keys(VanillaFlicking.EVENTS).map(function (key) {
598
- return VanillaFlicking.EVENTS[key];
599
- });
600
- events.forEach(function (eventName) {
601
- flicking.on(eventName, function (e) {
602
- e.currentTarget = _this; // Make events from camelCase to kebab-case
603
-
604
- _this.$emit(eventName.replace(/([A-Z])/g, "-$1").toLowerCase(), e);
577
+ _this.$emit(eventName.replace(/([A-Z])/g, "-$1").toLowerCase(), e);
578
+ });
579
+ });
580
+ },
581
+ checkPlugins: function () {
582
+ var _a, _b;
583
+
584
+ var _c = this.pluginsDiffer.update(this.plugins),
585
+ list = _c.list,
586
+ added = _c.added,
587
+ removed = _c.removed,
588
+ prevList = _c.prevList;
589
+
590
+ (_a = this.vanillaFlicking).addPlugins.apply(_a, added.map(function (index) {
591
+ return list[index];
592
+ }));
593
+
594
+ (_b = this.vanillaFlicking).removePlugins.apply(_b, removed.map(function (index) {
595
+ return prevList[index];
596
+ }));
597
+ },
598
+ fillKeys: function () {
599
+ var vnodes = this.getSlots();
600
+ vnodes.forEach(function (node, idx) {
601
+ if (node.key == null) {
602
+ node.key = "$_" + idx;
603
+ }
604
+ });
605
+ },
606
+ getChildren: function () {
607
+ var childRefs = this.$refs;
608
+ return Object.keys(childRefs).map(function (refKey) {
609
+ return childRefs[refKey];
605
610
  });
606
- });
607
- };
608
-
609
- __proto.checkPlugins = function () {
610
- var _a, _b;
611
-
612
- var _c = this.pluginsDiffer.update(this.plugins),
613
- list = _c.list,
614
- added = _c.added,
615
- removed = _c.removed,
616
- prevList = _c.prevList;
617
-
618
- (_a = this.vanillaFlicking).addPlugins.apply(_a, added.map(function (index) {
619
- return list[index];
620
- }));
621
-
622
- (_b = this.vanillaFlicking).removePlugins.apply(_b, removed.map(function (index) {
623
- return prevList[index];
624
- }));
625
- };
626
-
627
- __proto.fillKeys = function () {
628
- var vnodes = this.getSlots();
629
- vnodes.forEach(function (node, idx) {
630
- if (node.key == null) {
631
- node.key = "$_" + idx;
632
- }
633
- });
634
- };
635
-
636
- __proto.getChildren = function () {
637
- var childRefs = this.$refs;
638
- return Object.keys(childRefs).map(function (refKey) {
639
- return childRefs[refKey];
640
- });
641
- };
642
-
643
- __decorate([VanillaFlicking.withFlickingMethods], Flicking.prototype, "vanillaFlicking", void 0);
644
-
645
- Flicking = __decorate([vueClassComponent.Options({
646
- components: {
647
- Panel: VuePanel
648
611
  }
649
- })], Flicking);
650
- return Flicking;
651
- }(vueClassComponent.Vue.with(FlickingProps));
612
+ }
613
+ });
652
614
 
653
615
  module.exports = Flicking;
654
616
  //# sourceMappingURL=flicking.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flicking.cjs.js","sources":["../src/FlickingProps.ts","../src/VueRenderer.ts","../src/VuePanel.ts","../src/VueElementProvider.ts","../src/Flicking.ts"],"sourcesContent":["/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\nimport { prop } from \"vue-class-component\";\nimport {\n FlickingOptions,\n Plugin,\n Status\n} from \"@egjs/flicking\";\n\nclass FlickingProps {\n viewportTag = prop<string>({ required: false, default: \"div\" });\n cameraTag = prop<string>({ required: false, default: \"div\" });\n hideBeforeInit = prop<boolean>({ required: false, default: false });\n firstPanelSize = prop<string>({ required: false });\n options = prop<Partial<FlickingOptions>>({ required: false, default: {} });\n plugins = prop<Plugin[]>({ required: false, default: [] });\n status = prop<Status>({ required: false });\n}\n\nexport default FlickingProps;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport {\n ExternalRenderer,\n getFlickingAttached,\n PanelOptions,\n RendererOptions\n} from \"@egjs/flicking\";\n\nimport VueFlicking from \"./Flicking\";\nimport VuePanel from \"./VuePanel\";\n\nexport interface VueRendererOptions extends RendererOptions {\n vueFlicking: VueFlicking;\n}\n\nclass VueRenderer extends ExternalRenderer {\n // Internal States\n private _vueFlicking: VueFlicking;\n\n public constructor(options: VueRendererOptions) {\n super(options);\n\n this._vueFlicking = options.vueFlicking;\n }\n\n public async render() {\n const flicking = getFlickingAttached(this._flicking);\n const vueFlicking = this._vueFlicking;\n const strategy = this._strategy;\n\n strategy.updateRenderingPanels(flicking);\n strategy.renderPanels(flicking);\n\n return new Promise<void>((resolve) => {\n vueFlicking.renderEmitter.once(\"render\", resolve);\n vueFlicking.$forceUpdate();\n });\n }\n\n public async forceRenderAllPanels() {\n const vueFlicking = this._vueFlicking;\n\n await super.forceRenderAllPanels();\n\n return new Promise<void>((resolve) => {\n vueFlicking.renderEmitter.once(\"render\", resolve);\n vueFlicking.$forceUpdate();\n });\n }\n\n protected _collectPanels() {\n const flicking = getFlickingAttached(this._flicking);\n const vueFlicking = this._vueFlicking;\n const childRefs = vueFlicking.$refs;\n const vuePanels: any[] = Object.keys(childRefs).map(refKey => childRefs[refKey]);\n\n this._panels = this._strategy.collectPanels(flicking, vuePanels);\n }\n\n protected _createPanel(externalComponent: VuePanel, options: PanelOptions) {\n return this._strategy.createPanel(externalComponent, options);\n }\n}\n\nexport default VueRenderer;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { Vue } from \"vue-class-component\";\n\nclass VuePanel extends Vue {\n public hide: boolean = false;\n\n public get nativeElement() { return this.$.subTree.children![0].el as HTMLElement; }\n\n public render() {\n if (this.hide || !this.$slots.default) return;\n\n return this.$slots.default() as any;\n }\n}\n\nexport default VuePanel;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { ExternalElementProvider } from \"@egjs/flicking\";\n\nimport VuePanel from \"./VuePanel\";\n\nclass VueElementProvider implements ExternalElementProvider {\n private _el: VuePanel;\n\n public get element() { return this._el.nativeElement; }\n public get rendered() { return !this._el.hide; }\n\n public constructor(el: VuePanel) {\n this._el = el;\n }\n\n public show() {\n this._el.hide = false;\n }\n\n public hide() {\n this._el.hide = true;\n }\n}\n\nexport default VueElementProvider;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n/* eslint-disable @typescript-eslint/explicit-member-accessibility */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { h, VNode, resolveComponent, Fragment, getCurrentInstance } from \"vue\";\nimport { Vue, Options, VueConstructor } from \"vue-class-component\";\nimport ListDiffer, { DiffResult } from \"@egjs/list-differ\";\nimport Component from \"@egjs/component\";\nimport VanillaFlicking, {\n EVENTS,\n withFlickingMethods,\n sync,\n Plugin,\n getRenderingPanels,\n getDefaultCameraTransform,\n range,\n VirtualRenderingStrategy,\n NormalRenderingStrategy,\n ExternalPanel\n} from \"@egjs/flicking\";\n\nimport FlickingProps from \"./FlickingProps\";\nimport VueRenderer, { VueRendererOptions } from \"./VueRenderer\";\nimport VuePanel from \"./VuePanel\";\nimport VueElementProvider from \"./VueElementProvider\";\n\n@Options({\n components: {\n Panel: VuePanel\n }\n})\nclass Flicking extends Vue.with(FlickingProps) {\n public readonly renderEmitter = new Component<{ render: void }>();\n\n @withFlickingMethods private vanillaFlicking: VanillaFlicking | null = null;\n private pluginsDiffer!: ListDiffer<Plugin>;\n private slotDiffer!: ListDiffer<VNode>;\n private diffResult?: DiffResult<VNode> = undefined;\n\n public mounted() {\n const options = this.options;\n const viewportEl = this.$el as HTMLElement;\n const rendererOptions: VueRendererOptions = {\n vueFlicking: this,\n strategy: options.virtual && (options.panelsPerView ?? -1) > 0\n ? new VirtualRenderingStrategy()\n : new NormalRenderingStrategy({\n providerCtor: VueElementProvider,\n panelCtor: ExternalPanel\n })\n };\n\n const flicking = new VanillaFlicking(viewportEl, {\n ...this.options,\n ...{ renderExternal: {\n renderer: VueRenderer,\n rendererOptions\n }}\n });\n this.vanillaFlicking = flicking;\n\n flicking.once(EVENTS.READY, () => {\n this.$forceUpdate();\n });\n\n const slots = this.getSlots();\n this.slotDiffer = new ListDiffer<VNode>(slots, vnode => vnode.key! as string | number);\n this.pluginsDiffer = new ListDiffer<Plugin>();\n\n this.bindEvents();\n this.checkPlugins();\n\n if (this.status) {\n flicking.setStatus(this.status);\n }\n }\n\n public beforeDestroy() {\n this.vanillaFlicking?.destroy();\n }\n\n public beforeMount() {\n this.fillKeys();\n }\n\n public beforeUpdate() {\n this.fillKeys();\n\n this.diffResult = this.slotDiffer.update(this.getSlots());\n }\n\n public updated() {\n const flicking = this.vanillaFlicking;\n const diffResult = this.diffResult;\n\n this.checkPlugins();\n this.renderEmitter.trigger(\"render\");\n\n if (!diffResult || !flicking?.initialized) return;\n\n const children = this.getChildren();\n\n sync(flicking, diffResult, children);\n\n if (diffResult.added.length > 0 || diffResult.removed.length > 0) {\n this.$forceUpdate();\n }\n\n this.diffResult = undefined;\n }\n\n public render() {\n const flicking = this.vanillaFlicking;\n const options = this.options;\n const initialized = flicking && flicking.initialized;\n const isHorizontal = flicking\n ? flicking.horizontal\n : this.options.horizontal ?? true;\n\n const viewportData = {\n class: {\n \"flicking-viewport\": true,\n \"vertical\": !isHorizontal,\n \"flicking-hidden\": this.hideBeforeInit && !initialized\n }\n };\n const cameraData = {\n class: {\n \"flicking-camera\": true\n },\n style: !initialized && this.firstPanelSize\n ? { transform: getDefaultCameraTransform(this.options.align, this.options.horizontal, this.firstPanelSize) }\n : {}\n };\n\n const panels = options.virtual && options.panelsPerView && options.panelsPerView > 0\n ? this.getVirtualPanels\n : this.getPanels;\n\n const viewportSlots = this.$slots.viewport\n ? this.$slots.viewport()\n : [];\n\n return h(this.viewportTag, viewportData,\n [h(this.cameraTag, cameraData, { default: panels }), ...viewportSlots]\n );\n }\n\n public getSlots() {\n const slots = this.$slots.default\n ? this.$slots.default()\n : [];\n\n return slots.reduce((elementSlots, slot) => [...elementSlots, ...this.getElementVNodes(slot)], [] as VNode[]);\n }\n\n public getElementVNodes(slot: VNode, childSlots: VNode[] = []): VNode[] {\n if (slot.type === Fragment && Array.isArray(slot.children)) {\n slot.children\n .filter(child => child && typeof child === \"object\")\n .forEach(child => this.getElementVNodes(child as VNode, childSlots));\n } else {\n childSlots.push(slot);\n }\n\n return childSlots;\n }\n\n private bindEvents() {\n const flicking = this.vanillaFlicking;\n const events = (Object.keys(EVENTS) as Array<keyof typeof EVENTS>)\n .map(key => EVENTS[key]);\n\n events.forEach(eventName => {\n flicking!.on(eventName, (e: any) => {\n e.currentTarget = this;\n // Make events from camelCase to kebab-case\n this.$emit(eventName.replace(/([A-Z])/g, \"-$1\").toLowerCase(), e);\n });\n });\n }\n\n private checkPlugins() {\n const { list, added, removed, prevList } = this.pluginsDiffer.update(this.plugins);\n\n this.vanillaFlicking!.addPlugins(...added.map(index => list[index]));\n this.vanillaFlicking!.removePlugins(...removed.map(index => prevList[index]));\n }\n\n private fillKeys() {\n const vnodes = this.getSlots();\n\n vnodes.forEach((node, idx) => {\n if (node.key == null) {\n node.key = `$_${idx}`;\n }\n });\n }\n\n private getChildren() {\n const childRefs = this.$refs;\n\n return Object.keys(childRefs).map(refKey => childRefs[refKey]);\n }\n\n private getPanels = () => {\n const componentInstance = getCurrentInstance() as unknown as { ctx: Flicking } | null;\n const vueFlicking = componentInstance?.ctx;\n const flicking = this.vanillaFlicking;\n const defaultSlots = this.getSlots();\n const diffResult = vueFlicking?.diffResult;\n\n const slots = diffResult\n ? getRenderingPanels(flicking!, diffResult)\n : defaultSlots;\n\n const panelComponent = resolveComponent(\"Panel\");\n const panels = slots.map((slot, idx) => h(panelComponent as any, {\n key: slot.key!,\n ref: idx.toString()\n }, () => slot));\n\n return panels;\n };\n\n private getVirtualPanels = () => {\n const options = this.options;\n const {\n panelClass = \"flicking-panel\"\n } = options.virtual!;\n const panelsPerView = options.panelsPerView!;\n const flicking = this.vanillaFlicking;\n const initialized = flicking && flicking.initialized;\n\n const renderingIndexes = initialized\n ? flicking.renderer.strategy.getRenderingIndexesByOrder(flicking)\n : range(panelsPerView + 1);\n\n const firstPanel = initialized && flicking.panels[0];\n const size = firstPanel\n ? flicking.horizontal\n ? { width: firstPanel.size }\n : { height: firstPanel.size }\n : {};\n\n return renderingIndexes.map(idx => h(\"div\", {\n key: idx,\n ref: idx.toString(),\n class: panelClass,\n style: size,\n domProps: {\n \"data-element-index\": idx\n }\n }));\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface Flicking extends VanillaFlicking, VueConstructor<Vue & FlickingProps> {}\nexport default Flicking;\n"],"names":["prop","required","default","__extends","options","_super","_this","_vueFlicking","vueFlicking","flicking","getFlickingAttached","_flicking","strategy","_strategy","updateRenderingPanels","renderPanels","Promise","resolve","renderEmitter","once","$forceUpdate","forceRenderAllPanels","_a","childRefs","$refs","vuePanels","Object","keys","map","refKey","_panels","collectPanels","externalComponent","createPanel","ExternalRenderer","$","subTree","children","el","hide","$slots","Vue","_el","nativeElement","Component","undefined","componentInstance","getCurrentInstance","ctx","vanillaFlicking","defaultSlots","getSlots","diffResult","slots","getRenderingPanels","panelComponent","resolveComponent","panels","slot","idx","h","key","ref","toString","virtual","panelClass","panelsPerView","initialized","renderingIndexes","renderer","getRenderingIndexesByOrder","range","firstPanel","size","horizontal","width","height","class","style","domProps","viewportEl","$el","rendererOptions","VirtualRenderingStrategy","NormalRenderingStrategy","providerCtor","VueElementProvider","panelCtor","ExternalPanel","VanillaFlicking","renderExternal","VueRenderer","EVENTS","READY","slotDiffer","ListDiffer","vnode","pluginsDiffer","bindEvents","checkPlugins","status","setStatus","destroy","fillKeys","update","trigger","getChildren","sync","added","length","removed","isHorizontal","viewportData","hideBeforeInit","cameraData","firstPanelSize","transform","getDefaultCameraTransform","align","getVirtualPanels","getPanels","viewportSlots","viewport","viewportTag","cameraTag","reduce","elementSlots","getElementVNodes","childSlots","type","Fragment","Array","isArray","filter","child","forEach","push","events","eventName","on","e","currentTarget","$emit","replace","toLowerCase","_c","plugins","list","prevList","addPlugins","index","_b","removePlugins","vnodes","node","__decorate","withFlickingMethods","Flicking","Options","components","Panel","VuePanel","with","FlickingProps"],"mappings":"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"}
1
+ {"version":3,"file":"flicking.cjs.js","sources":["../src/FlickingProps.ts","../src/VueRenderer.ts","../src/VuePanel.ts","../src/VueElementProvider.ts","../src/Flicking.ts"],"sourcesContent":["/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { PropType } from \"vue\";\nimport { FlickingOptions, Plugin, Status } from \"@egjs/flicking\";\n\nexport default {\n viewportTag: {\n type: String,\n default: \"div\",\n required: false\n },\n cameraTag: {\n type: String,\n default: \"div\",\n required: false\n },\n hideBeforeInit: {\n type: Boolean,\n default: false,\n required: false\n },\n firstPanelSize: {\n type: String,\n required: false\n },\n options: {\n type: Object as unknown as () => Partial<FlickingOptions>,\n default: () => ({}),\n required: false\n },\n plugins: {\n type: Array as PropType<Plugin[]>,\n default: () => ([]),\n required: false\n },\n status: {\n type: Object as PropType<Status>,\n required: false\n }\n};\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport {\n ExternalRenderer,\n getFlickingAttached,\n PanelOptions,\n RendererOptions\n} from \"@egjs/flicking\";\n\nimport VueFlicking from \"./Flicking\";\nimport VuePanel from \"./VuePanel\";\n\nexport interface VueRendererOptions extends RendererOptions {\n vueFlicking: VueFlicking;\n}\n\nclass VueRenderer extends ExternalRenderer {\n // Internal States\n private _vueFlicking: VueFlicking;\n\n public constructor(options: VueRendererOptions) {\n super(options);\n\n this._vueFlicking = options.vueFlicking;\n }\n\n public async render() {\n const flicking = getFlickingAttached(this._flicking);\n const vueFlicking = this._vueFlicking;\n const strategy = this._strategy;\n\n strategy.updateRenderingPanels(flicking);\n strategy.renderPanels(flicking);\n\n return new Promise<void>((resolve) => {\n vueFlicking.renderEmitter.once(\"render\", resolve);\n vueFlicking.$forceUpdate();\n });\n }\n\n public async forceRenderAllPanels() {\n const vueFlicking = this._vueFlicking;\n\n await super.forceRenderAllPanels();\n\n return new Promise<void>((resolve) => {\n vueFlicking.renderEmitter.once(\"render\", resolve);\n vueFlicking.$forceUpdate();\n });\n }\n\n protected _collectPanels() {\n const flicking = getFlickingAttached(this._flicking);\n const vueFlicking = this._vueFlicking;\n const childRefs = vueFlicking.$refs;\n const vuePanels: any[] = Object.keys(childRefs).map(refKey => childRefs[refKey]);\n\n this._panels = this._strategy.collectPanels(flicking, vuePanels);\n }\n\n protected _createPanel(externalComponent: VuePanel, options: PanelOptions) {\n return this._strategy.createPanel(externalComponent, options);\n }\n}\n\nexport default VueRenderer;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\n\nimport { defineComponent } from \"vue\";\n\nconst VuePanel = defineComponent({\n data() {\n return {\n hide: false\n };\n },\n render() {\n if (this.hide || !this.$slots.default) return;\n\n return this.$slots.default();\n }\n});\n\ntype VuePanelType = InstanceType<typeof VuePanel>;\n\ninterface VuePanel extends VuePanelType {}\nexport default VuePanel;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { ElementProvider } from \"@egjs/flicking\";\n\nimport VuePanel from \"./VuePanel\";\n\nclass VueElementProvider implements ElementProvider {\n private _el: VuePanel;\n private _cachedElement: HTMLElement;\n\n public get rendered() { return !this._el.hide; }\n public get element() {\n const el = this._el.$el.nextSibling as HTMLElement;\n\n if (el && el.nodeType === Node.ELEMENT_NODE) {\n this._cachedElement = el;\n }\n\n return this._cachedElement;\n }\n\n public constructor(el: VuePanel) {\n this._el = el;\n }\n\n public show() {\n this._el.hide = false;\n }\n\n public hide() {\n this._el.hide = true;\n }\n}\n\nexport default VueElementProvider;\n","/*\n * Copyright (c) 2015 NAVER Corp.\n * egjs projects are licensed under the MIT license\n */\nimport { h, defineComponent, VNode, resolveComponent, Fragment, getCurrentInstance } from \"vue\";\nimport ListDiffer, { DiffResult } from \"@egjs/list-differ\";\nimport Component from \"@egjs/component\";\nimport VanillaFlicking, {\n EVENTS,\n withFlickingMethods,\n sync,\n Plugin,\n getRenderingPanels,\n getDefaultCameraTransform,\n range,\n VirtualRenderingStrategy,\n NormalRenderingStrategy\n} from \"@egjs/flicking\";\n\nimport FlickingProps from \"./FlickingProps\";\nimport VueRenderer, { VueRendererOptions } from \"./VueRenderer\";\nimport VuePanel from \"./VuePanel\";\nimport VueElementProvider from \"./VueElementProvider\";\nimport { VueFlicking } from \"./types\";\n\nconst Flicking = defineComponent({\n props: FlickingProps,\n components: {\n Panel: VuePanel\n },\n data() {\n return {} as {\n renderEmitter: Component<{ render: void }>;\n vanillaFlicking: VanillaFlicking;\n pluginsDiffer: ListDiffer<Plugin>;\n slotDiffer: ListDiffer<VNode>;\n diffResult: DiffResult<VNode> | null;\n };\n },\n created() {\n this.vanillaFlicking = null;\n this.renderEmitter = new Component();\n this.diffResult = null;\n\n this.getPanels = () => {\n const componentInstance = getCurrentInstance() as unknown as { ctx: Flicking } | null;\n const vueFlicking = componentInstance?.ctx;\n const flicking = this.vanillaFlicking;\n const defaultSlots = this.getSlots();\n const diffResult = vueFlicking?.diffResult;\n\n const slots = diffResult\n ? getRenderingPanels(flicking, diffResult)\n : defaultSlots;\n\n const panelComponent = resolveComponent(\"Panel\");\n const panels = slots.map((slot, idx) => h(panelComponent as any, {\n key: slot.key!,\n ref: idx.toString()\n }, () => slot));\n\n return panels;\n };\n this.getVirtualPanels = () => {\n const options = this.options;\n const {\n panelClass = \"flicking-panel\"\n } = options.virtual!;\n const panelsPerView = options.panelsPerView as number;\n const flicking = this.vanillaFlicking;\n const initialized = flicking && flicking.initialized;\n\n const renderingIndexes = initialized\n ? flicking.renderer.strategy.getRenderingIndexesByOrder(flicking)\n : range(panelsPerView + 1);\n\n const firstPanel = initialized && flicking.panels[0];\n const size = firstPanel\n ? flicking.horizontal\n ? { width: firstPanel.size }\n : { height: firstPanel.size }\n : {};\n\n return renderingIndexes.map(idx => h(\"div\", {\n key: idx,\n ref: idx.toString(),\n class: panelClass,\n style: size,\n \"data-element-index\": idx\n }));\n };\n\n withFlickingMethods(this, \"vanillaFlicking\");\n },\n mounted() {\n const options = this.options;\n const viewportEl = this.$el as HTMLElement;\n const rendererOptions: VueRendererOptions = {\n vueFlicking: this,\n align: options.align,\n strategy: options.virtual && (options.panelsPerView ?? -1) > 0\n ? new VirtualRenderingStrategy()\n : new NormalRenderingStrategy({\n providerCtor: VueElementProvider\n })\n };\n\n const flicking = new VanillaFlicking(viewportEl, {\n ...options,\n externalRenderer: new VueRenderer(rendererOptions)\n });\n this.vanillaFlicking = flicking;\n\n flicking.once(EVENTS.READY, () => {\n this.$forceUpdate();\n });\n\n const slots = this.getSlots();\n this.slotDiffer = new ListDiffer<VNode>(slots, vnode => vnode.key! as string | number);\n this.pluginsDiffer = new ListDiffer<Plugin>();\n\n this.bindEvents();\n this.checkPlugins();\n\n if (this.status) {\n flicking.setStatus(this.status);\n }\n },\n beforeUnmount() {\n this.vanillaFlicking?.destroy();\n },\n beforeMount() {\n this.fillKeys();\n },\n beforeUpdate() {\n this.fillKeys();\n\n this.diffResult = this.slotDiffer.update(this.getSlots());\n },\n updated() {\n const flicking = this.vanillaFlicking;\n const diffResult = this.diffResult;\n\n this.checkPlugins();\n this.renderEmitter.trigger(\"render\");\n\n if (!diffResult || !flicking?.initialized) return;\n\n const children = this.getChildren();\n\n sync(flicking, diffResult, children);\n\n if (diffResult.added.length > 0 || diffResult.removed.length > 0) {\n this.$forceUpdate();\n }\n\n this.diffResult = undefined;\n },\n render() {\n const flicking = this.vanillaFlicking;\n const options = this.options;\n const initialized = flicking && flicking.initialized;\n const isHorizontal = flicking\n ? flicking.horizontal\n : this.options.horizontal ?? true;\n\n const viewportData = {\n class: {\n \"flicking-viewport\": true,\n \"vertical\": !isHorizontal,\n \"flicking-hidden\": this.hideBeforeInit && !initialized\n }\n };\n const cameraData = {\n class: {\n \"flicking-camera\": true\n },\n style: !initialized && this.firstPanelSize\n ? { transform: getDefaultCameraTransform(this.options.align, this.options.horizontal, this.firstPanelSize) }\n : {}\n };\n\n const panels = options.virtual && options.panelsPerView && options.panelsPerView > 0\n ? this.getVirtualPanels\n : this.getPanels;\n\n const viewportSlots = this.$slots.viewport\n ? this.$slots.viewport()\n : [];\n\n return h(this.viewportTag, viewportData,\n [h(this.cameraTag, cameraData, { default: panels }), ...viewportSlots]\n );\n },\n methods: {\n getSlots() {\n const slots = this.$slots.default\n ? this.$slots.default()\n : [];\n\n return slots.reduce((elementSlots, slot) => [...elementSlots, ...this.getElementVNodes(slot)], [] as VNode[]);\n },\n getElementVNodes(slot: VNode, childSlots: VNode[] = []): VNode[] {\n if (slot.type === Fragment && Array.isArray(slot.children)) {\n slot.children\n .filter(child => child && typeof child === \"object\")\n .forEach(child => this.getElementVNodes(child as VNode, childSlots));\n } else {\n childSlots.push(slot);\n }\n\n return childSlots;\n },\n bindEvents() {\n const flicking = this.vanillaFlicking;\n const events = (Object.keys(EVENTS) as Array<keyof typeof EVENTS>)\n .map(key => EVENTS[key]);\n\n events.forEach(eventName => {\n flicking.on(eventName, (e: any) => {\n e.currentTarget = this;\n // Make events from camelCase to kebab-case\n this.$emit(eventName.replace(/([A-Z])/g, \"-$1\").toLowerCase(), e);\n });\n });\n },\n checkPlugins() {\n const { list, added, removed, prevList } = this.pluginsDiffer.update(this.plugins);\n\n this.vanillaFlicking!.addPlugins(...added.map(index => list[index]));\n this.vanillaFlicking!.removePlugins(...removed.map(index => prevList[index]));\n },\n fillKeys() {\n const vnodes = this.getSlots();\n\n vnodes.forEach((node, idx) => {\n if (node.key == null) {\n node.key = `$_${idx}`;\n }\n });\n },\n getChildren() {\n const childRefs = this.$refs;\n\n return Object.keys(childRefs).map(refKey => childRefs[refKey]);\n }\n }\n}) as unknown as VueFlicking;\n\ninterface Flicking extends VueFlicking, VanillaFlicking {}\nexport default Flicking;\n"],"names":["viewportTag","type","String","default","required","cameraTag","hideBeforeInit","Boolean","firstPanelSize","options","Object","plugins","Array","status","__extends","_super","_this","_vueFlicking","vueFlicking","flicking","getFlickingAttached","_flicking","strategy","_strategy","updateRenderingPanels","renderPanels","Promise","resolve","renderEmitter","once","$forceUpdate","forceRenderAllPanels","_a","childRefs","$refs","vuePanels","keys","map","refKey","_panels","collectPanels","externalComponent","createPanel","ExternalRenderer","VuePanel","defineComponent","data","hide","render","$slots","el","_el","$el","nextSibling","nodeType","Node","ELEMENT_NODE","_cachedElement","Flicking","props","FlickingProps","components","Panel","created","vanillaFlicking","Component","diffResult","getPanels","componentInstance","getCurrentInstance","ctx","defaultSlots","getSlots","slots","getRenderingPanels","panelComponent","resolveComponent","panels","slot","idx","h","key","ref","toString","getVirtualPanels","virtual","panelClass","panelsPerView","initialized","renderingIndexes","renderer","getRenderingIndexesByOrder","range","firstPanel","size","horizontal","width","height","class","style","withFlickingMethods","mounted","viewportEl","rendererOptions","align","VirtualRenderingStrategy","NormalRenderingStrategy","providerCtor","VueElementProvider","VanillaFlicking","externalRenderer","VueRenderer","EVENTS","READY","slotDiffer","ListDiffer","vnode","pluginsDiffer","bindEvents","checkPlugins","setStatus","beforeUnmount","destroy","beforeMount","fillKeys","beforeUpdate","update","updated","trigger","children","getChildren","sync","added","length","removed","undefined","isHorizontal","viewportData","cameraData","transform","getDefaultCameraTransform","viewportSlots","viewport","methods","reduce","elementSlots","getElementVNodes","childSlots","Fragment","isArray","filter","child","forEach","push","events","eventName","on","e","currentTarget","$emit","replace","toLowerCase","_c","list","prevList","addPlugins","index","_b","removePlugins","vnodes","node"],"mappings":"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"}