import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/projects/add-dialog/Metadata.vue");import { FormTextInput as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { FormTextArea as __nuxt_component_1 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { default as __nuxt_component_2 } from "/_nuxt/components/project/VisibilitySelect.vue"; import { FormButton as __nuxt_component_3 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; /* Injection by vite-plugin-vue-inspector Start */ import { createVNode as __createVNode,createElementVNode as __createElementVNode,createElementBlock as __createElementBlock } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29" function _interopVNode(vnode) { if (vnode && vnode.props && 'data-v-inspector' in vnode.props) { const data = vnode.props['data-v-inspector'] delete vnode.props['data-v-inspector'] Object.defineProperty(vnode.props, '__v_inspector', { value: data, enumerable: false }) } return vnode } function _createVNode(...args) { return _interopVNode(__createVNode(...args)) } function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) } function _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) } /* Injection by vite-plugin-vue-inspector End */ import { defineComponent as _defineComponent } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; import { useForm } from "/_nuxt/node_modules/.cache/vite/client/deps/vee-validate.js?v=e4f18c29"; import { SupportedProjectVisibility } from "/_nuxt/lib/projects/helpers/visibility.ts"; import { isRequired, isStringOfLength } from "/_nuxt/lib/common/helpers/validation.ts"; import { useMixpanel } from "/_nuxt/lib/core/composables/mp.ts"; import { useCreateProject } from "/_nuxt/lib/projects/composables/projectManagement.ts"; import { useLogger } from "/_nuxt/composables/logging.ts"; import { ref, computed, watch } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "ProjectsAddDialogMetadata", props: { supportGoBack: { type: Boolean, required: false }, workspaceId: { type: null, required: false } }, emits: ["created", "canceled", "back"], setup(__props, { expose: __expose, emit: __emit }) { __expose(); const props = __props; const emit = __emit; const createProject = useCreateProject(); const logger = useLogger(); const { handleSubmit, isSubmitting } = useForm(); const visibility = ref( props.workspaceId ? SupportedProjectVisibility.Workspace : SupportedProjectVisibility.Private ); const isLoading = ref(false); const mp = useMixpanel(); const isDisabled = computed(() => isSubmitting.value || isLoading.value); const onSubmit = handleSubmit(async (values) => { if (isLoading.value) return; try { isLoading.value = true; const newProject = await createProject({ name: values.name, description: values.description, visibility: visibility.value, ...props.workspaceId ? { workspaceId: props.workspaceId } : {} }); if (newProject?.id) { emit("created", { id: newProject.id }); mp.track("Stream Action", { type: "action", name: "create", // eslint-disable-next-line camelcase workspace_id: props.workspaceId }); } } catch (error) { logger.error("Failed to create project:", error); } finally { isLoading.value = false; } }); watch( () => props.workspaceId, (newVal, oldVal) => { if (newVal !== oldVal) { visibility.value = props.workspaceId ? SupportedProjectVisibility.Workspace : SupportedProjectVisibility.Private; } } ); const __returned__ = { props, emit, createProject, logger, handleSubmit, isSubmitting, visibility, isLoading, mp, isDisabled, onSubmit, get isRequired() { return isRequired; }, get isStringOfLength() { return isStringOfLength; } }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { class: "flex flex-col gap-y-4 mb-2", "data-v-inspector": "components/projects/add-dialog/Metadata.vue:3:5" }; const _hoisted_2 = { "data-v-inspector": "components/projects/add-dialog/Metadata.vue:24:7" }; const _hoisted_3 = { class: "flex justify-end gap-2 my-2", "data-v-inspector": "components/projects/add-dialog/Metadata.vue:33:5" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_FormTextInput = __nuxt_component_0; const _component_FormTextArea = __nuxt_component_1; const _component_ProjectVisibilitySelect = __nuxt_component_2; const _component_FormButton = __nuxt_component_3; return _openBlock(), _createElementBlock( "form", { class: "flex flex-col text-foreground", onSubmit: _cache[2] || (_cache[2] = (...args) => $setup.onSubmit && $setup.onSubmit(...args)), "data-v-inspector": "components/projects/add-dialog/Metadata.vue:2:3" }, [ _createElementVNode("div", _hoisted_1, [ _createVNode(_component_FormTextInput, { name: "name", label: "Project name", placeholder: "Name", color: "foundation", rules: [$setup.isRequired, $setup.isStringOfLength({ maxLength: 512 })], "auto-focus": "", autocomplete: "off", "show-label": "", "data-v-inspector": "components/projects/add-dialog/Metadata.vue:4:7" }, null, 8, ["rules"]), _createVNode(_component_FormTextArea, { name: "description", label: "Project description", placeholder: "Description", color: "foundation", size: "lg", "show-label": "", "show-optional": "", rules: [$setup.isStringOfLength({ maxLength: 65536 })], "data-v-inspector": "components/projects/add-dialog/Metadata.vue:14:7" }, null, 8, ["rules"]), _createElementVNode("div", _hoisted_2, [ _cache[3] || (_cache[3] = _createElementVNode( "h3", { class: "label mb-2", "data-v-inspector": "components/projects/add-dialog/Metadata.vue:25:9" }, "Access permissions", -1 /* CACHED */ )), _createVNode(_component_ProjectVisibilitySelect, { modelValue: $setup.visibility, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.visibility = $event), "mount-menu-on-body": "", "workspace-id": $props.workspaceId, "data-v-inspector": "components/projects/add-dialog/Metadata.vue:26:9" }, null, 8, ["modelValue", "workspace-id"]) ]) ]), _createElementVNode("div", _hoisted_3, [ _createVNode(_component_FormButton, { type: "button", color: "outline", disabled: $setup.isDisabled, onClick: _cache[1] || (_cache[1] = () => $props.supportGoBack ? _ctx.$emit("back") : _ctx.$emit("canceled")), "data-v-inspector": "components/projects/add-dialog/Metadata.vue:34:7" }, { default: _withCtx(() => [ _createTextVNode( _toDisplayString($props.supportGoBack ? "Back" : "Cancel"), 1 /* TEXT */ ) ]), _: 1 /* STABLE */ }, 8, ["disabled"]), _createVNode(_component_FormButton, { type: "submit", color: "primary", loading: $setup.isDisabled, "data-v-inspector": "components/projects/add-dialog/Metadata.vue:42:7" }, { default: _withCtx(() => [..._cache[4] || (_cache[4] = [ _createTextVNode( " Create ", -1 /* CACHED */ ) ])]), _: 1 /* STABLE */ }, 8, ["loading"]) ]) ], 32 /* NEED_HYDRATION */ ); } _sfc_main.__hmrId = "6e43eb74"; typeof __VUE_HMR_RUNTIME__ !== "undefined" && __VUE_HMR_RUNTIME__.createRecord(_sfc_main.__hmrId, _sfc_main); import.meta.hot.on("file-changed", ({ file }) => { __VUE_HMR_RUNTIME__.CHANGED_FILE = file; }); import.meta.hot.accept((mod) => { if (!mod) return; const { default: updated, _rerender_only } = mod; if (_rerender_only) { __VUE_HMR_RUNTIME__.rerender(updated.__hmrId, updated.render); } else { __VUE_HMR_RUNTIME__.reload(updated.__hmrId, updated); } }); import _export_sfc from "/_nuxt/@id/__x00__plugin-vue:export-helper"; export default /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "D:/speckle-server/packages/frontend-2/components/projects/add-dialog/Metadata.vue"]]); //# sourceMappingURL=data:application/json;base64,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QWEsb0JBQWlCO0FBQUE7OztNQUluRCxvQkFZTSxPQVpOLFlBWU07QUFBQSxRQVhKLGFBT2E7QUFBQSxVQU5YLE1BQUs7QUFBQSxVQUNMLE9BQU07QUFBQSxVQUNMLFVBQVU7QUFBQSxVQUNWLFNBQUssZ0NBQVMsdUJBQWdCLFdBQUssVUFBVyxXQUFLO0FBQUEsVUFBZSxvQkFBaUI7QUFBQTs0QkFFcEYsTUFBdUM7QUFBQTsrQkFBcEMsdUJBQWE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7OztRQUVsQixhQUVhO0FBQUEsVUFGRCxNQUFLO0FBQUEsVUFBUyxPQUFNO0FBQUEsVUFBVyxTQUFTO0FBQUEsVUFBWSxvQkFBaUI7QUFBQTs0QkFBbUQsTUFFcEk7QUFBQTtjQUZvSTtBQUFBLGNBRXBJO0FBQUE7QUFBQTtBQUFBIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJNZXRhZGF0YS52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gIDxmb3JtIGNsYXNzPVwiZmxleCBmbGV4LWNvbCB0ZXh0LWZvcmVncm91bmRcIiBAc3VibWl0PVwib25TdWJtaXRcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9wcm9qZWN0cy9hZGQtZGlhbG9nL01ldGFkYXRhLnZ1ZToyOjNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC15LTQgbWItMlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjM6NVwiPlxyXG4gICAgICA8Rm9ybVRleHRJbnB1dFxyXG4gICAgICAgIG5hbWU9XCJuYW1lXCJcclxuICAgICAgICBsYWJlbD1cIlByb2plY3QgbmFtZVwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJOYW1lXCJcclxuICAgICAgICBjb2xvcj1cImZvdW5kYXRpb25cIlxyXG4gICAgICAgIDpydWxlcz1cIltpc1JlcXVpcmVkLCBpc1N0cmluZ09mTGVuZ3RoKHsgbWF4TGVuZ3RoOiA1MTIgfSldXCJcclxuICAgICAgICBhdXRvLWZvY3VzXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBzaG93LWxhYmVsIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjQ6N1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxGb3JtVGV4dEFyZWFcclxuICAgICAgICBuYW1lPVwiZGVzY3JpcHRpb25cIlxyXG4gICAgICAgIGxhYmVsPVwiUHJvamVjdCBkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJEZXNjcmlwdGlvblwiXHJcbiAgICAgICAgY29sb3I9XCJmb3VuZGF0aW9uXCJcclxuICAgICAgICBzaXplPVwibGdcIlxyXG4gICAgICAgIHNob3ctbGFiZWxcclxuICAgICAgICBzaG93LW9wdGlvbmFsXHJcbiAgICAgICAgOnJ1bGVzPVwiW2lzU3RyaW5nT2ZMZW5ndGgoeyBtYXhMZW5ndGg6IDY1NTM2IH0pXVwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjE0OjdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8ZGl2IGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjI0OjdcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJsYWJlbCBtYi0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdHMvYWRkLWRpYWxvZy9NZXRhZGF0YS52dWU6MjU6OVwiPkFjY2VzcyBwZXJtaXNzaW9uczwvaDM+XHJcbiAgICAgICAgPFByb2plY3RWaXNpYmlsaXR5U2VsZWN0XHJcbiAgICAgICAgICB2LW1vZGVsPVwidmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICBtb3VudC1tZW51LW9uLWJvZHlcclxuICAgICAgICAgIDp3b3Jrc3BhY2UtaWQ9XCJ3b3Jrc3BhY2VJZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlOjI2OjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiBteS0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdHMvYWRkLWRpYWxvZy9NZXRhZGF0YS52dWU6MzM6NVwiPlxyXG4gICAgICA8Rm9ybUJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNvbG9yPVwib3V0bGluZVwiXHJcbiAgICAgICAgOmRpc2FibGVkPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgQGNsaWNrPVwiKCkgPT4gKHN1cHBvcnRHb0JhY2sgPyAkZW1pdCgnYmFjaycpIDogJGVtaXQoJ2NhbmNlbGVkJykpXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdHMvYWRkLWRpYWxvZy9NZXRhZGF0YS52dWU6MzQ6N1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBzdXBwb3J0R29CYWNrID8gJ0JhY2snIDogJ0NhbmNlbCcgfX1cclxuICAgICAgPC9Gb3JtQnV0dG9uPlxyXG4gICAgICA8Rm9ybUJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY29sb3I9XCJwcmltYXJ5XCIgOmxvYWRpbmc9XCJpc0Rpc2FibGVkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvcHJvamVjdHMvYWRkLWRpYWxvZy9NZXRhZGF0YS52dWU6NDI6N1wiPlxyXG4gICAgICAgIENyZWF0ZVxyXG4gICAgICA8L0Zvcm1CdXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XHJcbmltcG9ydCB0eXBlIHsgTWF5YmVOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAc3BlY2tsZS9zaGFyZWQnXHJcbmltcG9ydCB7IHVzZUZvcm0gfSBmcm9tICd2ZWUtdmFsaWRhdGUnXHJcbmltcG9ydCB7IFN1cHBvcnRlZFByb2plY3RWaXNpYmlsaXR5IH0gZnJvbSAnfi9saWIvcHJvamVjdHMvaGVscGVycy92aXNpYmlsaXR5J1xyXG5pbXBvcnQgeyBpc1JlcXVpcmVkLCBpc1N0cmluZ09mTGVuZ3RoIH0gZnJvbSAnfn4vbGliL2NvbW1vbi9oZWxwZXJzL3ZhbGlkYXRpb24nXHJcbmltcG9ydCB7IHVzZU1peHBhbmVsIH0gZnJvbSAnfn4vbGliL2NvcmUvY29tcG9zYWJsZXMvbXAnXHJcbmltcG9ydCB7IHVzZUNyZWF0ZVByb2plY3QgfSBmcm9tICd+fi9saWIvcHJvamVjdHMvY29tcG9zYWJsZXMvcHJvamVjdE1hbmFnZW1lbnQnXHJcblxyXG50eXBlIEZvcm1WYWx1ZXMgPSB7XHJcbiAgbmFtZTogc3RyaW5nXHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcclxufVxyXG5cclxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczx7XHJcbiAgc3VwcG9ydEdvQmFjaz86IGJvb2xlYW5cclxuICB3b3Jrc3BhY2VJZD86IE1heWJlTnVsbE9yVW5kZWZpbmVkPHN0cmluZz5cclxufT4oKVxyXG5cclxuY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPHtcclxuICAoZTogJ2NyZWF0ZWQnLCBwcm9qZWN0OiB7IGlkOiBzdHJpbmcgfSk6IHZvaWRcclxuICAoZTogJ2NhbmNlbGVkJyk6IHZvaWRcclxuICAoZTogJ2JhY2snKTogdm9pZFxyXG59PigpXHJcblxyXG5jb25zdCBjcmVhdGVQcm9qZWN0ID0gdXNlQ3JlYXRlUHJvamVjdCgpXHJcbmNvbnN0IGxvZ2dlciA9IHVzZUxvZ2dlcigpXHJcbmNvbnN0IHsgaGFuZGxlU3VibWl0LCBpc1N1Ym1pdHRpbmcgfSA9IHVzZUZvcm08Rm9ybVZhbHVlcz4oKVxyXG5cclxuY29uc3QgdmlzaWJpbGl0eSA9IHJlZihcclxuICBwcm9wcy53b3Jrc3BhY2VJZFxyXG4gICAgPyBTdXBwb3J0ZWRQcm9qZWN0VmlzaWJpbGl0eS5Xb3Jrc3BhY2VcclxuICAgIDogU3VwcG9ydGVkUHJvamVjdFZpc2liaWxpdHkuUHJpdmF0ZVxyXG4pXHJcbmNvbnN0IGlzTG9hZGluZyA9IHJlZihmYWxzZSlcclxuXHJcbmNvbnN0IG1wID0gdXNlTWl4cGFuZWwoKVxyXG5cclxuY29uc3QgaXNEaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IGlzU3VibWl0dGluZy52YWx1ZSB8fCBpc0xvYWRpbmcudmFsdWUpXHJcblxyXG5jb25zdCBvblN1Ym1pdCA9IGhhbmRsZVN1Ym1pdChhc3luYyAodmFsdWVzKSA9PiB7XHJcbiAgaWYgKGlzTG9hZGluZy52YWx1ZSkgcmV0dXJuIC8vIFByZXZlbnQgc3VibWlzc2lvbiB3aGlsZSBjbG9zaW5nXHJcblxyXG4gIHRyeSB7XHJcbiAgICBpc0xvYWRpbmcudmFsdWUgPSB0cnVlXHJcblxyXG4gICAgY29uc3QgbmV3UHJvamVjdCA9IGF3YWl0IGNyZWF0ZVByb2plY3Qoe1xyXG4gICAgICBuYW1lOiB2YWx1ZXMubmFtZSxcclxuICAgICAgZGVzY3JpcHRpb246IHZhbHVlcy5kZXNjcmlwdGlvbixcclxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJpbGl0eS52YWx1ZSxcclxuICAgICAgLi4uKHByb3BzLndvcmtzcGFjZUlkID8geyB3b3Jrc3BhY2VJZDogcHJvcHMud29ya3NwYWNlSWQgfSA6IHt9KVxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAobmV3UHJvamVjdD8uaWQpIHtcclxuICAgICAgZW1pdCgnY3JlYXRlZCcsIHsgaWQ6IG5ld1Byb2plY3QuaWQgfSlcclxuICAgICAgbXAudHJhY2soJ1N0cmVhbSBBY3Rpb24nLCB7XHJcbiAgICAgICAgdHlwZTogJ2FjdGlvbicsXHJcbiAgICAgICAgbmFtZTogJ2NyZWF0ZScsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxyXG4gICAgICAgIHdvcmtzcGFjZV9pZDogcHJvcHMud29ya3NwYWNlSWRcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gY3JlYXRlIHByb2plY3Q6JywgZXJyb3IpXHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGlzTG9hZGluZy52YWx1ZSA9IGZhbHNlXHJcbiAgfVxyXG59KVxyXG5cclxud2F0Y2goXHJcbiAgKCkgPT4gcHJvcHMud29ya3NwYWNlSWQsXHJcbiAgKG5ld1ZhbCwgb2xkVmFsKSA9PiB7XHJcbiAgICBpZiAobmV3VmFsICE9PSBvbGRWYWwpIHtcclxuICAgICAgdmlzaWJpbGl0eS52YWx1ZSA9IHByb3BzLndvcmtzcGFjZUlkXHJcbiAgICAgICAgPyBTdXBwb3J0ZWRQcm9qZWN0VmlzaWJpbGl0eS5Xb3Jrc3BhY2VcclxuICAgICAgICA6IFN1cHBvcnRlZFByb2plY3RWaXNpYmlsaXR5LlByaXZhdGVcclxuICAgIH1cclxuICB9XHJcbilcclxuPC9zY3JpcHQ+XHJcbiJdLCJmaWxlIjoiRDovc3BlY2tsZS1zZXJ2ZXIvcGFja2FnZXMvZnJvbnRlbmQtMi9jb21wb25lbnRzL3Byb2plY3RzL2FkZC1kaWFsb2cvTWV0YWRhdGEudnVlIn0=