{"version":3,"file":"SettingsPanel.jsx","sourceRoot":"lib/","sources":["panels/SettingsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import { requestIdle } from '@designable/shared'\nimport { observer } from '@formily/reactive-vue'\nimport { TextWidget, IconWidget } from '../widgets'\nimport { usePrefix, useWorkbench } from '../hooks'\nimport cls from 'classnames'\nimport { defineComponent, ref, watchEffect } from 'vue-demi'\n\nexport interface ISettingPanelProps {\n  title?: any\n  extra?: any\n}\n\nexport const SettingsPanel = observer(\n  defineComponent({\n    props: ['title', 'extra'],\n    setup(props, { slots }) {\n      const prefixRef = usePrefix('settings-panel')\n      const workbenchRef = useWorkbench()\n      const innerVisible = ref(true)\n      const pinning = ref(false)\n      const visible = ref(true)\n\n      watchEffect(() => {\n        if (visible.value || workbenchRef.value.type === 'DESIGNABLE') {\n          if (!innerVisible.value) {\n            requestIdle(() => {\n              requestAnimationFrame(() => {\n                innerVisible.value = true\n              })\n            })\n          }\n        }\n      })\n\n      return () => {\n        if (workbenchRef.value.type !== 'DESIGNABLE') {\n          if (innerVisible.value) innerVisible.value = false\n          return null\n        }\n        if (!visible.value) {\n          if (innerVisible) innerVisible.value = false\n          return (\n            <div\n              class={prefixRef.value + '-opener'}\n              onClick={() => {\n                visible.value = true\n              }}\n            >\n              <IconWidget infer=\"Setting\" size={'20px'} />\n            </div>\n          )\n        }\n\n        return (\n          <div class={cls(prefixRef.value, { pinning: pinning.value })}>\n            <div class={prefixRef.value + '-header'}>\n              <div class={prefixRef.value + '-header-title'}>\n                <TextWidget>{props.title}</TextWidget>\n              </div>\n              <div class={prefixRef.value + '-header-actions'}>\n                <div class={prefixRef.value + '-header-extra'}>\n                  {props.extra}\n                </div>\n                {!pinning.value && (\n                  <IconWidget\n                    infer=\"PushPinOutlined\"\n                    key={prefixRef.value + '-header-pin'}\n                    class={prefixRef.value + '-header-pin'}\n                    onClick={() => {\n                      pinning.value = !pinning.value\n                    }}\n                  />\n                )}\n                {pinning.value && (\n                  <IconWidget\n                    infer=\"PushPinFilled\"\n                    key={prefixRef.value + '-pin-filled'}\n                    class={prefixRef.value + '-pin-filled'}\n                    onClick={() => {\n                      pinning.value = !pinning.value\n                    }}\n                  />\n                )}\n                <IconWidget\n                  infer=\"Close\"\n                  class={prefixRef.value + '-header-close'}\n                  onClick={() => {\n                    visible.value = false\n                  }}\n                />\n              </div>\n            </div>\n            <div class={prefixRef.value + '-body'}>\n              {innerVisible.value && slots.default?.()}\n            </div>\n          </div>\n        )\n      }\n    },\n  })\n)\n"]}