{"version":3,"file":"index.cjs","sources":["../src/lib/google-charts-loader.ts","../src/utils.ts","../src/lib/debounce.ts","../src/components/GChart.ts","../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","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","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  defineComponent,\n  ref,\n  h,\n  onMounted,\n  onBeforeUnmount,\n  watch,\n  PropType,\n} from 'vue';\n\nimport {\n  GoogleViz,\n  GoogleChartWrapper,\n  GoogleChartWrapperChartType,\n  GoogleChartOptions,\n  GoogleChartVersion,\n  GoogleChartLoaderOptions,\n  GoogleVizEvents,\n  GoogleDataTable,\n} from '../types';\n\nimport {\n  createChartObject,\n  getValidChartData,\n  ICreateChartFunction,\n} from '../utils';\n\nimport { loadGoogleCharts } from '../lib/google-charts-loader';\nimport { debounce } from '../lib/debounce';\n\nlet chartsLib: null | GoogleViz = null;\n\nexport const GChart = defineComponent({\n  name: 'GChart',\n  props: {\n    type: {\n      type: String as PropType<GoogleChartWrapperChartType>,\n      required: true,\n    },\n    data: {\n      type: [Array, Object, null] as PropType<\n        unknown[][] | GoogleDataTable | Record<string, any> | null\n      >,\n      default: () => [],\n    },\n    isFirstRowLabels: {\n      type: Boolean,\n      default: false,\n    },\n    options: {\n      type: Object as PropType<GoogleChartOptions>,\n      default: () => ({}),\n    },\n    version: {\n      type: String as PropType<GoogleChartVersion>,\n      default: 'current',\n    },\n    settings: {\n      type: Object as PropType<GoogleChartLoaderOptions>,\n      default: () => ({\n        packages: ['corechart', 'table'],\n      }),\n    },\n    events: {\n      type: Object as PropType<GoogleVizEvents | null>,\n      default: null,\n    },\n    createChart: {\n      type: Function as PropType<ICreateChartFunction>,\n      default: undefined,\n    },\n    resizeDebounce: {\n      type: Number,\n      default: 200,\n    },\n  },\n  setup(props, { emit }) {\n    const chartObject = ref<GoogleChartWrapper | null>(null);\n    const chartEl = ref<HTMLElement | null>(null);\n\n    function drawChart(): void {\n      if (chartsLib === null || chartObject.value === null) {\n        return;\n      }\n\n      const data = getValidChartData(\n        chartsLib,\n        props.data,\n        props.isFirstRowLabels\n      );\n      if (data !== null) {\n        chartObject.value?.draw(data, props.options);\n      }\n    }\n\n    watch(\n      () => props.data,\n      () => drawChart(),\n      { deep: true }\n    );\n\n    watch(\n      () => props.options,\n      () => drawChart(),\n      { deep: true }\n    );\n\n    watch(\n      () => props.type,\n      () => {\n        chartObject.value = createChartObject(\n          chartsLib,\n          chartObject.value,\n          chartEl.value,\n          props.type,\n          props.events,\n          props.createChart\n        );\n\n        drawChart();\n      }\n    );\n\n    // Keep a single reference so the same listener can be removed on unmount.\n    const onResize = debounce(drawChart, props.resizeDebounce) as EventListener;\n\n    onMounted(() => {\n      loadGoogleCharts(props.version, props.settings).then(api => {\n        if (api !== undefined) {\n          chartsLib = api;\n\n          chartObject.value = createChartObject(\n            chartsLib,\n            chartObject.value,\n            chartEl.value,\n            props.type,\n            props.events,\n            props.createChart\n          );\n\n          emit('ready', chartObject.value, api);\n\n          drawChart();\n        }\n      });\n\n      if (props.resizeDebounce > 0) {\n        window.addEventListener('resize', onResize);\n      }\n    });\n\n    onBeforeUnmount(() => {\n      if (\n        chartObject.value !== null &&\n        typeof chartObject.value.clearChart === 'function'\n      ) {\n        chartObject.value.clearChart();\n      }\n\n      if (props.resizeDebounce > 0) {\n        window.removeEventListener('resize', onResize);\n      }\n    });\n\n    return () => h('div', { ref: chartEl }, []);\n  },\n});\n","import { createApp } from 'vue';\n\nimport { loadGoogleCharts } from './lib/google-charts-loader';\nimport { GChart } from './components/GChart';\n\nconst app = createApp({});\n\n// Install the components\nexport function install() {\n  app.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}\n\nif (GlobalVue !== null && GlobalVue !== undefined) {\n  app.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","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","debounce","func","waitMilliseconds","timeoutId","nextInvokeTimeout","debouncedFunction","args","context","invokeFunction","apply","clearTimeout","setTimeout","GChart","defineComponent","name","props","String","required","default","Boolean","options","settings","Function","resizeDebounce","Number","setup","emit","ref","drawChart","value","draw","watch","deep","onResize","onMounted","then","api","onBeforeUnmount","clearChart","removeEventListener","h","app","createApp","install","component","plugin","GlobalVue","Vue","use"],"mappings":"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"}