{"version":3,"file":"index.cjs","sources":["../src/lib/google-charts-loader.ts","../src/lib/debounce.ts","../src/utils.ts","src/components/GChart.vue","src/index.ts"],"sourcesContent":["/**\n * Usage:\n * import { loadGoogleCharts } from 'vue-google-charts'\n *\n * loadGoogleCharts('current', { packages: ['corechart', 'map'] })\n *  .then(google => {\n *    const chart = new google.visualization.Map ...\n *  })\n */\n\nimport type {\n  GoogleViz,\n  GoogleChartLoader,\n  GoogleChartVersion,\n  GoogleChartLoaderOptions,\n} from '../types';\n\nconst chartsScriptUrl = 'https://www.gstatic.com/charts/loader.js';\n\nlet chartsLoaderPromise: null | Promise<GoogleChartLoader> = null;\n\nconst loadedPackages = new Map();\n\nexport function getChartsLoader(): Promise<GoogleChartLoader> {\n  // If already included in the page:\n  if (window.google !== undefined) {\n    return Promise.resolve(window.google.charts);\n  }\n\n  if (chartsLoaderPromise === null) {\n    chartsLoaderPromise = new Promise(resolve => {\n      // Find script tag with same src in DOM.\n      const foundScript = document.querySelector<HTMLScriptElement>(\n        `script[src=\"${chartsScriptUrl}\"]`\n      );\n\n      // Create or get existed tag.\n      const script = foundScript || document.createElement('script');\n\n      // Set src if no script was found.\n      if (!foundScript) {\n        script.src = chartsScriptUrl;\n        script.type = 'text/javascript';\n\n        document.head.append(script);\n      }\n\n      // Use addEventListener so we don't clobber an onload handler that\n      // another instance may have already set on a shared loader script.\n      script.addEventListener('load', () => {\n        if (window.google !== undefined) {\n          resolve(window.google.charts);\n        }\n      });\n    });\n  }\n\n  return chartsLoaderPromise;\n}\n\n/**\n * Function to load Google Charts JS API.\n * @param version - Chart version to load.\n * @param packages - Packages to load.\n * @param language - Languages to load.\n * @param mapsApiKey - Google Maps api key.\n * @returns\n */\nexport async function loadGoogleCharts(\n  version: GoogleChartVersion = 'current',\n  {\n    packages = ['corechart', 'table'],\n    language = 'en',\n    mapsApiKey,\n  }: GoogleChartLoaderOptions\n): Promise<GoogleViz | undefined> {\n  const loader = await getChartsLoader();\n\n  const settingsKey = `${version}_${packages.join('_')}_${language}`;\n\n  if (loadedPackages.has(settingsKey)) return loadedPackages.get(settingsKey);\n\n  const loaderPromise: Promise<GoogleViz | undefined> = new Promise(resolve => {\n    loader.load(version, {\n      packages,\n      language,\n      mapsApiKey,\n    });\n\n    loader.setOnLoadCallback(() => resolve(window.google));\n  });\n\n  loadedPackages.set(settingsKey, loaderPromise);\n\n  return loaderPromise;\n}\n","export interface DebouncedFunction<\n  Args extends any[],\n  F extends (...args: Args) => any\n> {\n  (this: ThisParameterType<F>, ...args: Args & Parameters<F>): void;\n}\n\nexport function debounce<Args extends any[], F extends (...args: Args) => any>(\n  func: F,\n  waitMilliseconds = 50\n): DebouncedFunction<Args, F> {\n  let timeoutId: ReturnType<typeof setTimeout> | undefined;\n  function nextInvokeTimeout() {\n    return waitMilliseconds;\n  }\n\n  const debouncedFunction = function (\n    this: ThisParameterType<F>,\n    ...args: Parameters<F>\n  ) {\n    const context = this;\n\n    const invokeFunction = function () {\n      timeoutId = undefined;\n\n      func.apply(context, args);\n    };\n\n    if (timeoutId !== undefined) {\n      clearTimeout(timeoutId);\n    }\n\n    timeoutId = setTimeout(invokeFunction, nextInvokeTimeout());\n  };\n\n  return debouncedFunction;\n}\n","import {\n  GoogleChartWrapper,\n  GoogleChartWrapperChartType,\n  GoogleDataTable,\n  GoogleDataView,\n  GoogleViz,\n  GoogleVizEventName,\n  GoogleVizEvents,\n} from './types';\n\nexport interface ICreateChartFunction {\n  (\n    el: HTMLElement,\n    google: GoogleViz,\n    type: GoogleChartWrapperChartType\n  ): GoogleChartWrapper;\n}\n\nexport function getValidChartData(\n  chartsLib: null | GoogleViz,\n  data: unknown[][] | GoogleDataTable | Record<string, any> | null,\n  isFirstRowLabels?: boolean\n): GoogleDataTable | GoogleDataView | null {\n  if (chartsLib !== null && data instanceof chartsLib.visualization.DataTable) {\n    return data;\n  }\n\n  if (chartsLib !== null && data instanceof chartsLib.visualization.DataView) {\n    return data;\n  }\n\n  if (chartsLib !== null && Array.isArray(data)) {\n    return chartsLib.visualization.arrayToDataTable(data, isFirstRowLabels);\n  }\n\n  if (chartsLib !== null && data !== null && typeof data === 'object') {\n    return new chartsLib.visualization.DataTable(data);\n  }\n\n  return null;\n}\n\nexport function createChartObject(\n  chartsLib: GoogleViz | null,\n  chartObject: GoogleChartWrapper | null,\n  chartEl: HTMLElement | null,\n  chartType: GoogleChartWrapperChartType,\n  chartEvents: GoogleVizEvents | null,\n  createChartFunction?: ICreateChartFunction\n): GoogleChartWrapper | null {\n  const createChart: ICreateChartFunction = (\n    el: HTMLElement,\n    google: GoogleViz,\n    type: GoogleChartWrapperChartType\n  ): GoogleChartWrapper => {\n    if (type === undefined) {\n      throw new Error('please, provide chart type property');\n    }\n\n    return new google.visualization[type](el);\n  };\n\n  if (chartsLib === null) {\n    throw new Error('please, provide charts lib property');\n  }\n\n  if (chartEl === null) {\n    throw new Error('please, provide chart element property');\n  }\n\n  const fn = createChartFunction || createChart;\n\n  chartObject = fn(chartEl, chartsLib, chartType);\n\n  attachListeners(chartsLib, chartObject, chartEvents);\n\n  return chartObject;\n}\n\nfunction attachListeners(\n  chartsLib: null | GoogleViz,\n  chartObject: GoogleChartWrapper | null,\n  chartEvents: GoogleVizEvents | null\n): void {\n  if (chartEvents === null) {\n    return;\n  }\n\n  for (const [event, listener] of Object.entries(chartEvents)) {\n    if (chartsLib !== null && chartObject !== null) {\n      chartsLib.visualization.events.addListener(\n        chartObject,\n        event as GoogleVizEventName,\n        listener as (chartWrapper: GoogleChartWrapper) => any\n      );\n    }\n  }\n}\n","<template>\n  <div ref=\"chart\" />\n</template>\n\n<script>\nimport { loadGoogleCharts } from '../../../src/lib/google-charts-loader';\nimport { debounce } from '../../../src/lib/debounce';\nimport { createChartObject, getValidChartData } from '../../../src/utils';\n\nlet chartsLib = null;\nexport default {\n  name: 'GChart',\n\n  props: {\n    type: {\n      type: String,\n      required: true,\n    },\n    data: {\n      type: [Array, Object],\n      default: () => [],\n    },\n    isFirstRowLabels: {\n      type: Boolean,\n      default: false,\n    },\n    options: {\n      type: Object,\n      default: () => ({}),\n    },\n    version: {\n      type: String,\n      default: 'current',\n    },\n    settings: {\n      type: Object,\n      default: () => ({\n        packages: ['corechart', 'table'],\n      }),\n    },\n    events: {\n      type: Object,\n      default: null,\n    },\n    createChart: {\n      type: Function,\n      default: null,\n    },\n    resizeDebounce: {\n      type: Number,\n      default: 200,\n    },\n  },\n\n  data() {\n    return {\n      chartObject: null,\n    };\n  },\n\n  watch: {\n    data: {\n      deep: true,\n      handler() {\n        this.drawChart();\n      },\n    },\n    options: {\n      deep: true,\n      handler() {\n        this.drawChart();\n      },\n    },\n    type() {\n      this.chartObject = createChartObject(\n        chartsLib,\n        this.chartObject,\n        this.$refs.chart,\n        this.type,\n        this.events,\n        this.createChart\n      );\n      this.drawChart();\n    },\n  },\n\n  mounted() {\n    loadGoogleCharts(this.version, this.settings).then(api => {\n      chartsLib = api;\n      this.chartObject = createChartObject(\n        chartsLib,\n        this.chartObject,\n        this.$refs.chart,\n        this.type,\n        this.events,\n        this.createChart\n      );\n\n      this.$emit('ready', this.chartObject, api);\n      this.drawChart();\n    });\n\n    if (this.resizeDebounce > 0)\n      window.addEventListener(\n        'resize',\n        debounce(this.drawChart, this.resizeDebounce)\n      );\n  },\n\n  beforeDestroy() {\n    if (\n      this.chartObject !== null &&\n      typeof this.chartObject.clearChart === 'function'\n    ) {\n      this.chartObject.clearChart();\n    }\n  },\n\n  methods: {\n    drawChart() {\n      if (!chartsLib || !this.chartObject) return;\n      const data = getValidChartData(\n        chartsLib,\n        this.data,\n        this.isFirstRowLabels\n      );\n      if (data) this.chartObject.draw(data, this.options);\n    },\n  },\n};\n</script>\n","import Vue from 'vue';\n\nimport { loadGoogleCharts } from '../../src/lib/google-charts-loader';\nimport GChart from './components/GChart.vue';\n\n// Install the components\nexport function install(vue: typeof Vue) {\n  vue.component('GChart', GChart);\n}\n\n// Expose the components\nexport { loadGoogleCharts, GChart };\n\n/* -- Plugin definition & Auto-install -- */\n/* You shouldn't have to modify the code below */\n\n// Plugin\nconst plugin = {\n  version: process.env.VERSION,\n  install,\n};\n\nexport default plugin;\n\n// Auto-install\nlet GlobalVue = null;\nif (typeof window !== 'undefined') {\n  GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n  GlobalVue = global.Vue;\n}\nif (GlobalVue) {\n  GlobalVue.use(plugin);\n}\n"],"names":["chartsScriptUrl","chartsLoaderPromise","loadedPackages","Map","getChartsLoader","window","google","undefined","Promise","resolve","charts","foundScript","document","querySelector","script","createElement","src","type","head","append","addEventListener","loadGoogleCharts","version","packages","language","mapsApiKey","loader","settingsKey","join","has","get","loaderPromise","load","setOnLoadCallback","set","debounce","func","waitMilliseconds","timeoutId","nextInvokeTimeout","debouncedFunction","args","context","invokeFunction","apply","clearTimeout","setTimeout","getValidChartData","chartsLib","data","isFirstRowLabels","visualization","DataTable","DataView","Array","isArray","arrayToDataTable","createChartObject","chartObject","chartEl","chartType","chartEvents","createChartFunction","createChart","el","Error","fn","attachListeners","event","listener","Object","entries","events","addListener","name","props","String","required","default","Boolean","options","settings","Function","resizeDebounce","Number","watch","deep","handler","drawChart","$refs","chart","mounted","then","api","$emit","beforeDestroy","clearChart","methods","draw","install","vue","component","GChart","plugin","GlobalVue","Vue","global","use"],"mappings":"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"}