import { createHotContext as __vite__createHotContext } from "/_nuxt/@vite/client";import.meta.hot = __vite__createHotContext("/components/viewer/lightControls/Menu.vue");import { CommonAlert as __nuxt_component_0 } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { FormRange 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/viewer/layout/Panel.vue"; /* Injection by vite-plugin-vue-inspector Start */ import { createElementVNode as __createElementVNode,createBlock as __createBlock,createVNode as __createVNode } 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 _createElementVNode(...args) { return _interopVNode(__createElementVNode(...args)) } function _createBlock(...args) { return _interopVNode(__createBlock(...args)) } function _createVNode(...args) { return _interopVNode(__createVNode(...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 { ViewMode } from "/_nuxt/@fs/D:/speckle-server/packages/viewer/dist/index.js"; import { useInjectedViewerState } from "/_nuxt/lib/viewer/composables/setup.ts"; import { useMixpanel } from "/_nuxt/lib/core/composables/mp.ts"; import { debounce } from "/_nuxt/node_modules/.cache/vite/client/deps/lodash-es.js?v=e4f18c29"; import { FormSwitch } from "/_nuxt/@fs/D:/speckle-server/packages/ui-components/dist/lib.js"; import { useViewModeUtilities } from "/_nuxt/lib/viewer/composables/ui.ts"; import { TIME_MS } from "/_nuxt/@fs/D:/speckle-server/packages/shared/dist/esm/index.js"; import { computed } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _sfc_main = /* @__PURE__ */ _defineComponent({ __name: "ViewerLightControlsMenu", setup(__props, { expose: __expose }) { __expose(); const mp = useMixpanel(); const { viewMode: { mode: currentViewMode } } = useViewModeUtilities(); const isLightingSupported = computed(() => { const supported = currentViewMode.value === ViewMode.DEFAULT; return supported; }); const debounceTrackLightConfigChange = debounce(() => { mp.track("Viewer Action", { type: "action", name: "light-config-change" }); }, TIME_MS.second); const createLightConfigComputed = (key) => computed({ get: () => lightConfig.value[key], set: (newVal) => { lightConfig.value = { ...lightConfig.value, [key]: newVal }; debounceTrackLightConfigChange(); } }); const { ui: { lightConfig } } = useInjectedViewerState(); const intensity = createLightConfigComputed("intensity"); const elevation = createLightConfigComputed("elevation"); const azimuth = createLightConfigComputed("azimuth"); const indirectLightIntensity = createLightConfigComputed("indirectLightIntensity"); const sunlightShadows = createLightConfigComputed("castShadow"); const __returned__ = { mp, currentViewMode, isLightingSupported, debounceTrackLightConfigChange, createLightConfigComputed, lightConfig, intensity, elevation, azimuth, indirectLightIntensity, sunlightShadows, get FormSwitch() { return FormSwitch; } }; Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true }); return __returned__; } }); import { resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createCommentVNode as _createCommentVNode, } from "/_nuxt/node_modules/vue/dist/vue.runtime.esm-bundler.js?v=e4f18c29"; const _hoisted_1 = { class: "flex flex-col gap-2 p-3", "data-v-inspector": "components/viewer/lightControls/Menu.vue:3:5" }; const _hoisted_2 = { class: "flex gap-2 items-center justify-between", "data-v-inspector": "components/viewer/lightControls/Menu.vue:10:7" }; const _hoisted_3 = { class: "pt-1 grid grid-cols-2 gap-x-4 gap-y-2", "data-v-inspector": "components/viewer/lightControls/Menu.vue:19:7" }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { const _component_CommonAlert = __nuxt_component_0; const _component_FormRange = __nuxt_component_1; const _component_ViewerLayoutPanel = __nuxt_component_2; return _openBlock(), _createBlock(_component_ViewerLayoutPanel, { "data-v-inspector": "components/viewer/lightControls/Menu.vue:2:3" }, { default: _withCtx(() => [ _createElementVNode("div", _hoisted_1, [ !$setup.isLightingSupported ? (_openBlock(), _createBlock(_component_CommonAlert, { key: 0, class: "mb-1", size: "xs", color: "info", "data-v-inspector": "components/viewer/lightControls/Menu.vue:4:7" }, { title: _withCtx(() => [..._cache[5] || (_cache[5] = [ _createElementVNode( "span", { class: "block text-body-2xs", "data-v-inspector": "components/viewer/lightControls/Menu.vue:6:11" }, "Not available in current view mode.", -1 /* CACHED */ ) ])]), _: 1 /* STABLE */ })) : _createCommentVNode("v-if", true), _createElementVNode("div", _hoisted_2, [ _cache[6] || (_cache[6] = _createElementVNode( "span", { class: "text-foreground text-body-2xs", "data-v-inspector": "components/viewer/lightControls/Menu.vue:11:9" }, "Sun shadows", -1 /* CACHED */ )), _createVNode($setup["FormSwitch"], { modelValue: $setup.sunlightShadows, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $setup.sunlightShadows = $event), name: "sunShadows", "show-label": false, disabled: !$setup.isLightingSupported, "data-v-inspector": "components/viewer/lightControls/Menu.vue:12:9" }, null, 8, ["modelValue", "disabled"]) ]), _createElementVNode("div", _hoisted_3, [ _createVNode(_component_FormRange, { modelValue: $setup.intensity, "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $setup.intensity = $event), name: "intensity", label: "Intensity", min: 1, max: 10, step: 0.05, disabled: !$setup.isLightingSupported, "data-v-inspector": "components/viewer/lightControls/Menu.vue:20:9" }, null, 8, ["modelValue", "disabled"]), _createVNode(_component_FormRange, { modelValue: $setup.elevation, "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => $setup.elevation = $event), name: "elevation", label: "Elevation", min: 0, max: Math.PI, step: 0.05, disabled: !$setup.isLightingSupported, "data-v-inspector": "components/viewer/lightControls/Menu.vue:29:9" }, null, 8, ["modelValue", "max", "disabled"]), _createVNode(_component_FormRange, { modelValue: $setup.azimuth, "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $setup.azimuth = $event), name: "azimuth", label: "Azimuth", min: -Math.PI * 0.5, max: Math.PI * 0.5, step: 0.05, disabled: !$setup.isLightingSupported, "data-v-inspector": "components/viewer/lightControls/Menu.vue:38:9" }, null, 8, ["modelValue", "min", "max", "disabled"]), _createVNode(_component_FormRange, { modelValue: $setup.indirectLightIntensity, "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => $setup.indirectLightIntensity = $event), name: "indirect", label: "Indirect", min: 0, max: 5, step: 0.05, disabled: !$setup.isLightingSupported, "data-v-inspector": "components/viewer/lightControls/Menu.vue:47:9" }, null, 8, ["modelValue", "disabled"]) ]) ]) ]), _: 1 /* STABLE */ }); } _sfc_main.__hmrId = "9c52e377"; 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/viewer/lightControls/Menu.vue"]]); //# sourceMappingURL=data:application/json;base64,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Q1YsTUFBTTtBQUFBLFlBQ04sVUFBUSxDQUFHO0FBQUEsWUFBcUIsb0JBQWlCO0FBQUE7VUFFcEQsYUFRRTtBQUFBLHdCQVBTO0FBQUEsMEZBQU87QUFBQSxZQUNoQixNQUFLO0FBQUEsWUFDTCxPQUFNO0FBQUEsWUFDTCxLQUFHLENBQUcsS0FBSyxLQUFFO0FBQUEsWUFDYixLQUFLLEtBQUssS0FBRTtBQUFBLFlBQ1osTUFBTTtBQUFBLFlBQ04sVUFBUSxDQUFHO0FBQUEsWUFBcUIsb0JBQWlCO0FBQUE7VUFFcEQsYUFRRTtBQUFBLHdCQVBTO0FBQUEseUdBQXNCO0FBQUEsWUFDL0IsTUFBSztBQUFBLFlBQ0wsT0FBTTtBQUFBLFlBQ0wsS0FBSztBQUFBLFlBQ0wsS0FBSztBQUFBLFlBQ0wsTUFBTTtBQUFBLFlBQ04sVUFBUSxDQUFHO0FBQUEsWUFBcUIsb0JBQWlCO0FBQUEiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIk1lbnUudnVlIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICA8Vmlld2VyTGF5b3V0UGFuZWwgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2xpZ2h0Q29udHJvbHMvTWVudS52dWU6MjozXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiBwLTNcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbGlnaHRDb250cm9scy9NZW51LnZ1ZTozOjVcIj5cclxuICAgICAgPENvbW1vbkFsZXJ0IHYtaWY9XCIhaXNMaWdodGluZ1N1cHBvcnRlZFwiIGNsYXNzPVwibWItMVwiIHNpemU9XCJ4c1wiIGNvbG9yPVwiaW5mb1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9saWdodENvbnRyb2xzL01lbnUudnVlOjQ6N1wiPlxyXG4gICAgICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsb2NrIHRleHQtYm9keS0yeHNcIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbGlnaHRDb250cm9scy9NZW51LnZ1ZTo2OjExXCI+Tm90IGF2YWlsYWJsZSBpbiBjdXJyZW50IHZpZXcgbW9kZS48L3NwYW4+XHJcbiAgICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPC9Db21tb25BbGVydD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIiBkYXRhLXYtaW5zcGVjdG9yPVwiY29tcG9uZW50cy92aWV3ZXIvbGlnaHRDb250cm9scy9NZW51LnZ1ZToxMDo3XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWZvcmVncm91bmQgdGV4dC1ib2R5LTJ4c1wiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9saWdodENvbnRyb2xzL01lbnUudnVlOjExOjlcIj5TdW4gc2hhZG93czwvc3Bhbj5cclxuICAgICAgICA8Rm9ybVN3aXRjaFxyXG4gICAgICAgICAgdi1tb2RlbD1cInN1bmxpZ2h0U2hhZG93c1wiXHJcbiAgICAgICAgICBuYW1lPVwic3VuU2hhZG93c1wiXHJcbiAgICAgICAgICA6c2hvdy1sYWJlbD1cImZhbHNlXCJcclxuICAgICAgICAgIDpkaXNhYmxlZD1cIiFpc0xpZ2h0aW5nU3VwcG9ydGVkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2xpZ2h0Q29udHJvbHMvTWVudS52dWU6MTI6OVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwdC0xIGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLXgtNCBnYXAteS0yXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2xpZ2h0Q29udHJvbHMvTWVudS52dWU6MTk6N1wiPlxyXG4gICAgICAgIDxGb3JtUmFuZ2VcclxuICAgICAgICAgIHYtbW9kZWw9XCJpbnRlbnNpdHlcIlxyXG4gICAgICAgICAgbmFtZT1cImludGVuc2l0eVwiXHJcbiAgICAgICAgICBsYWJlbD1cIkludGVuc2l0eVwiXHJcbiAgICAgICAgICA6bWluPVwiMVwiXHJcbiAgICAgICAgICA6bWF4PVwiMTBcIlxyXG4gICAgICAgICAgOnN0ZXA9XCIwLjA1XCJcclxuICAgICAgICAgIDpkaXNhYmxlZD1cIiFpc0xpZ2h0aW5nU3VwcG9ydGVkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2xpZ2h0Q29udHJvbHMvTWVudS52dWU6MjA6OVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8Rm9ybVJhbmdlXHJcbiAgICAgICAgICB2LW1vZGVsPVwiZWxldmF0aW9uXCJcclxuICAgICAgICAgIG5hbWU9XCJlbGV2YXRpb25cIlxyXG4gICAgICAgICAgbGFiZWw9XCJFbGV2YXRpb25cIlxyXG4gICAgICAgICAgOm1pbj1cIjBcIlxyXG4gICAgICAgICAgOm1heD1cIk1hdGguUElcIlxyXG4gICAgICAgICAgOnN0ZXA9XCIwLjA1XCJcclxuICAgICAgICAgIDpkaXNhYmxlZD1cIiFpc0xpZ2h0aW5nU3VwcG9ydGVkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2xpZ2h0Q29udHJvbHMvTWVudS52dWU6Mjk6OVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8Rm9ybVJhbmdlXHJcbiAgICAgICAgICB2LW1vZGVsPVwiYXppbXV0aFwiXHJcbiAgICAgICAgICBuYW1lPVwiYXppbXV0aFwiXHJcbiAgICAgICAgICBsYWJlbD1cIkF6aW11dGhcIlxyXG4gICAgICAgICAgOm1pbj1cIi1NYXRoLlBJICogMC41XCJcclxuICAgICAgICAgIDptYXg9XCJNYXRoLlBJICogMC41XCJcclxuICAgICAgICAgIDpzdGVwPVwiMC4wNVwiXHJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCIhaXNMaWdodGluZ1N1cHBvcnRlZFwiIGRhdGEtdi1pbnNwZWN0b3I9XCJjb21wb25lbnRzL3ZpZXdlci9saWdodENvbnRyb2xzL01lbnUudnVlOjM4OjlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPEZvcm1SYW5nZVxyXG4gICAgICAgICAgdi1tb2RlbD1cImluZGlyZWN0TGlnaHRJbnRlbnNpdHlcIlxyXG4gICAgICAgICAgbmFtZT1cImluZGlyZWN0XCJcclxuICAgICAgICAgIGxhYmVsPVwiSW5kaXJlY3RcIlxyXG4gICAgICAgICAgOm1pbj1cIjBcIlxyXG4gICAgICAgICAgOm1heD1cIjVcIlxyXG4gICAgICAgICAgOnN0ZXA9XCIwLjA1XCJcclxuICAgICAgICAgIDpkaXNhYmxlZD1cIiFpc0xpZ2h0aW5nU3VwcG9ydGVkXCIgZGF0YS12LWluc3BlY3Rvcj1cImNvbXBvbmVudHMvdmlld2VyL2xpZ2h0Q29udHJvbHMvTWVudS52dWU6NDc6OVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L1ZpZXdlckxheW91dFBhbmVsPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cclxuaW1wb3J0IHsgVmlld01vZGUsIHR5cGUgU3VuTGlnaHRDb25maWd1cmF0aW9uIH0gZnJvbSAnQHNwZWNrbGUvdmlld2VyJ1xyXG5pbXBvcnQgeyB1c2VJbmplY3RlZFZpZXdlclN0YXRlIH0gZnJvbSAnfn4vbGliL3ZpZXdlci9jb21wb3NhYmxlcy9zZXR1cCdcclxuaW1wb3J0IHsgdXNlTWl4cGFuZWwgfSBmcm9tICd+fi9saWIvY29yZS9jb21wb3NhYmxlcy9tcCdcclxuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICdsb2Rhc2gtZXMnXHJcbmltcG9ydCB7IEZvcm1Td2l0Y2ggfSBmcm9tICdAc3BlY2tsZS91aS1jb21wb25lbnRzJ1xyXG5pbXBvcnQgeyB1c2VWaWV3TW9kZVV0aWxpdGllcyB9IGZyb20gJ34vbGliL3ZpZXdlci9jb21wb3NhYmxlcy91aSdcclxuaW1wb3J0IHsgVElNRV9NUyB9IGZyb20gJ0BzcGVja2xlL3NoYXJlZCdcclxuXHJcbmNvbnN0IG1wID0gdXNlTWl4cGFuZWwoKVxyXG5jb25zdCB7XHJcbiAgdmlld01vZGU6IHsgbW9kZTogY3VycmVudFZpZXdNb2RlIH1cclxufSA9IHVzZVZpZXdNb2RlVXRpbGl0aWVzKClcclxuXHJcbmNvbnN0IGlzTGlnaHRpbmdTdXBwb3J0ZWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgY29uc3Qgc3VwcG9ydGVkID0gY3VycmVudFZpZXdNb2RlLnZhbHVlID09PSBWaWV3TW9kZS5ERUZBVUxUXHJcbiAgcmV0dXJuIHN1cHBvcnRlZFxyXG59KVxyXG5cclxuY29uc3QgZGVib3VuY2VUcmFja0xpZ2h0Q29uZmlnQ2hhbmdlID0gZGVib3VuY2UoKCkgPT4ge1xyXG4gIG1wLnRyYWNrKCdWaWV3ZXIgQWN0aW9uJywge1xyXG4gICAgdHlwZTogJ2FjdGlvbicsXHJcbiAgICBuYW1lOiAnbGlnaHQtY29uZmlnLWNoYW5nZSdcclxuICB9KVxyXG59LCBUSU1FX01TLnNlY29uZClcclxuXHJcbmNvbnN0IGNyZWF0ZUxpZ2h0Q29uZmlnQ29tcHV0ZWQgPSA8SyBleHRlbmRzIGtleW9mIFN1bkxpZ2h0Q29uZmlndXJhdGlvbj4oa2V5OiBLKSA9PlxyXG4gIGNvbXB1dGVkKHtcclxuICAgIGdldDogKCkgPT4gbGlnaHRDb25maWcudmFsdWVba2V5XSxcclxuICAgIHNldDogKG5ld1ZhbCkgPT4ge1xyXG4gICAgICBsaWdodENvbmZpZy52YWx1ZSA9IHtcclxuICAgICAgICAuLi5saWdodENvbmZpZy52YWx1ZSxcclxuICAgICAgICBba2V5XTogbmV3VmFsXHJcbiAgICAgIH1cclxuICAgICAgZGVib3VuY2VUcmFja0xpZ2h0Q29uZmlnQ2hhbmdlKClcclxuICAgIH1cclxuICB9KVxyXG5cclxuY29uc3Qge1xyXG4gIHVpOiB7IGxpZ2h0Q29uZmlnIH1cclxufSA9IHVzZUluamVjdGVkVmlld2VyU3RhdGUoKVxyXG5cclxuY29uc3QgaW50ZW5zaXR5ID0gY3JlYXRlTGlnaHRDb25maWdDb21wdXRlZCgnaW50ZW5zaXR5JylcclxuY29uc3QgZWxldmF0aW9uID0gY3JlYXRlTGlnaHRDb25maWdDb21wdXRlZCgnZWxldmF0aW9uJylcclxuY29uc3QgYXppbXV0aCA9IGNyZWF0ZUxpZ2h0Q29uZmlnQ29tcHV0ZWQoJ2F6aW11dGgnKVxyXG5jb25zdCBpbmRpcmVjdExpZ2h0SW50ZW5zaXR5ID0gY3JlYXRlTGlnaHRDb25maWdDb21wdXRlZCgnaW5kaXJlY3RMaWdodEludGVuc2l0eScpXHJcbmNvbnN0IHN1bmxpZ2h0U2hhZG93cyA9IGNyZWF0ZUxpZ2h0Q29uZmlnQ29tcHV0ZWQoJ2Nhc3RTaGFkb3cnKVxyXG48L3NjcmlwdD5cclxuIl0sImZpbGUiOiJEOi9zcGVja2xlLXNlcnZlci9wYWNrYWdlcy9mcm9udGVuZC0yL2NvbXBvbmVudHMvdmlld2VyL2xpZ2h0Q29udHJvbHMvTWVudS52dWUifQ==