{"version":3,"sources":["components/date-picker/state-handshake-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,YAAY,MAAM,eAAe,CAAC;;AAEzC;;;GAGG;AACH,wBAgDE","file":"state-handshake-plugin.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2020\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { Instance as FlatpickrInstance } from 'flatpickr/dist/types/instance';\nimport { Plugin } from 'flatpickr/dist/types/options';\nimport BXDatePicker from './date-picker';\n\n/**\n * @param config Plugin configuration.\n * @returns A Flatpickr plugin to handshake states with `<bx-date-picker>`.\n */\nexport default (datePicker: BXDatePicker): Plugin => (fp: FlatpickrInstance) => {\n  /**\n   * Sets open state.\n   */\n  const setOpen = () => {\n    datePicker.open = true;\n  };\n\n  /**\n   * Sets closed state.\n   */\n  const setClosed = () => {\n    datePicker.open = false;\n  };\n\n  /**\n   * Propagates Flatpickr's `onChange` event to `<bx-date-picker>`.\n   * @param selectedDates The latest selected dates.\n   */\n  const handleChange = (selectedDates: Date[]) => {\n    const { eventChange } = datePicker.constructor as typeof BXDatePicker;\n    datePicker.dispatchEvent(\n      new CustomEvent(eventChange, {\n        bubbles: true,\n        cancelable: true,\n        composed: true,\n        detail: {\n          selectedDates,\n        },\n      })\n    );\n  };\n\n  /**\n   * Registers this Flatpickr plugin.\n   * @param calendar The Flatpickr instance.\n   */\n  const register = (_selectedDates, _value, calendar: FlatpickrInstance) => {\n    datePicker.calendar = calendar;\n    fp.loadedPlugins.push('carbonFlatpickrStateHandshakePlugin');\n  };\n\n  return {\n    onOpen: setOpen,\n    onClose: setClosed,\n    onChange: handleChange,\n    onReady: [register],\n  };\n};\n"]}