{"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      script.onload = () => {\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', 'controls'],\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    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(\n          'resize',\n          debounce(drawChart, props.resizeDebounce) as EventListener\n        );\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(\n          'resize',\n          debounce(drawChart, props.resizeDebounce) as EventListener\n        );\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","onload","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","onMounted","then","api","addEventListener","onBeforeUnmount","clearChart","removeEventListener","h","app","createApp","install","component","plugin","GlobalVue","Vue","use"],"mappings":"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"}