{"version":3,"sources":["jsdelivr-header.js","/npm/@egjs/vue3-flicking@4.15.0/src/FlickingProps.ts","/npm/@egjs/vue3-flicking@4.15.0/src/VueRenderer.ts","/npm/@egjs/vue3-flicking@4.15.0/src/VuePanel.ts","/npm/@egjs/vue3-flicking@4.15.0/src/VueElementProvider.ts","/npm/@egjs/vue3-flicking@4.15.0/src/Flicking.ts","/npm/@egjs/vue3-flicking@4.15.0/src/reactive.ts","/npm/@egjs/vue3-flicking@4.15.0/src/index.umd.ts"],"names":[],"mappings":"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","file":"/npm/@egjs/vue3-flicking@4.15.0/dist/flicking.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@egjs/vue3-flicking@4.15.0/dist/flicking.cjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*\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  cameraClass: {\n    type: String,\n    default: \"\",\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\", () => {\n        this._afterRender();\n        resolve();\n      });\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, Comment, Text } 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        [this.cameraClass]: !!this.cameraClass\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\n        .reduce((elementSlots, slot) => [...elementSlots, ...this.getElementVNodes(slot)], [] as VNode[])\n        .filter(slot => slot.type !== Comment && slot.type !== Text);\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  watch: {\n    options: {\n      handler(newOptions) {\n        const flicking = this.vanillaFlicking;\n        if (!flicking) return;\n\n        // Omit 'virtual', as it can't have any setter\n        const { virtual, ...options } = newOptions; // eslint-disable-line @typescript-eslint/no-unused-vars\n\n        for (const key in options) {\n          if (key in flicking && flicking[key] !== options[key]) {\n            flicking[key] = options[key];\n          }\n        }\n      },\n      deep: true,\n      immediate: true\n    }\n  }\n}) as unknown as VueFlicking;\n\ninterface Flicking extends VueFlicking, VanillaFlicking {}\nexport default Flicking;\n","import { FlickingReactiveAPIOptions, flickingReactiveAPIAdapter } from \"@egjs/flicking\";\nimport { Ref } from \"vue\";\nimport { useReactive } from \"@cfcs/vue3\";\n\nimport Flicking from \"./Flicking\";\n\n\nexport const useFlickingReactiveAPI = (flickingRef: Ref<Flicking>, options?: FlickingReactiveAPIOptions) => {\n  return useReactive(flickingReactiveAPIAdapter, () => ({\n    flicking: flickingRef.value ?? undefined,\n    options\n  }));\n};\n","import Flicking from \"./Flicking\";\nimport { useFlickingReactiveAPI } from \"./reactive\";\n\nFlicking.useFlickingReactiveAPI = useFlickingReactiveAPI;\nexport default Flicking;\n"]}