{"version":3,"file":"Designer.jsx","sourceRoot":"lib/","sources":["containers/Designer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAyD;AACzD,sCAAiD;AAEjD,sCAAwC;AACxC,oDAAkD;AAClD,mCAAiC;AACjC,8CAAiC;AACjC,qCAQiB;AAEjB,qBAAc,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAE9B,QAAA,QAAQ,GAAG,IAAA,0BAAe,EAAC;IACtC,KAAK,EAAE;QACL,MAAM,EAAE;YACN,IAAI,EAAE,MAA4C;SACnD;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAA2C,EAAE,OAAO,EAAE,OAAO,EAAE;QAC9E,SAAS,EAAE,EAAE,IAAI,EAAE,MAA+C,EAAE,OAAO,EAAE,KAAK,EAAE;QACpF,SAAS,EAAE,EAAE,IAAI,EAAE,MAA+C,EAAE,OAAO,EAAE,cAAQ,CAAC,EAAE;KACzF;IACD,KAAK,EAAL,UAAM,KAAK,EAAE,EAAS;YAAP,KAAK,WAAA;QAClB,IAAM,MAAM,GAAG,IAAA,yBAAW,GAAE,CAAA;QAC5B,IAAM,WAAW,GAAG,IAAA,cAAG,EAAgB,IAAI,CAAC,CAAA;QAE5C,IAAA,kBAAO,EAAC,8BAAoB,EAAE,IAAA,gBAAK,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;QAErD,IAAA,sBAAW,EAAC;YACV,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,IAAI,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,EAAE;oBACrC,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,KAAK,EAAE;wBACtC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;qBAC5B;iBACF;gBACD,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;gBACpB,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAA;aACjC;QACH,CAAC,CAAC,CAAA;QAEF,IAAA,0BAAe,EAAC;YACd,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;aACvB;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,KAAK;YACd,MAAM,IAAI,KAAK,CACb,iDAAiD,CAClD,CAAA;QAEH,OAAO;;YACL,OAAO,CACL,CAAC,eAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAC7D;UAAA,CAAC,MAAA,KAAK,CAAC,OAAO,qDAAI,CAClB;UAAA,CAAC,qBAAW,CAAC,AAAD,EACd;QAAA,EAAE,eAAM,CAAC,CACV,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA","sourcesContent":["import { Engine, GlobalRegistry } from '@designable/core'\nimport { DesignerEngineSymbol } from '../context'\nimport { IDesignerProps } from '../types'\nimport { GhostWidget } from '../widgets'\nimport { useDesigner } from '../hooks/useDesigner'\nimport { Layout } from './Layout'\nimport * as icons from '../icons'\nimport {\n  defineComponent,\n  onBeforeUnmount,\n  provide,\n  ref,\n  toRef,\n  PropType,\n  watchEffect,\n} from 'vue-demi'\n\nGlobalRegistry.registerDesignerIcons(icons)\n\nexport const Designer = defineComponent({\n  props: {\n    engine: {\n      type: Object as PropType<IDesignerProps['engine']>,\n    },\n    theme: { type: String as PropType<IDesignerProps['theme']>, default: 'light' },\n    prefixCls: { type: String as PropType<IDesignerProps['prefixCls']>, default: 'dn-' },\n    variables: { type: Object as PropType<IDesignerProps['variables']>, default: () => { } }\n  },\n  setup(props, { slots }) {\n    const engine = useDesigner()\n    const refInstance = ref<Engine | null>(null)\n\n    provide(DesignerEngineSymbol, toRef(props, 'engine'))\n\n    watchEffect(() => {\n      if (props.engine) {\n        if (props.engine && refInstance.value) {\n          if (props.engine !== refInstance.value) {\n            refInstance.value.unmount()\n          }\n        }\n        props.engine.mount()\n        refInstance.value = props.engine\n      }\n    })\n\n    onBeforeUnmount(() => {\n      if (props.engine) {\n        props.engine.unmount()\n      }\n    })\n\n    if (engine.value)\n      throw new Error(\n        'There can only be one Designable Engine Context'\n      )\n\n    return () => {\n      return (\n        <Layout {...{ theme: props.theme, prefixCls: props.prefixCls }}>\n          {slots.default?.()}\n          <GhostWidget />\n        </Layout>\n      )\n    }\n  },\n})\n"]}