floor-editor-ts 1.1.2 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/floor-editor.es.js +871 -749
- package/dist/floor-editor.es.js.map +1 -1
- package/dist/src/lib/models/types.d.ts +2 -0
- package/dist/src/lib/packageDefaults.d.ts +15 -0
- package/dist/src/lib/utils/canvasRenderer.d.ts +6 -1
- package/dist/src/lib/utils/furnitureIcons.d.ts +1 -1
- package/package.json +1 -1
package/dist/floor-editor.es.js
CHANGED
|
@@ -56022,22 +56022,22 @@ var themePreference = createThemeStore();
|
|
|
56022
56022
|
//#region src/lib/components/toolbar/SettingsDialog.svelte
|
|
56023
56023
|
init_client();
|
|
56024
56024
|
var root_2$12 = /* @__PURE__ */ from_html(`<div class="absolute bottom-0 left-0 right-0 h-0.5 bg-slate-700 dark:bg-slate-300 rounded-t"></div>`);
|
|
56025
|
-
var root_3$
|
|
56026
|
-
var root_4$
|
|
56025
|
+
var root_3$12 = /* @__PURE__ */ from_html(`<div class="absolute bottom-0 left-0 right-0 h-0.5 bg-slate-700 dark:bg-slate-300 rounded-t"></div>`);
|
|
56026
|
+
var root_4$11 = /* @__PURE__ */ from_html(`<div class="absolute bottom-0 left-0 right-0 h-0.5 bg-slate-700 dark:bg-slate-300 rounded-t"></div>`);
|
|
56027
56027
|
var root_5$8 = /* @__PURE__ */ from_html(`<div class="absolute bottom-0 left-0 right-0 h-0.5 bg-slate-700 dark:bg-slate-300 rounded-t"></div>`);
|
|
56028
|
-
var root_6$
|
|
56029
|
-
var root_7$
|
|
56028
|
+
var root_6$6 = /* @__PURE__ */ from_html(`<div class="space-y-4"><label class="block"><span class="text-sm font-medium text-gray-700 dark:text-gray-300">Project Name</span> <input type="text" class="mt-1 w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:ring-2 focus:ring-slate-500 focus:border-slate-500 outline-none bg-white dark:bg-gray-700 dark:text-gray-100" placeholder="Untitled Project"/></label> <label class="block"><span class="text-sm font-medium text-gray-700 dark:text-gray-300">Description</span> <textarea rows="3" class="mt-1 w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg text-sm focus:ring-2 focus:ring-slate-500 focus:border-slate-500 outline-none resize-none bg-white dark:bg-gray-700 dark:text-gray-100" placeholder="Add a description for this project..."></textarea></label></div>`);
|
|
56029
|
+
var root_7$5 = /* @__PURE__ */ from_html(`<div class="flex items-center justify-between mb-5"><span class="text-sm font-medium text-gray-700 dark:text-gray-300">Metrics unit</span> <div class="flex rounded-lg border border-gray-300 dark:border-gray-600 overflow-hidden"><button>m, cm</button> <button>ft, inch</button></div></div> <div class="bg-gray-50 dark:bg-gray-700/50 rounded-xl divide-y divide-gray-200 dark:divide-gray-600"><label class="flex items-center justify-between px-4 py-3.5 cursor-pointer"><span class="text-sm text-gray-700">Dimensions</span> <input type="checkbox" class="w-10 h-5 rounded-full appearance-none cursor-pointer bg-gray-300 checked:bg-slate-700 relative transition-colors
|
|
56030
56030
|
before:content-[''] before:absolute before:w-4 before:h-4 before:rounded-full before:bg-white before:top-0.5 before:left-0.5 before:transition-transform checked:before:translate-x-5"/></label> <label class="flex items-center justify-between px-4 py-3.5 cursor-pointer"><span class="text-sm text-gray-700">External Dimensions</span> <input type="checkbox" class="w-10 h-5 rounded-full appearance-none cursor-pointer bg-gray-300 checked:bg-slate-700 relative transition-colors
|
|
56031
56031
|
before:content-[''] before:absolute before:w-4 before:h-4 before:rounded-full before:bg-white before:top-0.5 before:left-0.5 before:transition-transform checked:before:translate-x-5"/></label> <label class="flex items-center justify-between px-4 py-3.5 cursor-pointer"><span class="text-sm text-gray-700">Internal Dimensions</span> <input type="checkbox" class="w-10 h-5 rounded-full appearance-none cursor-pointer bg-gray-300 checked:bg-slate-700 relative transition-colors
|
|
56032
56032
|
before:content-[''] before:absolute before:w-4 before:h-4 before:rounded-full before:bg-white before:top-0.5 before:left-0.5 before:transition-transform checked:before:translate-x-5"/></label> <label class="flex items-center justify-between px-4 py-3.5 cursor-pointer"><span class="text-sm text-gray-700">Extension Lines</span> <input type="checkbox" class="w-10 h-5 rounded-full appearance-none cursor-pointer bg-gray-300 checked:bg-slate-700 relative transition-colors
|
|
56033
56033
|
before:content-[''] before:absolute before:w-4 before:h-4 before:rounded-full before:bg-white before:top-0.5 before:left-0.5 before:transition-transform checked:before:translate-x-5"/></label> <label class="flex items-center justify-between px-4 py-3.5 cursor-pointer"><span class="text-sm text-gray-700">Object Distance</span> <input type="checkbox" class="w-10 h-5 rounded-full appearance-none cursor-pointer bg-gray-300 checked:bg-slate-700 relative transition-colors
|
|
56034
56034
|
before:content-[''] before:absolute before:w-4 before:h-4 before:rounded-full before:bg-white before:top-0.5 before:left-0.5 before:transition-transform checked:before:translate-x-5"/></label> <div class="flex items-center justify-between px-4 py-3.5"><span class="text-sm text-gray-700">Line Color</span> <div class="flex items-center gap-2"><button style="background-color: #ffffff" aria-label="White line color"></button> <span class="text-gray-300">|</span> <button style="background-color: #1e293b" aria-label="Dark line color"></button></div></div></div>`, 1);
|
|
56035
56035
|
var root_9$2 = /* @__PURE__ */ from_html(`<button><span class="text-2xl"> </span> <span class="text-xs font-medium text-gray-700 dark:text-gray-300"> </span></button>`);
|
|
56036
|
-
var root_8$
|
|
56036
|
+
var root_8$3 = /* @__PURE__ */ from_html(`<div class="space-y-4"><div><span class="text-sm font-medium text-gray-700 dark:text-gray-300 block mb-3">Theme</span> <div class="flex gap-3"></div></div></div>`);
|
|
56037
56037
|
var root_11$2 = /* @__PURE__ */ from_html(`<button class="px-4 py-2 text-sm font-medium text-red-600 dark:text-red-400 border border-red-300 dark:border-red-600 rounded-lg hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors">Remove</button>`);
|
|
56038
56038
|
var root_12$3 = /* @__PURE__ */ from_html(`<button class="px-4 py-2 text-sm font-medium text-red-600 dark:text-red-400 border border-red-300 dark:border-red-600 rounded-lg hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors">Remove</button>`);
|
|
56039
56039
|
var root_10$2 = /* @__PURE__ */ from_html(`<div class="space-y-4"><div><span class="text-sm font-medium text-gray-700 dark:text-gray-300 block mb-1">Gemini API Key</span> <p class="text-xs text-gray-500 dark:text-gray-400 mb-3">Required for AI-powered photorealistic rendering. Your key is stored locally in your browser only - never sent to our servers.</p> <div class="flex gap-2"><div class="relative flex-1"><input class="w-full px-3 py-2 pr-10 border border-gray-300 dark:border-gray-600 rounded-lg text-sm font-mono focus:ring-2 focus:ring-slate-500 focus:border-slate-500 outline-none bg-white dark:bg-gray-700 dark:text-gray-100" placeholder="AIza..."/> <button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"> </button></div></div> <div class="flex gap-2 mt-3"><button class="px-4 py-2 text-sm font-medium bg-slate-700 text-white rounded-lg hover:bg-slate-600 transition-colors"> </button> <!></div></div> <div class="border-t border-gray-200 dark:border-gray-700 pt-4"><span class="text-sm font-medium text-gray-700 dark:text-gray-300 block mb-2">How to get a Gemini key</span> <ol class="text-xs text-gray-500 dark:text-gray-400 space-y-1 list-decimal list-inside"><li>Go to <a href="https://aistudio.google.com/apikey" target="_blank" rel="noopener" class="text-blue-500 hover:underline">Google AI Studio</a></li> <li>Click "Create API Key"</li> <li>Copy and paste it above</li></ol></div> <div class="border-t border-gray-200 dark:border-gray-700 pt-4"><span class="text-sm font-medium text-gray-700 dark:text-gray-300 block mb-1">OpenAI API Key</span> <p class="text-xs text-gray-500 dark:text-gray-400 mb-3">Optional — enables OpenAI image generation as an alternative to Gemini. Stored locally only.</p> <div class="flex gap-2"><div class="relative flex-1"><input class="w-full px-3 py-2 pr-10 border border-gray-300 dark:border-gray-600 rounded-lg text-sm font-mono focus:ring-2 focus:ring-slate-500 focus:border-slate-500 outline-none bg-white dark:bg-gray-700 dark:text-gray-100" placeholder="sk-..."/> <button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-sm"> </button></div></div> <div class="flex gap-2 mt-3"><button class="px-4 py-2 text-sm font-medium bg-slate-700 text-white rounded-lg hover:bg-slate-600 transition-colors"> </button> <!></div> <div class="mt-3"><span class="text-sm font-medium text-gray-700 dark:text-gray-300 block mb-2">How to get an OpenAI key</span> <ol class="text-xs text-gray-500 dark:text-gray-400 space-y-1 list-decimal list-inside"><li>Go to <a href="https://platform.openai.com/api-keys" target="_blank" rel="noopener" class="text-blue-500 hover:underline">OpenAI Platform</a></li> <li>Click "Create new secret key"</li> <li>Copy and paste it above</li></ol></div></div></div>`);
|
|
56040
|
-
var root_1$
|
|
56040
|
+
var root_1$13 = /* @__PURE__ */ from_html(`<div class="fixed inset-0 bg-black/50 z-50 flex items-center justify-center" role="dialog" tabindex="-1" aria-label="Settings"><div class="bg-white dark:bg-gray-800 rounded-xl shadow-2xl w-[420px] max-h-[80vh] flex flex-col" role="document"><div class="flex items-center justify-between px-5 pt-4 pb-2"><h2 class="text-lg font-bold text-gray-800 dark:text-gray-100">Settings</h2> <button class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-xl leading-none" aria-label="Close settings">✕</button></div> <div class="flex border-b border-gray-200 dark:border-gray-700 px-5"><button>Project <!></button> <button>Dimensions <!></button> <button>Appearance <!></button> <button>AI <!></button></div> <div class="p-5 overflow-y-auto"><!></div></div></div>`);
|
|
56041
56041
|
function SettingsDialog($$anchor, $$props) {
|
|
56042
56042
|
push($$props, true);
|
|
56043
56043
|
let open = prop($$props, "open", 15, false);
|
|
@@ -56140,7 +56140,7 @@ function SettingsDialog($$anchor, $$props) {
|
|
|
56140
56140
|
var fragment = comment();
|
|
56141
56141
|
var node = first_child(fragment);
|
|
56142
56142
|
var consequent_10 = ($$anchor) => {
|
|
56143
|
-
var div = root_1$
|
|
56143
|
+
var div = root_1$13();
|
|
56144
56144
|
var div_1 = child(div);
|
|
56145
56145
|
var div_2 = child(div_1);
|
|
56146
56146
|
var button = sibling(child(div_2), 2);
|
|
@@ -56158,7 +56158,7 @@ function SettingsDialog($$anchor, $$props) {
|
|
|
56158
56158
|
var button_2 = sibling(button_1, 2);
|
|
56159
56159
|
var node_2 = sibling(child(button_2));
|
|
56160
56160
|
var consequent_1 = ($$anchor) => {
|
|
56161
|
-
append($$anchor, root_3$
|
|
56161
|
+
append($$anchor, root_3$12());
|
|
56162
56162
|
};
|
|
56163
56163
|
if_block(node_2, ($$render) => {
|
|
56164
56164
|
if (get(activeTab) === "dimensions") $$render(consequent_1);
|
|
@@ -56167,7 +56167,7 @@ function SettingsDialog($$anchor, $$props) {
|
|
|
56167
56167
|
var button_3 = sibling(button_2, 2);
|
|
56168
56168
|
var node_3 = sibling(child(button_3));
|
|
56169
56169
|
var consequent_2 = ($$anchor) => {
|
|
56170
|
-
append($$anchor, root_4$
|
|
56170
|
+
append($$anchor, root_4$11());
|
|
56171
56171
|
};
|
|
56172
56172
|
if_block(node_3, ($$render) => {
|
|
56173
56173
|
if (get(activeTab) === "appearance") $$render(consequent_2);
|
|
@@ -56186,7 +56186,7 @@ function SettingsDialog($$anchor, $$props) {
|
|
|
56186
56186
|
var div_8 = sibling(div_3, 2);
|
|
56187
56187
|
var node_5 = child(div_8);
|
|
56188
56188
|
var consequent_4 = ($$anchor) => {
|
|
56189
|
-
var div_9 = root_6$
|
|
56189
|
+
var div_9 = root_6$6();
|
|
56190
56190
|
var label_1 = child(div_9);
|
|
56191
56191
|
var input = sibling(child(label_1), 2);
|
|
56192
56192
|
remove_input_defaults(input);
|
|
@@ -56205,7 +56205,7 @@ function SettingsDialog($$anchor, $$props) {
|
|
|
56205
56205
|
append($$anchor, div_9);
|
|
56206
56206
|
};
|
|
56207
56207
|
var consequent_5 = ($$anchor) => {
|
|
56208
|
-
var fragment_1 = root_7$
|
|
56208
|
+
var fragment_1 = root_7$5();
|
|
56209
56209
|
var div_10 = first_child(fragment_1);
|
|
56210
56210
|
var div_11 = sibling(child(div_10), 2);
|
|
56211
56211
|
var button_5 = child(div_11);
|
|
@@ -56263,7 +56263,7 @@ function SettingsDialog($$anchor, $$props) {
|
|
|
56263
56263
|
append($$anchor, fragment_1);
|
|
56264
56264
|
};
|
|
56265
56265
|
var consequent_6 = ($$anchor) => {
|
|
56266
|
-
var div_15 = root_8$
|
|
56266
|
+
var div_15 = root_8$3();
|
|
56267
56267
|
var div_16 = child(div_15);
|
|
56268
56268
|
var div_17 = sibling(child(div_16), 2);
|
|
56269
56269
|
each(div_17, 20, () => [
|
|
@@ -56430,11 +56430,11 @@ delegate([
|
|
|
56430
56430
|
//#region src/lib/components/sidebar/AreaSummaryPanel.svelte
|
|
56431
56431
|
init_client();
|
|
56432
56432
|
var root_2$11 = /* @__PURE__ */ from_html(`<div class="flex items-center justify-between text-xs bg-gray-50 rounded px-2 py-1.5"><span class="text-gray-700"> <span class="text-gray-400"> </span></span> <span class="font-medium text-gray-800"> </span></div>`);
|
|
56433
|
-
var root_1$
|
|
56434
|
-
var root_4$
|
|
56435
|
-
var root_3$
|
|
56433
|
+
var root_1$12 = /* @__PURE__ */ from_html(`<div><h4 class="text-xs font-semibold text-gray-500 uppercase mb-1.5">By Category</h4> <div class="space-y-1"></div></div>`);
|
|
56434
|
+
var root_4$10 = /* @__PURE__ */ from_html(`<div class="flex items-center gap-1.5 text-xs px-1 py-1"><div class="flex-1 min-w-0"><div class="flex items-center justify-between"><span class="text-gray-700 truncate"> </span> <span class="text-gray-500 ml-1 shrink-0"> </span></div> <div class="w-full bg-gray-200 rounded-full h-1 mt-0.5"><div class="bg-blue-400 h-1 rounded-full"></div></div></div> <span class="text-[10px] text-gray-400 w-8 text-right shrink-0"> </span></div>`);
|
|
56435
|
+
var root_3$11 = /* @__PURE__ */ from_html(`<div><h4 class="text-xs font-semibold text-gray-500 uppercase mb-1.5">Room Breakdown</h4> <div class="space-y-0.5"></div></div>`);
|
|
56436
56436
|
var root_5$7 = /* @__PURE__ */ from_html(`<p class="text-xs text-gray-400 text-center py-4">No rooms detected yet.<br/>Draw walls to create rooms.</p>`);
|
|
56437
|
-
var root$
|
|
56437
|
+
var root$6 = /* @__PURE__ */ from_html(`<div class="space-y-3"><div class="grid grid-cols-2 gap-2"><div class="bg-blue-50 rounded-lg p-2 text-center"><div class="text-lg font-bold text-blue-700"> </div> <div class="text-[10px] text-blue-500">Rooms</div></div> <div class="bg-green-50 rounded-lg p-2 text-center"><div class="text-lg font-bold text-green-700"> </div> <div class="text-[10px] text-green-500">Total Area</div></div> <div class="bg-amber-50 rounded-lg p-2 text-center"><div class="text-sm font-bold text-amber-700"> </div> <div class="text-[10px] text-amber-500">Doors / Windows</div></div> <div class="bg-purple-50 rounded-lg p-2 text-center"><div class="text-sm font-bold text-purple-700"> </div> <div class="text-[10px] text-purple-500">Wall Length</div></div></div> <!> <!></div>`);
|
|
56438
56438
|
function AreaSummaryPanel($$anchor, $$props) {
|
|
56439
56439
|
push($$props, true);
|
|
56440
56440
|
const $projectSettings = () => store_get(projectSettings, "$projectSettings", $$stores);
|
|
@@ -56518,7 +56518,7 @@ function AreaSummaryPanel($$anchor, $$props) {
|
|
|
56518
56518
|
var _$$get$walls, _$$get5;
|
|
56519
56519
|
return ((_$$get$walls = (_$$get5 = get(floor)) === null || _$$get5 === void 0 ? void 0 : _$$get5.walls) !== null && _$$get$walls !== void 0 ? _$$get$walls : []).reduce((s, w) => s + calcWallLength(w), 0);
|
|
56520
56520
|
});
|
|
56521
|
-
var div = root$
|
|
56521
|
+
var div = root$6();
|
|
56522
56522
|
var div_1 = child(div);
|
|
56523
56523
|
var div_2 = child(div_1);
|
|
56524
56524
|
var div_3 = child(div_2);
|
|
@@ -56547,7 +56547,7 @@ function AreaSummaryPanel($$anchor, $$props) {
|
|
|
56547
56547
|
reset(div_1);
|
|
56548
56548
|
var node = sibling(div_1, 2);
|
|
56549
56549
|
var consequent = ($$anchor) => {
|
|
56550
|
-
var div_10 = root_1$
|
|
56550
|
+
var div_10 = root_1$12();
|
|
56551
56551
|
var div_11 = sibling(child(div_10), 2);
|
|
56552
56552
|
each(div_11, 21, () => get(categoryTotals), index$1, ($$anchor, cat) => {
|
|
56553
56553
|
var div_12 = root_2$11();
|
|
@@ -56578,11 +56578,11 @@ function AreaSummaryPanel($$anchor, $$props) {
|
|
|
56578
56578
|
});
|
|
56579
56579
|
var node_1 = sibling(node, 2);
|
|
56580
56580
|
var consequent_1 = ($$anchor) => {
|
|
56581
|
-
var div_13 = root_3$
|
|
56581
|
+
var div_13 = root_3$11();
|
|
56582
56582
|
var div_14 = sibling(child(div_13), 2);
|
|
56583
56583
|
each(div_14, 21, () => get(allRooms), index$1, ($$anchor, room) => {
|
|
56584
56584
|
const pct = /* @__PURE__ */ user_derived(() => get(totalArea) > 0 ? get(room).area / get(totalArea) * 100 : 0);
|
|
56585
|
-
var div_15 = root_4$
|
|
56585
|
+
var div_15 = root_4$10();
|
|
56586
56586
|
var div_16 = child(div_15);
|
|
56587
56587
|
var div_17 = child(div_16);
|
|
56588
56588
|
var span_3 = child(div_17);
|
|
@@ -56776,10 +56776,10 @@ async function autoSave(onDispatch) {
|
|
|
56776
56776
|
//#region src/lib/components/toolbar/VersionHistoryPanel.svelte
|
|
56777
56777
|
init_client();
|
|
56778
56778
|
var root_2$10 = /* @__PURE__ */ from_html(`<p class="text-sm text-gray-400 text-center py-8">No snapshots yet.<br/>Versions are saved automatically every 5 minutes.</p>`);
|
|
56779
|
-
var root_4$
|
|
56780
|
-
var root_3$
|
|
56779
|
+
var root_4$9 = /* @__PURE__ */ from_html(`<div class="flex items-center justify-between py-2 px-2 rounded-lg hover:bg-gray-50 group transition-colors"><div class="flex-1 min-w-0"><div class="text-sm font-medium text-gray-700 truncate"> </div> <div class="text-xs text-gray-400"> </div></div> <button class="text-xs px-2.5 py-1 bg-blue-50 text-blue-600 rounded-md hover:bg-blue-100 transition-colors opacity-0 group-hover:opacity-100 font-medium shrink-0 ml-2">Restore</button></div>`);
|
|
56780
|
+
var root_3$10 = /* @__PURE__ */ from_html(`<div class="space-y-1"></div>`);
|
|
56781
56781
|
var root_5$6 = /* @__PURE__ */ from_html(`<div class="px-4 py-2 border-t border-gray-100"><button class="text-xs text-red-400 hover:text-red-600 transition-colors">Clear all versions</button></div>`);
|
|
56782
|
-
var root_1$
|
|
56782
|
+
var root_1$11 = /* @__PURE__ */ from_html(`<div class="fixed inset-0 bg-black/40 z-50 flex items-center justify-center"><div class="bg-white rounded-xl shadow-2xl w-96 max-h-[70vh] flex flex-col"><div class="flex items-center justify-between px-4 py-3 border-b border-gray-100"><h2 class="text-sm font-semibold text-gray-800 flex items-center gap-2"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg> Version History</h2> <button class="text-gray-400 hover:text-gray-600 transition-colors" aria-label="Close"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button></div> <div class="flex-1 overflow-y-auto px-4 py-2"><!></div> <!></div></div>`);
|
|
56783
56783
|
function VersionHistoryPanel($$anchor, $$props) {
|
|
56784
56784
|
push($$props, true);
|
|
56785
56785
|
let open = prop($$props, "open", 15, false);
|
|
@@ -56817,7 +56817,7 @@ function VersionHistoryPanel($$anchor, $$props) {
|
|
|
56817
56817
|
var fragment = comment();
|
|
56818
56818
|
var node = first_child(fragment);
|
|
56819
56819
|
var consequent_2 = ($$anchor) => {
|
|
56820
|
-
var div = root_1$
|
|
56820
|
+
var div = root_1$11();
|
|
56821
56821
|
var div_1 = child(div);
|
|
56822
56822
|
var div_2 = child(div_1);
|
|
56823
56823
|
var button = sibling(child(div_2), 2);
|
|
@@ -56828,10 +56828,10 @@ function VersionHistoryPanel($$anchor, $$props) {
|
|
|
56828
56828
|
append($$anchor, root_2$10());
|
|
56829
56829
|
};
|
|
56830
56830
|
var alternate = ($$anchor) => {
|
|
56831
|
-
var div_4 = root_3$
|
|
56831
|
+
var div_4 = root_3$10();
|
|
56832
56832
|
each(div_4, 21, () => [...get(snapshots)].reverse(), index$1, ($$anchor, snap, i) => {
|
|
56833
56833
|
const realIndex = /* @__PURE__ */ user_derived(() => get(snapshots).length - 1 - i);
|
|
56834
|
-
var div_5 = root_4$
|
|
56834
|
+
var div_5 = root_4$9();
|
|
56835
56835
|
var div_6 = child(div_5);
|
|
56836
56836
|
var div_7 = child(div_6);
|
|
56837
56837
|
var text = child(div_7, true);
|
|
@@ -56892,17 +56892,17 @@ init_client();
|
|
|
56892
56892
|
init_index_client();
|
|
56893
56893
|
init_onboarding_svelte();
|
|
56894
56894
|
var root_2$9 = /* @__PURE__ */ from_html(`<input type="text" class="bg-white/20 text-white font-semibold px-2 py-0.5 rounded border border-white/30 outline-none text-sm w-40"/>`);
|
|
56895
|
-
var root_3$
|
|
56896
|
-
var root_4$
|
|
56895
|
+
var root_3$9 = /* @__PURE__ */ from_html(`<button class="font-semibold text-white text-sm hover:bg-white/10 px-2 py-0.5 rounded transition-colors" title="Click to rename"> </button>`);
|
|
56896
|
+
var root_4$8 = /* @__PURE__ */ from_html(`<button> </button>`);
|
|
56897
56897
|
var root_5$5 = /* @__PURE__ */ from_html(`<div class="flex bg-white/15 rounded-full p-0.5"><button title="Select mode (V)" aria-label="Select mode"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"></path><path d="M13 13l6 6"></path></svg></button> <button title="Pan mode (H)" aria-label="Pan mode"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 11V6a2 2 0 0 0-4 0v1"></path><path d="M14 10V4a2 2 0 0 0-4 0v2"></path><path d="M10 10.5V6a2 2 0 0 0-4 0v8"></path><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"></path></svg></button></div>`);
|
|
56898
|
-
var root_6$
|
|
56899
|
-
var root_8$
|
|
56900
|
-
var root_7$
|
|
56901
|
-
var root_1$
|
|
56898
|
+
var root_6$5 = /* @__PURE__ */ from_html(`<div class="flex items-center gap-1 bg-white/15 rounded-full p-0.5"><button class="w-7 h-7 flex items-center justify-center text-white/80 hover:text-white hover:bg-white/10 rounded-full transition-colors text-sm font-bold" title="Zoom Out (−)" aria-label="Zoom Out">−</button> <button class="px-2 py-1 text-xs font-medium text-white/80 hover:text-white hover:bg-white/10 rounded-full transition-colors min-w-[3rem] text-center" title="Reset Zoom (100%)"> </button> <button class="w-7 h-7 flex items-center justify-center text-white/80 hover:text-white hover:bg-white/10 rounded-full transition-colors text-sm font-bold" title="Zoom In (+)" aria-label="Zoom In">+</button></div>`);
|
|
56899
|
+
var root_8$2 = /* @__PURE__ */ from_html(`<button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line></svg> Import JSON</button>`);
|
|
56900
|
+
var root_7$4 = /* @__PURE__ */ from_html(`<div class="absolute right-0 top-full mt-1 bg-white rounded-lg shadow-lg border border-gray-200 py-1 w-48 z-50"><button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 6 2 18 2 18 9"></polyline><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path><rect x="6" y="14" width="12" height="8"></rect></svg> Print Layout</button> <div class="h-px bg-gray-100 my-1"></div> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><path d="M21 15l-5-5L5 21"></path></svg> Export 2D as PNG</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2L2 7l10 5 10-5-10-5z"></path><path d="M2 17l10 5 10-5"></path><path d="M2 12l10 5 10-5"></path></svg> Export 3D as PNG</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5"></path><path d="M5 12l7-7 7 7"></path></svg> Export as SVG</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path><path d="M8 16h2"></path><path d="M14 16h2"></path></svg> Export as DXF</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path><path d="M9 16h6"></path></svg> Export as DWG</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path><path d="M16 11v6"></path><path d="M8 11v6"></path><path d="M12 11v6"></path></svg> Export as PDF</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path></svg> Download JSON</button> <div class="h-px bg-gray-100 my-1"></div> <!> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg> New Project</button></div>`);
|
|
56901
|
+
var root_1$10 = /* @__PURE__ */ from_html(`<div class="h-12 bg-gradient-to-r from-slate-800 to-slate-700 flex items-center px-4 gap-3 shrink-0 shadow-sm"><!> <div class="h-5 w-px bg-white/20"></div> <div class="flex items-center gap-1"><!> <button class="text-white/80 hover:text-white text-xs hover:bg-white/10 px-1.5 py-0.5 rounded transition-colors" title="Add Floor" aria-label="Add Floor">+</button> <span class="text-white/40 text-[10px] ml-1"> </span></div> <div class="flex-1"></div> <button class="p-1.5 text-white/80 hover:text-white hover:bg-white/10 rounded transition-colors" title="Undo (Ctrl+Z)" aria-label="Undo"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg></button> <button class="p-1.5 text-white/80 hover:text-white hover:bg-white/10 rounded transition-colors" title="Redo (Ctrl+Y)" aria-label="Redo"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"></polyline><path d="M20.49 15a9 9 0 1 1-2.13-9.36L23 10"></path></svg></button> <div class="h-5 w-px bg-white/20"></div> <button aria-label="Snap to Grid"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect></svg></button> <!> <button aria-label="Toggle Furniture"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="12" width="20" height="8" rx="1"></rect><path d="M4 12V7a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5"></path><line x1="12" y1="12" x2="12" y2="20"></line></svg></button> <div class="h-5 w-px bg-white/20"></div> <!> <button class="p-1.5 text-white/80 hover:text-white hover:bg-white/10 rounded transition-colors" title="Version History" aria-label="Version History"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></button> <button class="px-2 py-1.5 text-white/80 hover:text-white hover:bg-white/10 rounded transition-colors" title="Area Summary" aria-label="Area Summary"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"></rect><path d="M3 9h18"></path><path d="M9 3v18"></path></svg></button> <button class="px-2 py-1.5 text-white/80 hover:text-white hover:bg-white/10 rounded transition-colors" title="Settings" aria-label="Settings"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg></button> <div class="h-5 w-px bg-white/20"></div> <div class="relative"><button class="px-3 py-1.5 text-sm text-white/90 hover:text-white hover:bg-white/10 rounded transition-colors flex items-center gap-1.5"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg> Export</button> <!></div> <span><!></span> <button class="px-3 py-1.5 text-sm bg-white text-slate-800 font-semibold rounded-lg hover:bg-blue-50 transition-colors shadow-sm">Save</button></div>`);
|
|
56902
56902
|
var root_13$2 = /* @__PURE__ */ from_html(`<div class="absolute right-0 top-full mt-1 bg-white rounded-lg shadow-lg border border-gray-200 py-1 w-48 z-50"><button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 6 2 18 2 18 9"></polyline><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path><rect x="6" y="14" width="12" height="8"></rect></svg> Print Layout</button> <div class="h-px bg-gray-100 my-1"></div> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><path d="M21 15l-5-5L5 21"></path></svg> Export 2D as PNG</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2L2 7l10 5 10-5-10-5z"></path><path d="M2 17l10 5 10-5"></path><path d="M2 12l10 5 10-5"></path></svg> Export 3D as PNG</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5"></path><path d="M5 12l7-7 7 7"></path></svg> Export as SVG</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path><path d="M8 16h2"></path><path d="M14 16h2"></path></svg> Export as DXF</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path><path d="M9 16h6"></path></svg> Export as DWG</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path><path d="M16 11v6"></path><path d="M8 11v6"></path><path d="M12 11v6"></path></svg> Export as PDF</button> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><path d="M14 2v6h6"></path></svg> Download JSON</button> <div class="h-px bg-gray-100 my-1"></div> <button class="w-full px-3 py-2 text-sm text-gray-700 hover:bg-gray-100 text-left flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="17 8 12 3 7 8"></polyline><line x1="12" y1="3" x2="12" y2="15"></line></svg> Import JSON</button></div>`);
|
|
56903
56903
|
var root_12$2 = /* @__PURE__ */ from_html(`<div class="h-12 bg-gradient-to-r from-slate-800 to-slate-700 flex items-center justify-between px-4 gap-3 shrink-0 shadow-sm"><span class="font-semibold text-white text-sm px-2 py-0.5 rounded transition-colors"> </span> <div class="relative"><button class="px-3 py-1.5 text-sm text-white/90 hover:text-white hover:bg-white/10 rounded transition-colors flex items-center gap-1.5"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg> Import</button> <!></div></div>`);
|
|
56904
|
-
var root_14$
|
|
56905
|
-
var root$
|
|
56904
|
+
var root_14$2 = /* @__PURE__ */ from_html(`<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/40"><div class="bg-white rounded-xl shadow-2xl w-[420px] max-h-[80vh] overflow-hidden"><div class="flex items-center justify-between px-5 py-3 border-b border-gray-200"><h2 class="text-base font-semibold text-gray-800">📐 Area Summary</h2> <button class="text-gray-400 hover:text-gray-600 text-xl leading-none">×</button></div> <div class="overflow-y-auto max-h-[calc(80vh-52px)] p-1"><!></div></div></div>`);
|
|
56905
|
+
var root$5 = /* @__PURE__ */ from_html(`<!> <!> <!> <!>`, 1);
|
|
56906
56906
|
function TopBar($$anchor, $$props) {
|
|
56907
56907
|
push($$props, true);
|
|
56908
56908
|
const $panMode = () => store_get(panMode, "$panMode", $$stores);
|
|
@@ -57084,10 +57084,10 @@ function TopBar($$anchor, $$props) {
|
|
|
57084
57084
|
input.click();
|
|
57085
57085
|
set(exportOpen, false);
|
|
57086
57086
|
}
|
|
57087
|
-
var fragment = root$
|
|
57087
|
+
var fragment = root$5();
|
|
57088
57088
|
var node = first_child(fragment);
|
|
57089
57089
|
var consequent_7 = ($$anchor) => {
|
|
57090
|
-
var div = root_1$
|
|
57090
|
+
var div = root_1$10();
|
|
57091
57091
|
var node_1 = child(div);
|
|
57092
57092
|
var consequent = ($$anchor) => {
|
|
57093
57093
|
var input_1 = root_2$9();
|
|
@@ -57098,7 +57098,7 @@ function TopBar($$anchor, $$props) {
|
|
|
57098
57098
|
append($$anchor, input_1);
|
|
57099
57099
|
};
|
|
57100
57100
|
var alternate = ($$anchor) => {
|
|
57101
|
-
var button = root_3$
|
|
57101
|
+
var button = root_3$9();
|
|
57102
57102
|
var text_1 = child(button, true);
|
|
57103
57103
|
reset(button);
|
|
57104
57104
|
template_effect(() => set_text(text_1, get(projectName)));
|
|
@@ -57112,7 +57112,7 @@ function TopBar($$anchor, $$props) {
|
|
|
57112
57112
|
var div_1 = sibling(node_1, 4);
|
|
57113
57113
|
var node_2 = child(div_1);
|
|
57114
57114
|
each(node_2, 17, () => get(floors), index$1, ($$anchor, fl) => {
|
|
57115
|
-
var button_1 = root_4$
|
|
57115
|
+
var button_1 = root_4$8();
|
|
57116
57116
|
var text_2 = child(button_1, true);
|
|
57117
57117
|
reset(button_1);
|
|
57118
57118
|
template_effect(() => {
|
|
@@ -57152,7 +57152,7 @@ function TopBar($$anchor, $$props) {
|
|
|
57152
57152
|
var button_8 = sibling(node_3, 2);
|
|
57153
57153
|
var node_4 = sibling(button_8, 4);
|
|
57154
57154
|
var consequent_2 = ($$anchor) => {
|
|
57155
|
-
var div_3 = root_6$
|
|
57155
|
+
var div_3 = root_6$5();
|
|
57156
57156
|
var button_9 = child(div_3);
|
|
57157
57157
|
var button_10 = sibling(button_9, 2);
|
|
57158
57158
|
var text_4 = child(button_10);
|
|
@@ -57175,7 +57175,7 @@ function TopBar($$anchor, $$props) {
|
|
|
57175
57175
|
var button_15 = child(div_4);
|
|
57176
57176
|
var node_5 = sibling(button_15, 2);
|
|
57177
57177
|
var consequent_4 = ($$anchor) => {
|
|
57178
|
-
var div_5 = root_7$
|
|
57178
|
+
var div_5 = root_7$4();
|
|
57179
57179
|
var button_16 = child(div_5);
|
|
57180
57180
|
var button_17 = sibling(button_16, 4);
|
|
57181
57181
|
var button_18 = sibling(button_17, 2);
|
|
@@ -57186,7 +57186,7 @@ function TopBar($$anchor, $$props) {
|
|
|
57186
57186
|
var button_23 = sibling(button_22, 2);
|
|
57187
57187
|
var node_6 = sibling(button_23, 4);
|
|
57188
57188
|
var consequent_3 = ($$anchor) => {
|
|
57189
|
-
var button_24 = root_8$
|
|
57189
|
+
var button_24 = root_8$2();
|
|
57190
57190
|
delegated("click", button_24, onImportJSON);
|
|
57191
57191
|
append($$anchor, button_24);
|
|
57192
57192
|
};
|
|
@@ -57345,7 +57345,7 @@ function TopBar($$anchor, $$props) {
|
|
|
57345
57345
|
});
|
|
57346
57346
|
var node_11 = sibling(node_10, 2);
|
|
57347
57347
|
var consequent_9 = ($$anchor) => {
|
|
57348
|
-
var div_9 = root_14$
|
|
57348
|
+
var div_9 = root_14$2();
|
|
57349
57349
|
var div_10 = child(div_9);
|
|
57350
57350
|
var div_11 = child(div_10);
|
|
57351
57351
|
var button_37 = sibling(child(div_11), 2);
|
|
@@ -57907,9 +57907,9 @@ function placeRoomTemplate(preset, origin, template, w = 400, h = 300) {
|
|
|
57907
57907
|
//#region src/lib/components/editor/UndoHistoryPanel.svelte
|
|
57908
57908
|
init_client();
|
|
57909
57909
|
var root_2$8 = /* @__PURE__ */ from_html(`<div class="px-3 py-6 text-center text-xs text-gray-400">No history yet</div>`);
|
|
57910
|
-
var root_4$
|
|
57911
|
-
var root_3$
|
|
57912
|
-
var root_1$
|
|
57910
|
+
var root_4$7 = /* @__PURE__ */ from_html(`<button><span class="w-5 text-[10px] text-gray-400 text-right shrink-0"></span> <span class="truncate flex-1"> </span> <span class="text-[10px] text-gray-300 shrink-0"> </span></button>`);
|
|
57911
|
+
var root_3$8 = /* @__PURE__ */ from_html(`<div class="py-1"><!> <div><span class="w-5 text-[10px] text-gray-400 text-right shrink-0">●</span> <span class="truncate flex-1 font-medium">Current state</span></div></div>`);
|
|
57912
|
+
var root_1$9 = /* @__PURE__ */ from_html(`<div class="fixed bottom-12 left-4 w-64 max-h-80 bg-white rounded-xl shadow-2xl border border-gray-200 z-50 flex flex-col overflow-hidden"><div class="flex items-center justify-between px-3 py-2 border-b border-gray-100 bg-gray-50"><div class="flex items-center gap-1.5"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-slate-500"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg> <span class="text-xs font-semibold text-slate-700">Undo History</span></div> <div class="flex items-center gap-2"><span class="text-[10px] text-slate-400"> </span> <button class="text-gray-400 hover:text-gray-600 text-sm leading-none" aria-label="Close history">✕</button></div></div> <div class="flex-1 overflow-y-auto"><!></div></div>`);
|
|
57913
57913
|
function UndoHistoryPanel($$anchor, $$props) {
|
|
57914
57914
|
push($$props, true);
|
|
57915
57915
|
let visible = prop($$props, "visible", 15, false);
|
|
@@ -57933,7 +57933,7 @@ function UndoHistoryPanel($$anchor, $$props) {
|
|
|
57933
57933
|
var fragment = comment();
|
|
57934
57934
|
var node = first_child(fragment);
|
|
57935
57935
|
var consequent_1 = ($$anchor) => {
|
|
57936
|
-
var div = root_1$
|
|
57936
|
+
var div = root_1$9();
|
|
57937
57937
|
var div_1 = child(div);
|
|
57938
57938
|
var div_2 = sibling(child(div_1), 2);
|
|
57939
57939
|
var span = child(div_2);
|
|
@@ -57948,10 +57948,10 @@ function UndoHistoryPanel($$anchor, $$props) {
|
|
|
57948
57948
|
append($$anchor, root_2$8());
|
|
57949
57949
|
};
|
|
57950
57950
|
var alternate = ($$anchor) => {
|
|
57951
|
-
var div_5 = root_3$
|
|
57951
|
+
var div_5 = root_3$8();
|
|
57952
57952
|
var node_2 = child(div_5);
|
|
57953
57953
|
each(node_2, 17, () => get(history).entries, index$1, ($$anchor, entry, i) => {
|
|
57954
|
-
var button_1 = root_4$
|
|
57954
|
+
var button_1 = root_4$7();
|
|
57955
57955
|
let classes;
|
|
57956
57956
|
var span_1 = child(button_1);
|
|
57957
57957
|
span_1.textContent = i + 1;
|
|
@@ -58009,25 +58009,25 @@ delegate(["click"]);
|
|
|
58009
58009
|
//#region src/lib/components/sidebar/BuildPanel.svelte
|
|
58010
58010
|
init_client();
|
|
58011
58011
|
init_index_client();
|
|
58012
|
-
var root_3$
|
|
58013
|
-
var root_4$
|
|
58012
|
+
var root_3$7 = /* @__PURE__ */ from_html(`<button draggable="true"><div class="w-9 h-9 rounded-lg bg-amber-50 flex items-center justify-center"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#92400e" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path></path></svg></div> <span class="text-xs font-medium text-gray-600"> </span> <span class="text-[10px] text-gray-400"> </span></button>`);
|
|
58013
|
+
var root_4$6 = /* @__PURE__ */ from_html(`<button draggable="true"><div class="w-9 h-9 rounded-lg bg-cyan-50 flex items-center justify-center"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#0e7490" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="16" rx="1"></rect><line x1="12" y1="4" x2="12" y2="20"></line><line x1="3" y1="12" x2="21" y2="12"></line></svg></div> <span class="text-xs font-medium text-gray-600"> </span> <span class="text-[10px] text-gray-400"> </span></button>`);
|
|
58014
58014
|
var root_2$7 = /* @__PURE__ */ from_html(`<div class="grid grid-cols-2 gap-2 mb-3"></div> <h3 class="text-xs font-semibold text-gray-400 uppercase mb-2">Windows</h3> <div class="grid grid-cols-2 gap-2"></div>`, 1);
|
|
58015
|
-
var root_1$
|
|
58016
|
-
var root_6$
|
|
58017
|
-
var root_7$
|
|
58015
|
+
var root_1$8 = /* @__PURE__ */ from_html(`<div class="space-y-1"><h3 class="text-xs font-semibold text-gray-400 uppercase mb-2">Tools</h3> <button><div><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"></path><path d="M13 13l6 6"></path></svg></div> <div class="text-left"><div class="font-medium">Select <span class="text-gray-400 text-xs ml-1">V</span></div> <div class="text-xs text-gray-400">Click to select elements</div></div></button> <button><div><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="8" width="18" height="8" rx="1"></rect><line x1="7" y1="8" x2="7" y2="16"></line><line x1="12" y1="8" x2="12" y2="16"></line><line x1="17" y1="8" x2="17" y2="16"></line></svg></div> <div class="text-left"><div class="font-medium">Draw Wall <span class="text-gray-400 text-xs ml-1">W</span></div> <div class="text-xs text-gray-400">Click to draw, dbl-click to finish</div></div></button> <h3 class="text-xs font-semibold text-gray-400 uppercase mb-2 mt-3">Structure</h3> <button><div><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 5h-5V2h-3v6h-4V5H7v6H2v3h5v3h3v-3h4v3h3v-6h5z"></path></svg></div> <div class="text-left"><div class="font-medium">Add Stairs</div> <div class="text-xs text-gray-400">Click to place stairs</div></div></button> <div class="flex gap-2"><button><div><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="6"></circle><line x1="6" y1="6" x2="18" y2="18"></line><line x1="18" y1="6" x2="6" y2="18"></line></svg></div> <div class="text-left"><div class="font-medium text-xs">Round Column</div></div></button> <button><div><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="6" y="6" width="12" height="12"></rect><line x1="6" y1="6" x2="18" y2="18"></line><line x1="18" y1="6" x2="6" y2="18"></line></svg></div> <div class="text-left"><div class="font-medium text-xs">Square Column</div></div></button></div> <h3 class="text-xs font-semibold text-gray-400 uppercase mb-2 mt-3">Annotate</h3> <button><div><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7V4h16v3"></path><line x1="12" y1="4" x2="12" y2="20"></line><line x1="8" y1="20" x2="16" y2="20"></line></svg></div> <div class="text-left"><div class="font-medium">Text Label</div> <div class="text-xs text-gray-400">Add text annotations (T)</div></div></button> <button><div><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"></path><line x1="16" y1="5" x2="22" y2="5"></line><line x1="19" y1="2" x2="19" y2="8"></line><line x1="3" y1="12" x2="12" y2="12"></line></svg></div> <div class="text-left"><div class="font-medium">Dimension</div> <div class="text-xs text-gray-400">Add dimension annotations (N)</div></div></button> <button><div><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h5l2-7 4 14 2-7h7"></path></svg></div> <div class="text-left"><div class="font-medium">Measure</div> <div class="text-xs text-gray-400">Measure distances (M)</div></div></button> <h3 class="text-xs font-semibold text-gray-400 uppercase mb-2 mt-3">Import</h3> <button class="w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm transition-colors hover:bg-gray-50 text-gray-700"><div class="w-9 h-9 rounded-lg bg-gray-100 flex items-center justify-center"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path></svg></div> <div class="text-left"><div class="font-medium">Import Image</div> <div class="text-xs text-gray-400">Floor plan background</div></div></button> <button class="w-full flex items-center gap-3 px-3 py-2.5 rounded-lg text-sm transition-colors hover:bg-gray-50 text-gray-700"><div class="w-9 h-9 rounded-lg bg-gray-100 flex items-center justify-center"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg></div> <div class="text-left"><div class="font-medium">Import RoomPlan</div> <div class="text-xs text-gray-400">iOS LiDAR scan (.json/.zip)</div></div></button> <button class="w-full flex items-center justify-between px-1 py-2 mt-3"><h3 class="text-xs font-semibold text-gray-400 uppercase">Doors</h3> <span class="text-gray-400 text-xs"> </span></button> <!></div>`);
|
|
58016
|
+
var root_6$4 = /* @__PURE__ */ from_html(`<button class="flex flex-col items-center gap-1.5 p-3 rounded-lg border-2 border-gray-100 hover:border-blue-300 hover:bg-blue-50 transition-colors cursor-grab active:cursor-grabbing" draggable="true"><div class="w-12 h-12 rounded-lg bg-gray-50 flex items-center justify-center text-2xl font-mono"> </div> <span class="text-xs font-medium text-gray-600"> </span></button>`);
|
|
58017
|
+
var root_7$3 = /* @__PURE__ */ from_html(`<button class="flex flex-col items-center gap-1.5 p-3 rounded-lg border-2 border-gray-100 hover:border-green-300 hover:bg-green-50 transition-colors cursor-grab active:cursor-grabbing" draggable="true"><div class="w-12 h-12 rounded-lg bg-green-50 flex items-center justify-center text-lg"><!></div> <span class="text-xs font-medium text-gray-600"> </span> <span class="text-[10px] text-gray-400"> </span></button>`);
|
|
58018
58018
|
var root_5$4 = /* @__PURE__ */ from_html(`<div class="space-y-2"><h3 class="text-xs font-semibold text-gray-400 uppercase mb-2">Room Presets</h3> <p class="text-xs text-gray-400 mb-3">Click to add a room shape to the canvas</p> <div class="grid grid-cols-2 gap-2"></div> <hr class="my-3 border-gray-200"/> <h3 class="text-xs font-semibold text-gray-400 uppercase mb-2">Room Templates</h3> <p class="text-xs text-gray-400 mb-3">Pre-furnished rooms — walls + furniture in one click</p> <div class="grid grid-cols-2 gap-2"></div></div>`);
|
|
58019
|
-
var root_16$
|
|
58020
|
-
var root_17$
|
|
58019
|
+
var root_16$2 = /* @__PURE__ */ from_html(`<button class="absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 w-5 h-5 flex items-center justify-center rounded-full hover:bg-gray-100" title="Clear search"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button>`);
|
|
58020
|
+
var root_17$1 = /* @__PURE__ */ from_html(`<div class="text-[10px] text-gray-400 px-1"> </div>`);
|
|
58021
58021
|
var root_18$2 = /* @__PURE__ */ from_html(`<button> </button>`);
|
|
58022
58022
|
var root_20$2 = /* @__PURE__ */ from_html(`<button draggable="true"><span role="button" tabindex="0"> </span> <div class="w-8 h-8 rounded-lg flex items-center justify-center"><div class="w-4 h-4 rounded-sm"></div></div> <span class="text-[10px] font-medium text-gray-600 leading-tight text-center"> </span></button>`);
|
|
58023
58023
|
var root_19$2 = /* @__PURE__ */ from_html(`<div class="mt-1"><h4 class="text-[10px] font-semibold text-gray-400 uppercase mb-1.5">Recent</h4> <div class="grid grid-cols-2 gap-2"></div></div> <hr class="border-gray-100"/>`, 1);
|
|
58024
58024
|
var root_22$2 = /* @__PURE__ */ from_html(`<span class="text-xs font-medium text-gray-600"> <mark class="bg-yellow-200 text-gray-800 rounded-sm px-0.5"> </mark> </span>`);
|
|
58025
|
-
var root_23$
|
|
58025
|
+
var root_23$2 = /* @__PURE__ */ from_html(`<span class="text-xs font-medium text-gray-600"> </span>`);
|
|
58026
58026
|
var root_21$2 = /* @__PURE__ */ from_html(`<button draggable="true"><span role="button" tabindex="0"> </span> <div class="w-10 h-10 rounded-lg flex items-center justify-center"><div class="w-5 h-5 rounded-sm"></div></div> <!> <span class="text-[10px] text-gray-400"> </span></button>`);
|
|
58027
|
-
var root_15$
|
|
58028
|
-
var root_24 = /* @__PURE__ */ from_html(`<div class="fixed z-50 pointer-events-none"><div class="bg-white rounded-xl shadow-2xl border border-gray-200 overflow-hidden" style="width: 220px;"><div class="w-full h-[120px] bg-gray-50 flex items-center justify-center p-3"><div class="w-16 h-16 rounded-xl flex items-center justify-center"><div class="w-10 h-10 rounded-md"></div></div></div> <div class="p-3 space-y-1.5"><div class="flex items-center gap-2"><span class="text-sm font-semibold text-gray-800"> </span> <span class="px-1.5 py-0.5 rounded-full text-[9px] font-semibold text-white"> </span></div> <div class="text-xs text-gray-500"> </div></div></div></div>`);
|
|
58027
|
+
var root_15$1 = /* @__PURE__ */ from_html(`<div class="space-y-2"><div class="relative"><input type="text" placeholder="Search furniture..." class="w-full px-3 py-2 pr-8 border border-gray-200 rounded-lg text-sm focus:ring-2 focus:ring-blue-200 focus:border-blue-400 outline-none"/> <!></div> <!> <div class="flex flex-wrap gap-1 max-h-24 overflow-y-auto"><button>All</button> <button> </button> <!></div> <!> <div class="grid grid-cols-2 gap-2 mt-2"></div></div>`);
|
|
58028
|
+
var root_24$1 = /* @__PURE__ */ from_html(`<div class="fixed z-50 pointer-events-none"><div class="bg-white rounded-xl shadow-2xl border border-gray-200 overflow-hidden" style="width: 220px;"><div class="w-full h-[120px] bg-gray-50 flex items-center justify-center p-3"><div class="w-16 h-16 rounded-xl flex items-center justify-center"><div class="w-10 h-10 rounded-md"></div></div></div> <div class="p-3 space-y-1.5"><div class="flex items-center gap-2"><span class="text-sm font-semibold text-gray-800"> </span> <span class="px-1.5 py-0.5 rounded-full text-[9px] font-semibold text-white"> </span></div> <div class="text-xs text-gray-500"> </div></div></div></div>`);
|
|
58029
58029
|
var root_25 = /* @__PURE__ */ from_html(`<div class="fixed inset-0 bg-black/50 z-50 flex items-center justify-center"><div class="bg-white rounded-xl shadow-2xl w-80 p-5"><h3 class="text-sm font-bold text-gray-800 mb-1">Import RoomPlan</h3> <p class="text-xs text-gray-400 mb-4"> </p> <div class="space-y-3"><label class="flex items-start gap-2.5 cursor-pointer"><input type="checkbox" class="accent-blue-500 mt-0.5"/> <div><div class="text-sm font-medium text-gray-700">Straighten walls</div> <div class="text-xs text-gray-400">Snap near-horizontal/vertical walls to axis</div></div></label> <label class="flex items-start gap-2.5 cursor-pointer"><input type="checkbox" class="accent-blue-500 mt-0.5"/> <div><div class="text-sm font-medium text-gray-700">Enforce orthogonal <span class="text-xs text-blue-400 font-mono"> </span></div> <div class="text-xs text-gray-400">Force all walls to 90°/180° angles</div></div></label> <label class="block"><div class="text-xs text-gray-500 mb-1">Corner merge distance (cm)</div> <input type="number" min="0" max="50" step="5" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label></div> <div class="flex gap-2 mt-5"><button class="flex-1 px-3 py-2 border border-gray-200 rounded-lg text-sm text-gray-600 hover:bg-gray-50 transition-colors">Cancel</button> <button class="flex-1 px-3 py-2 bg-blue-500 text-white rounded-lg text-sm font-medium hover:bg-blue-600 transition-colors">Import</button></div></div></div>`);
|
|
58030
|
-
var root$
|
|
58030
|
+
var root$4 = /* @__PURE__ */ from_html(`<div class="relative w-64 bg-white border-r border-gray-200 flex flex-col h-full overflow-hidden"><div class="flex border-b border-gray-200"><button>Build</button> <button>Rooms</button> <button>Objects</button></div> <div class="flex-1 overflow-y-auto p-3"><!></div> <button title="Layers Panel (L)" aria-label="Toggle Layers Panel">🗂</button> <button title="Undo History" aria-label="Toggle Undo History">⟲</button> <button class="absolute bottom-4 left-4 w-8 h-8 rounded-full bg-slate-700 text-white text-sm font-bold shadow-lg hover:bg-slate-600 transition-colors z-50" title="Keyboard Shortcuts (?)" aria-label="Keyboard Shortcuts">?</button></div> <!> <!>`, 1);
|
|
58031
58031
|
function BuildPanel($$anchor, $$props) {
|
|
58032
58032
|
push($$props, true);
|
|
58033
58033
|
let showLayers = prop($$props, "showLayers", 15), showUndoHistory = prop($$props, "showUndoHistory", 15), showHelp = prop($$props, "showHelp", 15);
|
|
@@ -58337,7 +58337,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58337
58337
|
"Electrical": "#2563eb",
|
|
58338
58338
|
"Plumbing": "#0ea5e9"
|
|
58339
58339
|
};
|
|
58340
|
-
var fragment = root$
|
|
58340
|
+
var fragment = root$4();
|
|
58341
58341
|
var div = first_child(fragment);
|
|
58342
58342
|
var div_1 = child(div);
|
|
58343
58343
|
var button = child(div_1);
|
|
@@ -58347,7 +58347,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58347
58347
|
var div_2 = sibling(div_1, 2);
|
|
58348
58348
|
var node = child(div_2);
|
|
58349
58349
|
var consequent_1 = ($$anchor) => {
|
|
58350
|
-
var div_3 = root_1$
|
|
58350
|
+
var div_3 = root_1$8();
|
|
58351
58351
|
var button_3 = sibling(child(div_3), 2);
|
|
58352
58352
|
var div_4 = child(button_3);
|
|
58353
58353
|
next(2);
|
|
@@ -58394,7 +58394,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58394
58394
|
var fragment_1 = root_2$7();
|
|
58395
58395
|
var div_13 = first_child(fragment_1);
|
|
58396
58396
|
each(div_13, 21, () => doorCatalog, index$1, ($$anchor, dc) => {
|
|
58397
|
-
var button_14 = root_3$
|
|
58397
|
+
var button_14 = root_3$7();
|
|
58398
58398
|
var div_14 = child(button_14);
|
|
58399
58399
|
var svg = child(div_14);
|
|
58400
58400
|
var path = child(svg);
|
|
@@ -58424,7 +58424,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58424
58424
|
reset(div_13);
|
|
58425
58425
|
var div_15 = sibling(div_13, 4);
|
|
58426
58426
|
each(div_15, 21, () => windowCatalog, index$1, ($$anchor, wc) => {
|
|
58427
|
-
var button_15 = root_4$
|
|
58427
|
+
var button_15 = root_4$6();
|
|
58428
58428
|
var span_3 = sibling(child(button_15), 2);
|
|
58429
58429
|
var text_4 = child(span_3, true);
|
|
58430
58430
|
reset(span_3);
|
|
@@ -58488,7 +58488,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58488
58488
|
var div_16 = root_5$4();
|
|
58489
58489
|
var div_17 = sibling(child(div_16), 4);
|
|
58490
58490
|
each(div_17, 21, () => roomPresets, index$1, ($$anchor, preset) => {
|
|
58491
|
-
var button_16 = root_6$
|
|
58491
|
+
var button_16 = root_6$4();
|
|
58492
58492
|
var div_18 = child(button_16);
|
|
58493
58493
|
var text_6 = child(div_18, true);
|
|
58494
58494
|
reset(div_18);
|
|
@@ -58511,7 +58511,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58511
58511
|
reset(div_17);
|
|
58512
58512
|
var div_19 = sibling(div_17, 8);
|
|
58513
58513
|
each(div_19, 21, () => roomTemplates, index$1, ($$anchor, tmpl) => {
|
|
58514
|
-
var button_17 = root_7$
|
|
58514
|
+
var button_17 = root_7$3();
|
|
58515
58515
|
var div_20 = child(button_17);
|
|
58516
58516
|
var node_2 = child(div_20);
|
|
58517
58517
|
var consequent_2 = ($$anchor) => {
|
|
@@ -58570,13 +58570,13 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58570
58570
|
append($$anchor, div_16);
|
|
58571
58571
|
};
|
|
58572
58572
|
var consequent_13 = ($$anchor) => {
|
|
58573
|
-
var div_21 = root_15$
|
|
58573
|
+
var div_21 = root_15$1();
|
|
58574
58574
|
var div_22 = child(div_21);
|
|
58575
58575
|
var input_1 = child(div_22);
|
|
58576
58576
|
remove_input_defaults(input_1);
|
|
58577
58577
|
var node_3 = sibling(input_1, 2);
|
|
58578
58578
|
var consequent_9 = ($$anchor) => {
|
|
58579
|
-
var button_18 = root_16$
|
|
58579
|
+
var button_18 = root_16$2();
|
|
58580
58580
|
delegated("click", button_18, () => set(search, ""));
|
|
58581
58581
|
append($$anchor, button_18);
|
|
58582
58582
|
};
|
|
@@ -58586,7 +58586,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58586
58586
|
reset(div_22);
|
|
58587
58587
|
var node_4 = sibling(div_22, 2);
|
|
58588
58588
|
var consequent_10 = ($$anchor) => {
|
|
58589
|
-
var div_23 = root_17$
|
|
58589
|
+
var div_23 = root_17$1();
|
|
58590
58590
|
var text_17 = child(div_23);
|
|
58591
58591
|
reset(div_23);
|
|
58592
58592
|
template_effect(() => {
|
|
@@ -58711,7 +58711,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58711
58711
|
};
|
|
58712
58712
|
var d = /* @__PURE__ */ user_derived(() => get(s) && get(item).name.toLowerCase().includes(get(s)));
|
|
58713
58713
|
var alternate_1 = ($$anchor) => {
|
|
58714
|
-
var span_12 = root_23$
|
|
58714
|
+
var span_12 = root_23$2();
|
|
58715
58715
|
var text_26 = child(span_12, true);
|
|
58716
58716
|
reset(span_12);
|
|
58717
58717
|
template_effect(() => set_text(text_26, get(item).name));
|
|
@@ -58788,7 +58788,7 @@ function BuildPanel($$anchor, $$props) {
|
|
|
58788
58788
|
var node_8 = sibling(div, 2);
|
|
58789
58789
|
var consequent_14 = ($$anchor) => {
|
|
58790
58790
|
const item = /* @__PURE__ */ user_derived(() => get(hoveredItem));
|
|
58791
|
-
var div_32 = root_24();
|
|
58791
|
+
var div_32 = root_24$1();
|
|
58792
58792
|
var div_33 = child(div_32);
|
|
58793
58793
|
var div_34 = child(div_33);
|
|
58794
58794
|
var div_35 = child(div_34);
|
|
@@ -59150,29 +59150,30 @@ var images = {
|
|
|
59150
59150
|
//#endregion
|
|
59151
59151
|
//#region src/lib/components/sidebar/PropertiesPanel.svelte
|
|
59152
59152
|
init_client();
|
|
59153
|
-
var root_3$
|
|
59154
|
-
var root_4$
|
|
59153
|
+
var root_3$6 = /* @__PURE__ */ from_html(`<button></button>`);
|
|
59154
|
+
var root_4$5 = /* @__PURE__ */ from_html(`<button><span class="bg-white/80 backdrop-blur-sm rounded px-1 py-0.5 mb-0.5 text-gray-700"> </span></button>`);
|
|
59155
59155
|
var root_2$6 = /* @__PURE__ */ from_html(`<div class="space-y-2"><span class="text-xs text-gray-500">Color</span> <div class="grid grid-cols-6 gap-1.5"></div> <label class="flex items-center gap-2"><span class="text-xs text-gray-500">Custom:</span> <input type="color" class="w-8 h-6 rounded border border-gray-200 cursor-pointer"/></label> <span class="text-xs text-gray-500">Texture</span> <div class="grid grid-cols-3 gap-1.5"><button>None</button> <!></div></div>`);
|
|
59156
|
-
var root_6$
|
|
59157
|
-
var root_7$
|
|
59156
|
+
var root_6$3 = /* @__PURE__ */ from_html(`<button></button>`);
|
|
59157
|
+
var root_7$2 = /* @__PURE__ */ from_html(`<button><span class="bg-white/80 backdrop-blur-sm rounded px-1 py-0.5 mb-0.5 text-gray-700"> </span></button>`);
|
|
59158
59158
|
var root_5$3 = /* @__PURE__ */ from_html(`<div class="space-y-2"><span class="text-xs text-gray-500">Color</span> <div class="grid grid-cols-6 gap-1.5"></div> <label class="flex items-center gap-2"><span class="text-xs text-gray-500">Custom:</span> <input type="color" class="w-8 h-6 rounded border border-gray-200 cursor-pointer"/></label> <span class="text-xs text-gray-500">Texture</span> <div class="grid grid-cols-3 gap-1.5"><button>None</button> <!></div></div>`);
|
|
59159
|
-
var root_1$
|
|
59160
|
-
var root_8$
|
|
59159
|
+
var root_1$7 = /* @__PURE__ */ from_html(`<h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-gray-200 rounded flex items-center justify-center text-xs">▭</span> Wall Properties</h3> <div class="space-y-3"><label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" disabled="" class="w-full px-2 py-1 border border-gray-200 rounded text-sm bg-gray-50"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <div class="flex items-center gap-2"><span class="text-xs text-gray-500">Curved</span> <button> </button></div> <div><div class="flex border-b border-gray-200 mb-3"><button>Interior</button> <button>Exterior</button></div> <!></div></div>`, 1);
|
|
59160
|
+
var root_8$1 = /* @__PURE__ */ from_html(`<h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-amber-100 rounded flex items-center justify-center text-xs">🚪</span> Door Properties</h3> <div class="space-y-3"><label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" min="1" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Type</span> <select class="w-full px-2 py-1 border border-gray-200 rounded text-sm"><option>Single</option><option>Double</option><option>Sliding</option><option>French</option><option>Pocket</option><option>Bifold</option></select></label> <label class="block"><span class="text-xs text-gray-500">Hinge Side</span> <div class="flex gap-2"><button>Left</button> <button>Right</button></div></label> <label class="block"><span class="text-xs text-gray-500">Opens</span> <div class="flex gap-2"><button>Inward</button> <button>Outward</button></div></label></div>`, 1);
|
|
59161
59161
|
var root_9$1 = /* @__PURE__ */ from_html(`<h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-cyan-100 rounded flex items-center justify-center text-xs">🪟</span> Window Properties</h3> <div class="space-y-3"><label class="block"><span class="text-xs text-gray-500">Type</span> <select class="w-full px-2 py-1 border border-gray-200 rounded text-sm"><option>Standard</option><option>Fixed</option><option>Casement</option><option>Sliding</option><option>Bay</option></select></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" min="1" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label></div>`, 1);
|
|
59162
|
-
var root_11$1 = /* @__PURE__ */ from_html(`<
|
|
59163
|
-
var
|
|
59164
|
-
var
|
|
59165
|
-
var root_14 = /* @__PURE__ */ from_html(`<
|
|
59166
|
-
var
|
|
59167
|
-
var
|
|
59168
|
-
var
|
|
59169
|
-
var
|
|
59170
|
-
var
|
|
59171
|
-
var root_21$1 = /* @__PURE__ */ from_html(`<
|
|
59172
|
-
var
|
|
59173
|
-
var
|
|
59174
|
-
var root_23 = /* @__PURE__ */ from_html(`<div class="
|
|
59175
|
-
var
|
|
59162
|
+
var root_11$1 = /* @__PURE__ */ from_html(`<label class="block"><span class="text-xs text-gray-500">Camera Name</span> <input type="text" placeholder="Display name" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Camera Serial</span> <input type="text" placeholder="Device serial" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label>`, 1);
|
|
59163
|
+
var root_12$1 = /* @__PURE__ */ from_html(`<button></button>`);
|
|
59164
|
+
var root_10$1 = /* @__PURE__ */ from_html(`<h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-purple-100 rounded flex items-center justify-center text-xs"> </span> <button> </button></h3> <div class="space-y-3"><!> <div><div class="flex items-center gap-1 mb-2"><span class="text-xs text-gray-500">Color</span> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-gray-400"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path></svg></div> <div class="grid grid-cols-5 gap-1.5 mb-2"></div> <div class="flex items-center gap-2"><span class="text-xs text-gray-500">Custom:</span> <input type="color" class="w-8 h-6 rounded border border-gray-200 cursor-pointer"/></div></div> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" min="1" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" min="1" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" min="1" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Material</span> <select class="w-full px-2 py-1 border border-gray-200 rounded text-sm"><option>Wood</option><option>Metal</option><option>Fabric</option><option>Leather</option><option>Glass</option><option>Plastic</option><option>Stone</option><option>Ceramic</option></select></label> <label class="block"><span class="text-xs text-gray-500">Rotation (degrees)</span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <div class="flex gap-1"><button class="flex-1 px-2 py-1.5 border border-gray-200 rounded text-sm hover:bg-gray-50 transition-colors" title="Rotate 90° left">↺ 90°</button> <button class="flex-1 px-2 py-1.5 border border-gray-200 rounded text-sm hover:bg-gray-50 transition-colors" title="Rotate 90° right">↻ 90°</button></div> <div class="flex gap-1"><button class="flex-1 px-2 py-1.5 border border-gray-200 rounded text-sm hover:bg-gray-50 transition-colors" title="Flip horizontally">↔ Flip H</button> <button class="flex-1 px-2 py-1.5 border border-gray-200 rounded text-sm hover:bg-gray-50 transition-colors" title="Flip vertically">↕ Flip V</button></div> <button class="w-full px-2 py-1.5 border border-gray-300 rounded text-sm text-gray-600 hover:bg-gray-50 transition-colors">Reset to defaults</button></div>`, 1);
|
|
59165
|
+
var root_14$1 = /* @__PURE__ */ from_html(`<option> </option>`);
|
|
59166
|
+
var root_15 = /* @__PURE__ */ from_html(`<button></button>`);
|
|
59167
|
+
var root_18$1 = /* @__PURE__ */ from_html(`<button><div class="w-full h-12 rounded-md mb-1 overflow-hidden"></div> <div class="text-center leading-3 text-[10px] text-gray-600 truncate"> </div></button>`);
|
|
59168
|
+
var root_16$1 = /* @__PURE__ */ from_html(`<div><span class="text-xs font-medium text-gray-600 mb-1.5 block"> </span> <div class="grid grid-cols-3 gap-1.5"></div></div>`);
|
|
59169
|
+
var root_13$1 = /* @__PURE__ */ from_html(`<h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-green-100 rounded flex items-center justify-center text-xs">⬜</span> Room Properties</h3> <div class="space-y-3"><label class="block"><span class="text-xs text-gray-500">Room Type</span> <select class="w-full px-2 py-1 border border-gray-200 rounded text-sm"></select></label> <label class="block"><span class="text-xs text-gray-500">Room Name</span> <input type="text" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Category</span> <select class="w-full px-2 py-1 border border-gray-200 rounded text-sm"><option>🏠 Indoor</option><option>🌳 Outdoor</option><option>🚗 Garage</option><option>🔧 Utility</option></select></label> <div><span class="text-xs text-gray-500">Area</span> <p class="text-sm text-gray-700"> </p></div> <div><span class="text-xs text-gray-500 mb-1.5 block">Room Color</span> <div class="grid grid-cols-5 gap-1.5 mb-2"></div> <div class="flex items-center gap-2"><span class="text-xs text-gray-500">Custom:</span> <input type="color" class="w-8 h-6 rounded border border-gray-200 cursor-pointer"/></div></div> <div><div class="flex items-center gap-1 mb-2"><span class="text-xs text-gray-500">Floor Material</span> <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="text-gray-400"><path d="M3 3h18v18H3z"></path><path d="M8 8h8v8H8z"></path></svg></div> <div class="space-y-3"></div></div></div>`, 1);
|
|
59170
|
+
var root_19$1 = /* @__PURE__ */ from_html(`<h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-gray-200 rounded flex items-center justify-center text-xs">🪜</span> Stair Properties</h3> <div class="space-y-3"><label class="block"><span class="text-xs text-gray-500">Type</span> <select class="w-full px-2 py-1 border border-gray-200 rounded text-sm"><option>Straight</option><option>L-Shaped</option><option>U-Shaped</option><option>Spiral</option></select></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Risers</span> <input type="number" min="3" max="30" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Direction</span> <div class="flex gap-2"><button>Up ↑</button> <button>Down ↓</button></div></label> <label class="block"><span class="text-xs text-gray-500">Rotation (degrees)</span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label></div>`, 1);
|
|
59171
|
+
var root_21$1 = /* @__PURE__ */ from_html(`<button></button>`);
|
|
59172
|
+
var root_22$1 = /* @__PURE__ */ from_html(`<label class="block"><span class="text-xs text-gray-500">Rotation (degrees)</span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label>`);
|
|
59173
|
+
var root_20$1 = /* @__PURE__ */ from_html(`<h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-gray-200 rounded flex items-center justify-center text-xs">🏛️</span> Column Properties</h3> <div class="space-y-3"><label class="block"><span class="text-xs text-gray-500">Shape</span> <div class="flex gap-2"><button>⭕ Round</button> <button>⬜ Square</button></div></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" min="10" max="200" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500"> </span> <input type="number" min="50" max="1000" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <div><span class="text-xs text-gray-500 mb-1.5 block">Color</span> <div class="grid grid-cols-5 gap-1.5 mb-2"></div> <div class="flex items-center gap-2"><span class="text-xs text-gray-500">Custom:</span> <input type="color" class="w-8 h-6 rounded border border-gray-200 cursor-pointer"/></div></div> <!></div>`, 1);
|
|
59174
|
+
var root_23$1 = /* @__PURE__ */ from_html(`<div class="space-y-3"><h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-emerald-100 rounded flex items-center justify-center text-xs">🏷️</span> Text Annotation</h3> <label class="block"><span class="text-xs text-gray-500">Text</span> <input type="text" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Font Size</span> <input type="number" min="8" max="72" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Color</span> <div class="flex items-center gap-2"><input type="color" class="w-8 h-6 rounded border border-gray-200 cursor-pointer"/> <span class="text-xs text-gray-400"> </span></div></label> <label class="block"><span class="text-xs text-gray-500">Rotation (°)</span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">X</span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <label class="block"><span class="text-xs text-gray-500">Y</span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label></div>`);
|
|
59175
|
+
var root_24 = /* @__PURE__ */ from_html(`<div class="mt-4 pt-3 border-t border-gray-200"><h3 class="text-sm font-semibold text-gray-700 mb-3 flex items-center gap-2"><span class="w-6 h-6 bg-blue-100 rounded flex items-center justify-center text-xs">🖼️</span> Background Image</h3> <div class="space-y-3"><label class="block"><span class="text-xs text-gray-500">Opacity</span> <input type="range" min="0.05" max="1" step="0.05" class="w-full"/></label> <label class="block"><span class="text-xs text-gray-500">Scale</span> <input type="range" min="0.1" max="5" step="0.05" class="w-full"/></label> <label class="block"><span class="text-xs text-gray-500">Rotation</span> <input type="number" class="w-full px-2 py-1 border border-gray-200 rounded text-sm"/></label> <div class="flex gap-2"><button> </button> <button class="flex-1 px-2 py-1.5 border rounded text-sm border-gray-200 hover:bg-gray-50">📏 Set Scale</button></div> <button class="w-full px-2 py-1.5 border border-red-300 rounded text-sm text-red-600 hover:bg-red-50">Remove Image</button></div></div>`);
|
|
59176
|
+
var root$3 = /* @__PURE__ */ from_html(`<div style="top: 48px; bottom: 36px;"><!> <!></div>`);
|
|
59176
59177
|
function PropertiesPanel($$anchor, $$props) {
|
|
59177
59178
|
push($$props, true);
|
|
59178
59179
|
const $projectSettings = () => store_get(projectSettings, "$projectSettings", $$stores);
|
|
@@ -59337,6 +59338,14 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59337
59338
|
if (!get(selectedFurniture)) return;
|
|
59338
59339
|
updateFurniture(get(selectedFurniture).id, { rotation: Number(e.target.value) });
|
|
59339
59340
|
}
|
|
59341
|
+
function onFurnitureName(e) {
|
|
59342
|
+
if (!get(selectedFurniture)) return;
|
|
59343
|
+
updateFurniture(get(selectedFurniture).id, { name: e.target.value });
|
|
59344
|
+
}
|
|
59345
|
+
function onFurnitureSerial(e) {
|
|
59346
|
+
if (!get(selectedFurniture)) return;
|
|
59347
|
+
updateFurniture(get(selectedFurniture).id, { serial: e.target.value });
|
|
59348
|
+
}
|
|
59340
59349
|
function resetFurnitureDefaults() {
|
|
59341
59350
|
if (!get(selectedFurniture)) return;
|
|
59342
59351
|
updateFurniture(get(selectedFurniture).id, {
|
|
@@ -59602,11 +59611,11 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59602
59611
|
}
|
|
59603
59612
|
];
|
|
59604
59613
|
let hasSelection = /* @__PURE__ */ user_derived(() => !!get(selectedWall) || !!get(selectedDoor) || !!get(selectedWindow) || !!get(selectedFurniture) || !!get(selectedRoom) || !!get(selectedStair) || !!get(selectedColumn) || !!get(selectedTextAnnotation) || !is3D() && get(hasBgImage));
|
|
59605
|
-
var div = root$
|
|
59614
|
+
var div = root$3();
|
|
59606
59615
|
let classes;
|
|
59607
59616
|
var node = child(div);
|
|
59608
59617
|
var consequent_1 = ($$anchor) => {
|
|
59609
|
-
var fragment = root_1$
|
|
59618
|
+
var fragment = root_1$7();
|
|
59610
59619
|
var div_1 = sibling(first_child(fragment), 2);
|
|
59611
59620
|
var label = child(div_1);
|
|
59612
59621
|
var span = child(label);
|
|
@@ -59646,7 +59655,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59646
59655
|
var div_5 = root_2$6();
|
|
59647
59656
|
var div_6 = sibling(child(div_5), 2);
|
|
59648
59657
|
each(div_6, 21, () => wallColors, index$1, ($$anchor, wc) => {
|
|
59649
|
-
var button_3 = root_3$
|
|
59658
|
+
var button_3 = root_3$6();
|
|
59650
59659
|
template_effect(() => {
|
|
59651
59660
|
var _$$get$color;
|
|
59652
59661
|
set_class(button_3, 1, `w-7 h-7 rounded-md border-2 hover:border-gray-300 transition-colors ${get(sideColor) === get(wc).color ? "border-blue-500 ring-1 ring-blue-200" : "border-gray-200"}`);
|
|
@@ -59677,7 +59686,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59677
59686
|
"subway-tile": images.subwayTile
|
|
59678
59687
|
}[get(wc).id]) !== null && _redBrick$exposedBr !== void 0 ? _redBrick$exposedBr : "";
|
|
59679
59688
|
});
|
|
59680
|
-
var button_5 = root_4$
|
|
59689
|
+
var button_5 = root_4$5();
|
|
59681
59690
|
var span_3 = child(button_5);
|
|
59682
59691
|
var text_4 = child(span_3, true);
|
|
59683
59692
|
reset(span_3);
|
|
@@ -59715,7 +59724,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59715
59724
|
var div_8 = root_5$3();
|
|
59716
59725
|
var div_9 = sibling(child(div_8), 2);
|
|
59717
59726
|
each(div_9, 21, () => wallColors, index$1, ($$anchor, wc) => {
|
|
59718
|
-
var button_6 = root_6$
|
|
59727
|
+
var button_6 = root_6$3();
|
|
59719
59728
|
template_effect(() => {
|
|
59720
59729
|
var _$$get$color2;
|
|
59721
59730
|
set_class(button_6, 1, `w-7 h-7 rounded-md border-2 hover:border-gray-300 transition-colors ${get(sideColor) === get(wc).color ? "border-blue-500 ring-1 ring-blue-200" : "border-gray-200"}`);
|
|
@@ -59746,7 +59755,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59746
59755
|
"subway-tile": images.subwayTile
|
|
59747
59756
|
}[get(wc).id]) !== null && _redBrick$exposedBr2 !== void 0 ? _redBrick$exposedBr2 : "";
|
|
59748
59757
|
});
|
|
59749
|
-
var button_8 = root_7$
|
|
59758
|
+
var button_8 = root_7$2();
|
|
59750
59759
|
var span_4 = child(button_8);
|
|
59751
59760
|
var text_5 = child(span_4, true);
|
|
59752
59761
|
reset(span_4);
|
|
@@ -59824,7 +59833,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59824
59833
|
append($$anchor, fragment);
|
|
59825
59834
|
};
|
|
59826
59835
|
var consequent_2 = ($$anchor) => {
|
|
59827
|
-
var fragment_1 = root_8$
|
|
59836
|
+
var fragment_1 = root_8$1();
|
|
59828
59837
|
var div_11 = sibling(first_child(fragment_1), 2);
|
|
59829
59838
|
var label_5 = child(div_11);
|
|
59830
59839
|
var span_5 = child(label_5);
|
|
@@ -60026,7 +60035,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60026
60035
|
delegated("input", input_13, onWindowSill);
|
|
60027
60036
|
append($$anchor, fragment_2);
|
|
60028
60037
|
};
|
|
60029
|
-
var
|
|
60038
|
+
var consequent_5 = ($$anchor) => {
|
|
60030
60039
|
var fragment_3 = root_10$1();
|
|
60031
60040
|
var h3 = first_child(fragment_3);
|
|
60032
60041
|
var span_14 = child(h3);
|
|
@@ -60038,7 +60047,30 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60038
60047
|
reset(button_13);
|
|
60039
60048
|
reset(h3);
|
|
60040
60049
|
var div_15 = sibling(h3, 2);
|
|
60041
|
-
var
|
|
60050
|
+
var node_4 = child(div_15);
|
|
60051
|
+
var consequent_4 = ($$anchor) => {
|
|
60052
|
+
var fragment_4 = root_11$1();
|
|
60053
|
+
var label_18 = first_child(fragment_4);
|
|
60054
|
+
var input_14 = sibling(child(label_18), 2);
|
|
60055
|
+
remove_input_defaults(input_14);
|
|
60056
|
+
reset(label_18);
|
|
60057
|
+
var label_19 = sibling(label_18, 2);
|
|
60058
|
+
var input_15 = sibling(child(label_19), 2);
|
|
60059
|
+
remove_input_defaults(input_15);
|
|
60060
|
+
reset(label_19);
|
|
60061
|
+
template_effect(() => {
|
|
60062
|
+
var _$$get$name, _$$get$serial;
|
|
60063
|
+
set_value(input_14, (_$$get$name = get(selectedFurniture).name) !== null && _$$get$name !== void 0 ? _$$get$name : "");
|
|
60064
|
+
set_value(input_15, (_$$get$serial = get(selectedFurniture).serial) !== null && _$$get$serial !== void 0 ? _$$get$serial : "");
|
|
60065
|
+
});
|
|
60066
|
+
delegated("input", input_14, onFurnitureName);
|
|
60067
|
+
delegated("input", input_15, onFurnitureSerial);
|
|
60068
|
+
append($$anchor, fragment_4);
|
|
60069
|
+
};
|
|
60070
|
+
if_block(node_4, ($$render) => {
|
|
60071
|
+
if (get(selectedFurniture).catalogId === "camera") $$render(consequent_4);
|
|
60072
|
+
});
|
|
60073
|
+
var div_16 = sibling(node_4, 2);
|
|
60042
60074
|
var div_17 = sibling(child(div_16), 2);
|
|
60043
60075
|
each(div_17, 20, () => [
|
|
60044
60076
|
"#ffffff",
|
|
@@ -60052,7 +60084,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60052
60084
|
"#dc143c",
|
|
60053
60085
|
"#228b22"
|
|
60054
60086
|
], index$1, ($$anchor, color) => {
|
|
60055
|
-
var button_14 =
|
|
60087
|
+
var button_14 = root_12$1();
|
|
60056
60088
|
template_effect(($0) => {
|
|
60057
60089
|
set_class(button_14, 1, `w-6 h-6 rounded border-2 hover:border-gray-300 transition-colors ${$0 !== null && $0 !== void 0 ? $0 : ""}`);
|
|
60058
60090
|
set_style(button_14, `background-color: ${color !== null && color !== void 0 ? color : ""}`);
|
|
@@ -60066,33 +60098,33 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60066
60098
|
});
|
|
60067
60099
|
reset(div_17);
|
|
60068
60100
|
var div_18 = sibling(div_17, 2);
|
|
60069
|
-
var
|
|
60070
|
-
remove_input_defaults(
|
|
60101
|
+
var input_16 = sibling(child(div_18), 2);
|
|
60102
|
+
remove_input_defaults(input_16);
|
|
60071
60103
|
reset(div_18);
|
|
60072
60104
|
reset(div_16);
|
|
60073
|
-
var
|
|
60074
|
-
var span_15 = child(
|
|
60105
|
+
var label_20 = sibling(div_16, 2);
|
|
60106
|
+
var span_15 = child(label_20);
|
|
60075
60107
|
var text_18 = child(span_15);
|
|
60076
60108
|
reset(span_15);
|
|
60077
|
-
var
|
|
60078
|
-
remove_input_defaults(
|
|
60079
|
-
reset(
|
|
60080
|
-
var
|
|
60081
|
-
var span_16 = child(
|
|
60109
|
+
var input_17 = sibling(span_15, 2);
|
|
60110
|
+
remove_input_defaults(input_17);
|
|
60111
|
+
reset(label_20);
|
|
60112
|
+
var label_21 = sibling(label_20, 2);
|
|
60113
|
+
var span_16 = child(label_21);
|
|
60082
60114
|
var text_19 = child(span_16);
|
|
60083
60115
|
reset(span_16);
|
|
60084
|
-
var
|
|
60085
|
-
remove_input_defaults(
|
|
60086
|
-
reset(
|
|
60087
|
-
var
|
|
60088
|
-
var span_17 = child(
|
|
60116
|
+
var input_18 = sibling(span_16, 2);
|
|
60117
|
+
remove_input_defaults(input_18);
|
|
60118
|
+
reset(label_21);
|
|
60119
|
+
var label_22 = sibling(label_21, 2);
|
|
60120
|
+
var span_17 = child(label_22);
|
|
60089
60121
|
var text_20 = child(span_17);
|
|
60090
60122
|
reset(span_17);
|
|
60091
|
-
var
|
|
60092
|
-
remove_input_defaults(
|
|
60093
|
-
reset(
|
|
60094
|
-
var
|
|
60095
|
-
var select_2 = sibling(child(
|
|
60123
|
+
var input_19 = sibling(span_17, 2);
|
|
60124
|
+
remove_input_defaults(input_19);
|
|
60125
|
+
reset(label_22);
|
|
60126
|
+
var label_23 = sibling(label_22, 2);
|
|
60127
|
+
var select_2 = sibling(child(label_23), 2);
|
|
60096
60128
|
var option_11 = child(select_2);
|
|
60097
60129
|
option_11.value = option_11.__value = "Wood";
|
|
60098
60130
|
var option_12 = sibling(option_11);
|
|
@@ -60112,12 +60144,12 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60112
60144
|
reset(select_2);
|
|
60113
60145
|
var select_2_value;
|
|
60114
60146
|
init_select(select_2);
|
|
60115
|
-
reset(
|
|
60116
|
-
var
|
|
60117
|
-
var
|
|
60118
|
-
remove_input_defaults(
|
|
60119
|
-
reset(
|
|
60120
|
-
var div_19 = sibling(
|
|
60147
|
+
reset(label_23);
|
|
60148
|
+
var label_24 = sibling(label_23, 2);
|
|
60149
|
+
var input_20 = sibling(child(label_24), 2);
|
|
60150
|
+
remove_input_defaults(input_20);
|
|
60151
|
+
reset(label_24);
|
|
60152
|
+
var div_19 = sibling(label_24, 2);
|
|
60121
60153
|
var button_15 = child(div_19);
|
|
60122
60154
|
var button_16 = sibling(button_15, 2);
|
|
60123
60155
|
reset(div_19);
|
|
@@ -60134,18 +60166,18 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60134
60166
|
set_class(button_13, 1, `ml-auto px-1.5 py-0.5 rounded text-xs border transition-colors ${get(selectedFurniture).locked ? "bg-amber-100 border-amber-400 text-amber-700" : "border-gray-200 hover:bg-gray-50 text-gray-500"}`);
|
|
60135
60167
|
set_attribute(button_13, "title", get(selectedFurniture).locked ? "Unlock (Ctrl+L)" : "Lock (Ctrl+L)");
|
|
60136
60168
|
set_text(text_17, get(selectedFurniture).locked ? "🔒 Locked" : "🔓");
|
|
60137
|
-
set_value(
|
|
60169
|
+
set_value(input_16, $2);
|
|
60138
60170
|
set_text(text_18, `Width (${$3 !== null && $3 !== void 0 ? $3 : ""})`);
|
|
60139
|
-
set_value(
|
|
60171
|
+
set_value(input_17, $4);
|
|
60140
60172
|
set_text(text_19, `Depth (${$5 !== null && $5 !== void 0 ? $5 : ""})`);
|
|
60141
|
-
set_value(
|
|
60173
|
+
set_value(input_18, $6);
|
|
60142
60174
|
set_text(text_20, `Height (${$7 !== null && $7 !== void 0 ? $7 : ""})`);
|
|
60143
|
-
set_value(
|
|
60175
|
+
set_value(input_19, $8);
|
|
60144
60176
|
if (select_2_value !== (select_2_value = (_$$get$material = get(selectedFurniture).material) !== null && _$$get$material !== void 0 ? _$$get$material : "Wood")) {
|
|
60145
60177
|
var _select_2$__value, _$$get$material2, _$$get$material3;
|
|
60146
60178
|
select_2.value = (_select_2$__value = select_2.__value = (_$$get$material2 = get(selectedFurniture).material) !== null && _$$get$material2 !== void 0 ? _$$get$material2 : "Wood") !== null && _select_2$__value !== void 0 ? _select_2$__value : "", select_option(select_2, (_$$get$material3 = get(selectedFurniture).material) !== null && _$$get$material3 !== void 0 ? _$$get$material3 : "Wood");
|
|
60147
60179
|
}
|
|
60148
|
-
set_value(
|
|
60180
|
+
set_value(input_20, $9);
|
|
60149
60181
|
}, [
|
|
60150
60182
|
() => {
|
|
60151
60183
|
var _getCatalogItem$icon, _getCatalogItem2;
|
|
@@ -60179,12 +60211,12 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60179
60211
|
delegated("click", button_13, () => {
|
|
60180
60212
|
if (get(selectedFurniture)) toggleFurnitureLock(get(selectedFurniture).id);
|
|
60181
60213
|
});
|
|
60182
|
-
delegated("input",
|
|
60183
|
-
delegated("input",
|
|
60184
|
-
delegated("input",
|
|
60185
|
-
delegated("input",
|
|
60214
|
+
delegated("input", input_16, (e) => onFurnitureColor(e.target.value));
|
|
60215
|
+
delegated("input", input_17, onFurnitureWidth);
|
|
60216
|
+
delegated("input", input_18, onFurnitureDepth);
|
|
60217
|
+
delegated("input", input_19, onFurnitureHeight);
|
|
60186
60218
|
delegated("change", select_2, onFurnitureMaterial);
|
|
60187
|
-
delegated("input",
|
|
60219
|
+
delegated("input", input_20, onFurnitureRotation);
|
|
60188
60220
|
delegated("click", button_15, () => {
|
|
60189
60221
|
if (get(selectedFurniture)) updateFurniture(get(selectedFurniture).id, { rotation: get(selectedFurniture).rotation - 90 });
|
|
60190
60222
|
});
|
|
@@ -60214,13 +60246,13 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60214
60246
|
delegated("click", button_19, resetFurnitureDefaults);
|
|
60215
60247
|
append($$anchor, fragment_3);
|
|
60216
60248
|
};
|
|
60217
|
-
var
|
|
60218
|
-
var
|
|
60219
|
-
var div_21 = sibling(first_child(
|
|
60220
|
-
var
|
|
60221
|
-
var select_3 = sibling(child(
|
|
60249
|
+
var consequent_7 = ($$anchor) => {
|
|
60250
|
+
var fragment_5 = root_13$1();
|
|
60251
|
+
var div_21 = sibling(first_child(fragment_5), 2);
|
|
60252
|
+
var label_25 = child(div_21);
|
|
60253
|
+
var select_3 = sibling(child(label_25), 2);
|
|
60222
60254
|
each(select_3, 21, () => roomTypes, index$1, ($$anchor, rt) => {
|
|
60223
|
-
var option_19 =
|
|
60255
|
+
var option_19 = root_14$1();
|
|
60224
60256
|
var text_21 = child(option_19);
|
|
60225
60257
|
reset(option_19);
|
|
60226
60258
|
var option_19_value = {};
|
|
@@ -60237,13 +60269,13 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60237
60269
|
reset(select_3);
|
|
60238
60270
|
var select_3_value;
|
|
60239
60271
|
init_select(select_3);
|
|
60240
|
-
reset(
|
|
60241
|
-
var
|
|
60242
|
-
var
|
|
60243
|
-
remove_input_defaults(
|
|
60244
|
-
reset(
|
|
60245
|
-
var
|
|
60246
|
-
var select_4 = sibling(child(
|
|
60272
|
+
reset(label_25);
|
|
60273
|
+
var label_26 = sibling(label_25, 2);
|
|
60274
|
+
var input_21 = sibling(child(label_26), 2);
|
|
60275
|
+
remove_input_defaults(input_21);
|
|
60276
|
+
reset(label_26);
|
|
60277
|
+
var label_27 = sibling(label_26, 2);
|
|
60278
|
+
var select_4 = sibling(child(label_27), 2);
|
|
60247
60279
|
var option_20 = child(select_4);
|
|
60248
60280
|
option_20.value = option_20.__value = "indoor";
|
|
60249
60281
|
var option_21 = sibling(option_20);
|
|
@@ -60255,8 +60287,8 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60255
60287
|
reset(select_4);
|
|
60256
60288
|
var select_4_value;
|
|
60257
60289
|
init_select(select_4);
|
|
60258
|
-
reset(
|
|
60259
|
-
var div_22 = sibling(
|
|
60290
|
+
reset(label_27);
|
|
60291
|
+
var div_22 = sibling(label_27, 2);
|
|
60260
60292
|
var p = sibling(child(div_22), 2);
|
|
60261
60293
|
var text_22 = child(p, true);
|
|
60262
60294
|
reset(p);
|
|
@@ -60264,7 +60296,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60264
60296
|
var div_23 = sibling(div_22, 2);
|
|
60265
60297
|
var div_24 = sibling(child(div_23), 2);
|
|
60266
60298
|
each(div_24, 21, () => roomColorPresets, index$1, ($$anchor, preset) => {
|
|
60267
|
-
var button_20 =
|
|
60299
|
+
var button_20 = root_15();
|
|
60268
60300
|
template_effect(() => {
|
|
60269
60301
|
var _$$get$color5;
|
|
60270
60302
|
set_class(button_20, 1, `w-7 h-7 rounded-md border-2 hover:border-gray-300 transition-colors ${get(selectedRoom).color === get(preset).color ? "border-blue-500 ring-1 ring-blue-200" : "border-gray-200"}`);
|
|
@@ -60276,28 +60308,28 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60276
60308
|
});
|
|
60277
60309
|
reset(div_24);
|
|
60278
60310
|
var div_25 = sibling(div_24, 2);
|
|
60279
|
-
var
|
|
60280
|
-
remove_input_defaults(
|
|
60311
|
+
var input_22 = sibling(child(div_25), 2);
|
|
60312
|
+
remove_input_defaults(input_22);
|
|
60281
60313
|
reset(div_25);
|
|
60282
60314
|
reset(div_23);
|
|
60283
60315
|
var div_26 = sibling(div_23, 2);
|
|
60284
60316
|
var div_27 = sibling(child(div_26), 2);
|
|
60285
60317
|
each(div_27, 21, () => textureGroups, index$1, ($$anchor, group) => {
|
|
60286
|
-
var div_28 =
|
|
60318
|
+
var div_28 = root_16$1();
|
|
60287
60319
|
var span_18 = child(div_28);
|
|
60288
60320
|
var text_23 = child(span_18, true);
|
|
60289
60321
|
reset(span_18);
|
|
60290
60322
|
var div_29 = sibling(span_18, 2);
|
|
60291
60323
|
each(div_29, 21, () => get(group).ids, index$1, ($$anchor, matId) => {
|
|
60292
60324
|
const mat = /* @__PURE__ */ user_derived(() => floorMaterials.find((m) => m.id === get(matId)));
|
|
60293
|
-
var
|
|
60294
|
-
var
|
|
60295
|
-
var
|
|
60325
|
+
var fragment_6 = comment();
|
|
60326
|
+
var node_5 = first_child(fragment_6);
|
|
60327
|
+
var consequent_6 = ($$anchor) => {
|
|
60296
60328
|
const texPath = /* @__PURE__ */ user_derived(() => {
|
|
60297
60329
|
var _floorTexPaths$$$get$;
|
|
60298
60330
|
return (_floorTexPaths$$$get$ = floorTexPaths[get(mat).id]) !== null && _floorTexPaths$$$get$ !== void 0 ? _floorTexPaths$$$get$ : "";
|
|
60299
60331
|
});
|
|
60300
|
-
var button_21 =
|
|
60332
|
+
var button_21 = root_18$1();
|
|
60301
60333
|
var div_30 = child(button_21);
|
|
60302
60334
|
var div_31 = sibling(div_30, 2);
|
|
60303
60335
|
var text_24 = child(div_31, true);
|
|
@@ -60312,10 +60344,10 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60312
60344
|
delegated("click", button_21, () => onRoomFloor(get(mat).id));
|
|
60313
60345
|
append($$anchor, button_21);
|
|
60314
60346
|
};
|
|
60315
|
-
if_block(
|
|
60316
|
-
if (get(mat)) $$render(
|
|
60347
|
+
if_block(node_5, ($$render) => {
|
|
60348
|
+
if (get(mat)) $$render(consequent_6);
|
|
60317
60349
|
});
|
|
60318
|
-
append($$anchor,
|
|
60350
|
+
append($$anchor, fragment_6);
|
|
60319
60351
|
});
|
|
60320
60352
|
reset(div_29);
|
|
60321
60353
|
reset(div_28);
|
|
@@ -60331,16 +60363,16 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60331
60363
|
var _select_3$__value;
|
|
60332
60364
|
select_3.value = (_select_3$__value = select_3.__value = $0) !== null && _select_3$__value !== void 0 ? _select_3$__value : "", select_option(select_3, $0);
|
|
60333
60365
|
}
|
|
60334
|
-
set_value(
|
|
60366
|
+
set_value(input_21, get(selectedRoom).name);
|
|
60335
60367
|
if (select_4_value !== (select_4_value = (_$$get$roomType = get(selectedRoom).roomType) !== null && _$$get$roomType !== void 0 ? _$$get$roomType : "indoor")) {
|
|
60336
60368
|
var _select_4$__value, _$$get$roomType2, _$$get$roomType3;
|
|
60337
60369
|
select_4.value = (_select_4$__value = select_4.__value = (_$$get$roomType2 = get(selectedRoom).roomType) !== null && _$$get$roomType2 !== void 0 ? _$$get$roomType2 : "indoor") !== null && _select_4$__value !== void 0 ? _select_4$__value : "", select_option(select_4, (_$$get$roomType3 = get(selectedRoom).roomType) !== null && _$$get$roomType3 !== void 0 ? _$$get$roomType3 : "indoor");
|
|
60338
60370
|
}
|
|
60339
60371
|
set_text(text_22, $1);
|
|
60340
|
-
set_value(
|
|
60372
|
+
set_value(input_22, (_$$get$color6 = get(selectedRoom).color) !== null && _$$get$color6 !== void 0 ? _$$get$color6 : "#ffffff");
|
|
60341
60373
|
}, [() => get(selectedRoomType)(), () => formatArea(get(selectedRoom).area, get(settings).units)]);
|
|
60342
60374
|
delegated("change", select_3, onRoomType);
|
|
60343
|
-
delegated("input",
|
|
60375
|
+
delegated("input", input_21, onRoomName);
|
|
60344
60376
|
delegated("change", select_4, (e) => {
|
|
60345
60377
|
if (get(selectedRoom)) {
|
|
60346
60378
|
const v = e.target.value;
|
|
@@ -60348,14 +60380,14 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60348
60380
|
updateDetectedRoom(get(selectedRoom).id, { roomType: v });
|
|
60349
60381
|
}
|
|
60350
60382
|
});
|
|
60351
|
-
delegated("input",
|
|
60352
|
-
append($$anchor,
|
|
60383
|
+
delegated("input", input_22, (e) => onRoomColor(e.target.value));
|
|
60384
|
+
append($$anchor, fragment_5);
|
|
60353
60385
|
};
|
|
60354
|
-
var
|
|
60355
|
-
var
|
|
60356
|
-
var div_32 = sibling(first_child(
|
|
60357
|
-
var
|
|
60358
|
-
var select_5 = sibling(child(
|
|
60386
|
+
var consequent_8 = ($$anchor) => {
|
|
60387
|
+
var fragment_7 = root_19$1();
|
|
60388
|
+
var div_32 = sibling(first_child(fragment_7), 2);
|
|
60389
|
+
var label_28 = child(div_32);
|
|
60390
|
+
var select_5 = sibling(child(label_28), 2);
|
|
60359
60391
|
var option_24 = child(select_5);
|
|
60360
60392
|
option_24.value = option_24.__value = "straight";
|
|
60361
60393
|
var option_25 = sibling(option_24);
|
|
@@ -60367,35 +60399,35 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60367
60399
|
reset(select_5);
|
|
60368
60400
|
var select_5_value;
|
|
60369
60401
|
init_select(select_5);
|
|
60370
|
-
reset(label_26);
|
|
60371
|
-
var label_27 = sibling(label_26, 2);
|
|
60372
|
-
var span_19 = child(label_27);
|
|
60373
|
-
var text_25 = child(span_19);
|
|
60374
|
-
reset(span_19);
|
|
60375
|
-
var input_21 = sibling(span_19, 2);
|
|
60376
|
-
remove_input_defaults(input_21);
|
|
60377
|
-
reset(label_27);
|
|
60378
|
-
var label_28 = sibling(label_27, 2);
|
|
60379
|
-
var span_20 = child(label_28);
|
|
60380
|
-
var text_26 = child(span_20);
|
|
60381
|
-
reset(span_20);
|
|
60382
|
-
var input_22 = sibling(span_20, 2);
|
|
60383
|
-
remove_input_defaults(input_22);
|
|
60384
60402
|
reset(label_28);
|
|
60385
60403
|
var label_29 = sibling(label_28, 2);
|
|
60386
|
-
var
|
|
60404
|
+
var span_19 = child(label_29);
|
|
60405
|
+
var text_25 = child(span_19);
|
|
60406
|
+
reset(span_19);
|
|
60407
|
+
var input_23 = sibling(span_19, 2);
|
|
60387
60408
|
remove_input_defaults(input_23);
|
|
60388
60409
|
reset(label_29);
|
|
60389
60410
|
var label_30 = sibling(label_29, 2);
|
|
60390
|
-
var
|
|
60391
|
-
var
|
|
60392
|
-
|
|
60393
|
-
|
|
60411
|
+
var span_20 = child(label_30);
|
|
60412
|
+
var text_26 = child(span_20);
|
|
60413
|
+
reset(span_20);
|
|
60414
|
+
var input_24 = sibling(span_20, 2);
|
|
60415
|
+
remove_input_defaults(input_24);
|
|
60394
60416
|
reset(label_30);
|
|
60395
60417
|
var label_31 = sibling(label_30, 2);
|
|
60396
|
-
var
|
|
60397
|
-
remove_input_defaults(
|
|
60418
|
+
var input_25 = sibling(child(label_31), 2);
|
|
60419
|
+
remove_input_defaults(input_25);
|
|
60398
60420
|
reset(label_31);
|
|
60421
|
+
var label_32 = sibling(label_31, 2);
|
|
60422
|
+
var div_33 = sibling(child(label_32), 2);
|
|
60423
|
+
var button_22 = child(div_33);
|
|
60424
|
+
var button_23 = sibling(button_22, 2);
|
|
60425
|
+
reset(div_33);
|
|
60426
|
+
reset(label_32);
|
|
60427
|
+
var label_33 = sibling(label_32, 2);
|
|
60428
|
+
var input_26 = sibling(child(label_33), 2);
|
|
60429
|
+
remove_input_defaults(input_26);
|
|
60430
|
+
reset(label_33);
|
|
60399
60431
|
reset(div_32);
|
|
60400
60432
|
template_effect(($0, $1, $2, $3) => {
|
|
60401
60433
|
if (select_5_value !== (select_5_value = get(selectedStair).stairType || "straight")) {
|
|
@@ -60403,13 +60435,13 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60403
60435
|
select_5.value = (_select_5$__value = select_5.__value = get(selectedStair).stairType || "straight") !== null && _select_5$__value !== void 0 ? _select_5$__value : "", select_option(select_5, get(selectedStair).stairType || "straight");
|
|
60404
60436
|
}
|
|
60405
60437
|
set_text(text_25, `Width (${$0 !== null && $0 !== void 0 ? $0 : ""})`);
|
|
60406
|
-
set_value(
|
|
60438
|
+
set_value(input_23, $1);
|
|
60407
60439
|
set_text(text_26, `Depth (${$2 !== null && $2 !== void 0 ? $2 : ""})`);
|
|
60408
|
-
set_value(
|
|
60409
|
-
set_value(
|
|
60440
|
+
set_value(input_24, $3);
|
|
60441
|
+
set_value(input_25, get(selectedStair).riserCount);
|
|
60410
60442
|
set_class(button_22, 1, `flex-1 px-2 py-1.5 border rounded text-sm transition-colors ${get(selectedStair).direction === "up" ? "bg-blue-100 border-blue-400 text-blue-700" : "border-gray-200 hover:bg-gray-50"}`);
|
|
60411
60443
|
set_class(button_23, 1, `flex-1 px-2 py-1.5 border rounded text-sm transition-colors ${get(selectedStair).direction === "down" ? "bg-blue-100 border-blue-400 text-blue-700" : "border-gray-200 hover:bg-gray-50"}`);
|
|
60412
|
-
set_value(
|
|
60444
|
+
set_value(input_26, get(selectedStair).rotation);
|
|
60413
60445
|
}, [
|
|
60414
60446
|
() => unitLabel(),
|
|
60415
60447
|
() => displayValue(get(selectedStair).width),
|
|
@@ -60417,41 +60449,41 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60417
60449
|
() => displayValue(get(selectedStair).depth)
|
|
60418
60450
|
]);
|
|
60419
60451
|
delegated("change", select_5, (e) => updateStair(get(selectedStair).id, { stairType: e.target.value }));
|
|
60420
|
-
delegated("input",
|
|
60421
|
-
delegated("input",
|
|
60422
|
-
delegated("input",
|
|
60452
|
+
delegated("input", input_23, (e) => updateStair(get(selectedStair).id, { width: inputToCm(Number(e.target.value)) }));
|
|
60453
|
+
delegated("input", input_24, (e) => updateStair(get(selectedStair).id, { depth: inputToCm(Number(e.target.value)) }));
|
|
60454
|
+
delegated("input", input_25, (e) => updateStair(get(selectedStair).id, { riserCount: Number(e.target.value) }));
|
|
60423
60455
|
delegated("click", button_22, () => updateStair(get(selectedStair).id, { direction: "up" }));
|
|
60424
60456
|
delegated("click", button_23, () => updateStair(get(selectedStair).id, { direction: "down" }));
|
|
60425
|
-
delegated("input",
|
|
60426
|
-
append($$anchor,
|
|
60457
|
+
delegated("input", input_26, (e) => updateStair(get(selectedStair).id, { rotation: Number(e.target.value) }));
|
|
60458
|
+
append($$anchor, fragment_7);
|
|
60427
60459
|
};
|
|
60428
|
-
var
|
|
60429
|
-
var
|
|
60430
|
-
var div_34 = sibling(first_child(
|
|
60431
|
-
var
|
|
60432
|
-
var div_35 = sibling(child(
|
|
60460
|
+
var consequent_10 = ($$anchor) => {
|
|
60461
|
+
var fragment_8 = root_20$1();
|
|
60462
|
+
var div_34 = sibling(first_child(fragment_8), 2);
|
|
60463
|
+
var label_34 = child(div_34);
|
|
60464
|
+
var div_35 = sibling(child(label_34), 2);
|
|
60433
60465
|
var button_24 = child(div_35);
|
|
60434
60466
|
var button_25 = sibling(button_24, 2);
|
|
60435
60467
|
reset(div_35);
|
|
60436
|
-
reset(
|
|
60437
|
-
var
|
|
60438
|
-
var span_21 = child(
|
|
60468
|
+
reset(label_34);
|
|
60469
|
+
var label_35 = sibling(label_34, 2);
|
|
60470
|
+
var span_21 = child(label_35);
|
|
60439
60471
|
var text_27 = child(span_21);
|
|
60440
60472
|
reset(span_21);
|
|
60441
|
-
var
|
|
60442
|
-
remove_input_defaults(
|
|
60443
|
-
reset(
|
|
60444
|
-
var
|
|
60445
|
-
var span_22 = child(
|
|
60473
|
+
var input_27 = sibling(span_21, 2);
|
|
60474
|
+
remove_input_defaults(input_27);
|
|
60475
|
+
reset(label_35);
|
|
60476
|
+
var label_36 = sibling(label_35, 2);
|
|
60477
|
+
var span_22 = child(label_36);
|
|
60446
60478
|
var text_28 = child(span_22);
|
|
60447
60479
|
reset(span_22);
|
|
60448
|
-
var
|
|
60449
|
-
remove_input_defaults(
|
|
60450
|
-
reset(
|
|
60451
|
-
var div_36 = sibling(
|
|
60480
|
+
var input_28 = sibling(span_22, 2);
|
|
60481
|
+
remove_input_defaults(input_28);
|
|
60482
|
+
reset(label_36);
|
|
60483
|
+
var div_36 = sibling(label_36, 2);
|
|
60452
60484
|
var div_37 = sibling(child(div_36), 2);
|
|
60453
60485
|
each(div_37, 21, () => columnColorPresets, index$1, ($$anchor, preset) => {
|
|
60454
|
-
var button_26 =
|
|
60486
|
+
var button_26 = root_21$1();
|
|
60455
60487
|
template_effect(() => {
|
|
60456
60488
|
var _$$get$color7;
|
|
60457
60489
|
set_class(button_26, 1, `w-7 h-7 rounded-md border-2 hover:border-gray-300 transition-colors ${get(selectedColumn).color === get(preset).color ? "border-blue-500 ring-1 ring-blue-200" : "border-gray-200"}`);
|
|
@@ -60463,32 +60495,32 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60463
60495
|
});
|
|
60464
60496
|
reset(div_37);
|
|
60465
60497
|
var div_38 = sibling(div_37, 2);
|
|
60466
|
-
var
|
|
60467
|
-
remove_input_defaults(
|
|
60498
|
+
var input_29 = sibling(child(div_38), 2);
|
|
60499
|
+
remove_input_defaults(input_29);
|
|
60468
60500
|
reset(div_38);
|
|
60469
60501
|
reset(div_36);
|
|
60470
|
-
var
|
|
60471
|
-
var
|
|
60472
|
-
var
|
|
60473
|
-
var
|
|
60474
|
-
remove_input_defaults(
|
|
60475
|
-
reset(
|
|
60476
|
-
template_effect(() => set_value(
|
|
60477
|
-
delegated("input",
|
|
60478
|
-
append($$anchor,
|
|
60502
|
+
var node_6 = sibling(div_36, 2);
|
|
60503
|
+
var consequent_9 = ($$anchor) => {
|
|
60504
|
+
var label_37 = root_22$1();
|
|
60505
|
+
var input_30 = sibling(child(label_37), 2);
|
|
60506
|
+
remove_input_defaults(input_30);
|
|
60507
|
+
reset(label_37);
|
|
60508
|
+
template_effect(() => set_value(input_30, get(selectedColumn).rotation));
|
|
60509
|
+
delegated("input", input_30, (e) => updateColumn(get(selectedColumn).id, { rotation: Number(e.target.value) }));
|
|
60510
|
+
append($$anchor, label_37);
|
|
60479
60511
|
};
|
|
60480
|
-
if_block(
|
|
60481
|
-
if (get(selectedColumn).shape === "square") $$render(
|
|
60512
|
+
if_block(node_6, ($$render) => {
|
|
60513
|
+
if (get(selectedColumn).shape === "square") $$render(consequent_9);
|
|
60482
60514
|
});
|
|
60483
60515
|
reset(div_34);
|
|
60484
60516
|
template_effect(($0, $1, $2, $3) => {
|
|
60485
60517
|
set_class(button_24, 1, `flex-1 px-2 py-1.5 border rounded text-sm transition-colors ${get(selectedColumn).shape === "round" ? "bg-blue-100 border-blue-400 text-blue-700" : "border-gray-200 hover:bg-gray-50"}`);
|
|
60486
60518
|
set_class(button_25, 1, `flex-1 px-2 py-1.5 border rounded text-sm transition-colors ${get(selectedColumn).shape === "square" ? "bg-blue-100 border-blue-400 text-blue-700" : "border-gray-200 hover:bg-gray-50"}`);
|
|
60487
60519
|
set_text(text_27, `${get(selectedColumn).shape === "round" ? "Diameter" : "Side Length"} (${$0 !== null && $0 !== void 0 ? $0 : ""})`);
|
|
60488
|
-
set_value(
|
|
60520
|
+
set_value(input_27, $1);
|
|
60489
60521
|
set_text(text_28, `Height (${$2 !== null && $2 !== void 0 ? $2 : ""})`);
|
|
60490
|
-
set_value(
|
|
60491
|
-
set_value(
|
|
60522
|
+
set_value(input_28, $3);
|
|
60523
|
+
set_value(input_29, get(selectedColumn).color);
|
|
60492
60524
|
}, [
|
|
60493
60525
|
() => unitLabel(),
|
|
60494
60526
|
() => displayValue(get(selectedColumn).diameter),
|
|
@@ -60497,87 +60529,87 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60497
60529
|
]);
|
|
60498
60530
|
delegated("click", button_24, () => updateColumn(get(selectedColumn).id, { shape: "round" }));
|
|
60499
60531
|
delegated("click", button_25, () => updateColumn(get(selectedColumn).id, { shape: "square" }));
|
|
60500
|
-
delegated("input",
|
|
60501
|
-
delegated("input",
|
|
60502
|
-
delegated("input",
|
|
60503
|
-
append($$anchor,
|
|
60532
|
+
delegated("input", input_27, (e) => updateColumn(get(selectedColumn).id, { diameter: inputToCm(Number(e.target.value)) }));
|
|
60533
|
+
delegated("input", input_28, (e) => updateColumn(get(selectedColumn).id, { height: inputToCm(Number(e.target.value)) }));
|
|
60534
|
+
delegated("input", input_29, (e) => updateColumn(get(selectedColumn).id, { color: e.target.value }));
|
|
60535
|
+
append($$anchor, fragment_8);
|
|
60504
60536
|
};
|
|
60505
|
-
var
|
|
60506
|
-
var div_39 =
|
|
60507
|
-
var
|
|
60508
|
-
var
|
|
60509
|
-
remove_input_defaults(input_29);
|
|
60510
|
-
reset(label_36);
|
|
60511
|
-
var label_37 = sibling(label_36, 2);
|
|
60512
|
-
var input_30 = sibling(child(label_37), 2);
|
|
60513
|
-
remove_input_defaults(input_30);
|
|
60514
|
-
reset(label_37);
|
|
60515
|
-
var label_38 = sibling(label_37, 2);
|
|
60516
|
-
var div_40 = sibling(child(label_38), 2);
|
|
60517
|
-
var input_31 = child(div_40);
|
|
60537
|
+
var consequent_11 = ($$anchor) => {
|
|
60538
|
+
var div_39 = root_23$1();
|
|
60539
|
+
var label_38 = sibling(child(div_39), 2);
|
|
60540
|
+
var input_31 = sibling(child(label_38), 2);
|
|
60518
60541
|
remove_input_defaults(input_31);
|
|
60519
|
-
var span_23 = sibling(input_31, 2);
|
|
60520
|
-
var text_29 = child(span_23, true);
|
|
60521
|
-
reset(span_23);
|
|
60522
|
-
reset(div_40);
|
|
60523
60542
|
reset(label_38);
|
|
60524
60543
|
var label_39 = sibling(label_38, 2);
|
|
60525
60544
|
var input_32 = sibling(child(label_39), 2);
|
|
60526
60545
|
remove_input_defaults(input_32);
|
|
60527
60546
|
reset(label_39);
|
|
60528
60547
|
var label_40 = sibling(label_39, 2);
|
|
60529
|
-
var
|
|
60548
|
+
var div_40 = sibling(child(label_40), 2);
|
|
60549
|
+
var input_33 = child(div_40);
|
|
60530
60550
|
remove_input_defaults(input_33);
|
|
60551
|
+
var span_23 = sibling(input_33, 2);
|
|
60552
|
+
var text_29 = child(span_23, true);
|
|
60553
|
+
reset(span_23);
|
|
60554
|
+
reset(div_40);
|
|
60531
60555
|
reset(label_40);
|
|
60532
60556
|
var label_41 = sibling(label_40, 2);
|
|
60533
60557
|
var input_34 = sibling(child(label_41), 2);
|
|
60534
60558
|
remove_input_defaults(input_34);
|
|
60535
60559
|
reset(label_41);
|
|
60560
|
+
var label_42 = sibling(label_41, 2);
|
|
60561
|
+
var input_35 = sibling(child(label_42), 2);
|
|
60562
|
+
remove_input_defaults(input_35);
|
|
60563
|
+
reset(label_42);
|
|
60564
|
+
var label_43 = sibling(label_42, 2);
|
|
60565
|
+
var input_36 = sibling(child(label_43), 2);
|
|
60566
|
+
remove_input_defaults(input_36);
|
|
60567
|
+
reset(label_43);
|
|
60536
60568
|
reset(div_39);
|
|
60537
60569
|
template_effect(($0, $1) => {
|
|
60538
|
-
set_value(
|
|
60539
|
-
set_value(
|
|
60540
|
-
set_value(
|
|
60570
|
+
set_value(input_31, get(selectedTextAnnotation).text);
|
|
60571
|
+
set_value(input_32, get(selectedTextAnnotation).fontSize);
|
|
60572
|
+
set_value(input_33, get(selectedTextAnnotation).color);
|
|
60541
60573
|
set_text(text_29, get(selectedTextAnnotation).color);
|
|
60542
|
-
set_value(
|
|
60543
|
-
set_value(
|
|
60544
|
-
set_value(
|
|
60574
|
+
set_value(input_34, get(selectedTextAnnotation).rotation);
|
|
60575
|
+
set_value(input_35, $0);
|
|
60576
|
+
set_value(input_36, $1);
|
|
60545
60577
|
}, [() => Math.round(get(selectedTextAnnotation).x), () => Math.round(get(selectedTextAnnotation).y)]);
|
|
60546
|
-
delegated("input",
|
|
60547
|
-
delegated("input",
|
|
60548
|
-
delegated("input",
|
|
60549
|
-
delegated("input",
|
|
60550
|
-
delegated("input",
|
|
60551
|
-
delegated("input",
|
|
60578
|
+
delegated("input", input_31, (e) => updateTextAnnotation(get(selectedTextAnnotation).id, { text: e.target.value }));
|
|
60579
|
+
delegated("input", input_32, (e) => updateTextAnnotation(get(selectedTextAnnotation).id, { fontSize: Number(e.target.value) }));
|
|
60580
|
+
delegated("input", input_33, (e) => updateTextAnnotation(get(selectedTextAnnotation).id, { color: e.target.value }));
|
|
60581
|
+
delegated("input", input_34, (e) => updateTextAnnotation(get(selectedTextAnnotation).id, { rotation: Number(e.target.value) }));
|
|
60582
|
+
delegated("input", input_35, (e) => updateTextAnnotation(get(selectedTextAnnotation).id, { x: Number(e.target.value) }));
|
|
60583
|
+
delegated("input", input_36, (e) => updateTextAnnotation(get(selectedTextAnnotation).id, { y: Number(e.target.value) }));
|
|
60552
60584
|
append($$anchor, div_39);
|
|
60553
60585
|
};
|
|
60554
60586
|
if_block(node, ($$render) => {
|
|
60555
60587
|
if (get(selectedWall)) $$render(consequent_1);
|
|
60556
60588
|
else if (get(selectedDoor)) $$render(consequent_2, 1);
|
|
60557
60589
|
else if (get(selectedWindow)) $$render(consequent_3, 2);
|
|
60558
|
-
else if (get(selectedFurniture)) $$render(
|
|
60559
|
-
else if (get(selectedRoom)) $$render(
|
|
60560
|
-
else if (get(selectedStair)) $$render(
|
|
60561
|
-
else if (get(selectedColumn)) $$render(
|
|
60562
|
-
else if (get(selectedTextAnnotation)) $$render(
|
|
60590
|
+
else if (get(selectedFurniture)) $$render(consequent_5, 3);
|
|
60591
|
+
else if (get(selectedRoom)) $$render(consequent_7, 4);
|
|
60592
|
+
else if (get(selectedStair)) $$render(consequent_8, 5);
|
|
60593
|
+
else if (get(selectedColumn)) $$render(consequent_10, 6);
|
|
60594
|
+
else if (get(selectedTextAnnotation)) $$render(consequent_11, 7);
|
|
60563
60595
|
});
|
|
60564
|
-
var
|
|
60565
|
-
var
|
|
60566
|
-
var div_41 =
|
|
60596
|
+
var node_7 = sibling(node, 2);
|
|
60597
|
+
var consequent_12 = ($$anchor) => {
|
|
60598
|
+
var div_41 = root_24();
|
|
60567
60599
|
var div_42 = sibling(child(div_41), 2);
|
|
60568
|
-
var
|
|
60569
|
-
var input_35 = sibling(child(label_42), 2);
|
|
60570
|
-
remove_input_defaults(input_35);
|
|
60571
|
-
reset(label_42);
|
|
60572
|
-
var label_43 = sibling(label_42, 2);
|
|
60573
|
-
var input_36 = sibling(child(label_43), 2);
|
|
60574
|
-
remove_input_defaults(input_36);
|
|
60575
|
-
reset(label_43);
|
|
60576
|
-
var label_44 = sibling(label_43, 2);
|
|
60600
|
+
var label_44 = child(div_42);
|
|
60577
60601
|
var input_37 = sibling(child(label_44), 2);
|
|
60578
60602
|
remove_input_defaults(input_37);
|
|
60579
60603
|
reset(label_44);
|
|
60580
|
-
var
|
|
60604
|
+
var label_45 = sibling(label_44, 2);
|
|
60605
|
+
var input_38 = sibling(child(label_45), 2);
|
|
60606
|
+
remove_input_defaults(input_38);
|
|
60607
|
+
reset(label_45);
|
|
60608
|
+
var label_46 = sibling(label_45, 2);
|
|
60609
|
+
var input_39 = sibling(child(label_46), 2);
|
|
60610
|
+
remove_input_defaults(input_39);
|
|
60611
|
+
reset(label_46);
|
|
60612
|
+
var div_43 = sibling(label_46, 2);
|
|
60581
60613
|
var button_27 = child(div_43);
|
|
60582
60614
|
var text_30 = child(button_27, true);
|
|
60583
60615
|
reset(button_27);
|
|
@@ -60587,15 +60619,15 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60587
60619
|
reset(div_42);
|
|
60588
60620
|
reset(div_41);
|
|
60589
60621
|
template_effect(() => {
|
|
60590
|
-
set_value(
|
|
60591
|
-
set_value(
|
|
60592
|
-
set_value(
|
|
60622
|
+
set_value(input_37, get(floor).backgroundImage.opacity);
|
|
60623
|
+
set_value(input_38, get(floor).backgroundImage.scale);
|
|
60624
|
+
set_value(input_39, get(floor).backgroundImage.rotation);
|
|
60593
60625
|
set_class(button_27, 1, `flex-1 px-2 py-1.5 border rounded text-sm ${get(floor).backgroundImage.locked ? "bg-amber-100 border-amber-400 text-amber-700" : "border-gray-200 hover:bg-gray-50"}`);
|
|
60594
60626
|
set_text(text_30, get(floor).backgroundImage.locked ? "🔒 Locked" : "🔓 Unlocked");
|
|
60595
60627
|
});
|
|
60596
|
-
delegated("input",
|
|
60597
|
-
delegated("input",
|
|
60598
|
-
delegated("input",
|
|
60628
|
+
delegated("input", input_37, (e) => updateBackgroundImage({ opacity: Number(e.target.value) }));
|
|
60629
|
+
delegated("input", input_38, (e) => updateBackgroundImage({ scale: Number(e.target.value) }));
|
|
60630
|
+
delegated("input", input_39, (e) => updateBackgroundImage({ rotation: Number(e.target.value) }));
|
|
60599
60631
|
delegated("click", button_27, () => updateBackgroundImage({ locked: !get(floor).backgroundImage.locked }));
|
|
60600
60632
|
delegated("click", button_28, () => {
|
|
60601
60633
|
calibrationPoints.set([]);
|
|
@@ -60604,9 +60636,9 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
60604
60636
|
delegated("click", button_29, () => setBackgroundImage(void 0));
|
|
60605
60637
|
append($$anchor, div_41);
|
|
60606
60638
|
};
|
|
60607
|
-
if_block(
|
|
60639
|
+
if_block(node_7, ($$render) => {
|
|
60608
60640
|
var _$$get16;
|
|
60609
|
-
if (get(hasBgImage) && ((_$$get16 = get(floor)) === null || _$$get16 === void 0 ? void 0 : _$$get16.backgroundImage)) $$render(
|
|
60641
|
+
if (get(hasBgImage) && ((_$$get16 = get(floor)) === null || _$$get16 === void 0 ? void 0 : _$$get16.backgroundImage)) $$render(consequent_12);
|
|
60610
60642
|
});
|
|
60611
60643
|
reset(div);
|
|
60612
60644
|
template_effect(() => classes = set_class(div, 1, `${is3D() ? "w-80" : "w-64"} shrink-0 bg-white border-l border-gray-200 flex flex-col overflow-y-auto p-3 fixed right-0 z-40 shadow-lg`, null, classes, { hidden: !get(hasSelection) }));
|
|
@@ -60622,12 +60654,12 @@ delegate([
|
|
|
60622
60654
|
//#endregion
|
|
60623
60655
|
//#region src/lib/components/sidebar/LayersPanel.svelte
|
|
60624
60656
|
init_client();
|
|
60625
|
-
var root_3$
|
|
60626
|
-
var root_4$
|
|
60657
|
+
var root_3$5 = /* @__PURE__ */ from_html(`<button><span class="text-[10px]"> </span> <span class="truncate flex-1"> </span></button>`);
|
|
60658
|
+
var root_4$4 = /* @__PURE__ */ from_html(`<div class="pl-7 pr-2 py-1 text-gray-300 italic">Empty</div>`);
|
|
60627
60659
|
var root_2$5 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
60628
|
-
var root_1$
|
|
60660
|
+
var root_1$6 = /* @__PURE__ */ from_html(`<div class="border-b border-gray-50 relative"><button class="w-full flex items-center gap-1.5 px-2 py-1.5 hover:bg-gray-50 text-left"><span class="text-[10px] text-gray-400 w-3"> </span> <span> </span> <span class="font-medium text-gray-700 flex-1"> </span> <span class="text-gray-400 mr-1"> </span></button> <span role="button" tabindex="0">👁</span> <!></div>`);
|
|
60629
60661
|
var root_5$2 = /* @__PURE__ */ from_html(`<div class="p-4 text-gray-400 text-center">No elements</div>`);
|
|
60630
|
-
var root$
|
|
60662
|
+
var root$2 = /* @__PURE__ */ from_html(`<div class="w-56 bg-white border-l border-gray-200 flex flex-col overflow-hidden text-xs select-none"><div class="px-3 py-2 border-b border-gray-100 font-semibold text-gray-700 text-sm flex items-center gap-1.5">🗂 Layers</div> <div class="flex-1 overflow-y-auto"><!> <!></div></div>`);
|
|
60631
60663
|
function LayersPanel($$anchor, $$props) {
|
|
60632
60664
|
push($$props, true);
|
|
60633
60665
|
let floor = /* @__PURE__ */ state(null);
|
|
@@ -60772,11 +60804,11 @@ function LayersPanel($$anchor, $$props) {
|
|
|
60772
60804
|
});
|
|
60773
60805
|
return cats;
|
|
60774
60806
|
});
|
|
60775
|
-
var div = root$
|
|
60807
|
+
var div = root$2();
|
|
60776
60808
|
var div_1 = sibling(child(div), 2);
|
|
60777
60809
|
var node = child(div_1);
|
|
60778
60810
|
each(node, 17, () => get(categories), index$1, ($$anchor, cat) => {
|
|
60779
|
-
var div_2 = root_1$
|
|
60811
|
+
var div_2 = root_1$6();
|
|
60780
60812
|
var button = child(div_2);
|
|
60781
60813
|
var span = child(button);
|
|
60782
60814
|
var text = child(span, true);
|
|
@@ -60798,7 +60830,7 @@ function LayersPanel($$anchor, $$props) {
|
|
|
60798
60830
|
var fragment = root_2$5();
|
|
60799
60831
|
var node_2 = first_child(fragment);
|
|
60800
60832
|
each(node_2, 17, () => get(cat).items, index$1, ($$anchor, item) => {
|
|
60801
|
-
var button_1 = root_3$
|
|
60833
|
+
var button_1 = root_3$5();
|
|
60802
60834
|
let classes_1;
|
|
60803
60835
|
var span_5 = child(button_1);
|
|
60804
60836
|
var text_4 = child(span_5, true);
|
|
@@ -60821,7 +60853,7 @@ function LayersPanel($$anchor, $$props) {
|
|
|
60821
60853
|
});
|
|
60822
60854
|
var node_3 = sibling(node_2, 2);
|
|
60823
60855
|
var consequent = ($$anchor) => {
|
|
60824
|
-
append($$anchor, root_4$
|
|
60856
|
+
append($$anchor, root_4$4());
|
|
60825
60857
|
};
|
|
60826
60858
|
if_block(node_3, ($$render) => {
|
|
60827
60859
|
if (get(cat).items.length === 0) $$render(consequent);
|
|
@@ -61704,17 +61736,19 @@ function getHeatmapColor(t, alpha = 1) {
|
|
|
61704
61736
|
}
|
|
61705
61737
|
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
|
|
61706
61738
|
}
|
|
61707
|
-
var drawCamera = (ctx, w, d, color, heatmapMatrix, hasPerson = false, showHeatmap = false) => {
|
|
61739
|
+
var drawCamera = (ctx, w, d, color, heatmapMatrix, hasPerson = false, showHeatmap = false, showCameraCones = false, highlighted = false) => {
|
|
61708
61740
|
const bodyRadius = 4;
|
|
61709
61741
|
const lensR = Math.min(w, d) * .25;
|
|
61710
61742
|
const range = Math.max(w, d) * 6;
|
|
61711
61743
|
const fov = Math.PI / 2;
|
|
61712
|
-
if (showHeatmap) {
|
|
61744
|
+
if (showHeatmap || showCameraCones) {
|
|
61713
61745
|
var _heatmapMatrix$;
|
|
61714
61746
|
ctx.save();
|
|
61715
61747
|
const coneGradient = ctx.createRadialGradient(0, 0, 0, 0, 0, range);
|
|
61716
|
-
|
|
61717
|
-
|
|
61748
|
+
const innerAlpha = highlighted ? "88" : showHeatmap ? "55" : "22";
|
|
61749
|
+
const midAlpha = highlighted ? "55" : showHeatmap ? "22" : "11";
|
|
61750
|
+
coneGradient.addColorStop(0, color + innerAlpha);
|
|
61751
|
+
coneGradient.addColorStop(.45, color + midAlpha);
|
|
61718
61752
|
coneGradient.addColorStop(1, color + "00");
|
|
61719
61753
|
ctx.fillStyle = coneGradient;
|
|
61720
61754
|
ctx.globalCompositeOperation = "lighter";
|
|
@@ -61723,8 +61757,18 @@ var drawCamera = (ctx, w, d, color, heatmapMatrix, hasPerson = false, showHeatma
|
|
|
61723
61757
|
ctx.arc(0, 0, range, -fov / 2, fov / 2);
|
|
61724
61758
|
ctx.closePath();
|
|
61725
61759
|
ctx.fill();
|
|
61760
|
+
if (highlighted) {
|
|
61761
|
+
ctx.strokeStyle = "#fbbf24";
|
|
61762
|
+
ctx.lineWidth = 2.5;
|
|
61763
|
+
ctx.globalCompositeOperation = "source-over";
|
|
61764
|
+
ctx.beginPath();
|
|
61765
|
+
ctx.moveTo(0, 0);
|
|
61766
|
+
ctx.arc(0, 0, range, -fov / 2, fov / 2);
|
|
61767
|
+
ctx.closePath();
|
|
61768
|
+
ctx.stroke();
|
|
61769
|
+
}
|
|
61726
61770
|
ctx.restore();
|
|
61727
|
-
if ((heatmapMatrix === null || heatmapMatrix === void 0 ? void 0 : heatmapMatrix.length) && ((_heatmapMatrix$ = heatmapMatrix[0]) === null || _heatmapMatrix$ === void 0 ? void 0 : _heatmapMatrix$.length)) {
|
|
61771
|
+
if (showHeatmap && (heatmapMatrix === null || heatmapMatrix === void 0 ? void 0 : heatmapMatrix.length) && ((_heatmapMatrix$ = heatmapMatrix[0]) === null || _heatmapMatrix$ === void 0 ? void 0 : _heatmapMatrix$.length)) {
|
|
61728
61772
|
const rows = heatmapMatrix.length;
|
|
61729
61773
|
const cols = heatmapMatrix[0].length;
|
|
61730
61774
|
const maxValue = Math.max(...heatmapMatrix.flat());
|
|
@@ -61754,7 +61798,7 @@ var drawCamera = (ctx, w, d, color, heatmapMatrix, hasPerson = false, showHeatma
|
|
|
61754
61798
|
ctx.restore();
|
|
61755
61799
|
}
|
|
61756
61800
|
}
|
|
61757
|
-
if (hasPerson) {
|
|
61801
|
+
if (showHeatmap && hasPerson) {
|
|
61758
61802
|
const now = Date.now();
|
|
61759
61803
|
if (persons.length < MAX_PERSONS && now - lastSpawnTime > SPAWN_INTERVAL) {
|
|
61760
61804
|
lastSpawnTime = now;
|
|
@@ -61794,7 +61838,7 @@ var drawCamera = (ctx, w, d, color, heatmapMatrix, hasPerson = false, showHeatma
|
|
|
61794
61838
|
ctx.restore();
|
|
61795
61839
|
return true;
|
|
61796
61840
|
});
|
|
61797
|
-
} else persons = [];
|
|
61841
|
+
} else if (showHeatmap) persons = [];
|
|
61798
61842
|
} else persons = [];
|
|
61799
61843
|
ctx.fillStyle = color + "40";
|
|
61800
61844
|
ctx.strokeStyle = color;
|
|
@@ -61890,12 +61934,12 @@ var iconDrawers = {
|
|
|
61890
61934
|
* @param w - pixel width (catalogWidth * zoom)
|
|
61891
61935
|
* @param d - pixel depth (catalogDepth * zoom)
|
|
61892
61936
|
*/
|
|
61893
|
-
function drawFurnitureIcon(ctx, catalogId, w, d, color, strokeColor, heatmapMatrix, hasPerson = false, showHeatmap = false) {
|
|
61937
|
+
function drawFurnitureIcon(ctx, catalogId, w, d, color, strokeColor, heatmapMatrix, hasPerson = false, showHeatmap = false, showCameraCones = false, highlighted = false) {
|
|
61894
61938
|
ctx.fillStyle = color + "60";
|
|
61895
61939
|
ctx.strokeStyle = strokeColor;
|
|
61896
61940
|
ctx.lineWidth = 1;
|
|
61897
61941
|
const drawer = iconDrawers[catalogId];
|
|
61898
|
-
if (drawer) drawer(ctx, w, d, color, heatmapMatrix, hasPerson, showHeatmap);
|
|
61942
|
+
if (drawer) drawer(ctx, w, d, color, heatmapMatrix, hasPerson, showHeatmap, showCameraCones, highlighted);
|
|
61899
61943
|
else {
|
|
61900
61944
|
roundRect(ctx, -w / 2, -d / 2, w, d, 2);
|
|
61901
61945
|
ctx.fill();
|
|
@@ -61993,12 +62037,12 @@ function handleGlobalShortcut(e, ctx = {}) {
|
|
|
61993
62037
|
init_client();
|
|
61994
62038
|
init_index_client();
|
|
61995
62039
|
var root_2$4 = /* @__PURE__ */ from_html(`<button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">📋</span> Duplicate</button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">🔄</span> Rotate 90°</button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">↔️</span> Flip Horizontal</button> <div class="ctx-sep svelte-wxo1tu"></div> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">⬆️</span> Bring to Front</button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">⬇️</span> Send to Back</button> <div class="ctx-sep svelte-wxo1tu"></div> <div class="ctx-sep svelte-wxo1tu"></div> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu"> </span> </button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">⚙️</span> Properties</button> <div class="ctx-sep svelte-wxo1tu"></div> <button class="ctx-item ctx-danger svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">🗑️</span> Delete</button>`, 1);
|
|
61996
|
-
var root_3$
|
|
61997
|
-
var root_4$
|
|
62040
|
+
var root_3$4 = /* @__PURE__ */ from_html(`<button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">✂️</span> Split Wall</button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">〰️</span> </button> <div class="ctx-sep svelte-wxo1tu"></div> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">⚙️</span> Properties</button> <div class="ctx-sep svelte-wxo1tu"></div> <button class="ctx-item ctx-danger svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">🗑️</span> Delete Wall</button>`, 1);
|
|
62041
|
+
var root_4$3 = /* @__PURE__ */ from_html(`<button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">⚙️</span> Properties</button> <div class="ctx-sep svelte-wxo1tu"></div> <button class="ctx-item ctx-danger svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">🗑️</span> Delete</button>`, 1);
|
|
61998
62042
|
var root_5$1 = /* @__PURE__ */ from_html(`<button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">✏️</span> Rename Room</button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">🎨</span> Change Floor Texture</button> <div class="ctx-sep svelte-wxo1tu"></div> <button class="ctx-item ctx-danger svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">🗑️</span> Delete Room</button>`, 1);
|
|
61999
|
-
var root_7$
|
|
62000
|
-
var root_6$
|
|
62001
|
-
var root_1$
|
|
62043
|
+
var root_7$1 = /* @__PURE__ */ from_html(`<button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">📋</span> Paste</button> <div class="ctx-sep svelte-wxo1tu"></div>`, 1);
|
|
62044
|
+
var root_6$2 = /* @__PURE__ */ from_html(`<!> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">⬜</span> Select All</button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">📦</span> Group Selected (Ctrl+G)</button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">📤</span> Ungroup (Ctrl+Shift+G)</button> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">🧱</span> Add Wall</button> <div class="ctx-sep svelte-wxo1tu"></div> <button class="ctx-item svelte-wxo1tu" role="menuitem"><span class="ctx-icon svelte-wxo1tu">🔍</span> Zoom to Fit</button>`, 1);
|
|
62045
|
+
var root_1$5 = /* @__PURE__ */ from_html(`<div class="fixed z-[9999] bg-white border border-gray-200 rounded-lg shadow-xl py-1 min-w-[180px] text-sm select-none" role="menu"><!></div>`);
|
|
62002
62046
|
function ContextMenu($$anchor, $$props) {
|
|
62003
62047
|
push($$props, true);
|
|
62004
62048
|
let menuEl;
|
|
@@ -62037,7 +62081,7 @@ function ContextMenu($$anchor, $$props) {
|
|
|
62037
62081
|
var fragment = comment();
|
|
62038
62082
|
var node = first_child(fragment);
|
|
62039
62083
|
var consequent_6 = ($$anchor) => {
|
|
62040
|
-
var div = root_1$
|
|
62084
|
+
var div = root_1$5();
|
|
62041
62085
|
var node_1 = child(div);
|
|
62042
62086
|
var consequent = ($$anchor) => {
|
|
62043
62087
|
var fragment_1 = root_2$4();
|
|
@@ -62070,7 +62114,7 @@ function ContextMenu($$anchor, $$props) {
|
|
|
62070
62114
|
append($$anchor, fragment_1);
|
|
62071
62115
|
};
|
|
62072
62116
|
var consequent_1 = ($$anchor) => {
|
|
62073
|
-
var fragment_2 = root_3$
|
|
62117
|
+
var fragment_2 = root_3$4();
|
|
62074
62118
|
var button_8 = first_child(fragment_2);
|
|
62075
62119
|
var button_9 = sibling(button_8, 2);
|
|
62076
62120
|
var text_2 = sibling(child(button_9));
|
|
@@ -62088,7 +62132,7 @@ function ContextMenu($$anchor, $$props) {
|
|
|
62088
62132
|
append($$anchor, fragment_2);
|
|
62089
62133
|
};
|
|
62090
62134
|
var consequent_2 = ($$anchor) => {
|
|
62091
|
-
var fragment_3 = root_4$
|
|
62135
|
+
var fragment_3 = root_4$3();
|
|
62092
62136
|
var button_12 = first_child(fragment_3);
|
|
62093
62137
|
var button_13 = sibling(button_12, 4);
|
|
62094
62138
|
delegated("click", button_12, () => clickItem("properties"));
|
|
@@ -62106,10 +62150,10 @@ function ContextMenu($$anchor, $$props) {
|
|
|
62106
62150
|
append($$anchor, fragment_4);
|
|
62107
62151
|
};
|
|
62108
62152
|
var consequent_5 = ($$anchor) => {
|
|
62109
|
-
var fragment_5 = root_6$
|
|
62153
|
+
var fragment_5 = root_6$2();
|
|
62110
62154
|
var node_2 = first_child(fragment_5);
|
|
62111
62155
|
var consequent_4 = ($$anchor) => {
|
|
62112
|
-
var fragment_6 = root_7$
|
|
62156
|
+
var fragment_6 = root_7$1();
|
|
62113
62157
|
var button_17 = first_child(fragment_6);
|
|
62114
62158
|
next(2);
|
|
62115
62159
|
delegated("click", button_17, () => clickItem("paste"));
|
|
@@ -63311,8 +63355,8 @@ function drawWindowDistanceDimensions(cs, wall, window, dimSettings) {
|
|
|
63311
63355
|
ctx.fillText(labelText, midPoint.x, midPoint.y);
|
|
63312
63356
|
}
|
|
63313
63357
|
}
|
|
63314
|
-
function drawFurnitureItem(cs, item, selected) {
|
|
63315
|
-
var _item$scale$x, _item$scale, _item$scale$y, _item$scale2, _item$width, _item$depth, _item$color;
|
|
63358
|
+
function drawFurnitureItem(cs, item, selected, options) {
|
|
63359
|
+
var _item$scale$x, _item$scale, _item$scale$y, _item$scale2, _item$width, _item$depth, _options$showCameraCo, _options$showCameraLa, _item$color;
|
|
63316
63360
|
const { ctx, zoom } = cs;
|
|
63317
63361
|
const cat = getCatalogItem(item.catalogId);
|
|
63318
63362
|
if (!cat) return;
|
|
@@ -63322,6 +63366,10 @@ function drawFurnitureItem(cs, item, selected) {
|
|
|
63322
63366
|
const w = ((_item$width = item.width) !== null && _item$width !== void 0 ? _item$width : cat.width) * Math.abs(sx) * zoom;
|
|
63323
63367
|
const d = ((_item$depth = item.depth) !== null && _item$depth !== void 0 ? _item$depth : cat.depth) * Math.abs(sy) * zoom;
|
|
63324
63368
|
const angle = item.rotation * Math.PI / 180;
|
|
63369
|
+
const highlighted = !!((options === null || options === void 0 ? void 0 : options.selectedCameraSerial) && item.serial && item.serial === options.selectedCameraSerial);
|
|
63370
|
+
const showCameraCones = (_options$showCameraCo = options === null || options === void 0 ? void 0 : options.showCameraCones) !== null && _options$showCameraCo !== void 0 ? _options$showCameraCo : false;
|
|
63371
|
+
const showCameraLabels = (_options$showCameraLa = options === null || options === void 0 ? void 0 : options.showCameraLabels) !== null && _options$showCameraLa !== void 0 ? _options$showCameraLa : true;
|
|
63372
|
+
const isCamera = item.catalogId === "camera";
|
|
63325
63373
|
ctx.save();
|
|
63326
63374
|
ctx.translate(s.x, s.y);
|
|
63327
63375
|
ctx.rotate(angle);
|
|
@@ -63329,14 +63377,17 @@ function drawFurnitureItem(cs, item, selected) {
|
|
|
63329
63377
|
const itemColor = (_item$color = item.color) !== null && _item$color !== void 0 ? _item$color : cat.color;
|
|
63330
63378
|
const strokeColor = selected ? "#3b82f6" : itemColor;
|
|
63331
63379
|
ctx.lineWidth = selected ? 2 : 1;
|
|
63332
|
-
drawFurnitureIcon(ctx, item.catalogId, w, d, itemColor, strokeColor, item.heatmapMatrix, item.hasPerson, item.showHeatmap);
|
|
63380
|
+
drawFurnitureIcon(ctx, item.catalogId, w, d, itemColor, strokeColor, item.heatmapMatrix, item.hasPerson, item.showHeatmap, isCamera ? showCameraCones : false, isCamera ? highlighted : false);
|
|
63333
63381
|
const fontSize = Math.max(8, Math.min(12, Math.min(w, d) * .2));
|
|
63334
|
-
if (Math.min(w, d) > 20) {
|
|
63335
|
-
|
|
63382
|
+
if (showCameraLabels && Math.min(w, d) > 20) {
|
|
63383
|
+
var _item$name;
|
|
63384
|
+
const label = isCamera ? (_item$name = item.name) !== null && _item$name !== void 0 ? _item$name : cat.name : cat.name;
|
|
63385
|
+
ctx.fillStyle = highlighted ? "#b45309" : "#374151";
|
|
63336
63386
|
ctx.font = `${fontSize * .7}px sans-serif`;
|
|
63337
63387
|
ctx.textAlign = "center";
|
|
63338
63388
|
ctx.textBaseline = "middle";
|
|
63339
|
-
ctx.fillText(
|
|
63389
|
+
if (isCamera) ctx.fillText(label, -w / 2 - fontSize * 1.2, 0);
|
|
63390
|
+
else ctx.fillText(label, 0, d / 2 + fontSize * .8);
|
|
63340
63391
|
}
|
|
63341
63392
|
if (selected) {
|
|
63342
63393
|
ctx.strokeStyle = "#3b82f6";
|
|
@@ -64506,34 +64557,36 @@ function hitTestTextAnnotation(wp, floor, ctx, zoom) {
|
|
|
64506
64557
|
//#region src/lib/components/editor/FloorPlanCanvas.svelte
|
|
64507
64558
|
init_client();
|
|
64508
64559
|
init_index_client();
|
|
64509
|
-
var
|
|
64510
|
-
var root_3$
|
|
64511
|
-
var root_4$
|
|
64512
|
-
var root_5 = /* @__PURE__ */ from_html(`<
|
|
64513
|
-
var root_6 = /* @__PURE__ */ from_html(`<
|
|
64514
|
-
var
|
|
64560
|
+
var root_1$4 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-2 z-10 px-2 py-1 bg-white/85 rounded text-sm font-semibold text-gray-700 shadow pointer-events-none"> </div>`);
|
|
64561
|
+
var root_3$3 = /* @__PURE__ */ from_html(`<input type="text" class="absolute bg-white border-2 border-blue-500 rounded px-2 py-1 text-sm text-center shadow-lg outline-none"/>`);
|
|
64562
|
+
var root_4$2 = /* @__PURE__ */ from_html(`<input type="text" class="absolute bg-white border-2 border-blue-500 rounded px-2 py-1 text-sm text-center shadow-lg outline-none"/>`);
|
|
64563
|
+
var root_5 = /* @__PURE__ */ from_html(`<div class="absolute inset-0 flex items-center justify-center pointer-events-none"><div class="text-center opacity-60"><div class="text-5xl mb-3">🏠</div> <div class="text-sm font-medium text-gray-500">Start building your floor plan</div> <div class="text-xs text-gray-400 mt-1">Draw walls with <span class="font-mono bg-gray-100 px-1 rounded">W</span> or drag items from the sidebar</div></div></div>`);
|
|
64564
|
+
var root_6$1 = /* @__PURE__ */ from_html(`<canvas width="180" height="120" class="absolute bottom-10 right-2 rounded-lg shadow-lg border border-gray-300 cursor-crosshair bg-white" style="z-index: 15;"></canvas>`);
|
|
64565
|
+
var root_7 = /* @__PURE__ */ from_html(`<span> </span> <span> </span> <span class="text-gray-300">|</span>`, 1);
|
|
64515
64566
|
var root_9 = /* @__PURE__ */ from_html(`<span> </span>`);
|
|
64516
64567
|
var root_10 = /* @__PURE__ */ from_html(`<span> </span>`);
|
|
64517
|
-
var
|
|
64518
|
-
var
|
|
64519
|
-
var
|
|
64520
|
-
var
|
|
64521
|
-
var
|
|
64522
|
-
var root_17 = /* @__PURE__ */ from_html(`<button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-500 hover:text-gray-700" title="
|
|
64523
|
-
var
|
|
64524
|
-
var
|
|
64568
|
+
var root_11 = /* @__PURE__ */ from_html(`<span> </span>`);
|
|
64569
|
+
var root_8 = /* @__PURE__ */ from_html(`<span> </span> <!> <!> <!> <span class="text-gray-300">|</span>`, 1);
|
|
64570
|
+
var root_12 = /* @__PURE__ */ from_html(`<span class="text-blue-600 font-medium"> </span> <span class="text-gray-300">|</span>`, 1);
|
|
64571
|
+
var root_14 = /* @__PURE__ */ from_html(`<label class="flex items-center gap-2 py-0.5 cursor-pointer hover:bg-gray-50 rounded px-1"><input type="checkbox" class="accent-blue-500"/> <span> </span></label>`);
|
|
64572
|
+
var root_13 = /* @__PURE__ */ from_html(`<div class="absolute bottom-12 right-2 z-20 bg-white rounded-lg shadow-lg border border-gray-200 p-3 text-xs min-w-[160px]"><div class="font-semibold text-gray-700 mb-2">Layers</div> <!> <hr class="my-1 border-gray-100"/> <label class="flex items-center gap-2 py-0.5 cursor-pointer hover:bg-gray-50 rounded px-1"><input type="checkbox" class="accent-blue-500"/> <span>Room Labels</span></label> <label class="flex items-center gap-2 py-0.5 cursor-pointer hover:bg-gray-50 rounded px-1"><input type="checkbox" class="accent-blue-500"/> <span>Dimensions</span></label></div>`);
|
|
64573
|
+
var root_17 = /* @__PURE__ */ from_html(`<button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-500 hover:text-gray-700" title="Flip swing" aria-label="Flip swing"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M7 16V4m0 0L3 8m4-4l4 4M17 8v12m0 0l4-4m-4 4l-4-4"></path></svg></button>`);
|
|
64574
|
+
var root_18 = /* @__PURE__ */ from_html(`<button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-500 hover:text-gray-700" title="Split wall at midpoint" aria-label="Split wall at midpoint"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M4 12h4M16 12h4"></path></svg></button>`);
|
|
64575
|
+
var root_16 = /* @__PURE__ */ from_html(`<div class="absolute z-40 flex items-center gap-0.5 bg-white rounded-lg shadow-lg border border-gray-200 px-1 py-0.5"><button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-500 hover:text-gray-700" title="Duplicate" aria-label="Duplicate"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"></path></svg></button> <!> <!> <div class="w-px h-5 bg-gray-200 mx-0.5"></div> <button class="w-7 h-7 flex items-center justify-center rounded hover:bg-red-50 text-gray-400 hover:text-red-600" title="Delete" aria-label="Delete"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 6h18M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2m3 0v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6h14"></path></svg></button></div>`);
|
|
64576
|
+
var root_19 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -translate-x-1/2 bg-blue-600 text-white px-3 py-1 rounded-full text-xs shadow">Click to add wall segment · Double-click to finish · C to close loop ·
|
|
64525
64577
|
Esc to cancel</div>`);
|
|
64526
|
-
var
|
|
64527
|
-
var
|
|
64528
|
-
var
|
|
64529
|
-
var
|
|
64530
|
-
var
|
|
64531
|
-
var root = /* @__PURE__ */ from_html(`<div class="w-full h-full relative overflow-hidden" role="application"><div><canvas aria-label="Floor plan editor canvas"></canvas></div> <!></div>`);
|
|
64578
|
+
var root_20 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -translate-x-1/2 bg-purple-600 text-white px-3 py-1 rounded-full text-xs shadow"> </div>`);
|
|
64579
|
+
var root_21 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -translate-x-1/2 bg-red-600 text-white px-3 py-1 rounded-full text-xs shadow">Right-click two points to measure · M to exit · Esc to cancel</div>`);
|
|
64580
|
+
var root_22 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -translate-x-1/2 bg-emerald-600 text-white px-3 py-1 rounded-full text-xs shadow">Click to place text label · Esc to cancel</div>`);
|
|
64581
|
+
var root_23 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -translate-x-1/2 bg-indigo-600 text-white px-3 py-1 rounded-full text-xs shadow"> </div>`);
|
|
64582
|
+
var root_2$3 = /* @__PURE__ */ from_html(`<!> <!> <!> <!> <div class="absolute bottom-2 right-2 bg-white/80 rounded px-2 py-1 text-xs text-gray-500 flex gap-3"><!> <!> <!> <span> </span> <button class="hover:text-gray-700" title="Zoom to Fit (F)">⊞ Fit</button> <button class="hover:text-gray-700" title="Toggle Grid (G)"> </button> <button class="hover:text-gray-700" title="Toggle Snap to Grid (S)"> </button> <button class="hover:text-gray-700" title="Toggle Furniture"> </button> <button class="hover:text-gray-700" title="Layer Visibility">🗂 Layers</button> <button class="hover:text-gray-700" title="Toggle Rulers"> </button> <button class="hover:text-gray-700" title="Toggle Mini-map"> </button></div> <!> <!> <!> <!> <!> <!> <!> <div class="absolute bottom-3 left-3 z-20 flex items-center gap-1 bg-white rounded-lg shadow-lg border border-gray-200 px-1 py-0.5"><button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-600 hover:text-gray-800 font-bold text-lg" title="Zoom Out (−)" aria-label="Zoom out">−</button> <button class="min-w-[3.5rem] h-7 flex items-center justify-center rounded hover:bg-gray-100 text-xs font-medium text-gray-600 hover:text-gray-800 tabular-nums" title="Reset to 100%" aria-label="Zoom to 100%"> </button> <button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-600 hover:text-gray-800 font-bold text-lg" title="Zoom In (+)" aria-label="Zoom in">+</button> <div class="w-px h-5 bg-gray-200"></div> <button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-500 hover:text-gray-700 text-sm" title="Zoom to Fit (F)" aria-label="Zoom to fit">⊞</button></div> <!>`, 1);
|
|
64583
|
+
var root$1 = /* @__PURE__ */ from_html(`<div class="w-full h-full relative overflow-hidden" role="application"><div><canvas aria-label="Floor plan editor canvas"></canvas></div> <!> <!></div>`);
|
|
64532
64584
|
function FloorPlanCanvas($$anchor, $$props) {
|
|
64533
64585
|
push($$props, true);
|
|
64534
64586
|
const $panMode = () => store_get(panMode, "$panMode", $$stores);
|
|
64535
64587
|
const $projectSettings = () => store_get(projectSettings, "$projectSettings", $$stores);
|
|
64536
64588
|
const [$$stores, $$cleanup] = setup_stores();
|
|
64589
|
+
let selectedCameraSerial = prop($$props, "selectedCameraSerial", 3, null), showCameraCones = prop($$props, "showCameraCones", 3, false), showCameraLabels = prop($$props, "showCameraLabels", 3, true);
|
|
64537
64590
|
let canvas;
|
|
64538
64591
|
let ctx;
|
|
64539
64592
|
let width = /* @__PURE__ */ state(800);
|
|
@@ -64621,6 +64674,15 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
64621
64674
|
user_effect(() => {
|
|
64622
64675
|
if ($$props.viewOnly) set(showRulers, false);
|
|
64623
64676
|
});
|
|
64677
|
+
user_effect(() => {
|
|
64678
|
+
selectedCameraSerial();
|
|
64679
|
+
showCameraCones();
|
|
64680
|
+
showCameraLabels();
|
|
64681
|
+
$$props.projectName;
|
|
64682
|
+
$$props.heatmapEnabled;
|
|
64683
|
+
$$props.heatmapMatrix;
|
|
64684
|
+
markDirty();
|
|
64685
|
+
});
|
|
64624
64686
|
let layerVis = /* @__PURE__ */ state(proxy({
|
|
64625
64687
|
walls: true,
|
|
64626
64688
|
doors: true,
|
|
@@ -65056,7 +65118,11 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
65056
65118
|
drawWindowOnWall(getCS(), wall, win);
|
|
65057
65119
|
}
|
|
65058
65120
|
function drawFurniture(item, selected) {
|
|
65059
|
-
drawFurnitureItem(getCS(), item, selected
|
|
65121
|
+
drawFurnitureItem(getCS(), item, selected, {
|
|
65122
|
+
selectedCameraSerial: selectedCameraSerial(),
|
|
65123
|
+
showCameraCones: showCameraCones(),
|
|
65124
|
+
showCameraLabels: showCameraLabels()
|
|
65125
|
+
});
|
|
65060
65126
|
}
|
|
65061
65127
|
let placementWallSnap = /* @__PURE__ */ state(null);
|
|
65062
65128
|
function drawFurniturePreview() {
|
|
@@ -68965,7 +69031,7 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
68965
69031
|
var _$$get11;
|
|
68966
69032
|
return get(spaceDown) || get(isPanning) || $panMode() || get(shiftDown) && get(currentTool) === "select" ? "grab" : get(draggingFurnitureId) ? "move" : get(draggingRoomId) ? "move" : get(draggingMultiSelect) ? "move" : get(draggingDoorId) ? "move" : get(draggingWindowId) ? "move" : get(draggingStairId) ? "move" : get(draggingColumnId) ? "move" : get(draggingTextAnnotationId) ? "move" : get(draggingWallParallel) ? "move" : get(draggingCurveHandle) ? "crosshair" : get(draggingWallEndpoint) ? "crosshair" : get(draggingHandle) === "rotate" ? "grabbing" : get(draggingHandle) === "resize-t" || get(draggingHandle) === "resize-b" ? "ns-resize" : get(draggingHandle) === "resize-l" || get(draggingHandle) === "resize-r" ? "ew-resize" : ((_$$get11 = get(draggingHandle)) === null || _$$get11 === void 0 ? void 0 : _$$get11.startsWith("resize")) ? "nwse-resize" : get(currentTool) === "text" ? "text" : get(currentTool) === "select" ? "default" : get(currentTool) === "furniture" ? "copy" : get(currentTool) === "door" || get(currentTool) === "window" ? get(placementPreview) ? "crosshair" : "not-allowed" : "crosshair";
|
|
68967
69033
|
});
|
|
68968
|
-
var div = root();
|
|
69034
|
+
var div = root$1();
|
|
68969
69035
|
event("keydown", $window, onKeyDown);
|
|
68970
69036
|
event("keyup", $window, onKeyUp);
|
|
68971
69037
|
var div_1 = child(div);
|
|
@@ -68974,11 +69040,22 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
68974
69040
|
bind_this(canvas_1, ($$value) => canvas = $$value, () => canvas);
|
|
68975
69041
|
reset(div_1);
|
|
68976
69042
|
var node = sibling(div_1, 2);
|
|
68977
|
-
var
|
|
68978
|
-
var
|
|
68979
|
-
var
|
|
68980
|
-
|
|
68981
|
-
|
|
69043
|
+
var consequent = ($$anchor) => {
|
|
69044
|
+
var div_2 = root_1$4();
|
|
69045
|
+
var text_1 = child(div_2, true);
|
|
69046
|
+
reset(div_2);
|
|
69047
|
+
template_effect(() => set_text(text_1, $$props.projectName));
|
|
69048
|
+
append($$anchor, div_2);
|
|
69049
|
+
};
|
|
69050
|
+
if_block(node, ($$render) => {
|
|
69051
|
+
if ($$props.viewOnly && $$props.projectName) $$render(consequent);
|
|
69052
|
+
});
|
|
69053
|
+
var node_1 = sibling(node, 2);
|
|
69054
|
+
var consequent_21 = ($$anchor) => {
|
|
69055
|
+
var fragment = root_2$3();
|
|
69056
|
+
var node_2 = first_child(fragment);
|
|
69057
|
+
var consequent_1 = ($$anchor) => {
|
|
69058
|
+
var input = root_3$3();
|
|
68982
69059
|
remove_input_defaults(input);
|
|
68983
69060
|
autofocus(input, true);
|
|
68984
69061
|
template_effect(() => {
|
|
@@ -69011,12 +69088,12 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69011
69088
|
});
|
|
69012
69089
|
append($$anchor, input);
|
|
69013
69090
|
};
|
|
69014
|
-
if_block(
|
|
69015
|
-
if (get(editingRoomId)) $$render(
|
|
69091
|
+
if_block(node_2, ($$render) => {
|
|
69092
|
+
if (get(editingRoomId)) $$render(consequent_1);
|
|
69016
69093
|
});
|
|
69017
|
-
var
|
|
69018
|
-
var
|
|
69019
|
-
var input_1 =
|
|
69094
|
+
var node_3 = sibling(node_2, 2);
|
|
69095
|
+
var consequent_2 = ($$anchor) => {
|
|
69096
|
+
var input_1 = root_4$2();
|
|
69020
69097
|
remove_input_defaults(input_1);
|
|
69021
69098
|
autofocus(input_1, true);
|
|
69022
69099
|
template_effect(() => {
|
|
@@ -69063,148 +69140,148 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69063
69140
|
});
|
|
69064
69141
|
append($$anchor, input_1);
|
|
69065
69142
|
};
|
|
69066
|
-
if_block(node_2, ($$render) => {
|
|
69067
|
-
if (get(editingTextAnnotationId)) $$render(consequent_1);
|
|
69068
|
-
});
|
|
69069
|
-
var node_3 = sibling(node_2, 2);
|
|
69070
|
-
var consequent_2 = ($$anchor) => {
|
|
69071
|
-
append($$anchor, root_4$3());
|
|
69072
|
-
};
|
|
69073
69143
|
if_block(node_3, ($$render) => {
|
|
69074
|
-
if (get(
|
|
69144
|
+
if (get(editingTextAnnotationId)) $$render(consequent_2);
|
|
69075
69145
|
});
|
|
69076
69146
|
var node_4 = sibling(node_3, 2);
|
|
69077
69147
|
var consequent_3 = ($$anchor) => {
|
|
69078
|
-
|
|
69148
|
+
append($$anchor, root_5());
|
|
69149
|
+
};
|
|
69150
|
+
if_block(node_4, ($$render) => {
|
|
69151
|
+
if (get(currentFloor) && get(currentFloor).walls.length === 0 && get(currentFloor).furniture.length === 0 && get(currentFloor).doors.length === 0 && !$$props.viewOnly) $$render(consequent_3);
|
|
69152
|
+
});
|
|
69153
|
+
var node_5 = sibling(node_4, 2);
|
|
69154
|
+
var consequent_4 = ($$anchor) => {
|
|
69155
|
+
var canvas_2 = root_6$1();
|
|
69079
69156
|
bind_this(canvas_2, ($$value) => minimapCanvas = $$value, () => minimapCanvas);
|
|
69080
69157
|
delegated("click", canvas_2, onMinimapClick);
|
|
69081
69158
|
append($$anchor, canvas_2);
|
|
69082
69159
|
};
|
|
69083
|
-
if_block(
|
|
69084
|
-
if (get(showMinimap) && get(currentFloor) && get(currentFloor).walls.length > 0) $$render(
|
|
69160
|
+
if_block(node_5, ($$render) => {
|
|
69161
|
+
if (get(showMinimap) && get(currentFloor) && get(currentFloor).walls.length > 0) $$render(consequent_4);
|
|
69085
69162
|
});
|
|
69086
|
-
var
|
|
69087
|
-
var
|
|
69088
|
-
var
|
|
69089
|
-
var fragment_1 =
|
|
69163
|
+
var div_4 = sibling(node_5, 2);
|
|
69164
|
+
var node_6 = child(div_4);
|
|
69165
|
+
var consequent_5 = ($$anchor) => {
|
|
69166
|
+
var fragment_1 = root_7();
|
|
69090
69167
|
var span = first_child(fragment_1);
|
|
69091
|
-
var
|
|
69168
|
+
var text_2 = child(span);
|
|
69092
69169
|
reset(span);
|
|
69093
69170
|
var span_1 = sibling(span, 2);
|
|
69094
|
-
var
|
|
69171
|
+
var text_3 = child(span_1, true);
|
|
69095
69172
|
reset(span_1);
|
|
69096
69173
|
next(2);
|
|
69097
69174
|
template_effect(($0) => {
|
|
69098
69175
|
var _$$get$length;
|
|
69099
|
-
set_text(
|
|
69100
|
-
set_text(
|
|
69176
|
+
set_text(text_2, `${(_$$get$length = get(detectedRooms).length) !== null && _$$get$length !== void 0 ? _$$get$length : ""} room${get(detectedRooms).length !== 1 ? "s" : ""}`);
|
|
69177
|
+
set_text(text_3, $0);
|
|
69101
69178
|
}, [() => formatArea(get(detectedRooms).reduce((s, r) => s + r.area, 0), $projectSettings().units)]);
|
|
69102
69179
|
append($$anchor, fragment_1);
|
|
69103
69180
|
};
|
|
69104
|
-
if_block(
|
|
69105
|
-
if (get(detectedRooms).length > 0) $$render(
|
|
69181
|
+
if_block(node_6, ($$render) => {
|
|
69182
|
+
if (get(detectedRooms).length > 0) $$render(consequent_5);
|
|
69106
69183
|
});
|
|
69107
|
-
var
|
|
69108
|
-
var
|
|
69109
|
-
var fragment_2 =
|
|
69184
|
+
var node_7 = sibling(node_6, 2);
|
|
69185
|
+
var consequent_9 = ($$anchor) => {
|
|
69186
|
+
var fragment_2 = root_8();
|
|
69110
69187
|
var span_2 = first_child(fragment_2);
|
|
69111
|
-
var
|
|
69188
|
+
var text_4 = child(span_2);
|
|
69112
69189
|
reset(span_2);
|
|
69113
|
-
var
|
|
69114
|
-
var
|
|
69115
|
-
var span_3 =
|
|
69116
|
-
var
|
|
69190
|
+
var node_8 = sibling(span_2, 2);
|
|
69191
|
+
var consequent_6 = ($$anchor) => {
|
|
69192
|
+
var span_3 = root_9();
|
|
69193
|
+
var text_5 = child(span_3);
|
|
69117
69194
|
reset(span_3);
|
|
69118
69195
|
template_effect(() => {
|
|
69119
69196
|
var _$$get$doors$length;
|
|
69120
|
-
return set_text(
|
|
69197
|
+
return set_text(text_5, `${(_$$get$doors$length = get(currentFloor).doors.length) !== null && _$$get$doors$length !== void 0 ? _$$get$doors$length : ""} door${get(currentFloor).doors.length !== 1 ? "s" : ""}`);
|
|
69121
69198
|
});
|
|
69122
69199
|
append($$anchor, span_3);
|
|
69123
69200
|
};
|
|
69124
|
-
if_block(
|
|
69125
|
-
if (get(currentFloor).doors.length > 0) $$render(
|
|
69201
|
+
if_block(node_8, ($$render) => {
|
|
69202
|
+
if (get(currentFloor).doors.length > 0) $$render(consequent_6);
|
|
69126
69203
|
});
|
|
69127
|
-
var
|
|
69128
|
-
var
|
|
69129
|
-
var span_4 =
|
|
69130
|
-
var
|
|
69204
|
+
var node_9 = sibling(node_8, 2);
|
|
69205
|
+
var consequent_7 = ($$anchor) => {
|
|
69206
|
+
var span_4 = root_10();
|
|
69207
|
+
var text_6 = child(span_4);
|
|
69131
69208
|
reset(span_4);
|
|
69132
69209
|
template_effect(() => {
|
|
69133
69210
|
var _$$get$windows$length;
|
|
69134
|
-
return set_text(
|
|
69211
|
+
return set_text(text_6, `${(_$$get$windows$length = get(currentFloor).windows.length) !== null && _$$get$windows$length !== void 0 ? _$$get$windows$length : ""} window${get(currentFloor).windows.length !== 1 ? "s" : ""}`);
|
|
69135
69212
|
});
|
|
69136
69213
|
append($$anchor, span_4);
|
|
69137
69214
|
};
|
|
69138
|
-
if_block(
|
|
69139
|
-
if (get(currentFloor).windows.length > 0) $$render(
|
|
69215
|
+
if_block(node_9, ($$render) => {
|
|
69216
|
+
if (get(currentFloor).windows.length > 0) $$render(consequent_7);
|
|
69140
69217
|
});
|
|
69141
|
-
var
|
|
69142
|
-
var
|
|
69143
|
-
var span_5 =
|
|
69144
|
-
var
|
|
69218
|
+
var node_10 = sibling(node_9, 2);
|
|
69219
|
+
var consequent_8 = ($$anchor) => {
|
|
69220
|
+
var span_5 = root_11();
|
|
69221
|
+
var text_7 = child(span_5);
|
|
69145
69222
|
reset(span_5);
|
|
69146
69223
|
template_effect(() => {
|
|
69147
69224
|
var _$$get$furniture$leng;
|
|
69148
|
-
return set_text(
|
|
69225
|
+
return set_text(text_7, `${(_$$get$furniture$leng = get(currentFloor).furniture.length) !== null && _$$get$furniture$leng !== void 0 ? _$$get$furniture$leng : ""} object${get(currentFloor).furniture.length !== 1 ? "s" : ""}`);
|
|
69149
69226
|
});
|
|
69150
69227
|
append($$anchor, span_5);
|
|
69151
69228
|
};
|
|
69152
|
-
if_block(
|
|
69153
|
-
if (get(currentFloor).furniture.length > 0) $$render(
|
|
69229
|
+
if_block(node_10, ($$render) => {
|
|
69230
|
+
if (get(currentFloor).furniture.length > 0) $$render(consequent_8);
|
|
69154
69231
|
});
|
|
69155
69232
|
next(2);
|
|
69156
69233
|
template_effect(() => {
|
|
69157
69234
|
var _$$get$walls$length;
|
|
69158
|
-
return set_text(
|
|
69235
|
+
return set_text(text_4, `${(_$$get$walls$length = get(currentFloor).walls.length) !== null && _$$get$walls$length !== void 0 ? _$$get$walls$length : ""} wall${get(currentFloor).walls.length !== 1 ? "s" : ""}`);
|
|
69159
69236
|
});
|
|
69160
69237
|
append($$anchor, fragment_2);
|
|
69161
69238
|
};
|
|
69162
|
-
if_block(
|
|
69163
|
-
if (get(currentFloor)) $$render(
|
|
69239
|
+
if_block(node_7, ($$render) => {
|
|
69240
|
+
if (get(currentFloor)) $$render(consequent_9);
|
|
69164
69241
|
});
|
|
69165
|
-
var
|
|
69166
|
-
var
|
|
69167
|
-
var fragment_3 =
|
|
69242
|
+
var node_11 = sibling(node_7, 2);
|
|
69243
|
+
var consequent_10 = ($$anchor) => {
|
|
69244
|
+
var fragment_3 = root_12();
|
|
69168
69245
|
var span_6 = first_child(fragment_3);
|
|
69169
|
-
var
|
|
69246
|
+
var text_8 = child(span_6);
|
|
69170
69247
|
reset(span_6);
|
|
69171
69248
|
next(2);
|
|
69172
69249
|
template_effect(() => {
|
|
69173
69250
|
var _$$get$size;
|
|
69174
|
-
return set_text(
|
|
69251
|
+
return set_text(text_8, `${(_$$get$size = get(currentSelectedIds).size) !== null && _$$get$size !== void 0 ? _$$get$size : ""} selected`);
|
|
69175
69252
|
});
|
|
69176
69253
|
append($$anchor, fragment_3);
|
|
69177
69254
|
};
|
|
69178
|
-
if_block(
|
|
69179
|
-
if (get(currentSelectedIds).size > 1) $$render(
|
|
69255
|
+
if_block(node_11, ($$render) => {
|
|
69256
|
+
if (get(currentSelectedIds).size > 1) $$render(consequent_10);
|
|
69180
69257
|
});
|
|
69181
|
-
var span_7 = sibling(
|
|
69182
|
-
var
|
|
69258
|
+
var span_7 = sibling(node_11, 2);
|
|
69259
|
+
var text_9 = child(span_7);
|
|
69183
69260
|
reset(span_7);
|
|
69184
69261
|
var button = sibling(span_7, 2);
|
|
69185
69262
|
var button_1 = sibling(button, 2);
|
|
69186
|
-
var
|
|
69263
|
+
var text_10 = child(button_1);
|
|
69187
69264
|
reset(button_1);
|
|
69188
69265
|
var button_2 = sibling(button_1, 2);
|
|
69189
|
-
var
|
|
69266
|
+
var text_11 = child(button_2);
|
|
69190
69267
|
reset(button_2);
|
|
69191
69268
|
var button_3 = sibling(button_2, 2);
|
|
69192
|
-
var
|
|
69269
|
+
var text_12 = child(button_3);
|
|
69193
69270
|
reset(button_3);
|
|
69194
69271
|
var button_4 = sibling(button_3, 2);
|
|
69195
69272
|
var button_5 = sibling(button_4, 2);
|
|
69196
|
-
var
|
|
69273
|
+
var text_13 = child(button_5);
|
|
69197
69274
|
reset(button_5);
|
|
69198
69275
|
var button_6 = sibling(button_5, 2);
|
|
69199
|
-
var
|
|
69200
|
-
|
|
69276
|
+
var text_14 = child(button_6);
|
|
69277
|
+
text_14.nodeValue = "🗺 Map";
|
|
69201
69278
|
reset(button_6);
|
|
69202
|
-
reset(
|
|
69203
|
-
var
|
|
69204
|
-
var
|
|
69205
|
-
var
|
|
69206
|
-
var
|
|
69207
|
-
each(
|
|
69279
|
+
reset(div_4);
|
|
69280
|
+
var node_12 = sibling(div_4, 2);
|
|
69281
|
+
var consequent_11 = ($$anchor) => {
|
|
69282
|
+
var div_5 = root_13();
|
|
69283
|
+
var node_13 = sibling(child(div_5), 2);
|
|
69284
|
+
each(node_13, 16, () => [
|
|
69208
69285
|
["walls", "Walls"],
|
|
69209
69286
|
["doors", "Doors"],
|
|
69210
69287
|
["windows", "Windows"],
|
|
@@ -69217,16 +69294,16 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69217
69294
|
var $$array = /* @__PURE__ */ user_derived(() => to_array($$item, 2));
|
|
69218
69295
|
let key = () => get($$array)[0];
|
|
69219
69296
|
let label = () => get($$array)[1];
|
|
69220
|
-
var label_1 =
|
|
69297
|
+
var label_1 = root_14();
|
|
69221
69298
|
var input_2 = child(label_1);
|
|
69222
69299
|
remove_input_defaults(input_2);
|
|
69223
69300
|
var span_8 = sibling(input_2, 2);
|
|
69224
|
-
var
|
|
69301
|
+
var text_15 = child(span_8, true);
|
|
69225
69302
|
reset(span_8);
|
|
69226
69303
|
reset(label_1);
|
|
69227
69304
|
template_effect(() => {
|
|
69228
69305
|
set_checked(input_2, get(layerVis)[key()]);
|
|
69229
|
-
set_text(
|
|
69306
|
+
set_text(text_15, label());
|
|
69230
69307
|
});
|
|
69231
69308
|
delegated("change", input_2, () => layerVisibility.update((v) => ({
|
|
69232
69309
|
...v,
|
|
@@ -69234,7 +69311,7 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69234
69311
|
})));
|
|
69235
69312
|
append($$anchor, label_1);
|
|
69236
69313
|
});
|
|
69237
|
-
var label_2 = sibling(
|
|
69314
|
+
var label_2 = sibling(node_13, 4);
|
|
69238
69315
|
var input_3 = child(label_2);
|
|
69239
69316
|
remove_input_defaults(input_3);
|
|
69240
69317
|
next(2);
|
|
@@ -69244,16 +69321,16 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69244
69321
|
remove_input_defaults(input_4);
|
|
69245
69322
|
next(2);
|
|
69246
69323
|
reset(label_3);
|
|
69247
|
-
reset(
|
|
69324
|
+
reset(div_5);
|
|
69248
69325
|
bind_checked(input_3, () => get(showRoomLabels), ($$value) => set(showRoomLabels, $$value));
|
|
69249
69326
|
bind_checked(input_4, () => get(showDimensions), ($$value) => set(showDimensions, $$value));
|
|
69250
|
-
append($$anchor,
|
|
69327
|
+
append($$anchor, div_5);
|
|
69251
69328
|
};
|
|
69252
|
-
if_block(
|
|
69253
|
-
if (get(showLayerPanel)) $$render(
|
|
69329
|
+
if_block(node_12, ($$render) => {
|
|
69330
|
+
if (get(showLayerPanel)) $$render(consequent_11);
|
|
69254
69331
|
});
|
|
69255
|
-
var
|
|
69256
|
-
var
|
|
69332
|
+
var node_14 = sibling(node_12, 2);
|
|
69333
|
+
var consequent_15 = ($$anchor) => {
|
|
69257
69334
|
const el = /* @__PURE__ */ user_derived(() => (() => {
|
|
69258
69335
|
const f = get(currentFloor);
|
|
69259
69336
|
const wall = f.walls.find((w) => w.id === get(currentSelectedId));
|
|
@@ -69286,24 +69363,24 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69286
69363
|
return null;
|
|
69287
69364
|
})());
|
|
69288
69365
|
var fragment_4 = comment();
|
|
69289
|
-
var
|
|
69290
|
-
var
|
|
69291
|
-
var
|
|
69292
|
-
var button_7 = child(
|
|
69293
|
-
var
|
|
69294
|
-
var
|
|
69295
|
-
var button_8 =
|
|
69366
|
+
var node_15 = first_child(fragment_4);
|
|
69367
|
+
var consequent_14 = ($$anchor) => {
|
|
69368
|
+
var div_6 = root_16();
|
|
69369
|
+
var button_7 = child(div_6);
|
|
69370
|
+
var node_16 = sibling(button_7, 2);
|
|
69371
|
+
var consequent_12 = ($$anchor) => {
|
|
69372
|
+
var button_8 = root_17();
|
|
69296
69373
|
delegated("click", button_8, () => {
|
|
69297
69374
|
if (get(el).door) updateDoor(get(el).door.id, { swingDirection: get(el).door.swingDirection === "left" ? "right" : "left" });
|
|
69298
69375
|
});
|
|
69299
69376
|
append($$anchor, button_8);
|
|
69300
69377
|
};
|
|
69301
|
-
if_block(
|
|
69302
|
-
if (get(el).type === "door" && get(el).door) $$render(
|
|
69378
|
+
if_block(node_16, ($$render) => {
|
|
69379
|
+
if (get(el).type === "door" && get(el).door) $$render(consequent_12);
|
|
69303
69380
|
});
|
|
69304
|
-
var
|
|
69305
|
-
var
|
|
69306
|
-
var button_9 =
|
|
69381
|
+
var node_17 = sibling(node_16, 2);
|
|
69382
|
+
var consequent_13 = ($$anchor) => {
|
|
69383
|
+
var button_9 = root_18();
|
|
69307
69384
|
delegated("click", button_9, () => {
|
|
69308
69385
|
if (get(currentSelectedId)) {
|
|
69309
69386
|
if (splitWall(get(currentSelectedId), .5)) selectedElementId.set(null);
|
|
@@ -69311,14 +69388,14 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69311
69388
|
});
|
|
69312
69389
|
append($$anchor, button_9);
|
|
69313
69390
|
};
|
|
69314
|
-
if_block(
|
|
69315
|
-
if (get(el).type === "wall" && get(currentSelectedId) && get(currentSelectedIds).size === 0) $$render(
|
|
69391
|
+
if_block(node_17, ($$render) => {
|
|
69392
|
+
if (get(el).type === "wall" && get(currentSelectedId) && get(currentSelectedIds).size === 0) $$render(consequent_13);
|
|
69316
69393
|
});
|
|
69317
|
-
var button_10 = sibling(
|
|
69318
|
-
reset(
|
|
69394
|
+
var button_10 = sibling(node_17, 4);
|
|
69395
|
+
reset(div_6);
|
|
69319
69396
|
template_effect(() => {
|
|
69320
69397
|
var _$$get$pos$x;
|
|
69321
|
-
return set_style(
|
|
69398
|
+
return set_style(div_6, `left: ${(_$$get$pos$x = get(el).pos.x) !== null && _$$get$pos$x !== void 0 ? _$$get$pos$x : ""}px; top: ${get(el).pos.y - 44}px; transform: translateX(-50%);`);
|
|
69322
69399
|
});
|
|
69323
69400
|
delegated("click", button_7, () => {
|
|
69324
69401
|
if (!get(currentSelectedId) || !get(currentFloor)) return;
|
|
@@ -69341,72 +69418,72 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69341
69418
|
selectedElementId.set(null);
|
|
69342
69419
|
}
|
|
69343
69420
|
});
|
|
69344
|
-
append($$anchor,
|
|
69421
|
+
append($$anchor, div_6);
|
|
69345
69422
|
};
|
|
69346
|
-
if_block(
|
|
69347
|
-
if (get(el)) $$render(
|
|
69423
|
+
if_block(node_15, ($$render) => {
|
|
69424
|
+
if (get(el)) $$render(consequent_14);
|
|
69348
69425
|
});
|
|
69349
69426
|
append($$anchor, fragment_4);
|
|
69350
69427
|
};
|
|
69351
|
-
if_block(
|
|
69352
|
-
if ((get(currentSelectedId) || get(currentSelectedIds).size > 0) && get(currentFloor) && get(currentTool) === "select") $$render(
|
|
69353
|
-
});
|
|
69354
|
-
var node_17 = sibling(node_13, 2);
|
|
69355
|
-
var consequent_15 = ($$anchor) => {
|
|
69356
|
-
append($$anchor, root_18());
|
|
69357
|
-
};
|
|
69358
|
-
if_block(node_17, ($$render) => {
|
|
69359
|
-
if (get(currentTool) === "wall" && get(wallStart)) $$render(consequent_15);
|
|
69428
|
+
if_block(node_14, ($$render) => {
|
|
69429
|
+
if ((get(currentSelectedId) || get(currentSelectedIds).size > 0) && get(currentFloor) && get(currentTool) === "select") $$render(consequent_15);
|
|
69360
69430
|
});
|
|
69361
|
-
var node_18 = sibling(
|
|
69431
|
+
var node_18 = sibling(node_14, 2);
|
|
69362
69432
|
var consequent_16 = ($$anchor) => {
|
|
69363
|
-
|
|
69364
|
-
var text_15 = child(div_7);
|
|
69365
|
-
reset(div_7);
|
|
69366
|
-
template_effect(() => {
|
|
69367
|
-
var _$$get13;
|
|
69368
|
-
return set_text(text_15, `Click to place · Scroll or R to rotate (${(_$$get13 = get(currentPlacingRotation)) !== null && _$$get13 !== void 0 ? _$$get13 : ""}°) · Esc
|
|
69369
|
-
to cancel`);
|
|
69370
|
-
});
|
|
69371
|
-
append($$anchor, div_7);
|
|
69433
|
+
append($$anchor, root_19());
|
|
69372
69434
|
};
|
|
69373
69435
|
if_block(node_18, ($$render) => {
|
|
69374
|
-
if (get(
|
|
69436
|
+
if (get(currentTool) === "wall" && get(wallStart)) $$render(consequent_16);
|
|
69375
69437
|
});
|
|
69376
69438
|
var node_19 = sibling(node_18, 2);
|
|
69377
69439
|
var consequent_17 = ($$anchor) => {
|
|
69378
|
-
|
|
69440
|
+
var div_8 = root_20();
|
|
69441
|
+
var text_16 = child(div_8);
|
|
69442
|
+
reset(div_8);
|
|
69443
|
+
template_effect(() => {
|
|
69444
|
+
var _$$get13;
|
|
69445
|
+
return set_text(text_16, `Click to place · Scroll or R to rotate (${(_$$get13 = get(currentPlacingRotation)) !== null && _$$get13 !== void 0 ? _$$get13 : ""}°) · Esc
|
|
69446
|
+
to cancel`);
|
|
69447
|
+
});
|
|
69448
|
+
append($$anchor, div_8);
|
|
69379
69449
|
};
|
|
69380
69450
|
if_block(node_19, ($$render) => {
|
|
69381
|
-
if (get(
|
|
69451
|
+
if (get(currentPlacingId) && get(currentTool) === "furniture") $$render(consequent_17);
|
|
69382
69452
|
});
|
|
69383
69453
|
var node_20 = sibling(node_19, 2);
|
|
69384
69454
|
var consequent_18 = ($$anchor) => {
|
|
69385
69455
|
append($$anchor, root_21());
|
|
69386
69456
|
};
|
|
69387
69457
|
if_block(node_20, ($$render) => {
|
|
69388
|
-
if (get(
|
|
69458
|
+
if (get(measuring)) $$render(consequent_18);
|
|
69389
69459
|
});
|
|
69390
69460
|
var node_21 = sibling(node_20, 2);
|
|
69391
69461
|
var consequent_19 = ($$anchor) => {
|
|
69392
|
-
|
|
69393
|
-
var text_16 = child(div_10);
|
|
69394
|
-
reset(div_10);
|
|
69395
|
-
template_effect(() => set_text(text_16, `${get(annotationStart) ? "Click second point to create annotation" : "Click first point"} · N to exit · Esc to cancel`));
|
|
69396
|
-
append($$anchor, div_10);
|
|
69462
|
+
append($$anchor, root_22());
|
|
69397
69463
|
};
|
|
69398
69464
|
if_block(node_21, ($$render) => {
|
|
69399
|
-
if (get(
|
|
69465
|
+
if (get(textAnnotationMode)) $$render(consequent_19);
|
|
69400
69466
|
});
|
|
69401
|
-
var
|
|
69402
|
-
var
|
|
69467
|
+
var node_22 = sibling(node_21, 2);
|
|
69468
|
+
var consequent_20 = ($$anchor) => {
|
|
69469
|
+
var div_11 = root_23();
|
|
69470
|
+
var text_17 = child(div_11);
|
|
69471
|
+
reset(div_11);
|
|
69472
|
+
template_effect(() => set_text(text_17, `${get(annotationStart) ? "Click second point to create annotation" : "Click first point"} · N to exit · Esc to cancel`));
|
|
69473
|
+
append($$anchor, div_11);
|
|
69474
|
+
};
|
|
69475
|
+
if_block(node_22, ($$render) => {
|
|
69476
|
+
if (get(annotating)) $$render(consequent_20);
|
|
69477
|
+
});
|
|
69478
|
+
var div_12 = sibling(node_22, 2);
|
|
69479
|
+
var button_11 = child(div_12);
|
|
69403
69480
|
var button_12 = sibling(button_11, 2);
|
|
69404
|
-
var
|
|
69481
|
+
var text_18 = child(button_12);
|
|
69405
69482
|
reset(button_12);
|
|
69406
69483
|
var button_13 = sibling(button_12, 2);
|
|
69407
69484
|
var button_14 = sibling(button_13, 4);
|
|
69408
|
-
reset(
|
|
69409
|
-
ContextMenu(sibling(
|
|
69485
|
+
reset(div_12);
|
|
69486
|
+
ContextMenu(sibling(div_12, 2), {
|
|
69410
69487
|
get x() {
|
|
69411
69488
|
return get(ctxMenuX);
|
|
69412
69489
|
},
|
|
@@ -69440,12 +69517,12 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69440
69517
|
onaction: handleContextMenuAction
|
|
69441
69518
|
});
|
|
69442
69519
|
template_effect(($0, $1) => {
|
|
69443
|
-
set_text(
|
|
69444
|
-
set_text(
|
|
69445
|
-
set_text(
|
|
69446
|
-
set_text(
|
|
69447
|
-
set_text(
|
|
69448
|
-
set_text(
|
|
69520
|
+
set_text(text_9, `Zoom: ${$0 !== null && $0 !== void 0 ? $0 : ""}%`);
|
|
69521
|
+
set_text(text_10, `${get(showGrid) ? "▦" : "▢"} Grid`);
|
|
69522
|
+
set_text(text_11, `${get(currentSnapToGrid) ? "🧲" : "↔"} Snap`);
|
|
69523
|
+
set_text(text_12, `${get(showFurniture) ? "🪑" : "👻"} Furniture`);
|
|
69524
|
+
set_text(text_13, `${get(showRulers) ? "📏" : "📐"} Rulers`);
|
|
69525
|
+
set_text(text_18, `${$1 !== null && $1 !== void 0 ? $1 : ""}%`);
|
|
69449
69526
|
}, [() => Math.round(get(zoom) * 100), () => Math.round(get(zoom) * 100)]);
|
|
69450
69527
|
delegated("click", button, () => zoomToFit());
|
|
69451
69528
|
delegated("click", button_1, () => set(showGrid, !get(showGrid)));
|
|
@@ -69477,8 +69554,8 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
69477
69554
|
delegated("click", button_14, () => zoomToFit());
|
|
69478
69555
|
append($$anchor, fragment);
|
|
69479
69556
|
};
|
|
69480
|
-
if_block(
|
|
69481
|
-
if (!$$props.viewOnly) $$render(
|
|
69557
|
+
if_block(node_1, ($$render) => {
|
|
69558
|
+
if (!$$props.viewOnly) $$render(consequent_21);
|
|
69482
69559
|
});
|
|
69483
69560
|
reset(div);
|
|
69484
69561
|
template_effect(($0) => {
|
|
@@ -69639,9 +69716,9 @@ function alignElements(ids, op) {
|
|
|
69639
69716
|
//#endregion
|
|
69640
69717
|
//#region src/lib/components/editor/AlignmentToolbar.svelte
|
|
69641
69718
|
init_client();
|
|
69642
|
-
var root_3$
|
|
69719
|
+
var root_3$2 = /* @__PURE__ */ from_html(`<div class="w-px h-5 bg-gray-200 mx-0.5"></div>`);
|
|
69643
69720
|
var root_2$2 = /* @__PURE__ */ from_html(`<button class="w-7 h-7 flex items-center justify-center rounded hover:bg-blue-50 text-gray-500 hover:text-blue-600 transition-colors"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path></path></svg></button> <!>`, 1);
|
|
69644
|
-
var root_1$
|
|
69721
|
+
var root_1$3 = /* @__PURE__ */ from_html(`<div class="fixed top-16 left-1/2 -translate-x-1/2 z-50 flex items-center gap-0.5 bg-white rounded-lg shadow-lg border border-gray-200 px-1.5 py-1"><span class="text-xs text-gray-400 px-1 select-none"> </span> <div class="w-px h-5 bg-gray-200 mx-0.5"></div> <!></div>`);
|
|
69645
69722
|
function AlignmentToolbar($$anchor, $$props) {
|
|
69646
69723
|
push($$props, true);
|
|
69647
69724
|
let multiCount = /* @__PURE__ */ state(0);
|
|
@@ -69700,7 +69777,7 @@ function AlignmentToolbar($$anchor, $$props) {
|
|
|
69700
69777
|
var fragment = comment();
|
|
69701
69778
|
var node = first_child(fragment);
|
|
69702
69779
|
var consequent_1 = ($$anchor) => {
|
|
69703
|
-
var div = root_1$
|
|
69780
|
+
var div = root_1$3();
|
|
69704
69781
|
var span = child(div);
|
|
69705
69782
|
var text = child(span);
|
|
69706
69783
|
reset(span);
|
|
@@ -69713,7 +69790,7 @@ function AlignmentToolbar($$anchor, $$props) {
|
|
|
69713
69790
|
reset(button);
|
|
69714
69791
|
var node_2 = sibling(button, 2);
|
|
69715
69792
|
var consequent = ($$anchor) => {
|
|
69716
|
-
append($$anchor, root_3$
|
|
69793
|
+
append($$anchor, root_3$2());
|
|
69717
69794
|
};
|
|
69718
69795
|
if_block(node_2, ($$render) => {
|
|
69719
69796
|
if (get(btn).op === "align-right" || get(btn).op === "align-bottom") $$render(consequent);
|
|
@@ -69744,8 +69821,8 @@ delegate(["click"]);
|
|
|
69744
69821
|
//#region src/lib/components/editor/CommandPalette.svelte
|
|
69745
69822
|
init_client();
|
|
69746
69823
|
var root_2$1 = /* @__PURE__ */ from_html(`<div class="px-4 py-6 text-center text-sm text-gray-400">No results found</div>`);
|
|
69747
|
-
var root_4$
|
|
69748
|
-
var root_1$
|
|
69824
|
+
var root_4$1 = /* @__PURE__ */ from_html(`<div role="option"><span class="text-base w-6 text-center flex-shrink-0"> </span> <span class="flex-1 truncate"> </span> <span class="text-xs text-gray-400 flex-shrink-0"> </span></div>`);
|
|
69825
|
+
var root_1$2 = /* @__PURE__ */ from_html(`<div class="fixed inset-0 bg-black/40 z-[100] flex justify-center" role="dialog" aria-label="Command Palette"><div class="mt-[15vh] w-full max-w-lg h-fit bg-white rounded-xl shadow-2xl overflow-hidden" role="listbox"><div class="flex items-center gap-2 px-4 py-3 border-b border-gray-200"><span class="text-gray-400 text-lg">🔍</span> <input class="flex-1 bg-transparent outline-none text-sm text-gray-800 placeholder-gray-400" placeholder="Search furniture, tools, actions…" type="text" spellcheck="false"/> <kbd class="text-[10px] px-1.5 py-0.5 bg-gray-100 rounded border border-gray-200 text-gray-400">ESC</kbd></div> <div class="max-h-[50vh] overflow-y-auto"><!></div> <div class="px-4 py-2 border-t border-gray-100 flex items-center gap-3 text-[10px] text-gray-400"><span><kbd class="px-1 py-0.5 bg-gray-100 rounded border border-gray-200">↑↓</kbd> navigate</span> <span><kbd class="px-1 py-0.5 bg-gray-100 rounded border border-gray-200">↵</kbd> select</span> <span><kbd class="px-1 py-0.5 bg-gray-100 rounded border border-gray-200">esc</kbd> close</span></div></div></div>`);
|
|
69749
69826
|
function CommandPalette($$anchor, $$props) {
|
|
69750
69827
|
push($$props, true);
|
|
69751
69828
|
let open = prop($$props, "open", 15, false);
|
|
@@ -69989,7 +70066,7 @@ function CommandPalette($$anchor, $$props) {
|
|
|
69989
70066
|
var fragment = comment();
|
|
69990
70067
|
var node = first_child(fragment);
|
|
69991
70068
|
var consequent_1 = ($$anchor) => {
|
|
69992
|
-
var div = root_1$
|
|
70069
|
+
var div = root_1$2();
|
|
69993
70070
|
var div_1 = child(div);
|
|
69994
70071
|
var div_2 = child(div_1);
|
|
69995
70072
|
var input = sibling(child(div_2), 2);
|
|
@@ -70005,7 +70082,7 @@ function CommandPalette($$anchor, $$props) {
|
|
|
70005
70082
|
var alternate = ($$anchor) => {
|
|
70006
70083
|
var fragment_1 = comment();
|
|
70007
70084
|
each(first_child(fragment_1), 17, () => get(results), index$1, ($$anchor, item, i) => {
|
|
70008
|
-
var div_5 = root_4$
|
|
70085
|
+
var div_5 = root_4$1();
|
|
70009
70086
|
let classes;
|
|
70010
70087
|
var span = child(div_5);
|
|
70011
70088
|
var text = child(span, true);
|
|
@@ -70065,9 +70142,9 @@ delegate(["click", "keydown"]);
|
|
|
70065
70142
|
init_client();
|
|
70066
70143
|
init_index_client();
|
|
70067
70144
|
var root_2 = /* @__PURE__ */ from_html(`<option> </option>`);
|
|
70068
|
-
var root_4
|
|
70069
|
-
var root_3 = /* @__PURE__ */ from_html(`<div class="border-t border-slate-300 pt-3 mt-2 print-legend"><h3 class="text-xs font-bold text-slate-700 uppercase tracking-wide mb-2">Room Schedule</h3> <div class="grid grid-cols-3 gap-x-6 gap-y-1 text-xs"></div></div>`);
|
|
70070
|
-
var root_1$
|
|
70145
|
+
var root_4 = /* @__PURE__ */ from_html(`<div class="flex justify-between"><span class="text-slate-600"> </span> <span class="text-slate-800 font-medium ml-2"> </span></div>`);
|
|
70146
|
+
var root_3$1 = /* @__PURE__ */ from_html(`<div class="border-t border-slate-300 pt-3 mt-2 print-legend"><h3 class="text-xs font-bold text-slate-700 uppercase tracking-wide mb-2">Room Schedule</h3> <div class="grid grid-cols-3 gap-x-6 gap-y-1 text-xs"></div></div>`);
|
|
70147
|
+
var root_1$1 = /* @__PURE__ */ from_html(`<div class="fixed inset-0 bg-black/60 z-[100] flex items-start justify-center overflow-auto print-overlay-backdrop"><div class="fixed top-0 left-0 right-0 bg-slate-800 text-white px-6 py-3 flex items-center gap-4 z-[101] print-hide"><h3 class="font-semibold text-sm">Print Preview</h3> <div class="h-4 w-px bg-white/20"></div> <label class="text-xs text-white/70">Page: <select class="ml-1 bg-slate-700 text-white text-xs rounded px-2 py-1 border border-slate-600"><option>Letter</option><option>A4</option></select></label> <label class="text-xs text-white/70">Orientation: <select class="ml-1 bg-slate-700 text-white text-xs rounded px-2 py-1 border border-slate-600"><option>Landscape</option><option>Portrait</option></select></label> <label class="text-xs text-white/70">Scale: <select class="ml-1 bg-slate-700 text-white text-xs rounded px-2 py-1 border border-slate-600"></select></label> <div class="flex-1"></div> <button class="px-4 py-1.5 bg-blue-500 hover:bg-blue-600 text-white text-sm font-semibold rounded-lg transition-colors flex items-center gap-2"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 6 2 18 2 18 9"></polyline><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"></path><rect x="6" y="14" width="12" height="8"></rect></svg> Print</button> <button class="px-3 py-1.5 text-white/70 hover:text-white text-sm transition-colors">✕ Close</button></div> <div><div class="border-b-2 border-slate-800 pb-3 mb-4 flex items-end justify-between print-title-block"><div><h1 class="text-xl font-bold text-slate-800"> </h1> <p class="text-sm text-slate-500"> </p></div> <div class="text-right text-xs text-slate-500"><p class="font-semibold text-slate-700"> </p> <p> </p></div></div> <div class="flex-1 relative print-canvas-container svelte-67xe6d"><canvas class="w-full svelte-67xe6d" style="height: calc(100% - 20px);"></canvas> <div class="absolute top-2 right-2 print-north-arrow"><svg width="40" height="40" viewBox="0 0 40 40"><polygon points="20,2 24,16 20,12 16,16" fill="#1e293b"></polygon><polygon points="20,38 24,24 20,28 16,24" fill="#94a3b8"></polygon><text x="20" y="10" text-anchor="middle" fill="#1e293b" font-size="8" font-weight="bold">N</text></svg></div> <div class="absolute bottom-1 left-2 flex items-center gap-2 text-[10px] text-slate-600 print-scale-bar"><div class="flex items-end gap-0"><div class="w-12 h-1 bg-slate-800"></div> <div class="w-12 h-1 bg-slate-400"></div></div> <span> </span></div></div> <!> <div class="border-t border-slate-200 pt-2 mt-3 flex justify-between text-[9px] text-slate-400 print-footer"><span>Generated by Open3D Floorplan</span> <span>Page 1 of 1</span></div></div></div>`);
|
|
70071
70148
|
function PrintLayout($$anchor, $$props) {
|
|
70072
70149
|
push($$props, true);
|
|
70073
70150
|
let open = prop($$props, "open", 15, false);
|
|
@@ -70270,7 +70347,7 @@ function PrintLayout($$anchor, $$props) {
|
|
|
70270
70347
|
event("keydown", $window, handleKeydown);
|
|
70271
70348
|
var node = first_child(fragment);
|
|
70272
70349
|
var consequent_1 = ($$anchor) => {
|
|
70273
|
-
var div = root_1$
|
|
70350
|
+
var div = root_1$1();
|
|
70274
70351
|
var div_1 = child(div);
|
|
70275
70352
|
var label = sibling(child(div_1), 4);
|
|
70276
70353
|
var select = sibling(child(label));
|
|
@@ -70340,10 +70417,10 @@ function PrintLayout($$anchor, $$props) {
|
|
|
70340
70417
|
reset(div_6);
|
|
70341
70418
|
var node_1 = sibling(div_6, 2);
|
|
70342
70419
|
var consequent = ($$anchor) => {
|
|
70343
|
-
var div_8 = root_3();
|
|
70420
|
+
var div_8 = root_3$1();
|
|
70344
70421
|
var div_9 = sibling(child(div_8), 2);
|
|
70345
70422
|
each(div_9, 21, getRooms, index$1, ($$anchor, room) => {
|
|
70346
|
-
var div_10 = root_4
|
|
70423
|
+
var div_10 = root_4();
|
|
70347
70424
|
var span_1 = child(div_10);
|
|
70348
70425
|
var text_6 = child(span_1, true);
|
|
70349
70426
|
reset(span_1);
|
|
@@ -70412,7 +70489,7 @@ delegate(["click", "keydown"]);
|
|
|
70412
70489
|
//#region src/lib/components/OnboardingTooltip.svelte
|
|
70413
70490
|
init_client();
|
|
70414
70491
|
init_onboarding_svelte();
|
|
70415
|
-
var root_1
|
|
70492
|
+
var root_1 = /* @__PURE__ */ from_html(`<div class="fixed z-[9999] pointer-events-auto"><div><p class="mb-2"> </p> <button class="text-xs font-medium px-3 py-1 rounded-lg bg-blue-500 hover:bg-blue-400 transition-colors">Got it</button></div></div>`);
|
|
70416
70493
|
function OnboardingTooltip($$anchor, $$props) {
|
|
70417
70494
|
push($$props, true);
|
|
70418
70495
|
let tip = /* @__PURE__ */ user_derived(getActiveTip);
|
|
@@ -70442,7 +70519,7 @@ function OnboardingTooltip($$anchor, $$props) {
|
|
|
70442
70519
|
const msg = /* @__PURE__ */ user_derived(() => TIP_MESSAGES[get(tip).id]);
|
|
70443
70520
|
const clampedX = /* @__PURE__ */ user_derived(() => Math.min(get(tip).x, (typeof window !== "undefined" ? window.innerWidth : 1200) - 320));
|
|
70444
70521
|
const clampedY = /* @__PURE__ */ user_derived(() => Math.min(get(tip).y, (typeof window !== "undefined" ? window.innerHeight : 800) - 100));
|
|
70445
|
-
var div = root_1
|
|
70522
|
+
var div = root_1();
|
|
70446
70523
|
var div_1 = child(div);
|
|
70447
70524
|
let classes;
|
|
70448
70525
|
var p = child(div_1);
|
|
@@ -70475,41 +70552,70 @@ function OnboardingTooltip($$anchor, $$props) {
|
|
|
70475
70552
|
}
|
|
70476
70553
|
delegate(["click"]);
|
|
70477
70554
|
//#endregion
|
|
70555
|
+
//#region src/lib/packageDefaults.ts
|
|
70556
|
+
var DEFAULT_CONFIG = {
|
|
70557
|
+
viewOnly: false,
|
|
70558
|
+
floorMaxWidth: 600,
|
|
70559
|
+
floorMaxHeight: 400,
|
|
70560
|
+
heatmapEnabled: false,
|
|
70561
|
+
heatmapMatrix: [],
|
|
70562
|
+
projectName: void 0,
|
|
70563
|
+
selectedCameraSerial: null,
|
|
70564
|
+
showCameraCones: false,
|
|
70565
|
+
showCameraLabels: true
|
|
70566
|
+
};
|
|
70567
|
+
function normalizeConfig(value) {
|
|
70568
|
+
if (!value || typeof value !== "object") return { ...DEFAULT_CONFIG };
|
|
70569
|
+
return {
|
|
70570
|
+
...DEFAULT_CONFIG,
|
|
70571
|
+
...value
|
|
70572
|
+
};
|
|
70573
|
+
}
|
|
70574
|
+
function normalizeFloorData(data) {
|
|
70575
|
+
if (!data || typeof data !== "object") return createDefaultProject();
|
|
70576
|
+
if (!Array.isArray(data.floors) || data.floors.length === 0) return createDefaultProject();
|
|
70577
|
+
if (!data.activeFloorId || !data.floors.some((f) => f.id === data.activeFloorId)) return {
|
|
70578
|
+
...createDefaultProject(),
|
|
70579
|
+
...data,
|
|
70580
|
+
floors: data.floors,
|
|
70581
|
+
activeFloorId: data.floors[0].id
|
|
70582
|
+
};
|
|
70583
|
+
return data;
|
|
70584
|
+
}
|
|
70585
|
+
//#endregion
|
|
70478
70586
|
//#region src/App.svelte
|
|
70479
70587
|
init_client();
|
|
70480
70588
|
init_index_client();
|
|
70481
|
-
var
|
|
70482
|
-
var
|
|
70483
|
-
var
|
|
70484
|
-
var root_8 = /* @__PURE__ */ from_html(`<div class="h-screen flex items-center justify-center"><p class="text-gray-400">Loading...</p></div>`);
|
|
70589
|
+
var root_3 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
70590
|
+
var root_6 = /* @__PURE__ */ from_html(`<div class="fixed inset-0 bg-black/50 flex items-center justify-center z-50" role="dialog" tabindex="-1" aria-label="Keyboard Shortcuts"><div class="bg-white rounded-2xl shadow-2xl max-w-2xl w-full mx-4 max-h-[85vh] flex flex-col" role="document"><div class="flex items-center justify-between px-6 pt-5 pb-3 border-b border-gray-100"><div class="flex items-center gap-2"><svg class="w-5 h-5 text-slate-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707"></path></svg> <h2 class="text-lg font-bold text-slate-800">Keyboard Shortcuts</h2></div> <div class="flex items-center gap-2"><button class="text-xs px-3 py-1.5 rounded-lg bg-slate-100 hover:bg-slate-200 text-slate-600 hover:text-slate-800 transition-colors flex items-center gap-1.5" aria-label="Copy all shortcuts"><svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"></path></svg> Copy All</button> <button class="text-gray-400 hover:text-gray-600 text-xl leading-none" aria-label="Close shortcuts">✕</button></div></div> <div class="overflow-y-auto px-6 py-4"><div class="grid grid-cols-2 gap-x-8 gap-y-0 text-sm"><div><div class="flex items-center gap-2 mb-2"><span class="text-xs font-bold uppercase tracking-wider text-indigo-500">Tools</span> <div class="flex-1 h-px bg-indigo-100"></div></div> <div class="space-y-1.5 mb-5"><div class="flex justify-between"><span class="text-gray-600">Select tool</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">V</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Wall tool</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">W</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Door tool</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">D</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Pan mode</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">H</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Measure tool</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">M</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Annotate tool</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">N</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Text tool</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">T</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Toggle snap</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">S</kbd></div></div> <div class="flex items-center gap-2 mb-2"><span class="text-xs font-bold uppercase tracking-wider text-amber-500">Edit</span> <div class="flex-1 h-px bg-amber-100"></div></div> <div class="space-y-1.5 mb-5"><div class="flex justify-between"><span class="text-gray-600">Undo</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+Z</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Redo</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+Y</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Copy</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+C</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Paste</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+V</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Select all</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+A</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Deselect all</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+D</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Save project</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+S</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Cancel / Deselect</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Esc</kbd></div></div></div> <div><div class="flex items-center gap-2 mb-2"><span class="text-xs font-bold uppercase tracking-wider text-emerald-500">Elements</span> <div class="flex-1 h-px bg-emerald-100"></div></div> <div class="space-y-1.5 mb-5"><div class="flex justify-between"><span class="text-gray-600">Rotate element</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">R</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Delete selected</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Del</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Lock / Unlock</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+L</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Group selection</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+G</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Ungroup</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Ctrl+⇧+G</kbd></div></div> <div class="flex items-center gap-2 mb-2"><span class="text-xs font-bold uppercase tracking-wider text-blue-500">View</span> <div class="flex-1 h-px bg-blue-100"></div></div> <div class="space-y-1.5 mb-5"><div class="flex justify-between"><span class="text-gray-600">Toggle 2D / 3D</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Tab</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Zoom to fit</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">F</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Toggle grid</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">G</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Toggle layers</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">L</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Show shortcuts</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">?</kbd></div></div> <div class="flex items-center gap-2 mb-2"><span class="text-xs font-bold uppercase tracking-wider text-purple-500">Canvas</span> <div class="flex-1 h-px bg-purple-100"></div></div> <div class="space-y-1.5 mb-5"><div class="flex justify-between"><span class="text-gray-600">Zoom in / out</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Scroll</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Zoom in / out</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">+ / −</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Pan canvas</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Space+Drag</kbd></div></div> <div class="flex items-center gap-2 mb-2"><span class="text-xs font-bold uppercase tracking-wider text-rose-500">Walls</span> <div class="flex-1 h-px bg-rose-100"></div></div> <div class="space-y-1.5"><div class="flex justify-between"><span class="text-gray-600">Finish wall chain</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">Dbl-click</kbd></div> <div class="flex justify-between"><span class="text-gray-600">Close wall loop</span><kbd class="px-1.5 py-0.5 bg-gray-100 rounded text-xs font-mono text-slate-700 border border-gray-200">C</kbd></div></div></div></div></div> <div class="px-6 py-3 border-t border-gray-100 text-center"><p class="text-xs text-gray-400">Press <kbd class="px-1 py-0.5 bg-gray-100 rounded text-xs font-mono border border-gray-200">?</kbd> or <kbd class="px-1 py-0.5 bg-gray-100 rounded text-xs font-mono border border-gray-200">Esc</kbd> to close</p></div></div></div>`);
|
|
70591
|
+
var root = /* @__PURE__ */ from_html(`<div class="h-full flex flex-col overflow-hidden"><!> <div class="flex flex-1 overflow-hidden"><!> <div class="flex-1 min-w-0 relative"><!></div> <!> <!></div></div> <!> <!> <!> <!> <!>`, 1);
|
|
70485
70592
|
function App($$anchor, $$props) {
|
|
70486
70593
|
var _$$props$stores, _$$props$stores2;
|
|
70487
70594
|
push($$props, true);
|
|
70488
70595
|
let showLayers = /* @__PURE__ */ state(false);
|
|
70489
70596
|
let floorData = /* @__PURE__ */ state(null);
|
|
70490
|
-
let config = /* @__PURE__ */ state(proxy({
|
|
70491
|
-
viewOnly: false,
|
|
70492
|
-
floorMaxWidth: 600,
|
|
70493
|
-
floorMaxHeight: 400,
|
|
70494
|
-
heatmapEnabled: false,
|
|
70495
|
-
heatmapMatrix: []
|
|
70496
|
-
}));
|
|
70597
|
+
let config = /* @__PURE__ */ state(proxy({ ...DEFAULT_CONFIG }));
|
|
70497
70598
|
(_$$props$stores = $$props.stores) === null || _$$props$stores === void 0 || _$$props$stores.floorData.subscribe((v) => set(floorData, v, true));
|
|
70498
|
-
(_$$props$stores2 = $$props.stores) === null || _$$props$stores2 === void 0 || _$$props$stores2.config.subscribe((v) => set(config, v, true));
|
|
70599
|
+
(_$$props$stores2 = $$props.stores) === null || _$$props$stores2 === void 0 || _$$props$stores2.config.subscribe((v) => set(config, normalizeConfig(v), true));
|
|
70499
70600
|
let commandPaletteOpen = /* @__PURE__ */ state(false);
|
|
70500
70601
|
let printOpen = /* @__PURE__ */ state(false);
|
|
70501
70602
|
let mode = /* @__PURE__ */ state("2d");
|
|
70502
|
-
let ready = /* @__PURE__ */ state(false);
|
|
70503
70603
|
let showHelp = /* @__PURE__ */ state(false);
|
|
70504
70604
|
let showUndoHistory = /* @__PURE__ */ state(false);
|
|
70505
70605
|
viewMode.subscribe((m) => {
|
|
70506
70606
|
set(mode, m, true);
|
|
70507
70607
|
});
|
|
70508
70608
|
user_effect(() => {
|
|
70509
|
-
currentProject.set(get(floorData)
|
|
70609
|
+
currentProject.set(normalizeFloorData(get(floorData)));
|
|
70610
|
+
});
|
|
70611
|
+
user_effect(() => {
|
|
70612
|
+
if (!get(config).projectName) return;
|
|
70613
|
+
currentProject.update((p) => p ? {
|
|
70614
|
+
...p,
|
|
70615
|
+
name: get(config).projectName
|
|
70616
|
+
} : p);
|
|
70510
70617
|
});
|
|
70511
70618
|
onMount(() => {
|
|
70512
|
-
set(ready, true);
|
|
70513
70619
|
let saveTimeout;
|
|
70514
70620
|
const unsub = currentProject.subscribe((p) => {
|
|
70515
70621
|
if (!p) return;
|
|
@@ -70521,7 +70627,7 @@ function App($$anchor, $$props) {
|
|
|
70521
70627
|
clearTimeout(saveTimeout);
|
|
70522
70628
|
};
|
|
70523
70629
|
});
|
|
70524
|
-
var fragment =
|
|
70630
|
+
var fragment = root();
|
|
70525
70631
|
event("keydown", $window, (e) => {
|
|
70526
70632
|
var _e$target, _e$target2, _e$target3;
|
|
70527
70633
|
if (e.key === "p" && (e.ctrlKey || e.metaKey)) {
|
|
@@ -70539,236 +70645,252 @@ function App($$anchor, $$props) {
|
|
|
70539
70645
|
if (e.key === "Escape" && get(showHelp)) set(showHelp, false);
|
|
70540
70646
|
if (e.key === "l" && !e.ctrlKey && !e.metaKey && !e.altKey && ((_e$target3 = e.target) === null || _e$target3 === void 0 ? void 0 : _e$target3.tagName) !== "INPUT") set(showLayers, !get(showLayers));
|
|
70541
70647
|
});
|
|
70542
|
-
var
|
|
70543
|
-
var
|
|
70544
|
-
|
|
70545
|
-
|
|
70546
|
-
|
|
70547
|
-
|
|
70548
|
-
|
|
70648
|
+
var div = first_child(fragment);
|
|
70649
|
+
var node = child(div);
|
|
70650
|
+
var consequent = ($$anchor) => {
|
|
70651
|
+
TopBar($$anchor, {
|
|
70652
|
+
get viewOnly() {
|
|
70653
|
+
return get(config).viewOnly;
|
|
70654
|
+
},
|
|
70655
|
+
get onDispatch() {
|
|
70656
|
+
return $$props.onDispatch;
|
|
70657
|
+
}
|
|
70658
|
+
});
|
|
70659
|
+
};
|
|
70660
|
+
if_block(node, ($$render) => {
|
|
70661
|
+
if (!get(config).viewOnly) $$render(consequent);
|
|
70662
|
+
});
|
|
70663
|
+
var div_1 = sibling(node, 2);
|
|
70664
|
+
var node_1 = child(div_1);
|
|
70665
|
+
var consequent_1 = ($$anchor) => {
|
|
70666
|
+
BuildPanel($$anchor, {
|
|
70667
|
+
get showHelp() {
|
|
70668
|
+
return get(showHelp);
|
|
70669
|
+
},
|
|
70670
|
+
set showHelp($$value) {
|
|
70671
|
+
set(showHelp, $$value, true);
|
|
70672
|
+
},
|
|
70673
|
+
get showLayers() {
|
|
70674
|
+
return get(showLayers);
|
|
70675
|
+
},
|
|
70676
|
+
set showLayers($$value) {
|
|
70677
|
+
set(showLayers, $$value, true);
|
|
70678
|
+
},
|
|
70679
|
+
get showUndoHistory() {
|
|
70680
|
+
return get(showUndoHistory);
|
|
70681
|
+
},
|
|
70682
|
+
set showUndoHistory($$value) {
|
|
70683
|
+
set(showUndoHistory, $$value, true);
|
|
70684
|
+
}
|
|
70685
|
+
});
|
|
70686
|
+
};
|
|
70687
|
+
if_block(node_1, ($$render) => {
|
|
70688
|
+
var _$$get;
|
|
70689
|
+
if (get(mode) === "2d" && !((_$$get = get(config)) === null || _$$get === void 0 ? void 0 : _$$get.viewOnly)) $$render(consequent_1);
|
|
70690
|
+
});
|
|
70691
|
+
var div_2 = sibling(node_1, 2);
|
|
70692
|
+
var node_2 = child(div_2);
|
|
70693
|
+
var consequent_3 = ($$anchor) => {
|
|
70694
|
+
var fragment_3 = root_3();
|
|
70695
|
+
var node_3 = first_child(fragment_3);
|
|
70696
|
+
{
|
|
70697
|
+
let $0 = /* @__PURE__ */ user_derived(() => {
|
|
70698
|
+
var _$$get2;
|
|
70699
|
+
return (_$$get2 = get(config)) === null || _$$get2 === void 0 ? void 0 : _$$get2.viewOnly;
|
|
70700
|
+
});
|
|
70701
|
+
let $1 = /* @__PURE__ */ user_derived(() => {
|
|
70702
|
+
var _$$get3;
|
|
70703
|
+
return (_$$get3 = get(config)) === null || _$$get3 === void 0 ? void 0 : _$$get3.floorMaxWidth;
|
|
70704
|
+
});
|
|
70705
|
+
let $2 = /* @__PURE__ */ user_derived(() => {
|
|
70706
|
+
var _$$get4;
|
|
70707
|
+
return (_$$get4 = get(config)) === null || _$$get4 === void 0 ? void 0 : _$$get4.floorMaxHeight;
|
|
70708
|
+
});
|
|
70709
|
+
let $3 = /* @__PURE__ */ user_derived(() => {
|
|
70710
|
+
var _$$get5;
|
|
70711
|
+
return (_$$get5 = get(config)) === null || _$$get5 === void 0 ? void 0 : _$$get5.heatmapMatrix;
|
|
70712
|
+
});
|
|
70713
|
+
let $4 = /* @__PURE__ */ user_derived(() => {
|
|
70714
|
+
var _$$get6;
|
|
70715
|
+
return (_$$get6 = get(config)) === null || _$$get6 === void 0 ? void 0 : _$$get6.heatmapEnabled;
|
|
70716
|
+
});
|
|
70717
|
+
let $5 = /* @__PURE__ */ user_derived(() => {
|
|
70718
|
+
var _$$get7;
|
|
70719
|
+
return (_$$get7 = get(config)) === null || _$$get7 === void 0 ? void 0 : _$$get7.projectName;
|
|
70720
|
+
});
|
|
70721
|
+
let $6 = /* @__PURE__ */ user_derived(() => {
|
|
70722
|
+
var _$$get8;
|
|
70723
|
+
return (_$$get8 = get(config)) === null || _$$get8 === void 0 ? void 0 : _$$get8.selectedCameraSerial;
|
|
70724
|
+
});
|
|
70725
|
+
let $7 = /* @__PURE__ */ user_derived(() => {
|
|
70726
|
+
var _$$get9;
|
|
70727
|
+
return (_$$get9 = get(config)) === null || _$$get9 === void 0 ? void 0 : _$$get9.showCameraCones;
|
|
70728
|
+
});
|
|
70729
|
+
let $8 = /* @__PURE__ */ user_derived(() => {
|
|
70730
|
+
var _$$get10;
|
|
70731
|
+
return (_$$get10 = get(config)) === null || _$$get10 === void 0 ? void 0 : _$$get10.showCameraLabels;
|
|
70732
|
+
});
|
|
70733
|
+
FloorPlanCanvas(node_3, {
|
|
70549
70734
|
get viewOnly() {
|
|
70550
|
-
return get(
|
|
70735
|
+
return get($0);
|
|
70551
70736
|
},
|
|
70552
|
-
get
|
|
70553
|
-
return
|
|
70554
|
-
}
|
|
70555
|
-
|
|
70556
|
-
|
|
70557
|
-
if_block(node_1, ($$render) => {
|
|
70558
|
-
if (!get(config).viewOnly) $$render(consequent);
|
|
70559
|
-
});
|
|
70560
|
-
var div_1 = sibling(node_1, 2);
|
|
70561
|
-
var node_2 = child(div_1);
|
|
70562
|
-
var consequent_1 = ($$anchor) => {
|
|
70563
|
-
BuildPanel($$anchor, {
|
|
70564
|
-
get showHelp() {
|
|
70565
|
-
return get(showHelp);
|
|
70737
|
+
get floorMaxWidth() {
|
|
70738
|
+
return get($1);
|
|
70739
|
+
},
|
|
70740
|
+
get floorMaxHeight() {
|
|
70741
|
+
return get($2);
|
|
70566
70742
|
},
|
|
70567
|
-
|
|
70568
|
-
|
|
70743
|
+
get heatmapMatrix() {
|
|
70744
|
+
return get($3);
|
|
70569
70745
|
},
|
|
70570
|
-
get
|
|
70571
|
-
return get(
|
|
70746
|
+
get heatmapEnabled() {
|
|
70747
|
+
return get($4);
|
|
70572
70748
|
},
|
|
70573
|
-
|
|
70574
|
-
|
|
70749
|
+
get projectName() {
|
|
70750
|
+
return get($5);
|
|
70575
70751
|
},
|
|
70576
|
-
get
|
|
70577
|
-
return get(
|
|
70752
|
+
get selectedCameraSerial() {
|
|
70753
|
+
return get($6);
|
|
70578
70754
|
},
|
|
70579
|
-
|
|
70580
|
-
|
|
70755
|
+
get showCameraCones() {
|
|
70756
|
+
return get($7);
|
|
70757
|
+
},
|
|
70758
|
+
get showCameraLabels() {
|
|
70759
|
+
return get($8);
|
|
70581
70760
|
}
|
|
70582
70761
|
});
|
|
70583
|
-
};
|
|
70584
|
-
if_block(node_2, ($$render) => {
|
|
70585
|
-
var _$$get;
|
|
70586
|
-
if (get(mode) === "2d" && !((_$$get = get(config)) === null || _$$get === void 0 ? void 0 : _$$get.viewOnly)) $$render(consequent_1);
|
|
70587
|
-
});
|
|
70588
|
-
var div_2 = sibling(node_2, 2);
|
|
70589
|
-
var node_3 = child(div_2);
|
|
70590
|
-
var consequent_3 = ($$anchor) => {
|
|
70591
|
-
var fragment_4 = root_4();
|
|
70592
|
-
var node_4 = first_child(fragment_4);
|
|
70593
|
-
{
|
|
70594
|
-
let $0 = /* @__PURE__ */ user_derived(() => {
|
|
70595
|
-
var _$$get2;
|
|
70596
|
-
return (_$$get2 = get(config)) === null || _$$get2 === void 0 ? void 0 : _$$get2.viewOnly;
|
|
70597
|
-
});
|
|
70598
|
-
let $1 = /* @__PURE__ */ user_derived(() => {
|
|
70599
|
-
var _$$get3;
|
|
70600
|
-
return (_$$get3 = get(config)) === null || _$$get3 === void 0 ? void 0 : _$$get3.floorMaxWidth;
|
|
70601
|
-
});
|
|
70602
|
-
let $2 = /* @__PURE__ */ user_derived(() => {
|
|
70603
|
-
var _$$get4;
|
|
70604
|
-
return (_$$get4 = get(config)) === null || _$$get4 === void 0 ? void 0 : _$$get4.floorMaxHeight;
|
|
70605
|
-
});
|
|
70606
|
-
let $3 = /* @__PURE__ */ user_derived(() => {
|
|
70607
|
-
var _$$get5;
|
|
70608
|
-
return (_$$get5 = get(config)) === null || _$$get5 === void 0 ? void 0 : _$$get5.heatmapMatrix;
|
|
70609
|
-
});
|
|
70610
|
-
let $4 = /* @__PURE__ */ user_derived(() => {
|
|
70611
|
-
var _$$get6;
|
|
70612
|
-
return (_$$get6 = get(config)) === null || _$$get6 === void 0 ? void 0 : _$$get6.heatmapEnabled;
|
|
70613
|
-
});
|
|
70614
|
-
FloorPlanCanvas(node_4, {
|
|
70615
|
-
get viewOnly() {
|
|
70616
|
-
return get($0);
|
|
70617
|
-
},
|
|
70618
|
-
get floorMaxWidth() {
|
|
70619
|
-
return get($1);
|
|
70620
|
-
},
|
|
70621
|
-
get floorMaxHeight() {
|
|
70622
|
-
return get($2);
|
|
70623
|
-
},
|
|
70624
|
-
get heatmapMatrix() {
|
|
70625
|
-
return get($3);
|
|
70626
|
-
},
|
|
70627
|
-
get heatmapEnabled() {
|
|
70628
|
-
return get($4);
|
|
70629
|
-
}
|
|
70630
|
-
});
|
|
70631
|
-
}
|
|
70632
|
-
var node_5 = sibling(node_4, 2);
|
|
70633
|
-
var consequent_2 = ($$anchor) => {
|
|
70634
|
-
AlignmentToolbar($$anchor, {});
|
|
70635
|
-
};
|
|
70636
|
-
if_block(node_5, ($$render) => {
|
|
70637
|
-
if (!get(config).viewOnly) $$render(consequent_2);
|
|
70638
|
-
});
|
|
70639
|
-
append($$anchor, fragment_4);
|
|
70640
|
-
};
|
|
70641
|
-
if_block(node_3, ($$render) => {
|
|
70642
|
-
if (get(mode) === "2d") $$render(consequent_3);
|
|
70643
|
-
});
|
|
70644
|
-
reset(div_2);
|
|
70645
|
-
var node_6 = sibling(div_2, 2);
|
|
70646
|
-
var consequent_4 = ($$anchor) => {
|
|
70647
|
-
LayersPanel($$anchor, {});
|
|
70648
|
-
};
|
|
70649
|
-
if_block(node_6, ($$render) => {
|
|
70650
|
-
if (get(showLayers) && get(mode) === "2d") $$render(consequent_4);
|
|
70651
|
-
});
|
|
70652
|
-
var node_7 = sibling(node_6, 2);
|
|
70653
|
-
{
|
|
70654
|
-
let $0 = /* @__PURE__ */ user_derived(() => get(mode) === "3d");
|
|
70655
|
-
PropertiesPanel(node_7, { get is3D() {
|
|
70656
|
-
return get($0);
|
|
70657
|
-
} });
|
|
70658
70762
|
}
|
|
70659
|
-
|
|
70660
|
-
|
|
70661
|
-
|
|
70662
|
-
UndoHistoryPanel(node_8, {
|
|
70663
|
-
get visible() {
|
|
70664
|
-
return get(showUndoHistory);
|
|
70665
|
-
},
|
|
70666
|
-
set visible($$value) {
|
|
70667
|
-
set(showUndoHistory, $$value, true);
|
|
70668
|
-
}
|
|
70669
|
-
});
|
|
70670
|
-
var node_9 = sibling(node_8, 2);
|
|
70671
|
-
var consequent_5 = ($$anchor) => {
|
|
70672
|
-
var div_3 = root_7();
|
|
70673
|
-
var div_4 = child(div_3);
|
|
70674
|
-
var div_5 = child(div_4);
|
|
70675
|
-
var div_6 = sibling(child(div_5), 2);
|
|
70676
|
-
var button = child(div_6);
|
|
70677
|
-
var button_1 = sibling(button, 2);
|
|
70678
|
-
reset(div_6);
|
|
70679
|
-
reset(div_5);
|
|
70680
|
-
next(4);
|
|
70681
|
-
reset(div_4);
|
|
70682
|
-
reset(div_3);
|
|
70683
|
-
delegated("click", div_3, () => set(showHelp, false));
|
|
70684
|
-
delegated("keydown", div_3, (e) => {
|
|
70685
|
-
if (e.key === "Escape") set(showHelp, false);
|
|
70686
|
-
});
|
|
70687
|
-
delegated("click", div_4, (e) => e.stopPropagation());
|
|
70688
|
-
delegated("keydown", div_4, (e) => e.stopPropagation());
|
|
70689
|
-
delegated("click", button, () => {
|
|
70690
|
-
const text = [
|
|
70691
|
-
"KEYBOARD SHORTCUTS — Open3D Floorplan",
|
|
70692
|
-
"",
|
|
70693
|
-
"── TOOLS ──",
|
|
70694
|
-
"V Select tool",
|
|
70695
|
-
"W Wall tool",
|
|
70696
|
-
"D Door tool",
|
|
70697
|
-
"H Pan mode",
|
|
70698
|
-
"M Measure tool",
|
|
70699
|
-
"N Annotate tool",
|
|
70700
|
-
"T Text tool",
|
|
70701
|
-
"S Toggle snap",
|
|
70702
|
-
"",
|
|
70703
|
-
"── EDIT ──",
|
|
70704
|
-
"Ctrl+Z Undo",
|
|
70705
|
-
"Ctrl+Y Redo",
|
|
70706
|
-
"Ctrl+C Copy",
|
|
70707
|
-
"Ctrl+V Paste",
|
|
70708
|
-
"Ctrl+A Select all",
|
|
70709
|
-
"Ctrl+D Deselect all",
|
|
70710
|
-
"Ctrl+S Save project",
|
|
70711
|
-
"Esc Cancel / Deselect",
|
|
70712
|
-
"",
|
|
70713
|
-
"── ELEMENTS ──",
|
|
70714
|
-
"R Rotate element",
|
|
70715
|
-
"Del/Back Delete selected",
|
|
70716
|
-
"Ctrl+L Lock/Unlock",
|
|
70717
|
-
"Ctrl+G Group selection",
|
|
70718
|
-
"Ctrl+⇧+G Ungroup",
|
|
70719
|
-
"",
|
|
70720
|
-
"── VIEW ──",
|
|
70721
|
-
"Tab Toggle 2D/3D",
|
|
70722
|
-
"F Zoom to fit",
|
|
70723
|
-
"G Toggle grid",
|
|
70724
|
-
"L Toggle layers",
|
|
70725
|
-
"? Show shortcuts",
|
|
70726
|
-
"",
|
|
70727
|
-
"── CANVAS ──",
|
|
70728
|
-
"Scroll Zoom in/out",
|
|
70729
|
-
"+/- Zoom in/out",
|
|
70730
|
-
"Space+Drag Pan canvas",
|
|
70731
|
-
"",
|
|
70732
|
-
"── WALLS ──",
|
|
70733
|
-
"Dbl-click Finish wall chain",
|
|
70734
|
-
"C Close wall loop"
|
|
70735
|
-
].join("\n");
|
|
70736
|
-
navigator.clipboard.writeText(text);
|
|
70737
|
-
});
|
|
70738
|
-
delegated("click", button_1, () => set(showHelp, false));
|
|
70739
|
-
append($$anchor, div_3);
|
|
70763
|
+
var node_4 = sibling(node_3, 2);
|
|
70764
|
+
var consequent_2 = ($$anchor) => {
|
|
70765
|
+
AlignmentToolbar($$anchor, {});
|
|
70740
70766
|
};
|
|
70741
|
-
if_block(
|
|
70742
|
-
if (get(
|
|
70767
|
+
if_block(node_4, ($$render) => {
|
|
70768
|
+
if (!get(config).viewOnly) $$render(consequent_2);
|
|
70743
70769
|
});
|
|
70744
|
-
|
|
70745
|
-
|
|
70746
|
-
|
|
70747
|
-
|
|
70748
|
-
|
|
70749
|
-
|
|
70750
|
-
|
|
70751
|
-
|
|
70770
|
+
append($$anchor, fragment_3);
|
|
70771
|
+
};
|
|
70772
|
+
if_block(node_2, ($$render) => {
|
|
70773
|
+
if (get(mode) === "2d") $$render(consequent_3);
|
|
70774
|
+
});
|
|
70775
|
+
reset(div_2);
|
|
70776
|
+
var node_5 = sibling(div_2, 2);
|
|
70777
|
+
var consequent_4 = ($$anchor) => {
|
|
70778
|
+
LayersPanel($$anchor, {});
|
|
70779
|
+
};
|
|
70780
|
+
if_block(node_5, ($$render) => {
|
|
70781
|
+
if (get(showLayers) && get(mode) === "2d") $$render(consequent_4);
|
|
70782
|
+
});
|
|
70783
|
+
var node_6 = sibling(node_5, 2);
|
|
70784
|
+
{
|
|
70785
|
+
let $0 = /* @__PURE__ */ user_derived(() => get(mode) === "3d");
|
|
70786
|
+
PropertiesPanel(node_6, { get is3D() {
|
|
70787
|
+
return get($0);
|
|
70788
|
+
} });
|
|
70789
|
+
}
|
|
70790
|
+
reset(div_1);
|
|
70791
|
+
reset(div);
|
|
70792
|
+
var node_7 = sibling(div, 2);
|
|
70793
|
+
UndoHistoryPanel(node_7, {
|
|
70794
|
+
get visible() {
|
|
70795
|
+
return get(showUndoHistory);
|
|
70796
|
+
},
|
|
70797
|
+
set visible($$value) {
|
|
70798
|
+
set(showUndoHistory, $$value, true);
|
|
70799
|
+
}
|
|
70800
|
+
});
|
|
70801
|
+
var node_8 = sibling(node_7, 2);
|
|
70802
|
+
var consequent_5 = ($$anchor) => {
|
|
70803
|
+
var div_3 = root_6();
|
|
70804
|
+
var div_4 = child(div_3);
|
|
70805
|
+
var div_5 = child(div_4);
|
|
70806
|
+
var div_6 = sibling(child(div_5), 2);
|
|
70807
|
+
var button = child(div_6);
|
|
70808
|
+
var button_1 = sibling(button, 2);
|
|
70809
|
+
reset(div_6);
|
|
70810
|
+
reset(div_5);
|
|
70811
|
+
next(4);
|
|
70812
|
+
reset(div_4);
|
|
70813
|
+
reset(div_3);
|
|
70814
|
+
delegated("click", div_3, () => set(showHelp, false));
|
|
70815
|
+
delegated("keydown", div_3, (e) => {
|
|
70816
|
+
if (e.key === "Escape") set(showHelp, false);
|
|
70752
70817
|
});
|
|
70753
|
-
|
|
70754
|
-
|
|
70755
|
-
|
|
70756
|
-
|
|
70757
|
-
|
|
70758
|
-
|
|
70759
|
-
|
|
70760
|
-
|
|
70818
|
+
delegated("click", div_4, (e) => e.stopPropagation());
|
|
70819
|
+
delegated("keydown", div_4, (e) => e.stopPropagation());
|
|
70820
|
+
delegated("click", button, () => {
|
|
70821
|
+
const text = [
|
|
70822
|
+
"KEYBOARD SHORTCUTS — Open3D Floorplan",
|
|
70823
|
+
"",
|
|
70824
|
+
"── TOOLS ──",
|
|
70825
|
+
"V Select tool",
|
|
70826
|
+
"W Wall tool",
|
|
70827
|
+
"D Door tool",
|
|
70828
|
+
"H Pan mode",
|
|
70829
|
+
"M Measure tool",
|
|
70830
|
+
"N Annotate tool",
|
|
70831
|
+
"T Text tool",
|
|
70832
|
+
"S Toggle snap",
|
|
70833
|
+
"",
|
|
70834
|
+
"── EDIT ──",
|
|
70835
|
+
"Ctrl+Z Undo",
|
|
70836
|
+
"Ctrl+Y Redo",
|
|
70837
|
+
"Ctrl+C Copy",
|
|
70838
|
+
"Ctrl+V Paste",
|
|
70839
|
+
"Ctrl+A Select all",
|
|
70840
|
+
"Ctrl+D Deselect all",
|
|
70841
|
+
"Ctrl+S Save project",
|
|
70842
|
+
"Esc Cancel / Deselect",
|
|
70843
|
+
"",
|
|
70844
|
+
"── ELEMENTS ──",
|
|
70845
|
+
"R Rotate element",
|
|
70846
|
+
"Del/Back Delete selected",
|
|
70847
|
+
"Ctrl+L Lock/Unlock",
|
|
70848
|
+
"Ctrl+G Group selection",
|
|
70849
|
+
"Ctrl+⇧+G Ungroup",
|
|
70850
|
+
"",
|
|
70851
|
+
"── VIEW ──",
|
|
70852
|
+
"Tab Toggle 2D/3D",
|
|
70853
|
+
"F Zoom to fit",
|
|
70854
|
+
"G Toggle grid",
|
|
70855
|
+
"L Toggle layers",
|
|
70856
|
+
"? Show shortcuts",
|
|
70857
|
+
"",
|
|
70858
|
+
"── CANVAS ──",
|
|
70859
|
+
"Scroll Zoom in/out",
|
|
70860
|
+
"+/- Zoom in/out",
|
|
70861
|
+
"Space+Drag Pan canvas",
|
|
70862
|
+
"",
|
|
70863
|
+
"── WALLS ──",
|
|
70864
|
+
"Dbl-click Finish wall chain",
|
|
70865
|
+
"C Close wall loop"
|
|
70866
|
+
].join("\n");
|
|
70867
|
+
navigator.clipboard.writeText(text);
|
|
70761
70868
|
});
|
|
70762
|
-
|
|
70763
|
-
append($$anchor,
|
|
70764
|
-
};
|
|
70765
|
-
var alternate = ($$anchor) => {
|
|
70766
|
-
append($$anchor, root_8());
|
|
70869
|
+
delegated("click", button_1, () => set(showHelp, false));
|
|
70870
|
+
append($$anchor, div_3);
|
|
70767
70871
|
};
|
|
70768
|
-
if_block(
|
|
70769
|
-
if (get(
|
|
70770
|
-
|
|
70872
|
+
if_block(node_8, ($$render) => {
|
|
70873
|
+
if (get(showHelp)) $$render(consequent_5);
|
|
70874
|
+
});
|
|
70875
|
+
var node_9 = sibling(node_8, 2);
|
|
70876
|
+
CommandPalette(node_9, {
|
|
70877
|
+
get open() {
|
|
70878
|
+
return get(commandPaletteOpen);
|
|
70879
|
+
},
|
|
70880
|
+
set open($$value) {
|
|
70881
|
+
set(commandPaletteOpen, $$value, true);
|
|
70882
|
+
}
|
|
70883
|
+
});
|
|
70884
|
+
var node_10 = sibling(node_9, 2);
|
|
70885
|
+
PrintLayout(node_10, {
|
|
70886
|
+
get open() {
|
|
70887
|
+
return get(printOpen);
|
|
70888
|
+
},
|
|
70889
|
+
set open($$value) {
|
|
70890
|
+
set(printOpen, $$value, true);
|
|
70891
|
+
}
|
|
70771
70892
|
});
|
|
70893
|
+
OnboardingTooltip(sibling(node_10, 2), {});
|
|
70772
70894
|
append($$anchor, fragment);
|
|
70773
70895
|
pop();
|
|
70774
70896
|
}
|
|
@@ -70792,7 +70914,7 @@ var FloorEditor = class extends HTMLElement {
|
|
|
70792
70914
|
_classPrivateFieldInitSpec(this, _wrapper, void 0);
|
|
70793
70915
|
_classPrivateFieldInitSpec(this, _store, {
|
|
70794
70916
|
floorData: writable(null),
|
|
70795
|
-
config: writable(
|
|
70917
|
+
config: writable(DEFAULT_CONFIG)
|
|
70796
70918
|
});
|
|
70797
70919
|
}
|
|
70798
70920
|
connectedCallback() {
|