{"version":3,"file":"function-call.mjs","sources":["../../../../../../../packages/components/dialog/src/function-call.tsx"],"sourcesContent":["import { extend, inBrowser, mountComponent } from '@xzx-design/utils'\nimport { usePopupState } from '@xzx-design/hooks'\nimport Dialog from './dialog'\n\nimport type { ComponentInstance } from '@xzx-design/utils'\nimport type { DialogAction, DialogOptions } from './types'\n\nlet instance: ComponentInstance\n\nconst DEFAULT_OPTIONS = {\n  title: '',\n  width: '',\n  theme: null,\n  message: '',\n  overlay: true,\n  callback: null,\n  teleport: 'body',\n  className: '',\n  allowHtml: false,\n  lockScroll: true,\n  transition: undefined,\n  beforeClose: null,\n  overlayClass: '',\n  overlayStyle: undefined,\n  messageAlign: '',\n  cancelButtonText: '',\n  cancelButtonColor: null,\n  cancelButtonDisabled: false,\n  confirmButtonText: '',\n  confirmButtonColor: null,\n  confirmButtonDisabled: false,\n  showConfirmButton: true,\n  showCancelButton: false,\n  closeOnPopstate: true,\n  closeOnClickOverlay: false,\n} as const\n\nlet currentOptions = extend({}, DEFAULT_OPTIONS)\n\nfunction initInstance() {\n  const Wrapper = {\n    setup() {\n      const { state, toggle } = usePopupState()\n      return () => <Dialog {...state} onUpdate:show={toggle} />\n    },\n  }\n\n  ;({ instance } = mountComponent(Wrapper))\n}\n\n/**\n * Display a message prompt dialog with a default confirm button\n */\nexport function showDialog(\n  options: DialogOptions\n): Promise<DialogAction | undefined> {\n  /* istanbul ignore if */\n  if (!inBrowser) {\n    return Promise.resolve(undefined)\n  }\n\n  return new Promise((resolve, reject) => {\n    if (!instance) {\n      initInstance()\n    }\n\n    instance.open(\n      extend({}, currentOptions, options, {\n        callback: (action?: DialogAction) => {\n          ;(action === 'confirm' ? resolve : reject)(action)\n        },\n      })\n    )\n  })\n}\n\n/**\n * Modify the default configuration that affects all `showDialog` calls\n */\nexport const setDialogDefaultOptions = (options: DialogOptions) => {\n  extend(currentOptions, options)\n}\n\n/**\n * Reset the default configuration that affects all `showDialog` calls\n */\nexport const resetDialogDefaultOptions = () => {\n  currentOptions = extend({}, DEFAULT_OPTIONS)\n}\n\n/**\n * Display a message confirmation dialog with default confirm and cancel buttons\n */\nexport const showConfirmDialog = (options: DialogOptions) =>\n  showDialog(extend({ showCancelButton: true }, options))\n\n/**\n * Close the currently displayed dialog\n */\nexport const closeDialog = () => {\n  if (instance) {\n    instance.toggle(false)\n  }\n}\n"],"names":["instance","DEFAULT_OPTIONS","title","width","theme","message","overlay","callback","teleport","className","allowHtml","lockScroll","transition","undefined","beforeClose","overlayClass","overlayStyle","messageAlign","cancelButtonText","cancelButtonColor","cancelButtonDisabled","confirmButtonText","confirmButtonColor","confirmButtonDisabled","showConfirmButton","showCancelButton","closeOnPopstate","closeOnClickOverlay","currentOptions","extend","initInstance","Wrapper","setup","state","toggle","usePopupState","_createVNode","Dialog","_mergeProps","mountComponent","showDialog","options","inBrowser","Promise","resolve","reject","open","action","setDialogDefaultOptions","resetDialogDefaultOptions","showConfirmDialog","closeDialog"],"mappings":"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"}