{"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;qCAMb,YAAY,KAAG,MAAM;AAJjD;;;GAGG;AACH,wBAiDI","file":"state-handshake-plugin.d.ts","sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2019, 2021\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 =>\n  (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"]}