floor-editor-ts 1.1.1 → 1.1.3
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 +360 -1448
- package/dist/floor-editor.es.js.map +1 -1
- package/dist/src/lib/packageDefaults.d.ts +11 -0
- 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
56904
|
var root_14$1 = /* @__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$
|
|
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
|
};
|
|
@@ -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,12 +58009,12 @@ 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
58019
|
var root_16$1 = /* @__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
58020
|
var root_17$2 = /* @__PURE__ */ from_html(`<div class="text-[10px] text-gray-400 px-1"> </div>`);
|
|
@@ -58027,7 +58027,7 @@ var root_21$2 = /* @__PURE__ */ from_html(`<button draggable="true"><span role="
|
|
|
58027
58027
|
var root_15$2 = /* @__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
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>`);
|
|
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) => {
|
|
@@ -59150,14 +59150,14 @@ 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
59162
|
var root_11$1 = /* @__PURE__ */ from_html(`<button></button>`);
|
|
59163
59163
|
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);
|
|
@@ -59172,7 +59172,7 @@ var root_21$1 = /* @__PURE__ */ from_html(`<label class="block"><span class="tex
|
|
|
59172
59172
|
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> 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);
|
|
59173
59173
|
var root_22$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>`);
|
|
59174
59174
|
var root_23 = /* @__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>`);
|
|
59175
|
-
var root$
|
|
59175
|
+
var root$3 = /* @__PURE__ */ from_html(`<div style="top: 48px; bottom: 36px;"><!> <!></div>`);
|
|
59176
59176
|
function PropertiesPanel($$anchor, $$props) {
|
|
59177
59177
|
push($$props, true);
|
|
59178
59178
|
const $projectSettings = () => store_get(projectSettings, "$projectSettings", $$stores);
|
|
@@ -59602,11 +59602,11 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59602
59602
|
}
|
|
59603
59603
|
];
|
|
59604
59604
|
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$
|
|
59605
|
+
var div = root$3();
|
|
59606
59606
|
let classes;
|
|
59607
59607
|
var node = child(div);
|
|
59608
59608
|
var consequent_1 = ($$anchor) => {
|
|
59609
|
-
var fragment = root_1$
|
|
59609
|
+
var fragment = root_1$7();
|
|
59610
59610
|
var div_1 = sibling(first_child(fragment), 2);
|
|
59611
59611
|
var label = child(div_1);
|
|
59612
59612
|
var span = child(label);
|
|
@@ -59646,7 +59646,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59646
59646
|
var div_5 = root_2$6();
|
|
59647
59647
|
var div_6 = sibling(child(div_5), 2);
|
|
59648
59648
|
each(div_6, 21, () => wallColors, index$1, ($$anchor, wc) => {
|
|
59649
|
-
var button_3 = root_3$
|
|
59649
|
+
var button_3 = root_3$6();
|
|
59650
59650
|
template_effect(() => {
|
|
59651
59651
|
var _$$get$color;
|
|
59652
59652
|
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 +59677,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59677
59677
|
"subway-tile": images.subwayTile
|
|
59678
59678
|
}[get(wc).id]) !== null && _redBrick$exposedBr !== void 0 ? _redBrick$exposedBr : "";
|
|
59679
59679
|
});
|
|
59680
|
-
var button_5 = root_4$
|
|
59680
|
+
var button_5 = root_4$5();
|
|
59681
59681
|
var span_3 = child(button_5);
|
|
59682
59682
|
var text_4 = child(span_3, true);
|
|
59683
59683
|
reset(span_3);
|
|
@@ -59715,7 +59715,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59715
59715
|
var div_8 = root_5$3();
|
|
59716
59716
|
var div_9 = sibling(child(div_8), 2);
|
|
59717
59717
|
each(div_9, 21, () => wallColors, index$1, ($$anchor, wc) => {
|
|
59718
|
-
var button_6 = root_6$
|
|
59718
|
+
var button_6 = root_6$3();
|
|
59719
59719
|
template_effect(() => {
|
|
59720
59720
|
var _$$get$color2;
|
|
59721
59721
|
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 +59746,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59746
59746
|
"subway-tile": images.subwayTile
|
|
59747
59747
|
}[get(wc).id]) !== null && _redBrick$exposedBr2 !== void 0 ? _redBrick$exposedBr2 : "";
|
|
59748
59748
|
});
|
|
59749
|
-
var button_8 = root_7$
|
|
59749
|
+
var button_8 = root_7$2();
|
|
59750
59750
|
var span_4 = child(button_8);
|
|
59751
59751
|
var text_5 = child(span_4, true);
|
|
59752
59752
|
reset(span_4);
|
|
@@ -59824,7 +59824,7 @@ function PropertiesPanel($$anchor, $$props) {
|
|
|
59824
59824
|
append($$anchor, fragment);
|
|
59825
59825
|
};
|
|
59826
59826
|
var consequent_2 = ($$anchor) => {
|
|
59827
|
-
var fragment_1 = root_8$
|
|
59827
|
+
var fragment_1 = root_8$1();
|
|
59828
59828
|
var div_11 = sibling(first_child(fragment_1), 2);
|
|
59829
59829
|
var label_5 = child(div_11);
|
|
59830
59830
|
var span_5 = child(label_5);
|
|
@@ -60622,12 +60622,12 @@ delegate([
|
|
|
60622
60622
|
//#endregion
|
|
60623
60623
|
//#region src/lib/components/sidebar/LayersPanel.svelte
|
|
60624
60624
|
init_client();
|
|
60625
|
-
var root_3$
|
|
60626
|
-
var root_4$
|
|
60625
|
+
var root_3$5 = /* @__PURE__ */ from_html(`<button><span class="text-[10px]"> </span> <span class="truncate flex-1"> </span></button>`);
|
|
60626
|
+
var root_4$4 = /* @__PURE__ */ from_html(`<div class="pl-7 pr-2 py-1 text-gray-300 italic">Empty</div>`);
|
|
60627
60627
|
var root_2$5 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
60628
|
-
var root_1$
|
|
60628
|
+
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
60629
|
var root_5$2 = /* @__PURE__ */ from_html(`<div class="p-4 text-gray-400 text-center">No elements</div>`);
|
|
60630
|
-
var root$
|
|
60630
|
+
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
60631
|
function LayersPanel($$anchor, $$props) {
|
|
60632
60632
|
push($$props, true);
|
|
60633
60633
|
let floor = /* @__PURE__ */ state(null);
|
|
@@ -60772,11 +60772,11 @@ function LayersPanel($$anchor, $$props) {
|
|
|
60772
60772
|
});
|
|
60773
60773
|
return cats;
|
|
60774
60774
|
});
|
|
60775
|
-
var div = root$
|
|
60775
|
+
var div = root$2();
|
|
60776
60776
|
var div_1 = sibling(child(div), 2);
|
|
60777
60777
|
var node = child(div_1);
|
|
60778
60778
|
each(node, 17, () => get(categories), index$1, ($$anchor, cat) => {
|
|
60779
|
-
var div_2 = root_1$
|
|
60779
|
+
var div_2 = root_1$6();
|
|
60780
60780
|
var button = child(div_2);
|
|
60781
60781
|
var span = child(button);
|
|
60782
60782
|
var text = child(span, true);
|
|
@@ -60798,7 +60798,7 @@ function LayersPanel($$anchor, $$props) {
|
|
|
60798
60798
|
var fragment = root_2$5();
|
|
60799
60799
|
var node_2 = first_child(fragment);
|
|
60800
60800
|
each(node_2, 17, () => get(cat).items, index$1, ($$anchor, item) => {
|
|
60801
|
-
var button_1 = root_3$
|
|
60801
|
+
var button_1 = root_3$5();
|
|
60802
60802
|
let classes_1;
|
|
60803
60803
|
var span_5 = child(button_1);
|
|
60804
60804
|
var text_4 = child(span_5, true);
|
|
@@ -60821,7 +60821,7 @@ function LayersPanel($$anchor, $$props) {
|
|
|
60821
60821
|
});
|
|
60822
60822
|
var node_3 = sibling(node_2, 2);
|
|
60823
60823
|
var consequent = ($$anchor) => {
|
|
60824
|
-
append($$anchor, root_4$
|
|
60824
|
+
append($$anchor, root_4$4());
|
|
60825
60825
|
};
|
|
60826
60826
|
if_block(node_3, ($$render) => {
|
|
60827
60827
|
if (get(cat).items.length === 0) $$render(consequent);
|
|
@@ -61993,12 +61993,12 @@ function handleGlobalShortcut(e, ctx = {}) {
|
|
|
61993
61993
|
init_client();
|
|
61994
61994
|
init_index_client();
|
|
61995
61995
|
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$
|
|
61996
|
+
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);
|
|
61997
|
+
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
61998
|
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$
|
|
61999
|
+
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);
|
|
62000
|
+
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);
|
|
62001
|
+
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
62002
|
function ContextMenu($$anchor, $$props) {
|
|
62003
62003
|
push($$props, true);
|
|
62004
62004
|
let menuEl;
|
|
@@ -62037,7 +62037,7 @@ function ContextMenu($$anchor, $$props) {
|
|
|
62037
62037
|
var fragment = comment();
|
|
62038
62038
|
var node = first_child(fragment);
|
|
62039
62039
|
var consequent_6 = ($$anchor) => {
|
|
62040
|
-
var div = root_1$
|
|
62040
|
+
var div = root_1$5();
|
|
62041
62041
|
var node_1 = child(div);
|
|
62042
62042
|
var consequent = ($$anchor) => {
|
|
62043
62043
|
var fragment_1 = root_2$4();
|
|
@@ -62070,7 +62070,7 @@ function ContextMenu($$anchor, $$props) {
|
|
|
62070
62070
|
append($$anchor, fragment_1);
|
|
62071
62071
|
};
|
|
62072
62072
|
var consequent_1 = ($$anchor) => {
|
|
62073
|
-
var fragment_2 = root_3$
|
|
62073
|
+
var fragment_2 = root_3$4();
|
|
62074
62074
|
var button_8 = first_child(fragment_2);
|
|
62075
62075
|
var button_9 = sibling(button_8, 2);
|
|
62076
62076
|
var text_2 = sibling(child(button_9));
|
|
@@ -62088,7 +62088,7 @@ function ContextMenu($$anchor, $$props) {
|
|
|
62088
62088
|
append($$anchor, fragment_2);
|
|
62089
62089
|
};
|
|
62090
62090
|
var consequent_2 = ($$anchor) => {
|
|
62091
|
-
var fragment_3 = root_4$
|
|
62091
|
+
var fragment_3 = root_4$3();
|
|
62092
62092
|
var button_12 = first_child(fragment_3);
|
|
62093
62093
|
var button_13 = sibling(button_12, 4);
|
|
62094
62094
|
delegated("click", button_12, () => clickItem("properties"));
|
|
@@ -62106,10 +62106,10 @@ function ContextMenu($$anchor, $$props) {
|
|
|
62106
62106
|
append($$anchor, fragment_4);
|
|
62107
62107
|
};
|
|
62108
62108
|
var consequent_5 = ($$anchor) => {
|
|
62109
|
-
var fragment_5 = root_6$
|
|
62109
|
+
var fragment_5 = root_6$2();
|
|
62110
62110
|
var node_2 = first_child(fragment_5);
|
|
62111
62111
|
var consequent_4 = ($$anchor) => {
|
|
62112
|
-
var fragment_6 = root_7$
|
|
62112
|
+
var fragment_6 = root_7$1();
|
|
62113
62113
|
var button_17 = first_child(fragment_6);
|
|
62114
62114
|
next(2);
|
|
62115
62115
|
delegated("click", button_17, () => clickItem("paste"));
|
|
@@ -64285,1098 +64285,6 @@ function drawFloorHeatmap(cs, floor, heatmapMatrix, detectedRooms) {
|
|
|
64285
64285
|
ctx.restore();
|
|
64286
64286
|
}
|
|
64287
64287
|
//#endregion
|
|
64288
|
-
//#region src/lib/utils/heatmapData.ts
|
|
64289
|
-
var SAMPLE_HEATMAP_32X32 = [
|
|
64290
|
-
[
|
|
64291
|
-
0,
|
|
64292
|
-
0,
|
|
64293
|
-
0,
|
|
64294
|
-
0,
|
|
64295
|
-
0,
|
|
64296
|
-
0,
|
|
64297
|
-
0,
|
|
64298
|
-
0,
|
|
64299
|
-
0,
|
|
64300
|
-
0,
|
|
64301
|
-
0,
|
|
64302
|
-
0,
|
|
64303
|
-
0,
|
|
64304
|
-
0,
|
|
64305
|
-
0,
|
|
64306
|
-
0,
|
|
64307
|
-
0,
|
|
64308
|
-
0,
|
|
64309
|
-
0,
|
|
64310
|
-
0,
|
|
64311
|
-
0,
|
|
64312
|
-
0,
|
|
64313
|
-
0,
|
|
64314
|
-
0,
|
|
64315
|
-
0,
|
|
64316
|
-
0,
|
|
64317
|
-
0,
|
|
64318
|
-
0,
|
|
64319
|
-
0,
|
|
64320
|
-
0,
|
|
64321
|
-
0,
|
|
64322
|
-
0
|
|
64323
|
-
],
|
|
64324
|
-
[
|
|
64325
|
-
0,
|
|
64326
|
-
0,
|
|
64327
|
-
0,
|
|
64328
|
-
0,
|
|
64329
|
-
0,
|
|
64330
|
-
0,
|
|
64331
|
-
0,
|
|
64332
|
-
0,
|
|
64333
|
-
0,
|
|
64334
|
-
0,
|
|
64335
|
-
0,
|
|
64336
|
-
0,
|
|
64337
|
-
0,
|
|
64338
|
-
0,
|
|
64339
|
-
0,
|
|
64340
|
-
0,
|
|
64341
|
-
0,
|
|
64342
|
-
0,
|
|
64343
|
-
0,
|
|
64344
|
-
0,
|
|
64345
|
-
0,
|
|
64346
|
-
0,
|
|
64347
|
-
0,
|
|
64348
|
-
0,
|
|
64349
|
-
0,
|
|
64350
|
-
0,
|
|
64351
|
-
0,
|
|
64352
|
-
0,
|
|
64353
|
-
0,
|
|
64354
|
-
0,
|
|
64355
|
-
0,
|
|
64356
|
-
0
|
|
64357
|
-
],
|
|
64358
|
-
[
|
|
64359
|
-
0,
|
|
64360
|
-
0,
|
|
64361
|
-
0,
|
|
64362
|
-
0,
|
|
64363
|
-
0,
|
|
64364
|
-
0,
|
|
64365
|
-
0,
|
|
64366
|
-
0,
|
|
64367
|
-
0,
|
|
64368
|
-
0,
|
|
64369
|
-
0,
|
|
64370
|
-
0,
|
|
64371
|
-
0,
|
|
64372
|
-
0,
|
|
64373
|
-
0,
|
|
64374
|
-
0,
|
|
64375
|
-
0,
|
|
64376
|
-
0,
|
|
64377
|
-
0,
|
|
64378
|
-
0,
|
|
64379
|
-
0,
|
|
64380
|
-
0,
|
|
64381
|
-
0,
|
|
64382
|
-
0,
|
|
64383
|
-
0,
|
|
64384
|
-
0,
|
|
64385
|
-
0,
|
|
64386
|
-
0,
|
|
64387
|
-
0,
|
|
64388
|
-
0,
|
|
64389
|
-
0,
|
|
64390
|
-
0
|
|
64391
|
-
],
|
|
64392
|
-
[
|
|
64393
|
-
0,
|
|
64394
|
-
0,
|
|
64395
|
-
0,
|
|
64396
|
-
0,
|
|
64397
|
-
0,
|
|
64398
|
-
0,
|
|
64399
|
-
0,
|
|
64400
|
-
0,
|
|
64401
|
-
0,
|
|
64402
|
-
0,
|
|
64403
|
-
0,
|
|
64404
|
-
0,
|
|
64405
|
-
0,
|
|
64406
|
-
0,
|
|
64407
|
-
0,
|
|
64408
|
-
0,
|
|
64409
|
-
0,
|
|
64410
|
-
0,
|
|
64411
|
-
0,
|
|
64412
|
-
0,
|
|
64413
|
-
0,
|
|
64414
|
-
0,
|
|
64415
|
-
0,
|
|
64416
|
-
0,
|
|
64417
|
-
0,
|
|
64418
|
-
0,
|
|
64419
|
-
0,
|
|
64420
|
-
0,
|
|
64421
|
-
0,
|
|
64422
|
-
0,
|
|
64423
|
-
0,
|
|
64424
|
-
0
|
|
64425
|
-
],
|
|
64426
|
-
[
|
|
64427
|
-
0,
|
|
64428
|
-
0,
|
|
64429
|
-
0,
|
|
64430
|
-
0,
|
|
64431
|
-
0,
|
|
64432
|
-
0,
|
|
64433
|
-
0,
|
|
64434
|
-
0,
|
|
64435
|
-
0,
|
|
64436
|
-
0,
|
|
64437
|
-
0,
|
|
64438
|
-
0,
|
|
64439
|
-
0,
|
|
64440
|
-
0,
|
|
64441
|
-
0,
|
|
64442
|
-
0,
|
|
64443
|
-
0,
|
|
64444
|
-
0,
|
|
64445
|
-
0,
|
|
64446
|
-
0,
|
|
64447
|
-
0,
|
|
64448
|
-
0,
|
|
64449
|
-
0,
|
|
64450
|
-
0,
|
|
64451
|
-
0,
|
|
64452
|
-
0,
|
|
64453
|
-
0,
|
|
64454
|
-
0,
|
|
64455
|
-
0,
|
|
64456
|
-
0,
|
|
64457
|
-
0,
|
|
64458
|
-
0
|
|
64459
|
-
],
|
|
64460
|
-
[
|
|
64461
|
-
0,
|
|
64462
|
-
0,
|
|
64463
|
-
0,
|
|
64464
|
-
0,
|
|
64465
|
-
0,
|
|
64466
|
-
0,
|
|
64467
|
-
0,
|
|
64468
|
-
0,
|
|
64469
|
-
0,
|
|
64470
|
-
0,
|
|
64471
|
-
0,
|
|
64472
|
-
0,
|
|
64473
|
-
0,
|
|
64474
|
-
0,
|
|
64475
|
-
0,
|
|
64476
|
-
0,
|
|
64477
|
-
0,
|
|
64478
|
-
0,
|
|
64479
|
-
0,
|
|
64480
|
-
0,
|
|
64481
|
-
0,
|
|
64482
|
-
0,
|
|
64483
|
-
0,
|
|
64484
|
-
0,
|
|
64485
|
-
0,
|
|
64486
|
-
0,
|
|
64487
|
-
0,
|
|
64488
|
-
0,
|
|
64489
|
-
0,
|
|
64490
|
-
0,
|
|
64491
|
-
0,
|
|
64492
|
-
0
|
|
64493
|
-
],
|
|
64494
|
-
[
|
|
64495
|
-
0,
|
|
64496
|
-
0,
|
|
64497
|
-
0,
|
|
64498
|
-
0,
|
|
64499
|
-
0,
|
|
64500
|
-
0,
|
|
64501
|
-
0,
|
|
64502
|
-
0,
|
|
64503
|
-
0,
|
|
64504
|
-
0,
|
|
64505
|
-
0,
|
|
64506
|
-
0,
|
|
64507
|
-
0,
|
|
64508
|
-
0,
|
|
64509
|
-
0,
|
|
64510
|
-
0,
|
|
64511
|
-
0,
|
|
64512
|
-
0,
|
|
64513
|
-
0,
|
|
64514
|
-
0,
|
|
64515
|
-
0,
|
|
64516
|
-
0,
|
|
64517
|
-
0,
|
|
64518
|
-
0,
|
|
64519
|
-
0,
|
|
64520
|
-
0,
|
|
64521
|
-
0,
|
|
64522
|
-
0,
|
|
64523
|
-
0,
|
|
64524
|
-
0,
|
|
64525
|
-
0,
|
|
64526
|
-
0
|
|
64527
|
-
],
|
|
64528
|
-
[
|
|
64529
|
-
0,
|
|
64530
|
-
0,
|
|
64531
|
-
0,
|
|
64532
|
-
0,
|
|
64533
|
-
0,
|
|
64534
|
-
0,
|
|
64535
|
-
0,
|
|
64536
|
-
0,
|
|
64537
|
-
0,
|
|
64538
|
-
0,
|
|
64539
|
-
0,
|
|
64540
|
-
0,
|
|
64541
|
-
0,
|
|
64542
|
-
0,
|
|
64543
|
-
0,
|
|
64544
|
-
0,
|
|
64545
|
-
0,
|
|
64546
|
-
0,
|
|
64547
|
-
0,
|
|
64548
|
-
0,
|
|
64549
|
-
0,
|
|
64550
|
-
0,
|
|
64551
|
-
0,
|
|
64552
|
-
0,
|
|
64553
|
-
0,
|
|
64554
|
-
0,
|
|
64555
|
-
0,
|
|
64556
|
-
0,
|
|
64557
|
-
0,
|
|
64558
|
-
0,
|
|
64559
|
-
0,
|
|
64560
|
-
0
|
|
64561
|
-
],
|
|
64562
|
-
[
|
|
64563
|
-
0,
|
|
64564
|
-
0,
|
|
64565
|
-
0,
|
|
64566
|
-
0,
|
|
64567
|
-
0,
|
|
64568
|
-
0,
|
|
64569
|
-
0,
|
|
64570
|
-
0,
|
|
64571
|
-
0,
|
|
64572
|
-
0,
|
|
64573
|
-
0,
|
|
64574
|
-
0,
|
|
64575
|
-
0,
|
|
64576
|
-
0,
|
|
64577
|
-
0,
|
|
64578
|
-
0,
|
|
64579
|
-
0,
|
|
64580
|
-
0,
|
|
64581
|
-
0,
|
|
64582
|
-
0,
|
|
64583
|
-
0,
|
|
64584
|
-
0,
|
|
64585
|
-
0,
|
|
64586
|
-
0,
|
|
64587
|
-
0,
|
|
64588
|
-
0,
|
|
64589
|
-
0,
|
|
64590
|
-
0,
|
|
64591
|
-
0,
|
|
64592
|
-
0,
|
|
64593
|
-
0,
|
|
64594
|
-
0
|
|
64595
|
-
],
|
|
64596
|
-
[
|
|
64597
|
-
0,
|
|
64598
|
-
0,
|
|
64599
|
-
0,
|
|
64600
|
-
0,
|
|
64601
|
-
0,
|
|
64602
|
-
0,
|
|
64603
|
-
0,
|
|
64604
|
-
0,
|
|
64605
|
-
0,
|
|
64606
|
-
0,
|
|
64607
|
-
0,
|
|
64608
|
-
0,
|
|
64609
|
-
0,
|
|
64610
|
-
0,
|
|
64611
|
-
0,
|
|
64612
|
-
0,
|
|
64613
|
-
0,
|
|
64614
|
-
0,
|
|
64615
|
-
0,
|
|
64616
|
-
0,
|
|
64617
|
-
0,
|
|
64618
|
-
0,
|
|
64619
|
-
0,
|
|
64620
|
-
0,
|
|
64621
|
-
0,
|
|
64622
|
-
0,
|
|
64623
|
-
0,
|
|
64624
|
-
0,
|
|
64625
|
-
0,
|
|
64626
|
-
0,
|
|
64627
|
-
0,
|
|
64628
|
-
0
|
|
64629
|
-
],
|
|
64630
|
-
[
|
|
64631
|
-
0,
|
|
64632
|
-
0,
|
|
64633
|
-
0,
|
|
64634
|
-
0,
|
|
64635
|
-
0,
|
|
64636
|
-
0,
|
|
64637
|
-
0,
|
|
64638
|
-
0,
|
|
64639
|
-
0,
|
|
64640
|
-
0,
|
|
64641
|
-
0,
|
|
64642
|
-
0,
|
|
64643
|
-
0,
|
|
64644
|
-
0,
|
|
64645
|
-
0,
|
|
64646
|
-
0,
|
|
64647
|
-
0,
|
|
64648
|
-
0,
|
|
64649
|
-
0,
|
|
64650
|
-
0,
|
|
64651
|
-
0,
|
|
64652
|
-
0,
|
|
64653
|
-
0,
|
|
64654
|
-
0,
|
|
64655
|
-
0,
|
|
64656
|
-
0,
|
|
64657
|
-
0,
|
|
64658
|
-
0,
|
|
64659
|
-
0,
|
|
64660
|
-
0,
|
|
64661
|
-
0,
|
|
64662
|
-
0
|
|
64663
|
-
],
|
|
64664
|
-
[
|
|
64665
|
-
0,
|
|
64666
|
-
0,
|
|
64667
|
-
0,
|
|
64668
|
-
0,
|
|
64669
|
-
0,
|
|
64670
|
-
0,
|
|
64671
|
-
0,
|
|
64672
|
-
0,
|
|
64673
|
-
0,
|
|
64674
|
-
0,
|
|
64675
|
-
0,
|
|
64676
|
-
0,
|
|
64677
|
-
0,
|
|
64678
|
-
0,
|
|
64679
|
-
0,
|
|
64680
|
-
0,
|
|
64681
|
-
0,
|
|
64682
|
-
0,
|
|
64683
|
-
0,
|
|
64684
|
-
0,
|
|
64685
|
-
0,
|
|
64686
|
-
0,
|
|
64687
|
-
0,
|
|
64688
|
-
0,
|
|
64689
|
-
0,
|
|
64690
|
-
0,
|
|
64691
|
-
0,
|
|
64692
|
-
0,
|
|
64693
|
-
0,
|
|
64694
|
-
0,
|
|
64695
|
-
0,
|
|
64696
|
-
0
|
|
64697
|
-
],
|
|
64698
|
-
[
|
|
64699
|
-
0,
|
|
64700
|
-
0,
|
|
64701
|
-
0,
|
|
64702
|
-
0,
|
|
64703
|
-
0,
|
|
64704
|
-
0,
|
|
64705
|
-
0,
|
|
64706
|
-
0,
|
|
64707
|
-
0,
|
|
64708
|
-
0,
|
|
64709
|
-
0,
|
|
64710
|
-
0,
|
|
64711
|
-
0,
|
|
64712
|
-
0,
|
|
64713
|
-
0,
|
|
64714
|
-
0,
|
|
64715
|
-
0,
|
|
64716
|
-
0,
|
|
64717
|
-
0,
|
|
64718
|
-
0,
|
|
64719
|
-
0,
|
|
64720
|
-
0,
|
|
64721
|
-
0,
|
|
64722
|
-
0,
|
|
64723
|
-
0,
|
|
64724
|
-
0,
|
|
64725
|
-
0,
|
|
64726
|
-
0,
|
|
64727
|
-
0,
|
|
64728
|
-
0,
|
|
64729
|
-
0,
|
|
64730
|
-
0
|
|
64731
|
-
],
|
|
64732
|
-
[
|
|
64733
|
-
0,
|
|
64734
|
-
0,
|
|
64735
|
-
0,
|
|
64736
|
-
0,
|
|
64737
|
-
0,
|
|
64738
|
-
0,
|
|
64739
|
-
0,
|
|
64740
|
-
0,
|
|
64741
|
-
0,
|
|
64742
|
-
0,
|
|
64743
|
-
0,
|
|
64744
|
-
0,
|
|
64745
|
-
0,
|
|
64746
|
-
0,
|
|
64747
|
-
0,
|
|
64748
|
-
0,
|
|
64749
|
-
0,
|
|
64750
|
-
0,
|
|
64751
|
-
0,
|
|
64752
|
-
0,
|
|
64753
|
-
0,
|
|
64754
|
-
0,
|
|
64755
|
-
0,
|
|
64756
|
-
0,
|
|
64757
|
-
0,
|
|
64758
|
-
0,
|
|
64759
|
-
0,
|
|
64760
|
-
0,
|
|
64761
|
-
0,
|
|
64762
|
-
0,
|
|
64763
|
-
0,
|
|
64764
|
-
0
|
|
64765
|
-
],
|
|
64766
|
-
[
|
|
64767
|
-
0,
|
|
64768
|
-
0,
|
|
64769
|
-
0,
|
|
64770
|
-
0,
|
|
64771
|
-
0,
|
|
64772
|
-
0,
|
|
64773
|
-
0,
|
|
64774
|
-
0,
|
|
64775
|
-
0,
|
|
64776
|
-
0,
|
|
64777
|
-
0,
|
|
64778
|
-
0,
|
|
64779
|
-
0,
|
|
64780
|
-
0,
|
|
64781
|
-
0,
|
|
64782
|
-
0,
|
|
64783
|
-
0,
|
|
64784
|
-
0,
|
|
64785
|
-
0,
|
|
64786
|
-
0,
|
|
64787
|
-
0,
|
|
64788
|
-
0,
|
|
64789
|
-
0,
|
|
64790
|
-
0,
|
|
64791
|
-
0,
|
|
64792
|
-
0,
|
|
64793
|
-
0,
|
|
64794
|
-
0,
|
|
64795
|
-
0,
|
|
64796
|
-
0,
|
|
64797
|
-
0,
|
|
64798
|
-
0
|
|
64799
|
-
],
|
|
64800
|
-
[
|
|
64801
|
-
0,
|
|
64802
|
-
0,
|
|
64803
|
-
0,
|
|
64804
|
-
0,
|
|
64805
|
-
0,
|
|
64806
|
-
0,
|
|
64807
|
-
0,
|
|
64808
|
-
0,
|
|
64809
|
-
12.748932716414688,
|
|
64810
|
-
45.32230658043087,
|
|
64811
|
-
68.04250459126601,
|
|
64812
|
-
45.32230658043087,
|
|
64813
|
-
12.748932716414688,
|
|
64814
|
-
0,
|
|
64815
|
-
0,
|
|
64816
|
-
0,
|
|
64817
|
-
0,
|
|
64818
|
-
0,
|
|
64819
|
-
0,
|
|
64820
|
-
0,
|
|
64821
|
-
0,
|
|
64822
|
-
0,
|
|
64823
|
-
0,
|
|
64824
|
-
0,
|
|
64825
|
-
0,
|
|
64826
|
-
0,
|
|
64827
|
-
0,
|
|
64828
|
-
0,
|
|
64829
|
-
0,
|
|
64830
|
-
0,
|
|
64831
|
-
0,
|
|
64832
|
-
0
|
|
64833
|
-
],
|
|
64834
|
-
[
|
|
64835
|
-
0,
|
|
64836
|
-
0,
|
|
64837
|
-
0,
|
|
64838
|
-
0,
|
|
64839
|
-
0,
|
|
64840
|
-
0,
|
|
64841
|
-
0,
|
|
64842
|
-
0,
|
|
64843
|
-
45.4224478194094,
|
|
64844
|
-
181.72045122075266,
|
|
64845
|
-
275.3766843118068,
|
|
64846
|
-
181.72045122075266,
|
|
64847
|
-
45.4224478194094,
|
|
64848
|
-
0,
|
|
64849
|
-
0,
|
|
64850
|
-
0,
|
|
64851
|
-
0,
|
|
64852
|
-
0,
|
|
64853
|
-
0,
|
|
64854
|
-
0,
|
|
64855
|
-
0,
|
|
64856
|
-
0,
|
|
64857
|
-
0,
|
|
64858
|
-
0,
|
|
64859
|
-
0,
|
|
64860
|
-
0,
|
|
64861
|
-
0,
|
|
64862
|
-
0,
|
|
64863
|
-
0,
|
|
64864
|
-
0,
|
|
64865
|
-
0,
|
|
64866
|
-
0
|
|
64867
|
-
],
|
|
64868
|
-
[
|
|
64869
|
-
0,
|
|
64870
|
-
0,
|
|
64871
|
-
0,
|
|
64872
|
-
0,
|
|
64873
|
-
0,
|
|
64874
|
-
0,
|
|
64875
|
-
0,
|
|
64876
|
-
0,
|
|
64877
|
-
68.31590812975966,
|
|
64878
|
-
276.0871751974888,
|
|
64879
|
-
412.63080261542115,
|
|
64880
|
-
276.0567800219605,
|
|
64881
|
-
68.28551295423132,
|
|
64882
|
-
0,
|
|
64883
|
-
0,
|
|
64884
|
-
0,
|
|
64885
|
-
0,
|
|
64886
|
-
0,
|
|
64887
|
-
0,
|
|
64888
|
-
0,
|
|
64889
|
-
0,
|
|
64890
|
-
0,
|
|
64891
|
-
0,
|
|
64892
|
-
0,
|
|
64893
|
-
0,
|
|
64894
|
-
0,
|
|
64895
|
-
0,
|
|
64896
|
-
0,
|
|
64897
|
-
0,
|
|
64898
|
-
0,
|
|
64899
|
-
0,
|
|
64900
|
-
0
|
|
64901
|
-
],
|
|
64902
|
-
[
|
|
64903
|
-
0,
|
|
64904
|
-
0,
|
|
64905
|
-
0,
|
|
64906
|
-
0,
|
|
64907
|
-
0,
|
|
64908
|
-
0,
|
|
64909
|
-
0,
|
|
64910
|
-
.030395175528338574,
|
|
64911
|
-
45.85002901047233,
|
|
64912
|
-
183.2669337255748,
|
|
64913
|
-
277.5660942229701,
|
|
64914
|
-
183.11495784793308,
|
|
64915
|
-
45.72844830835897,
|
|
64916
|
-
0,
|
|
64917
|
-
0,
|
|
64918
|
-
0,
|
|
64919
|
-
0,
|
|
64920
|
-
0,
|
|
64921
|
-
0,
|
|
64922
|
-
0,
|
|
64923
|
-
0,
|
|
64924
|
-
0,
|
|
64925
|
-
0,
|
|
64926
|
-
0,
|
|
64927
|
-
0,
|
|
64928
|
-
0,
|
|
64929
|
-
0,
|
|
64930
|
-
0,
|
|
64931
|
-
0,
|
|
64932
|
-
0,
|
|
64933
|
-
0,
|
|
64934
|
-
0
|
|
64935
|
-
],
|
|
64936
|
-
[
|
|
64937
|
-
0,
|
|
64938
|
-
0,
|
|
64939
|
-
0,
|
|
64940
|
-
0,
|
|
64941
|
-
0,
|
|
64942
|
-
0,
|
|
64943
|
-
0,
|
|
64944
|
-
.04559276329250786,
|
|
64945
|
-
13.231129308385174,
|
|
64946
|
-
46.80863529396807,
|
|
64947
|
-
70.01815269312522,
|
|
64948
|
-
46.595869065269696,
|
|
64949
|
-
13.063955842979313,
|
|
64950
|
-
0,
|
|
64951
|
-
0,
|
|
64952
|
-
0,
|
|
64953
|
-
0,
|
|
64954
|
-
0,
|
|
64955
|
-
0,
|
|
64956
|
-
.0883900124257005,
|
|
64957
|
-
.1184538668534887,
|
|
64958
|
-
.0883900124257005,
|
|
64959
|
-
0,
|
|
64960
|
-
0,
|
|
64961
|
-
0,
|
|
64962
|
-
0,
|
|
64963
|
-
0,
|
|
64964
|
-
0,
|
|
64965
|
-
0,
|
|
64966
|
-
0,
|
|
64967
|
-
0,
|
|
64968
|
-
0
|
|
64969
|
-
],
|
|
64970
|
-
[
|
|
64971
|
-
0,
|
|
64972
|
-
0,
|
|
64973
|
-
0,
|
|
64974
|
-
0,
|
|
64975
|
-
0,
|
|
64976
|
-
.3548876788672499,
|
|
64977
|
-
1.5365008894852765,
|
|
64978
|
-
2.311642755673626,
|
|
64979
|
-
1.849545906847856,
|
|
64980
|
-
1.0591053080371047,
|
|
64981
|
-
.8374628344858726,
|
|
64982
|
-
.48600196369050996,
|
|
64983
|
-
.12261466435560091,
|
|
64984
|
-
0,
|
|
64985
|
-
0,
|
|
64986
|
-
0,
|
|
64987
|
-
0,
|
|
64988
|
-
0,
|
|
64989
|
-
.0883900124257005,
|
|
64990
|
-
.29523389170488973,
|
|
64991
|
-
.4437516129861666,
|
|
64992
|
-
.29523389170488973,
|
|
64993
|
-
.11706693153681717,
|
|
64994
|
-
.10683366069643516,
|
|
64995
|
-
.1641874989186685,
|
|
64996
|
-
.10683366069643516,
|
|
64997
|
-
.028676919111116663,
|
|
64998
|
-
0,
|
|
64999
|
-
0,
|
|
65000
|
-
0,
|
|
65001
|
-
0,
|
|
65002
|
-
0
|
|
65003
|
-
],
|
|
65004
|
-
[
|
|
65005
|
-
0,
|
|
65006
|
-
0,
|
|
65007
|
-
0,
|
|
65008
|
-
0,
|
|
65009
|
-
.05750012585497277,
|
|
65010
|
-
1.6847750070526843,
|
|
65011
|
-
6.3386099807859395,
|
|
65012
|
-
9.604681011260025,
|
|
65013
|
-
6.92418895556232,
|
|
65014
|
-
2.368873542688024,
|
|
65015
|
-
.47238164060697785,
|
|
65016
|
-
.1889763779527559,
|
|
65017
|
-
.047244094488188976,
|
|
65018
|
-
0,
|
|
65019
|
-
0,
|
|
65020
|
-
0,
|
|
65021
|
-
0,
|
|
65022
|
-
0,
|
|
65023
|
-
.1184538668534887,
|
|
65024
|
-
.4437516129861666,
|
|
65025
|
-
.6806593466931441,
|
|
65026
|
-
.4437516129861666,
|
|
65027
|
-
.24890957479401832,
|
|
65028
|
-
.5533188947542446,
|
|
65029
|
-
.8378523578793984,
|
|
65030
|
-
.5533188947542446,
|
|
65031
|
-
.13045570794052963,
|
|
65032
|
-
0,
|
|
65033
|
-
0,
|
|
65034
|
-
0,
|
|
65035
|
-
0,
|
|
65036
|
-
0
|
|
65037
|
-
],
|
|
65038
|
-
[
|
|
65039
|
-
0,
|
|
65040
|
-
0,
|
|
65041
|
-
0,
|
|
65042
|
-
0,
|
|
65043
|
-
.05750012585497277,
|
|
65044
|
-
2.68681452030272,
|
|
65045
|
-
10.263846862973189,
|
|
65046
|
-
16.09777913600441,
|
|
65047
|
-
12.361964591844814,
|
|
65048
|
-
5.143188882061816,
|
|
65049
|
-
1.4223676084533452,
|
|
65050
|
-
.312782108314394,
|
|
65051
|
-
.031496062992125984,
|
|
65052
|
-
0,
|
|
65053
|
-
0,
|
|
65054
|
-
0,
|
|
65055
|
-
0,
|
|
65056
|
-
0,
|
|
65057
|
-
.0883900124257005,
|
|
65058
|
-
.29523389170488973,
|
|
65059
|
-
.4437516129861666,
|
|
65060
|
-
.3160367950679749,
|
|
65061
|
-
.4853954240093081,
|
|
65062
|
-
1.3799926127035786,
|
|
65063
|
-
1.9659744022399421,
|
|
65064
|
-
1.2759780958881528,
|
|
65065
|
-
.3137937981312669,
|
|
65066
|
-
0,
|
|
65067
|
-
0,
|
|
65068
|
-
0,
|
|
65069
|
-
0,
|
|
65070
|
-
0
|
|
65071
|
-
],
|
|
65072
|
-
[
|
|
65073
|
-
0,
|
|
65074
|
-
0,
|
|
65075
|
-
0,
|
|
65076
|
-
0,
|
|
65077
|
-
.05750012585497277,
|
|
65078
|
-
3.990289650564119,
|
|
65079
|
-
20.695365814712115,
|
|
65080
|
-
44.3522989543404,
|
|
65081
|
-
49.69632864092277,
|
|
65082
|
-
29.689044491512576,
|
|
65083
|
-
9.033393108938617,
|
|
65084
|
-
1.2347274821574294,
|
|
65085
|
-
.15202866764519157,
|
|
65086
|
-
.023622047244094488,
|
|
65087
|
-
.06937364893635427,
|
|
65088
|
-
.08512168043241726,
|
|
65089
|
-
.1312648874568188,
|
|
65090
|
-
.06921481053660235,
|
|
65091
|
-
.038269191276370074,
|
|
65092
|
-
.0883900124257005,
|
|
65093
|
-
.1184538668534887,
|
|
65094
|
-
.17160162587804118,
|
|
65095
|
-
.7552196059639998,
|
|
65096
|
-
2.180300310840757,
|
|
65097
|
-
2.82987585217934,
|
|
65098
|
-
1.7231446814349316,
|
|
65099
|
-
.406046259121632,
|
|
65100
|
-
0,
|
|
65101
|
-
0,
|
|
65102
|
-
0,
|
|
65103
|
-
0,
|
|
65104
|
-
0
|
|
65105
|
-
],
|
|
65106
|
-
[
|
|
65107
|
-
0,
|
|
65108
|
-
0,
|
|
65109
|
-
0,
|
|
65110
|
-
0,
|
|
65111
|
-
0,
|
|
65112
|
-
8.344447730094426,
|
|
65113
|
-
52.77867806990315,
|
|
65114
|
-
128.79488712220683,
|
|
65115
|
-
155.50781484945549,
|
|
65116
|
-
94.8111770857038,
|
|
65117
|
-
26.204290047405273,
|
|
65118
|
-
2.6172004234133746,
|
|
65119
|
-
.5926756971464383,
|
|
65120
|
-
.17415822209335685,
|
|
65121
|
-
.2081209468090628,
|
|
65122
|
-
.41986725837226924,
|
|
65123
|
-
.4562363446228147,
|
|
65124
|
-
.3389093190666259,
|
|
65125
|
-
.13000516159327952,
|
|
65126
|
-
.030395175528338574,
|
|
65127
|
-
0,
|
|
65128
|
-
.1619472165746013,
|
|
65129
|
-
.9301572259016863,
|
|
65130
|
-
2.265879784982036,
|
|
65131
|
-
2.6140297641904335,
|
|
65132
|
-
1.4892533182159182,
|
|
65133
|
-
.3278895175363135,
|
|
65134
|
-
0,
|
|
65135
|
-
0,
|
|
65136
|
-
0,
|
|
65137
|
-
0,
|
|
65138
|
-
0
|
|
65139
|
-
],
|
|
65140
|
-
[
|
|
65141
|
-
0,
|
|
65142
|
-
0,
|
|
65143
|
-
0,
|
|
65144
|
-
0,
|
|
65145
|
-
0,
|
|
65146
|
-
11.569261098471213,
|
|
65147
|
-
74.91244899006341,
|
|
65148
|
-
185.41798253416076,
|
|
65149
|
-
223.16964950617853,
|
|
65150
|
-
134.47162508401345,
|
|
65151
|
-
35.29886422851894,
|
|
65152
|
-
2.9823101815276254,
|
|
65153
|
-
.8519113063812257,
|
|
65154
|
-
.239572716510202,
|
|
65155
|
-
.3186059411116472,
|
|
65156
|
-
.6464195523675033,
|
|
65157
|
-
.6905038159663283,
|
|
65158
|
-
.4700153681236928,
|
|
65159
|
-
.20654354414601966,
|
|
65160
|
-
.04559276329250786,
|
|
65161
|
-
0,
|
|
65162
|
-
.1659149823226328,
|
|
65163
|
-
.7137277220177837,
|
|
65164
|
-
1.4724250590707373,
|
|
65165
|
-
1.4853812653248704,
|
|
65166
|
-
.7879622264171209,
|
|
65167
|
-
.14960629921259844,
|
|
65168
|
-
0,
|
|
65169
|
-
0,
|
|
65170
|
-
0,
|
|
65171
|
-
0,
|
|
65172
|
-
0
|
|
65173
|
-
],
|
|
65174
|
-
[
|
|
65175
|
-
0,
|
|
65176
|
-
0,
|
|
65177
|
-
0,
|
|
65178
|
-
0,
|
|
65179
|
-
0,
|
|
65180
|
-
7.659608408222048,
|
|
65181
|
-
49.47160326026555,
|
|
65182
|
-
122.0267564546405,
|
|
65183
|
-
146.90471606648813,
|
|
65184
|
-
87.12454645840202,
|
|
65185
|
-
22.206612666760837,
|
|
65186
|
-
1.6704856213622203,
|
|
65187
|
-
.5848016813984068,
|
|
65188
|
-
.17415822209335685,
|
|
65189
|
-
.2081209468090628,
|
|
65190
|
-
.41986725837226924,
|
|
65191
|
-
.4562363446228147,
|
|
65192
|
-
.3389093190666259,
|
|
65193
|
-
.13000516159327952,
|
|
65194
|
-
.030395175528338574,
|
|
65195
|
-
0,
|
|
65196
|
-
.07873560312226063,
|
|
65197
|
-
.2801144141850509,
|
|
65198
|
-
.4950055287578913,
|
|
65199
|
-
.4297207133976494,
|
|
65200
|
-
.1968458393427331,
|
|
65201
|
-
.031496062992125984,
|
|
65202
|
-
0,
|
|
65203
|
-
0,
|
|
65204
|
-
0,
|
|
65205
|
-
0,
|
|
65206
|
-
0
|
|
65207
|
-
],
|
|
65208
|
-
[
|
|
65209
|
-
0,
|
|
65210
|
-
0,
|
|
65211
|
-
0,
|
|
65212
|
-
0,
|
|
65213
|
-
0,
|
|
65214
|
-
1.8758964163111886,
|
|
65215
|
-
12.528184619475534,
|
|
65216
|
-
30.384574544711377,
|
|
65217
|
-
36.35399650870346,
|
|
65218
|
-
21.427909044768864,
|
|
65219
|
-
5.489463881244808,
|
|
65220
|
-
.38028740695142366,
|
|
65221
|
-
.12840662040109707,
|
|
65222
|
-
.023622047244094488,
|
|
65223
|
-
.06937364893635427,
|
|
65224
|
-
.08512168043241726,
|
|
65225
|
-
.1312648874568188,
|
|
65226
|
-
.06921481053660235,
|
|
65227
|
-
.038269191276370074,
|
|
65228
|
-
0,
|
|
65229
|
-
0,
|
|
65230
|
-
0,
|
|
65231
|
-
.05793269975917546,
|
|
65232
|
-
.08270336887029212,
|
|
65233
|
-
.05793269975917546,
|
|
65234
|
-
0,
|
|
65235
|
-
0,
|
|
65236
|
-
0,
|
|
65237
|
-
0,
|
|
65238
|
-
0,
|
|
65239
|
-
0,
|
|
65240
|
-
0
|
|
65241
|
-
],
|
|
65242
|
-
[
|
|
65243
|
-
0,
|
|
65244
|
-
0,
|
|
65245
|
-
0,
|
|
65246
|
-
0,
|
|
65247
|
-
0,
|
|
65248
|
-
0,
|
|
65249
|
-
0,
|
|
65250
|
-
0,
|
|
65251
|
-
0,
|
|
65252
|
-
0,
|
|
65253
|
-
0,
|
|
65254
|
-
0,
|
|
65255
|
-
0,
|
|
65256
|
-
0,
|
|
65257
|
-
0,
|
|
65258
|
-
0,
|
|
65259
|
-
0,
|
|
65260
|
-
0,
|
|
65261
|
-
0,
|
|
65262
|
-
0,
|
|
65263
|
-
0,
|
|
65264
|
-
0,
|
|
65265
|
-
0,
|
|
65266
|
-
0,
|
|
65267
|
-
0,
|
|
65268
|
-
0,
|
|
65269
|
-
0,
|
|
65270
|
-
0,
|
|
65271
|
-
0,
|
|
65272
|
-
0,
|
|
65273
|
-
0,
|
|
65274
|
-
0
|
|
65275
|
-
],
|
|
65276
|
-
[
|
|
65277
|
-
0,
|
|
65278
|
-
0,
|
|
65279
|
-
0,
|
|
65280
|
-
0,
|
|
65281
|
-
0,
|
|
65282
|
-
0,
|
|
65283
|
-
0,
|
|
65284
|
-
0,
|
|
65285
|
-
0,
|
|
65286
|
-
0,
|
|
65287
|
-
0,
|
|
65288
|
-
0,
|
|
65289
|
-
0,
|
|
65290
|
-
0,
|
|
65291
|
-
0,
|
|
65292
|
-
0,
|
|
65293
|
-
0,
|
|
65294
|
-
0,
|
|
65295
|
-
0,
|
|
65296
|
-
0,
|
|
65297
|
-
0,
|
|
65298
|
-
0,
|
|
65299
|
-
0,
|
|
65300
|
-
0,
|
|
65301
|
-
0,
|
|
65302
|
-
0,
|
|
65303
|
-
0,
|
|
65304
|
-
0,
|
|
65305
|
-
0,
|
|
65306
|
-
0,
|
|
65307
|
-
0,
|
|
65308
|
-
0
|
|
65309
|
-
],
|
|
65310
|
-
[
|
|
65311
|
-
0,
|
|
65312
|
-
0,
|
|
65313
|
-
0,
|
|
65314
|
-
0,
|
|
65315
|
-
0,
|
|
65316
|
-
0,
|
|
65317
|
-
0,
|
|
65318
|
-
0,
|
|
65319
|
-
0,
|
|
65320
|
-
0,
|
|
65321
|
-
0,
|
|
65322
|
-
0,
|
|
65323
|
-
0,
|
|
65324
|
-
0,
|
|
65325
|
-
0,
|
|
65326
|
-
0,
|
|
65327
|
-
0,
|
|
65328
|
-
0,
|
|
65329
|
-
0,
|
|
65330
|
-
0,
|
|
65331
|
-
0,
|
|
65332
|
-
0,
|
|
65333
|
-
0,
|
|
65334
|
-
0,
|
|
65335
|
-
0,
|
|
65336
|
-
0,
|
|
65337
|
-
0,
|
|
65338
|
-
0,
|
|
65339
|
-
0,
|
|
65340
|
-
0,
|
|
65341
|
-
0,
|
|
65342
|
-
0
|
|
65343
|
-
],
|
|
65344
|
-
[
|
|
65345
|
-
0,
|
|
65346
|
-
0,
|
|
65347
|
-
0,
|
|
65348
|
-
0,
|
|
65349
|
-
0,
|
|
65350
|
-
0,
|
|
65351
|
-
0,
|
|
65352
|
-
0,
|
|
65353
|
-
0,
|
|
65354
|
-
0,
|
|
65355
|
-
0,
|
|
65356
|
-
0,
|
|
65357
|
-
0,
|
|
65358
|
-
0,
|
|
65359
|
-
0,
|
|
65360
|
-
0,
|
|
65361
|
-
0,
|
|
65362
|
-
0,
|
|
65363
|
-
0,
|
|
65364
|
-
0,
|
|
65365
|
-
0,
|
|
65366
|
-
0,
|
|
65367
|
-
0,
|
|
65368
|
-
0,
|
|
65369
|
-
0,
|
|
65370
|
-
0,
|
|
65371
|
-
0,
|
|
65372
|
-
0,
|
|
65373
|
-
0,
|
|
65374
|
-
0,
|
|
65375
|
-
0,
|
|
65376
|
-
0
|
|
65377
|
-
]
|
|
65378
|
-
];
|
|
65379
|
-
//#endregion
|
|
65380
64288
|
//#region src/lib/utils/hitTesting.ts
|
|
65381
64289
|
function pointInPolygon(p, poly) {
|
|
65382
64290
|
let inside = false;
|
|
@@ -65599,14 +64507,14 @@ function hitTestTextAnnotation(wp, floor, ctx, zoom) {
|
|
|
65599
64507
|
init_client();
|
|
65600
64508
|
init_index_client();
|
|
65601
64509
|
var root_2$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"/>`);
|
|
65602
|
-
var root_3$
|
|
65603
|
-
var root_4$
|
|
64510
|
+
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"/>`);
|
|
64511
|
+
var root_4$2 = /* @__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>`);
|
|
65604
64512
|
var root_5 = /* @__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>`);
|
|
65605
|
-
var root_6 = /* @__PURE__ */ from_html(`<span> </span> <span> </span> <span class="text-gray-300">|</span>`, 1);
|
|
65606
|
-
var root_8
|
|
64513
|
+
var root_6$1 = /* @__PURE__ */ from_html(`<span> </span> <span> </span> <span class="text-gray-300">|</span>`, 1);
|
|
64514
|
+
var root_8 = /* @__PURE__ */ from_html(`<span> </span>`);
|
|
65607
64515
|
var root_9 = /* @__PURE__ */ from_html(`<span> </span>`);
|
|
65608
64516
|
var root_10 = /* @__PURE__ */ from_html(`<span> </span>`);
|
|
65609
|
-
var root_7
|
|
64517
|
+
var root_7 = /* @__PURE__ */ from_html(`<span> </span> <!> <!> <!> <span class="text-gray-300">|</span>`, 1);
|
|
65610
64518
|
var root_11 = /* @__PURE__ */ from_html(`<span class="text-blue-600 font-medium"> </span> <span class="text-gray-300">|</span>`, 1);
|
|
65611
64519
|
var root_13 = /* @__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>`);
|
|
65612
64520
|
var root_12 = /* @__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>`);
|
|
@@ -65619,8 +64527,8 @@ var root_19 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -tr
|
|
|
65619
64527
|
var root_20 = /* @__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>`);
|
|
65620
64528
|
var root_21 = /* @__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>`);
|
|
65621
64529
|
var root_22 = /* @__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>`);
|
|
65622
|
-
var root_1$
|
|
65623
|
-
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>`);
|
|
64530
|
+
var root_1$4 = /* @__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);
|
|
64531
|
+
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>`);
|
|
65624
64532
|
function FloorPlanCanvas($$anchor, $$props) {
|
|
65625
64533
|
push($$props, true);
|
|
65626
64534
|
const $panMode = () => store_get(panMode, "$panMode", $$stores);
|
|
@@ -66560,11 +65468,9 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
66560
65468
|
return id === selId || multiIds.has(id);
|
|
66561
65469
|
}
|
|
66562
65470
|
drawRooms$1();
|
|
66563
|
-
|
|
66564
|
-
console.log("🚀 ~ draw ~ heatmapMatrix:", $$props.heatmapMatrix);
|
|
66565
|
-
if (floor) {
|
|
65471
|
+
if (floor && $$props.heatmapEnabled && $$props.heatmapMatrix && $$props.heatmapMatrix.length > 0) {
|
|
66566
65472
|
var _$$props$heatmapMatri;
|
|
66567
|
-
drawFloorHeatmap(getCS(), floor,
|
|
65473
|
+
drawFloorHeatmap(getCS(), floor, (_$$props$heatmapMatri = $$props.heatmapMatrix) !== null && _$$props$heatmapMatri !== void 0 ? _$$props$heatmapMatri : [], get(detectedRooms));
|
|
66568
65474
|
}
|
|
66569
65475
|
if (!$$props.viewOnly) drawSnapPoints$1();
|
|
66570
65476
|
if (get(layerVis).walls) {
|
|
@@ -70059,7 +68965,7 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
70059
68965
|
var _$$get11;
|
|
70060
68966
|
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";
|
|
70061
68967
|
});
|
|
70062
|
-
var div = root();
|
|
68968
|
+
var div = root$1();
|
|
70063
68969
|
event("keydown", $window, onKeyDown);
|
|
70064
68970
|
event("keyup", $window, onKeyUp);
|
|
70065
68971
|
var div_1 = child(div);
|
|
@@ -70069,7 +68975,7 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
70069
68975
|
reset(div_1);
|
|
70070
68976
|
var node = sibling(div_1, 2);
|
|
70071
68977
|
var consequent_20 = ($$anchor) => {
|
|
70072
|
-
var fragment = root_1$
|
|
68978
|
+
var fragment = root_1$4();
|
|
70073
68979
|
var node_1 = first_child(fragment);
|
|
70074
68980
|
var consequent = ($$anchor) => {
|
|
70075
68981
|
var input = root_2$3();
|
|
@@ -70110,7 +69016,7 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
70110
69016
|
});
|
|
70111
69017
|
var node_2 = sibling(node_1, 2);
|
|
70112
69018
|
var consequent_1 = ($$anchor) => {
|
|
70113
|
-
var input_1 = root_3$
|
|
69019
|
+
var input_1 = root_3$3();
|
|
70114
69020
|
remove_input_defaults(input_1);
|
|
70115
69021
|
autofocus(input_1, true);
|
|
70116
69022
|
template_effect(() => {
|
|
@@ -70162,7 +69068,7 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
70162
69068
|
});
|
|
70163
69069
|
var node_3 = sibling(node_2, 2);
|
|
70164
69070
|
var consequent_2 = ($$anchor) => {
|
|
70165
|
-
append($$anchor, root_4$
|
|
69071
|
+
append($$anchor, root_4$2());
|
|
70166
69072
|
};
|
|
70167
69073
|
if_block(node_3, ($$render) => {
|
|
70168
69074
|
if (get(currentFloor) && get(currentFloor).walls.length === 0 && get(currentFloor).furniture.length === 0 && get(currentFloor).doors.length === 0 && !$$props.viewOnly) $$render(consequent_2);
|
|
@@ -70180,7 +69086,7 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
70180
69086
|
var div_3 = sibling(node_4, 2);
|
|
70181
69087
|
var node_5 = child(div_3);
|
|
70182
69088
|
var consequent_4 = ($$anchor) => {
|
|
70183
|
-
var fragment_1 = root_6();
|
|
69089
|
+
var fragment_1 = root_6$1();
|
|
70184
69090
|
var span = first_child(fragment_1);
|
|
70185
69091
|
var text_1 = child(span);
|
|
70186
69092
|
reset(span);
|
|
@@ -70200,13 +69106,13 @@ function FloorPlanCanvas($$anchor, $$props) {
|
|
|
70200
69106
|
});
|
|
70201
69107
|
var node_6 = sibling(node_5, 2);
|
|
70202
69108
|
var consequent_8 = ($$anchor) => {
|
|
70203
|
-
var fragment_2 = root_7
|
|
69109
|
+
var fragment_2 = root_7();
|
|
70204
69110
|
var span_2 = first_child(fragment_2);
|
|
70205
69111
|
var text_3 = child(span_2);
|
|
70206
69112
|
reset(span_2);
|
|
70207
69113
|
var node_7 = sibling(span_2, 2);
|
|
70208
69114
|
var consequent_5 = ($$anchor) => {
|
|
70209
|
-
var span_3 = root_8
|
|
69115
|
+
var span_3 = root_8();
|
|
70210
69116
|
var text_4 = child(span_3);
|
|
70211
69117
|
reset(span_3);
|
|
70212
69118
|
template_effect(() => {
|
|
@@ -70733,9 +69639,9 @@ function alignElements(ids, op) {
|
|
|
70733
69639
|
//#endregion
|
|
70734
69640
|
//#region src/lib/components/editor/AlignmentToolbar.svelte
|
|
70735
69641
|
init_client();
|
|
70736
|
-
var root_3$
|
|
69642
|
+
var root_3$2 = /* @__PURE__ */ from_html(`<div class="w-px h-5 bg-gray-200 mx-0.5"></div>`);
|
|
70737
69643
|
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);
|
|
70738
|
-
var root_1$
|
|
69644
|
+
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>`);
|
|
70739
69645
|
function AlignmentToolbar($$anchor, $$props) {
|
|
70740
69646
|
push($$props, true);
|
|
70741
69647
|
let multiCount = /* @__PURE__ */ state(0);
|
|
@@ -70794,7 +69700,7 @@ function AlignmentToolbar($$anchor, $$props) {
|
|
|
70794
69700
|
var fragment = comment();
|
|
70795
69701
|
var node = first_child(fragment);
|
|
70796
69702
|
var consequent_1 = ($$anchor) => {
|
|
70797
|
-
var div = root_1$
|
|
69703
|
+
var div = root_1$3();
|
|
70798
69704
|
var span = child(div);
|
|
70799
69705
|
var text = child(span);
|
|
70800
69706
|
reset(span);
|
|
@@ -70807,7 +69713,7 @@ function AlignmentToolbar($$anchor, $$props) {
|
|
|
70807
69713
|
reset(button);
|
|
70808
69714
|
var node_2 = sibling(button, 2);
|
|
70809
69715
|
var consequent = ($$anchor) => {
|
|
70810
|
-
append($$anchor, root_3$
|
|
69716
|
+
append($$anchor, root_3$2());
|
|
70811
69717
|
};
|
|
70812
69718
|
if_block(node_2, ($$render) => {
|
|
70813
69719
|
if (get(btn).op === "align-right" || get(btn).op === "align-bottom") $$render(consequent);
|
|
@@ -70838,8 +69744,8 @@ delegate(["click"]);
|
|
|
70838
69744
|
//#region src/lib/components/editor/CommandPalette.svelte
|
|
70839
69745
|
init_client();
|
|
70840
69746
|
var root_2$1 = /* @__PURE__ */ from_html(`<div class="px-4 py-6 text-center text-sm text-gray-400">No results found</div>`);
|
|
70841
|
-
var root_4$
|
|
70842
|
-
var root_1$
|
|
69747
|
+
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>`);
|
|
69748
|
+
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>`);
|
|
70843
69749
|
function CommandPalette($$anchor, $$props) {
|
|
70844
69750
|
push($$props, true);
|
|
70845
69751
|
let open = prop($$props, "open", 15, false);
|
|
@@ -71083,7 +69989,7 @@ function CommandPalette($$anchor, $$props) {
|
|
|
71083
69989
|
var fragment = comment();
|
|
71084
69990
|
var node = first_child(fragment);
|
|
71085
69991
|
var consequent_1 = ($$anchor) => {
|
|
71086
|
-
var div = root_1$
|
|
69992
|
+
var div = root_1$2();
|
|
71087
69993
|
var div_1 = child(div);
|
|
71088
69994
|
var div_2 = child(div_1);
|
|
71089
69995
|
var input = sibling(child(div_2), 2);
|
|
@@ -71099,7 +70005,7 @@ function CommandPalette($$anchor, $$props) {
|
|
|
71099
70005
|
var alternate = ($$anchor) => {
|
|
71100
70006
|
var fragment_1 = comment();
|
|
71101
70007
|
each(first_child(fragment_1), 17, () => get(results), index$1, ($$anchor, item, i) => {
|
|
71102
|
-
var div_5 = root_4$
|
|
70008
|
+
var div_5 = root_4$1();
|
|
71103
70009
|
let classes;
|
|
71104
70010
|
var span = child(div_5);
|
|
71105
70011
|
var text = child(span, true);
|
|
@@ -71159,9 +70065,9 @@ delegate(["click", "keydown"]);
|
|
|
71159
70065
|
init_client();
|
|
71160
70066
|
init_index_client();
|
|
71161
70067
|
var root_2 = /* @__PURE__ */ from_html(`<option> </option>`);
|
|
71162
|
-
var root_4
|
|
71163
|
-
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>`);
|
|
71164
|
-
var root_1$
|
|
70068
|
+
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>`);
|
|
70069
|
+
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>`);
|
|
70070
|
+
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>`);
|
|
71165
70071
|
function PrintLayout($$anchor, $$props) {
|
|
71166
70072
|
push($$props, true);
|
|
71167
70073
|
let open = prop($$props, "open", 15, false);
|
|
@@ -71364,7 +70270,7 @@ function PrintLayout($$anchor, $$props) {
|
|
|
71364
70270
|
event("keydown", $window, handleKeydown);
|
|
71365
70271
|
var node = first_child(fragment);
|
|
71366
70272
|
var consequent_1 = ($$anchor) => {
|
|
71367
|
-
var div = root_1$
|
|
70273
|
+
var div = root_1$1();
|
|
71368
70274
|
var div_1 = child(div);
|
|
71369
70275
|
var label = sibling(child(div_1), 4);
|
|
71370
70276
|
var select = sibling(child(label));
|
|
@@ -71434,10 +70340,10 @@ function PrintLayout($$anchor, $$props) {
|
|
|
71434
70340
|
reset(div_6);
|
|
71435
70341
|
var node_1 = sibling(div_6, 2);
|
|
71436
70342
|
var consequent = ($$anchor) => {
|
|
71437
|
-
var div_8 = root_3();
|
|
70343
|
+
var div_8 = root_3$1();
|
|
71438
70344
|
var div_9 = sibling(child(div_8), 2);
|
|
71439
70345
|
each(div_9, 21, getRooms, index$1, ($$anchor, room) => {
|
|
71440
|
-
var div_10 = root_4
|
|
70346
|
+
var div_10 = root_4();
|
|
71441
70347
|
var span_1 = child(div_10);
|
|
71442
70348
|
var text_6 = child(span_1, true);
|
|
71443
70349
|
reset(span_1);
|
|
@@ -71506,7 +70412,7 @@ delegate(["click", "keydown"]);
|
|
|
71506
70412
|
//#region src/lib/components/OnboardingTooltip.svelte
|
|
71507
70413
|
init_client();
|
|
71508
70414
|
init_onboarding_svelte();
|
|
71509
|
-
var root_1
|
|
70415
|
+
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>`);
|
|
71510
70416
|
function OnboardingTooltip($$anchor, $$props) {
|
|
71511
70417
|
push($$props, true);
|
|
71512
70418
|
let tip = /* @__PURE__ */ user_derived(getActiveTip);
|
|
@@ -71536,7 +70442,7 @@ function OnboardingTooltip($$anchor, $$props) {
|
|
|
71536
70442
|
const msg = /* @__PURE__ */ user_derived(() => TIP_MESSAGES[get(tip).id]);
|
|
71537
70443
|
const clampedX = /* @__PURE__ */ user_derived(() => Math.min(get(tip).x, (typeof window !== "undefined" ? window.innerWidth : 1200) - 320));
|
|
71538
70444
|
const clampedY = /* @__PURE__ */ user_derived(() => Math.min(get(tip).y, (typeof window !== "undefined" ? window.innerHeight : 800) - 100));
|
|
71539
|
-
var div = root_1
|
|
70445
|
+
var div = root_1();
|
|
71540
70446
|
var div_1 = child(div);
|
|
71541
70447
|
let classes;
|
|
71542
70448
|
var p = child(div_1);
|
|
@@ -71569,41 +70475,59 @@ function OnboardingTooltip($$anchor, $$props) {
|
|
|
71569
70475
|
}
|
|
71570
70476
|
delegate(["click"]);
|
|
71571
70477
|
//#endregion
|
|
70478
|
+
//#region src/lib/packageDefaults.ts
|
|
70479
|
+
var DEFAULT_CONFIG = {
|
|
70480
|
+
viewOnly: false,
|
|
70481
|
+
floorMaxWidth: 600,
|
|
70482
|
+
floorMaxHeight: 400,
|
|
70483
|
+
heatmapEnabled: false,
|
|
70484
|
+
heatmapMatrix: []
|
|
70485
|
+
};
|
|
70486
|
+
function normalizeConfig(value) {
|
|
70487
|
+
if (!value || typeof value !== "object") return { ...DEFAULT_CONFIG };
|
|
70488
|
+
return {
|
|
70489
|
+
...DEFAULT_CONFIG,
|
|
70490
|
+
...value
|
|
70491
|
+
};
|
|
70492
|
+
}
|
|
70493
|
+
function normalizeFloorData(data) {
|
|
70494
|
+
if (!data || typeof data !== "object") return createDefaultProject();
|
|
70495
|
+
if (!Array.isArray(data.floors) || data.floors.length === 0) return createDefaultProject();
|
|
70496
|
+
if (!data.activeFloorId || !data.floors.some((f) => f.id === data.activeFloorId)) return {
|
|
70497
|
+
...createDefaultProject(),
|
|
70498
|
+
...data,
|
|
70499
|
+
floors: data.floors,
|
|
70500
|
+
activeFloorId: data.floors[0].id
|
|
70501
|
+
};
|
|
70502
|
+
return data;
|
|
70503
|
+
}
|
|
70504
|
+
//#endregion
|
|
71572
70505
|
//#region src/App.svelte
|
|
71573
70506
|
init_client();
|
|
71574
70507
|
init_index_client();
|
|
71575
|
-
var
|
|
71576
|
-
var
|
|
71577
|
-
var
|
|
71578
|
-
var root_8 = /* @__PURE__ */ from_html(`<div class="h-screen flex items-center justify-center"><p class="text-gray-400">Loading...</p></div>`);
|
|
70508
|
+
var root_3 = /* @__PURE__ */ from_html(`<!> <!>`, 1);
|
|
70509
|
+
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>`);
|
|
70510
|
+
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);
|
|
71579
70511
|
function App($$anchor, $$props) {
|
|
71580
70512
|
var _$$props$stores, _$$props$stores2;
|
|
71581
70513
|
push($$props, true);
|
|
71582
70514
|
let showLayers = /* @__PURE__ */ state(false);
|
|
71583
70515
|
let floorData = /* @__PURE__ */ state(null);
|
|
71584
|
-
let config = /* @__PURE__ */ state(proxy({
|
|
71585
|
-
viewOnly: false,
|
|
71586
|
-
floorMaxWidth: 600,
|
|
71587
|
-
floorMaxHeight: 400,
|
|
71588
|
-
heatmapEnabled: false,
|
|
71589
|
-
heatmapMatrix: []
|
|
71590
|
-
}));
|
|
70516
|
+
let config = /* @__PURE__ */ state(proxy({ ...DEFAULT_CONFIG }));
|
|
71591
70517
|
(_$$props$stores = $$props.stores) === null || _$$props$stores === void 0 || _$$props$stores.floorData.subscribe((v) => set(floorData, v, true));
|
|
71592
|
-
(_$$props$stores2 = $$props.stores) === null || _$$props$stores2 === void 0 || _$$props$stores2.config.subscribe((v) => set(config, v, true));
|
|
70518
|
+
(_$$props$stores2 = $$props.stores) === null || _$$props$stores2 === void 0 || _$$props$stores2.config.subscribe((v) => set(config, normalizeConfig(v), true));
|
|
71593
70519
|
let commandPaletteOpen = /* @__PURE__ */ state(false);
|
|
71594
70520
|
let printOpen = /* @__PURE__ */ state(false);
|
|
71595
70521
|
let mode = /* @__PURE__ */ state("2d");
|
|
71596
|
-
let ready = /* @__PURE__ */ state(false);
|
|
71597
70522
|
let showHelp = /* @__PURE__ */ state(false);
|
|
71598
70523
|
let showUndoHistory = /* @__PURE__ */ state(false);
|
|
71599
70524
|
viewMode.subscribe((m) => {
|
|
71600
70525
|
set(mode, m, true);
|
|
71601
70526
|
});
|
|
71602
70527
|
user_effect(() => {
|
|
71603
|
-
currentProject.set(get(floorData)
|
|
70528
|
+
currentProject.set(normalizeFloorData(get(floorData)));
|
|
71604
70529
|
});
|
|
71605
70530
|
onMount(() => {
|
|
71606
|
-
set(ready, true);
|
|
71607
70531
|
let saveTimeout;
|
|
71608
70532
|
const unsub = currentProject.subscribe((p) => {
|
|
71609
70533
|
if (!p) return;
|
|
@@ -71615,7 +70539,7 @@ function App($$anchor, $$props) {
|
|
|
71615
70539
|
clearTimeout(saveTimeout);
|
|
71616
70540
|
};
|
|
71617
70541
|
});
|
|
71618
|
-
var fragment =
|
|
70542
|
+
var fragment = root();
|
|
71619
70543
|
event("keydown", $window, (e) => {
|
|
71620
70544
|
var _e$target, _e$target2, _e$target3;
|
|
71621
70545
|
if (e.key === "p" && (e.ctrlKey || e.metaKey)) {
|
|
@@ -71633,236 +70557,224 @@ function App($$anchor, $$props) {
|
|
|
71633
70557
|
if (e.key === "Escape" && get(showHelp)) set(showHelp, false);
|
|
71634
70558
|
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));
|
|
71635
70559
|
});
|
|
71636
|
-
var
|
|
71637
|
-
var
|
|
71638
|
-
|
|
71639
|
-
|
|
71640
|
-
|
|
71641
|
-
|
|
71642
|
-
|
|
71643
|
-
|
|
71644
|
-
|
|
71645
|
-
},
|
|
71646
|
-
get onDispatch() {
|
|
71647
|
-
return $$props.onDispatch;
|
|
71648
|
-
}
|
|
71649
|
-
});
|
|
71650
|
-
};
|
|
71651
|
-
if_block(node_1, ($$render) => {
|
|
71652
|
-
if (!get(config).viewOnly) $$render(consequent);
|
|
71653
|
-
});
|
|
71654
|
-
var div_1 = sibling(node_1, 2);
|
|
71655
|
-
var node_2 = child(div_1);
|
|
71656
|
-
var consequent_1 = ($$anchor) => {
|
|
71657
|
-
BuildPanel($$anchor, {
|
|
71658
|
-
get showHelp() {
|
|
71659
|
-
return get(showHelp);
|
|
71660
|
-
},
|
|
71661
|
-
set showHelp($$value) {
|
|
71662
|
-
set(showHelp, $$value, true);
|
|
71663
|
-
},
|
|
71664
|
-
get showLayers() {
|
|
71665
|
-
return get(showLayers);
|
|
71666
|
-
},
|
|
71667
|
-
set showLayers($$value) {
|
|
71668
|
-
set(showLayers, $$value, true);
|
|
71669
|
-
},
|
|
71670
|
-
get showUndoHistory() {
|
|
71671
|
-
return get(showUndoHistory);
|
|
71672
|
-
},
|
|
71673
|
-
set showUndoHistory($$value) {
|
|
71674
|
-
set(showUndoHistory, $$value, true);
|
|
71675
|
-
}
|
|
71676
|
-
});
|
|
71677
|
-
};
|
|
71678
|
-
if_block(node_2, ($$render) => {
|
|
71679
|
-
var _$$get;
|
|
71680
|
-
if (get(mode) === "2d" && !((_$$get = get(config)) === null || _$$get === void 0 ? void 0 : _$$get.viewOnly)) $$render(consequent_1);
|
|
71681
|
-
});
|
|
71682
|
-
var div_2 = sibling(node_2, 2);
|
|
71683
|
-
var node_3 = child(div_2);
|
|
71684
|
-
var consequent_3 = ($$anchor) => {
|
|
71685
|
-
var fragment_4 = root_4();
|
|
71686
|
-
var node_4 = first_child(fragment_4);
|
|
71687
|
-
{
|
|
71688
|
-
let $0 = /* @__PURE__ */ user_derived(() => {
|
|
71689
|
-
var _$$get2;
|
|
71690
|
-
return (_$$get2 = get(config)) === null || _$$get2 === void 0 ? void 0 : _$$get2.viewOnly;
|
|
71691
|
-
});
|
|
71692
|
-
let $1 = /* @__PURE__ */ user_derived(() => {
|
|
71693
|
-
var _$$get3;
|
|
71694
|
-
return (_$$get3 = get(config)) === null || _$$get3 === void 0 ? void 0 : _$$get3.floorMaxWidth;
|
|
71695
|
-
});
|
|
71696
|
-
let $2 = /* @__PURE__ */ user_derived(() => {
|
|
71697
|
-
var _$$get4;
|
|
71698
|
-
return (_$$get4 = get(config)) === null || _$$get4 === void 0 ? void 0 : _$$get4.floorMaxHeight;
|
|
71699
|
-
});
|
|
71700
|
-
let $3 = /* @__PURE__ */ user_derived(() => {
|
|
71701
|
-
var _$$get5;
|
|
71702
|
-
return (_$$get5 = get(config)) === null || _$$get5 === void 0 ? void 0 : _$$get5.heatmapMatrix;
|
|
71703
|
-
});
|
|
71704
|
-
let $4 = /* @__PURE__ */ user_derived(() => {
|
|
71705
|
-
var _$$get6;
|
|
71706
|
-
return (_$$get6 = get(config)) === null || _$$get6 === void 0 ? void 0 : _$$get6.heatmapEnabled;
|
|
71707
|
-
});
|
|
71708
|
-
FloorPlanCanvas(node_4, {
|
|
71709
|
-
get viewOnly() {
|
|
71710
|
-
return get($0);
|
|
71711
|
-
},
|
|
71712
|
-
get floorMaxWidth() {
|
|
71713
|
-
return get($1);
|
|
71714
|
-
},
|
|
71715
|
-
get floorMaxHeight() {
|
|
71716
|
-
return get($2);
|
|
71717
|
-
},
|
|
71718
|
-
get heatmapMatrix() {
|
|
71719
|
-
return get($3);
|
|
71720
|
-
},
|
|
71721
|
-
get heatmapEnabled() {
|
|
71722
|
-
return get($4);
|
|
71723
|
-
}
|
|
71724
|
-
});
|
|
70560
|
+
var div = first_child(fragment);
|
|
70561
|
+
var node = child(div);
|
|
70562
|
+
var consequent = ($$anchor) => {
|
|
70563
|
+
TopBar($$anchor, {
|
|
70564
|
+
get viewOnly() {
|
|
70565
|
+
return get(config).viewOnly;
|
|
70566
|
+
},
|
|
70567
|
+
get onDispatch() {
|
|
70568
|
+
return $$props.onDispatch;
|
|
71725
70569
|
}
|
|
71726
|
-
var node_5 = sibling(node_4, 2);
|
|
71727
|
-
var consequent_2 = ($$anchor) => {
|
|
71728
|
-
AlignmentToolbar($$anchor, {});
|
|
71729
|
-
};
|
|
71730
|
-
if_block(node_5, ($$render) => {
|
|
71731
|
-
if (!get(config).viewOnly) $$render(consequent_2);
|
|
71732
|
-
});
|
|
71733
|
-
append($$anchor, fragment_4);
|
|
71734
|
-
};
|
|
71735
|
-
if_block(node_3, ($$render) => {
|
|
71736
|
-
if (get(mode) === "2d") $$render(consequent_3);
|
|
71737
|
-
});
|
|
71738
|
-
reset(div_2);
|
|
71739
|
-
var node_6 = sibling(div_2, 2);
|
|
71740
|
-
var consequent_4 = ($$anchor) => {
|
|
71741
|
-
LayersPanel($$anchor, {});
|
|
71742
|
-
};
|
|
71743
|
-
if_block(node_6, ($$render) => {
|
|
71744
|
-
if (get(showLayers) && get(mode) === "2d") $$render(consequent_4);
|
|
71745
70570
|
});
|
|
71746
|
-
|
|
71747
|
-
|
|
71748
|
-
|
|
71749
|
-
|
|
71750
|
-
|
|
71751
|
-
|
|
71752
|
-
|
|
71753
|
-
|
|
71754
|
-
|
|
71755
|
-
|
|
71756
|
-
|
|
71757
|
-
|
|
70571
|
+
};
|
|
70572
|
+
if_block(node, ($$render) => {
|
|
70573
|
+
if (!get(config).viewOnly) $$render(consequent);
|
|
70574
|
+
});
|
|
70575
|
+
var div_1 = sibling(node, 2);
|
|
70576
|
+
var node_1 = child(div_1);
|
|
70577
|
+
var consequent_1 = ($$anchor) => {
|
|
70578
|
+
BuildPanel($$anchor, {
|
|
70579
|
+
get showHelp() {
|
|
70580
|
+
return get(showHelp);
|
|
70581
|
+
},
|
|
70582
|
+
set showHelp($$value) {
|
|
70583
|
+
set(showHelp, $$value, true);
|
|
70584
|
+
},
|
|
70585
|
+
get showLayers() {
|
|
70586
|
+
return get(showLayers);
|
|
70587
|
+
},
|
|
70588
|
+
set showLayers($$value) {
|
|
70589
|
+
set(showLayers, $$value, true);
|
|
70590
|
+
},
|
|
70591
|
+
get showUndoHistory() {
|
|
71758
70592
|
return get(showUndoHistory);
|
|
71759
70593
|
},
|
|
71760
|
-
set
|
|
70594
|
+
set showUndoHistory($$value) {
|
|
71761
70595
|
set(showUndoHistory, $$value, true);
|
|
71762
70596
|
}
|
|
71763
70597
|
});
|
|
71764
|
-
|
|
71765
|
-
|
|
71766
|
-
|
|
71767
|
-
|
|
71768
|
-
|
|
71769
|
-
|
|
71770
|
-
|
|
71771
|
-
|
|
71772
|
-
|
|
71773
|
-
|
|
71774
|
-
|
|
71775
|
-
|
|
71776
|
-
|
|
71777
|
-
|
|
71778
|
-
delegated("keydown", div_3, (e) => {
|
|
71779
|
-
if (e.key === "Escape") set(showHelp, false);
|
|
70598
|
+
};
|
|
70599
|
+
if_block(node_1, ($$render) => {
|
|
70600
|
+
var _$$get;
|
|
70601
|
+
if (get(mode) === "2d" && !((_$$get = get(config)) === null || _$$get === void 0 ? void 0 : _$$get.viewOnly)) $$render(consequent_1);
|
|
70602
|
+
});
|
|
70603
|
+
var div_2 = sibling(node_1, 2);
|
|
70604
|
+
var node_2 = child(div_2);
|
|
70605
|
+
var consequent_3 = ($$anchor) => {
|
|
70606
|
+
var fragment_3 = root_3();
|
|
70607
|
+
var node_3 = first_child(fragment_3);
|
|
70608
|
+
{
|
|
70609
|
+
let $0 = /* @__PURE__ */ user_derived(() => {
|
|
70610
|
+
var _$$get2;
|
|
70611
|
+
return (_$$get2 = get(config)) === null || _$$get2 === void 0 ? void 0 : _$$get2.viewOnly;
|
|
71780
70612
|
});
|
|
71781
|
-
|
|
71782
|
-
|
|
71783
|
-
|
|
71784
|
-
const text = [
|
|
71785
|
-
"KEYBOARD SHORTCUTS — Open3D Floorplan",
|
|
71786
|
-
"",
|
|
71787
|
-
"── TOOLS ──",
|
|
71788
|
-
"V Select tool",
|
|
71789
|
-
"W Wall tool",
|
|
71790
|
-
"D Door tool",
|
|
71791
|
-
"H Pan mode",
|
|
71792
|
-
"M Measure tool",
|
|
71793
|
-
"N Annotate tool",
|
|
71794
|
-
"T Text tool",
|
|
71795
|
-
"S Toggle snap",
|
|
71796
|
-
"",
|
|
71797
|
-
"── EDIT ──",
|
|
71798
|
-
"Ctrl+Z Undo",
|
|
71799
|
-
"Ctrl+Y Redo",
|
|
71800
|
-
"Ctrl+C Copy",
|
|
71801
|
-
"Ctrl+V Paste",
|
|
71802
|
-
"Ctrl+A Select all",
|
|
71803
|
-
"Ctrl+D Deselect all",
|
|
71804
|
-
"Ctrl+S Save project",
|
|
71805
|
-
"Esc Cancel / Deselect",
|
|
71806
|
-
"",
|
|
71807
|
-
"── ELEMENTS ──",
|
|
71808
|
-
"R Rotate element",
|
|
71809
|
-
"Del/Back Delete selected",
|
|
71810
|
-
"Ctrl+L Lock/Unlock",
|
|
71811
|
-
"Ctrl+G Group selection",
|
|
71812
|
-
"Ctrl+⇧+G Ungroup",
|
|
71813
|
-
"",
|
|
71814
|
-
"── VIEW ──",
|
|
71815
|
-
"Tab Toggle 2D/3D",
|
|
71816
|
-
"F Zoom to fit",
|
|
71817
|
-
"G Toggle grid",
|
|
71818
|
-
"L Toggle layers",
|
|
71819
|
-
"? Show shortcuts",
|
|
71820
|
-
"",
|
|
71821
|
-
"── CANVAS ──",
|
|
71822
|
-
"Scroll Zoom in/out",
|
|
71823
|
-
"+/- Zoom in/out",
|
|
71824
|
-
"Space+Drag Pan canvas",
|
|
71825
|
-
"",
|
|
71826
|
-
"── WALLS ──",
|
|
71827
|
-
"Dbl-click Finish wall chain",
|
|
71828
|
-
"C Close wall loop"
|
|
71829
|
-
].join("\n");
|
|
71830
|
-
navigator.clipboard.writeText(text);
|
|
70613
|
+
let $1 = /* @__PURE__ */ user_derived(() => {
|
|
70614
|
+
var _$$get3;
|
|
70615
|
+
return (_$$get3 = get(config)) === null || _$$get3 === void 0 ? void 0 : _$$get3.floorMaxWidth;
|
|
71831
70616
|
});
|
|
71832
|
-
|
|
71833
|
-
|
|
70617
|
+
let $2 = /* @__PURE__ */ user_derived(() => {
|
|
70618
|
+
var _$$get4;
|
|
70619
|
+
return (_$$get4 = get(config)) === null || _$$get4 === void 0 ? void 0 : _$$get4.floorMaxHeight;
|
|
70620
|
+
});
|
|
70621
|
+
let $3 = /* @__PURE__ */ user_derived(() => {
|
|
70622
|
+
var _$$get5;
|
|
70623
|
+
return (_$$get5 = get(config)) === null || _$$get5 === void 0 ? void 0 : _$$get5.heatmapMatrix;
|
|
70624
|
+
});
|
|
70625
|
+
let $4 = /* @__PURE__ */ user_derived(() => {
|
|
70626
|
+
var _$$get6;
|
|
70627
|
+
return (_$$get6 = get(config)) === null || _$$get6 === void 0 ? void 0 : _$$get6.heatmapEnabled;
|
|
70628
|
+
});
|
|
70629
|
+
FloorPlanCanvas(node_3, {
|
|
70630
|
+
get viewOnly() {
|
|
70631
|
+
return get($0);
|
|
70632
|
+
},
|
|
70633
|
+
get floorMaxWidth() {
|
|
70634
|
+
return get($1);
|
|
70635
|
+
},
|
|
70636
|
+
get floorMaxHeight() {
|
|
70637
|
+
return get($2);
|
|
70638
|
+
},
|
|
70639
|
+
get heatmapMatrix() {
|
|
70640
|
+
return get($3);
|
|
70641
|
+
},
|
|
70642
|
+
get heatmapEnabled() {
|
|
70643
|
+
return get($4);
|
|
70644
|
+
}
|
|
70645
|
+
});
|
|
70646
|
+
}
|
|
70647
|
+
var node_4 = sibling(node_3, 2);
|
|
70648
|
+
var consequent_2 = ($$anchor) => {
|
|
70649
|
+
AlignmentToolbar($$anchor, {});
|
|
71834
70650
|
};
|
|
71835
|
-
if_block(
|
|
71836
|
-
if (get(
|
|
70651
|
+
if_block(node_4, ($$render) => {
|
|
70652
|
+
if (!get(config).viewOnly) $$render(consequent_2);
|
|
71837
70653
|
});
|
|
71838
|
-
|
|
71839
|
-
|
|
71840
|
-
|
|
71841
|
-
|
|
71842
|
-
|
|
71843
|
-
|
|
71844
|
-
|
|
71845
|
-
|
|
70654
|
+
append($$anchor, fragment_3);
|
|
70655
|
+
};
|
|
70656
|
+
if_block(node_2, ($$render) => {
|
|
70657
|
+
if (get(mode) === "2d") $$render(consequent_3);
|
|
70658
|
+
});
|
|
70659
|
+
reset(div_2);
|
|
70660
|
+
var node_5 = sibling(div_2, 2);
|
|
70661
|
+
var consequent_4 = ($$anchor) => {
|
|
70662
|
+
LayersPanel($$anchor, {});
|
|
70663
|
+
};
|
|
70664
|
+
if_block(node_5, ($$render) => {
|
|
70665
|
+
if (get(showLayers) && get(mode) === "2d") $$render(consequent_4);
|
|
70666
|
+
});
|
|
70667
|
+
var node_6 = sibling(node_5, 2);
|
|
70668
|
+
{
|
|
70669
|
+
let $0 = /* @__PURE__ */ user_derived(() => get(mode) === "3d");
|
|
70670
|
+
PropertiesPanel(node_6, { get is3D() {
|
|
70671
|
+
return get($0);
|
|
70672
|
+
} });
|
|
70673
|
+
}
|
|
70674
|
+
reset(div_1);
|
|
70675
|
+
reset(div);
|
|
70676
|
+
var node_7 = sibling(div, 2);
|
|
70677
|
+
UndoHistoryPanel(node_7, {
|
|
70678
|
+
get visible() {
|
|
70679
|
+
return get(showUndoHistory);
|
|
70680
|
+
},
|
|
70681
|
+
set visible($$value) {
|
|
70682
|
+
set(showUndoHistory, $$value, true);
|
|
70683
|
+
}
|
|
70684
|
+
});
|
|
70685
|
+
var node_8 = sibling(node_7, 2);
|
|
70686
|
+
var consequent_5 = ($$anchor) => {
|
|
70687
|
+
var div_3 = root_6();
|
|
70688
|
+
var div_4 = child(div_3);
|
|
70689
|
+
var div_5 = child(div_4);
|
|
70690
|
+
var div_6 = sibling(child(div_5), 2);
|
|
70691
|
+
var button = child(div_6);
|
|
70692
|
+
var button_1 = sibling(button, 2);
|
|
70693
|
+
reset(div_6);
|
|
70694
|
+
reset(div_5);
|
|
70695
|
+
next(4);
|
|
70696
|
+
reset(div_4);
|
|
70697
|
+
reset(div_3);
|
|
70698
|
+
delegated("click", div_3, () => set(showHelp, false));
|
|
70699
|
+
delegated("keydown", div_3, (e) => {
|
|
70700
|
+
if (e.key === "Escape") set(showHelp, false);
|
|
71846
70701
|
});
|
|
71847
|
-
|
|
71848
|
-
|
|
71849
|
-
|
|
71850
|
-
|
|
71851
|
-
|
|
71852
|
-
|
|
71853
|
-
|
|
71854
|
-
|
|
70702
|
+
delegated("click", div_4, (e) => e.stopPropagation());
|
|
70703
|
+
delegated("keydown", div_4, (e) => e.stopPropagation());
|
|
70704
|
+
delegated("click", button, () => {
|
|
70705
|
+
const text = [
|
|
70706
|
+
"KEYBOARD SHORTCUTS — Open3D Floorplan",
|
|
70707
|
+
"",
|
|
70708
|
+
"── TOOLS ──",
|
|
70709
|
+
"V Select tool",
|
|
70710
|
+
"W Wall tool",
|
|
70711
|
+
"D Door tool",
|
|
70712
|
+
"H Pan mode",
|
|
70713
|
+
"M Measure tool",
|
|
70714
|
+
"N Annotate tool",
|
|
70715
|
+
"T Text tool",
|
|
70716
|
+
"S Toggle snap",
|
|
70717
|
+
"",
|
|
70718
|
+
"── EDIT ──",
|
|
70719
|
+
"Ctrl+Z Undo",
|
|
70720
|
+
"Ctrl+Y Redo",
|
|
70721
|
+
"Ctrl+C Copy",
|
|
70722
|
+
"Ctrl+V Paste",
|
|
70723
|
+
"Ctrl+A Select all",
|
|
70724
|
+
"Ctrl+D Deselect all",
|
|
70725
|
+
"Ctrl+S Save project",
|
|
70726
|
+
"Esc Cancel / Deselect",
|
|
70727
|
+
"",
|
|
70728
|
+
"── ELEMENTS ──",
|
|
70729
|
+
"R Rotate element",
|
|
70730
|
+
"Del/Back Delete selected",
|
|
70731
|
+
"Ctrl+L Lock/Unlock",
|
|
70732
|
+
"Ctrl+G Group selection",
|
|
70733
|
+
"Ctrl+⇧+G Ungroup",
|
|
70734
|
+
"",
|
|
70735
|
+
"── VIEW ──",
|
|
70736
|
+
"Tab Toggle 2D/3D",
|
|
70737
|
+
"F Zoom to fit",
|
|
70738
|
+
"G Toggle grid",
|
|
70739
|
+
"L Toggle layers",
|
|
70740
|
+
"? Show shortcuts",
|
|
70741
|
+
"",
|
|
70742
|
+
"── CANVAS ──",
|
|
70743
|
+
"Scroll Zoom in/out",
|
|
70744
|
+
"+/- Zoom in/out",
|
|
70745
|
+
"Space+Drag Pan canvas",
|
|
70746
|
+
"",
|
|
70747
|
+
"── WALLS ──",
|
|
70748
|
+
"Dbl-click Finish wall chain",
|
|
70749
|
+
"C Close wall loop"
|
|
70750
|
+
].join("\n");
|
|
70751
|
+
navigator.clipboard.writeText(text);
|
|
71855
70752
|
});
|
|
71856
|
-
|
|
71857
|
-
append($$anchor,
|
|
71858
|
-
};
|
|
71859
|
-
var alternate = ($$anchor) => {
|
|
71860
|
-
append($$anchor, root_8());
|
|
70753
|
+
delegated("click", button_1, () => set(showHelp, false));
|
|
70754
|
+
append($$anchor, div_3);
|
|
71861
70755
|
};
|
|
71862
|
-
if_block(
|
|
71863
|
-
if (get(
|
|
71864
|
-
|
|
70756
|
+
if_block(node_8, ($$render) => {
|
|
70757
|
+
if (get(showHelp)) $$render(consequent_5);
|
|
70758
|
+
});
|
|
70759
|
+
var node_9 = sibling(node_8, 2);
|
|
70760
|
+
CommandPalette(node_9, {
|
|
70761
|
+
get open() {
|
|
70762
|
+
return get(commandPaletteOpen);
|
|
70763
|
+
},
|
|
70764
|
+
set open($$value) {
|
|
70765
|
+
set(commandPaletteOpen, $$value, true);
|
|
70766
|
+
}
|
|
70767
|
+
});
|
|
70768
|
+
var node_10 = sibling(node_9, 2);
|
|
70769
|
+
PrintLayout(node_10, {
|
|
70770
|
+
get open() {
|
|
70771
|
+
return get(printOpen);
|
|
70772
|
+
},
|
|
70773
|
+
set open($$value) {
|
|
70774
|
+
set(printOpen, $$value, true);
|
|
70775
|
+
}
|
|
71865
70776
|
});
|
|
70777
|
+
OnboardingTooltip(sibling(node_10, 2), {});
|
|
71866
70778
|
append($$anchor, fragment);
|
|
71867
70779
|
pop();
|
|
71868
70780
|
}
|
|
@@ -71886,7 +70798,7 @@ var FloorEditor = class extends HTMLElement {
|
|
|
71886
70798
|
_classPrivateFieldInitSpec(this, _wrapper, void 0);
|
|
71887
70799
|
_classPrivateFieldInitSpec(this, _store, {
|
|
71888
70800
|
floorData: writable(null),
|
|
71889
|
-
config: writable(
|
|
70801
|
+
config: writable(DEFAULT_CONFIG)
|
|
71890
70802
|
});
|
|
71891
70803
|
}
|
|
71892
70804
|
connectedCallback() {
|