import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/form/select/ServerRoles.vue");import { FormSelectBase as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; /* Injection by vite-plugin-vue-inspector Start */ import { createElementBlock as __createElementBlock,createElementVNode as __createElementVNode,createBlock as __createBlock } 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 _createElementBlock(...args) { return _interopVNode(__createElementBlock(...args)) } function _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) } function _createBlock(...args) { return _interopVNode(__createBlock(...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 { Roles, RoleInfo } from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/index.js"; import { useFormSelectChildInternals } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { ref, useId, toRefs, computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "FormSelectServerRoles", props: { multiple: Boolean, modelValue: { type: [String, Array], default: void 0 }, allowGuest: Boolean, allowAdmin: Boolean, allowArchived: Boolean, fullyControlValue: Boolean, showLabel: Boolean, name: String }, emits: ["update:modelValue"], setup(__props, { expose: __expose, emit: __emit }) { __expose(); const emit = __emit; const props = __props; const elementToWatchForChanges = ref(null); const itemContainer = ref(null); const labelId = useId(); const buttonId = useId(); const { selectedValue, isMultiItemArrayValue, hiddenSelectedItemCount, firstItem } = useFormSelectChildInternals({ props: toRefs(props), emit, dynamicVisibility: { elementToWatchForChanges, itemContainer } }); const roles = computed( () => Object.values(Roles.Server).filter((r) => { if (r === Roles.Server.Admin) return props.allowAdmin; if (r === Roles.Server.ArchivedUser) return props.allowArchived; return true; }) ); const disabledItemPredicate = (item) => { if (item === Roles.Server.Guest) return !props.allowGuest; return false; }; const __returned__ = { emit, props, elementToWatchForChanges, itemContainer, labelId, buttonId, selectedValue, isMultiItemArrayValue, hiddenSelectedItemCount, firstItem, roles, disabledItemPredicate, get RoleInfo() { return RoleInfo; } }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { key: 0, ref: "elementToWatchForChanges", class: "flex items-center space-x-0.5", "data-v-inspector": "components/form/select/ServerRoles.vue:24:9" }; const _hoisted_2 = { ref: "itemContainer", class: "flex flex-wrap overflow-hidden space-x-0.5 h-6", "data-v-inspector": "components/form/select/ServerRoles.vue:25:11" }; const _hoisted_3 = { key: 0, class: "text-foreground-2 normal", "data-v-inspector": "components/form/select/ServerRoles.vue:33:11" }; const _hoisted_4 = { key: 1, class: "truncate text-foreground", "data-v-inspector": "components/form/select/ServerRoles.vue:39:9" }; const _hoisted_5 = { class: "flex flex-col space-y-0.5", "data-v-inspector": "components/form/select/ServerRoles.vue:45:7" }; const _hoisted_6 = { class: "truncate font-medium", "data-v-inspector": "components/form/select/ServerRoles.vue:46:9" }; const _hoisted_7 = { class: "text-body-2xs text-foreground-2", "data-v-inspector": "components/form/select/ServerRoles.vue:49:9" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_FormSelectBase = __nuxt_component_0; return _openBlock(), _createBlock(_component_FormSelectBase, { modelValue: $setup.selectedValue, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.selectedValue = $event), items: $setup.roles, multiple: $props.multiple, "disabled-item-predicate": $setup.disabledItemPredicate, "disabled-item-tooltip": !$props.allowGuest ? "The Guest role isn't enabled on the server" : "", name: $props.name ?? "serverRoles", label: "Role", "show-label": $props.showLabel, class: "min-w-[110px]", "fully-control-value": $props.fullyControlValue, "label-id": $setup.labelId, "button-id": $setup.buttonId, "mount-menu-on-body": "", "data-v-inspector": "components/form/select/ServerRoles.vue:2:3" }, { "nothing-selected": _withCtx(() => [ _createTextVNode( _toDisplayString($props.multiple ? "Select roles" : "Select role"), 1 /* TEXT */ ) ]), "something-selected": _withCtx(({ value }) => [ $setup.isMultiItemArrayValue(value) ? (_openBlock(), _createElementBlock( "div", _hoisted_1, [ _createElementVNode( "div", _hoisted_2, [ (_openBlock(true), _createElementBlock( _Fragment, null, _renderList(value, (item, i) => { return _openBlock(), _createElementBlock( "div", { key: item, class: "text-foreground", "data-v-inspector": "components/form/select/ServerRoles.vue:29:13" }, _toDisplayString($setup.RoleInfo.Server[item].title + (i < value.length - 1 ? ", " : "")), 1 /* TEXT */ ); }), 128 /* KEYED_FRAGMENT */ )) ], 512 /* NEED_PATCH */ ), $setup.hiddenSelectedItemCount > 0 ? (_openBlock(), _createElementBlock( "div", _hoisted_3, " +" + _toDisplayString($setup.hiddenSelectedItemCount), 1 /* TEXT */ )) : _createCommentVNode("v-if", true) ], 512 /* NEED_PATCH */ )) : (_openBlock(), _createElementBlock( "div", _hoisted_4, _toDisplayString($setup.RoleInfo.Server[$setup.firstItem(value)].title), 1 /* TEXT */ )) ]), option: _withCtx(({ item }) => [ _createElementVNode("div", _hoisted_5, [ _createElementVNode( "span", _hoisted_6, _toDisplayString($setup.RoleInfo.Server[$setup.firstItem(item)].title), 1 /* TEXT */ ), _createElementVNode( "span", _hoisted_7, _toDisplayString($setup.RoleInfo.Server[$setup.firstItem(item)].description), 1 /* TEXT */ ) ]) ]), _: 1 /* STABLE */ }, 8, ["modelValue", "items", "multiple", "disabled-item-tooltip", "name", "show-label", "fully-control-value", "label-id", "button-id"]); } _sfc_main.__hmrId = "fb15e9ac"; 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/form/select/ServerRoles.vue"]]); //# sourceMappingURL=data:application/json;base64,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STtBQUFBLE1BQ3ZCLG9CQU9NLE9BUE4sWUFPTTtBQUFBLFFBTko7QUFBQSxVQUVPO0FBQUEsVUFGUDtBQUFBLFVBRU8saUJBREYsZ0JBQVMsT0FBTyxpQkFBVSxJQUFJLEdBQUcsS0FBSztBQUFBO0FBQUE7QUFBQTtBQUFBLFFBRTNDO0FBQUEsVUFFTztBQUFBLFVBRlA7QUFBQSxVQUVPLGlCQURGLGdCQUFTLE9BQU8saUJBQVUsSUFBSSxHQUFHLFdBQVc7QUFBQTtBQUFBO0FBQUE7QUFBQSIsIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiU2VydmVyUm9sZXMudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8Rm9ybVNlbGVjdEJhc2VcclxuICAgIHYtbW9kZWw9XCJzZWxlY3RlZFZhbHVlXCJcclxuICAgIDppdGVtcz1cInJvbGVzXCJcclxuICAgIDptdWx0aXBsZT1cIm11bHRpcGxlXCJcclxuICAgIDpkaXNhYmxlZC1pdGVtLXByZWRpY2F0ZT1cImRpc2FibGVkSXRlbVByZWRpY2F0ZVwiXHJcbiAgICA6ZGlzYWJsZWQtaXRlbS10b29sdGlwPVwiXHJcbiAgICAgICFhbGxvd0d1ZXN0ID8gJ1RoZSBHdWVzdCByb2xlIGlzblxcJ3QgZW5hYmxlZCBvbiB0aGUgc2VydmVyJyA6ICcnXHJcbiAgICBcIlxyXG4gICAgOm5hbWU9XCJuYW1lID8/ICdzZXJ2ZXJSb2xlcydcIlxyXG4gICAgbGFiZWw9XCJSb2xlXCJcclxuICAgIDpzaG93LWxhYmVsPVwic2hvd0xhYmVsXCJcclxuICAgIGNsYXNzPVwibWluLXctWzExMHB4XVwiXHJcbiAgICA6ZnVsbHktY29udHJvbC12YWx1ZT1cImZ1bGx5Q29udHJvbFZhbHVlXCJcclxuICAgIDpsYWJlbC1pZD1cImxhYmVsSWRcIlxyXG4gICAgOmJ1dHRvbi1pZD1cImJ1dHRvbklkXCJcclxuICAgIG1vdW50LW1lbnUtb24tYm9keSBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6MjozXCJcclxuICA+XHJcbiAgICA8dGVtcGxhdGUgI25vdGhpbmctc2VsZWN0ZWQ+XHJcbiAgICAgIHt7IG11bHRpcGxlID8gJ1NlbGVjdCByb2xlcycgOiAnU2VsZWN0IHJvbGUnIH19XHJcbiAgICA8L3RlbXBsYXRlPlxyXG4gICAgPHRlbXBsYXRlICNzb21ldGhpbmctc2VsZWN0ZWQ9XCJ7IHZhbHVlIH1cIj5cclxuICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpc011bHRpSXRlbUFycmF5VmFsdWUodmFsdWUpXCI+XHJcbiAgICAgICAgPGRpdiByZWY9XCJlbGVtZW50VG9XYXRjaEZvckNoYW5nZXNcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMC41XCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjI0OjlcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgcmVmPVwiaXRlbUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgb3ZlcmZsb3ctaGlkZGVuIHNwYWNlLXgtMC41IGgtNlwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL2Zvcm0vc2VsZWN0L1NlcnZlclJvbGVzLnZ1ZToyNToxMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgdi1mb3I9XCIoaXRlbSwgaSkgaW4gdmFsdWVcIiA6a2V5PVwiaXRlbVwiIGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjI5OjEzXCI+XHJcbiAgICAgICAgICAgICAge3sgUm9sZUluZm8uU2VydmVyW2l0ZW1dLnRpdGxlICsgKGkgPCB2YWx1ZS5sZW5ndGggLSAxID8gJywgJyA6ICcnKSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiB2LWlmPVwiaGlkZGVuU2VsZWN0ZWRJdGVtQ291bnQgPiAwXCIgY2xhc3M9XCJ0ZXh0LWZvcmVncm91bmQtMiBub3JtYWxcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6MzM6MTFcIj5cclxuICAgICAgICAgICAgK3t7IGhpZGRlblNlbGVjdGVkSXRlbUNvdW50IH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJ1bmNhdGUgdGV4dC1mb3JlZ3JvdW5kXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjM5OjlcIj5cclxuICAgICAgICAgIHt7IFJvbGVJbmZvLlNlcnZlcltmaXJzdEl0ZW0odmFsdWUpXS50aXRsZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC90ZW1wbGF0ZT5cclxuICAgIDx0ZW1wbGF0ZSAjb3B0aW9uPVwieyBpdGVtIH1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc3BhY2UteS0wLjVcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6NDU6N1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGUgZm9udC1tZWRpdW1cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy9mb3JtL3NlbGVjdC9TZXJ2ZXJSb2xlcy52dWU6NDY6OVwiPlxyXG4gICAgICAgICAge3sgUm9sZUluZm8uU2VydmVyW2ZpcnN0SXRlbShpdGVtKV0udGl0bGUgfX1cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJvZHktMnhzIHRleHQtZm9yZWdyb3VuZC0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlOjQ5OjlcIj5cclxuICAgICAgICAgIHt7IFJvbGVJbmZvLlNlcnZlcltmaXJzdEl0ZW0oaXRlbSldLmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGVtcGxhdGU+XHJcbiAgPC9Gb3JtU2VsZWN0QmFzZT5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgUm9sZXMsIFJvbGVJbmZvIH0gZnJvbSAnQHNwZWNrbGUvc2hhcmVkJ1xyXG5pbXBvcnQgdHlwZSB7IE51bGxhYmxlLCBTZXJ2ZXJSb2xlcyB9IGZyb20gJ0BzcGVja2xlL3NoYXJlZCdcclxuaW1wb3J0IHsgdXNlRm9ybVNlbGVjdENoaWxkSW50ZXJuYWxzIH0gZnJvbSAnQHNwZWNrbGUvdWktY29tcG9uZW50cydcclxuaW1wb3J0IHR5cGUgeyBQcm9wVHlwZSB9IGZyb20gJ3Z1ZSdcclxuXHJcbnR5cGUgVmFsdWVUeXBlID0gU2VydmVyUm9sZXMgfCBTZXJ2ZXJSb2xlc1tdIHwgdW5kZWZpbmVkXHJcblxyXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8e1xyXG4gIChlOiAndXBkYXRlOm1vZGVsVmFsdWUnLCB2OiBWYWx1ZVR5cGUpOiB2b2lkXHJcbn0+KClcclxuXHJcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xyXG4gIG11bHRpcGxlOiBCb29sZWFuLFxyXG4gIG1vZGVsVmFsdWU6IHtcclxuICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5XSBhcyBQcm9wVHlwZTxWYWx1ZVR5cGU+LFxyXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgfSxcclxuICBhbGxvd0d1ZXN0OiBCb29sZWFuLFxyXG4gIGFsbG93QWRtaW46IEJvb2xlYW4sXHJcbiAgYWxsb3dBcmNoaXZlZDogQm9vbGVhbixcclxuICBmdWxseUNvbnRyb2xWYWx1ZTogQm9vbGVhbixcclxuICBzaG93TGFiZWw6IEJvb2xlYW4sXHJcbiAgbmFtZTogU3RyaW5nXHJcbn0pXHJcblxyXG5jb25zdCBlbGVtZW50VG9XYXRjaEZvckNoYW5nZXMgPSByZWYobnVsbCBhcyBOdWxsYWJsZTxIVE1MRWxlbWVudD4pXHJcbmNvbnN0IGl0ZW1Db250YWluZXIgPSByZWYobnVsbCBhcyBOdWxsYWJsZTxIVE1MRWxlbWVudD4pXHJcbmNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpXHJcbmNvbnN0IGJ1dHRvbklkID0gdXNlSWQoKVxyXG5cclxuY29uc3QgeyBzZWxlY3RlZFZhbHVlLCBpc011bHRpSXRlbUFycmF5VmFsdWUsIGhpZGRlblNlbGVjdGVkSXRlbUNvdW50LCBmaXJzdEl0ZW0gfSA9XHJcbiAgdXNlRm9ybVNlbGVjdENoaWxkSW50ZXJuYWxzPFNlcnZlclJvbGVzPih7XHJcbiAgICBwcm9wczogdG9SZWZzKHByb3BzKSxcclxuICAgIGVtaXQsXHJcbiAgICBkeW5hbWljVmlzaWJpbGl0eTogeyBlbGVtZW50VG9XYXRjaEZvckNoYW5nZXMsIGl0ZW1Db250YWluZXIgfVxyXG4gIH0pXHJcblxyXG5jb25zdCByb2xlcyA9IGNvbXB1dGVkKCgpID0+XHJcbiAgT2JqZWN0LnZhbHVlcyhSb2xlcy5TZXJ2ZXIpLmZpbHRlcigocikgPT4ge1xyXG4gICAgaWYgKHIgPT09IFJvbGVzLlNlcnZlci5BZG1pbikgcmV0dXJuIHByb3BzLmFsbG93QWRtaW5cclxuICAgIGlmIChyID09PSBSb2xlcy5TZXJ2ZXIuQXJjaGl2ZWRVc2VyKSByZXR1cm4gcHJvcHMuYWxsb3dBcmNoaXZlZFxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9KVxyXG4pXHJcblxyXG5jb25zdCBkaXNhYmxlZEl0ZW1QcmVkaWNhdGUgPSAoaXRlbTogU2VydmVyUm9sZXMpID0+IHtcclxuICBpZiAoaXRlbSA9PT0gUm9sZXMuU2VydmVyLkd1ZXN0KSByZXR1cm4gIXByb3BzLmFsbG93R3Vlc3RcclxuICByZXR1cm4gZmFsc2VcclxufVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvZm9ybS9zZWxlY3QvU2VydmVyUm9sZXMudnVlIn0=