floor-editor-ts 1.0.6 → 1.0.8

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.
@@ -64364,7 +64364,8 @@ var root_12 = /* @__PURE__ */ from_html(`<div class="absolute bottom-12 right-2
64364
64364
  var root_16 = /* @__PURE__ */ from_html(`<button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-500 hover:text-gray-700" title="Flip swing" aria-label="Flip swing"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M7 16V4m0 0L3 8m4-4l4 4M17 8v12m0 0l4-4m-4 4l-4-4"></path></svg></button>`);
64365
64365
  var root_17 = /* @__PURE__ */ from_html(`<button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-500 hover:text-gray-700" title="Split wall at midpoint" aria-label="Split wall at midpoint"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M4 12h4M16 12h4"></path></svg></button>`);
64366
64366
  var root_15 = /* @__PURE__ */ from_html(`<div class="absolute z-40 flex items-center gap-0.5 bg-white rounded-lg shadow-lg border border-gray-200 px-1 py-0.5"><button class="w-7 h-7 flex items-center justify-center rounded hover:bg-gray-100 text-gray-500 hover:text-gray-700" title="Duplicate" aria-label="Duplicate"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"></rect><path d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1"></path></svg></button> <!> <!> <div class="w-px h-5 bg-gray-200 mx-0.5"></div> <button class="w-7 h-7 flex items-center justify-center rounded hover:bg-red-50 text-gray-400 hover:text-red-600" title="Delete" aria-label="Delete"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 6h18M8 6V4a2 2 0 012-2h4a2 2 0 012 2v2m3 0v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6h14"></path></svg></button></div>`);
64367
- var root_18 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -translate-x-1/2 bg-blue-600 text-white px-3 py-1 rounded-full text-xs shadow">Click to add wall segment · Double-click to finish · C to close loop · Esc to cancel</div>`);
64367
+ var root_18 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -translate-x-1/2 bg-blue-600 text-white px-3 py-1 rounded-full text-xs shadow">Click to add wall segment · Double-click to finish · C to close loop ·
64368
+ Esc to cancel</div>`);
64368
64369
  var root_19 = /* @__PURE__ */ from_html(`<div class="absolute top-2 left-1/2 -translate-x-1/2 bg-purple-600 text-white px-3 py-1 rounded-full text-xs shadow"> </div>`);
64369
64370
  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>`);
64370
64371
  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>`);
@@ -65463,7 +65464,7 @@ function FloorPlanCanvas($$anchor, $$props) {
65463
65464
  ctx.fillStyle = "#f8f9fa";
65464
65465
  ctx.fillRect(0, 0, get(width), get(height));
65465
65466
  drawGrid();
65466
- if (get(layerVis).guides) drawGuides$1();
65467
+ if (!$$props.viewOnly && get(layerVis).guides) drawGuides$1();
65467
65468
  drawBackgroundImage();
65468
65469
  const floor = get(currentFloor);
65469
65470
  if (!floor) {
@@ -65478,7 +65479,7 @@ function FloorPlanCanvas($$anchor, $$props) {
65478
65479
  return id === selId || multiIds.has(id);
65479
65480
  }
65480
65481
  drawRooms$1();
65481
- drawSnapPoints$1();
65482
+ if (!$$props.viewOnly) drawSnapPoints$1();
65482
65483
  if (get(layerVis).walls) {
65483
65484
  for (const w of floor.walls) drawWall$1(w, isSelected(w.id));
65484
65485
  drawWallJoints$1(floor, selId);
@@ -68319,7 +68320,8 @@ function FloorPlanCanvas($$anchor, $$props) {
68319
68320
  reset(div_6);
68320
68321
  template_effect(() => {
68321
68322
  var _$$get13;
68322
- return set_text(text_15, `Click to place · Scroll or R to rotate (${(_$$get13 = get(currentPlacingRotation)) !== null && _$$get13 !== void 0 ? _$$get13 : ""}°) · Esc to cancel`);
68323
+ return set_text(text_15, `Click to place · Scroll or R to rotate (${(_$$get13 = get(currentPlacingRotation)) !== null && _$$get13 !== void 0 ? _$$get13 : ""}°) · Esc
68324
+ to cancel`);
68323
68325
  });
68324
68326
  append($$anchor, div_6);
68325
68327
  };
@@ -69447,655 +69449,7 @@ function App($$anchor, $$props) {
69447
69449
  set(mode, m, true);
69448
69450
  });
69449
69451
  user_effect(() => {
69450
- currentProject.set({
69451
- id: "0retn2ek",
69452
- name: "L-Shaped House",
69453
- floors: [{
69454
- id: "1fg6pga0",
69455
- name: "Ground Floor",
69456
- level: 0,
69457
- walls: [
69458
- {
69459
- id: "lg5h806h",
69460
- start: {
69461
- x: 0,
69462
- y: 0
69463
- },
69464
- end: {
69465
- x: 1400,
69466
- y: 0
69467
- },
69468
- thickness: 15,
69469
- height: 280,
69470
- color: "#444444"
69471
- },
69472
- {
69473
- id: "whcf9cv2",
69474
- start: {
69475
- x: 1400,
69476
- y: 0
69477
- },
69478
- end: {
69479
- x: 1400,
69480
- y: 600
69481
- },
69482
- thickness: 15,
69483
- height: 280,
69484
- color: "#444444"
69485
- },
69486
- {
69487
- id: "phvbebmu",
69488
- start: {
69489
- x: 1400,
69490
- y: 600
69491
- },
69492
- end: {
69493
- x: 600,
69494
- y: 600
69495
- },
69496
- thickness: 15,
69497
- height: 280,
69498
- color: "#444444"
69499
- },
69500
- {
69501
- id: "xaxhdtmi",
69502
- start: {
69503
- x: 600,
69504
- y: 600
69505
- },
69506
- end: {
69507
- x: 600,
69508
- y: 1100
69509
- },
69510
- thickness: 15,
69511
- height: 280,
69512
- color: "#444444"
69513
- },
69514
- {
69515
- id: "cs1poy28",
69516
- start: {
69517
- x: 600,
69518
- y: 1100
69519
- },
69520
- end: {
69521
- x: 0,
69522
- y: 1100
69523
- },
69524
- thickness: 15,
69525
- height: 280,
69526
- color: "#444444"
69527
- },
69528
- {
69529
- id: "irjmbyqg",
69530
- start: {
69531
- x: 0,
69532
- y: 1100
69533
- },
69534
- end: {
69535
- x: 0,
69536
- y: 0
69537
- },
69538
- thickness: 15,
69539
- height: 280,
69540
- color: "#444444"
69541
- },
69542
- {
69543
- id: "n45rb09q",
69544
- start: {
69545
- x: 350,
69546
- y: 600
69547
- },
69548
- end: {
69549
- x: 350,
69550
- y: 1100
69551
- },
69552
- thickness: 15,
69553
- height: 280,
69554
- color: "#444444"
69555
- },
69556
- {
69557
- id: "mrcejzip",
69558
- start: {
69559
- x: 0,
69560
- y: 600
69561
- },
69562
- end: {
69563
- x: 350,
69564
- y: 600
69565
- },
69566
- thickness: 15,
69567
- height: 280,
69568
- color: "#444444"
69569
- },
69570
- {
69571
- id: "s0j86ogg",
69572
- start: {
69573
- x: 400,
69574
- y: 0
69575
- },
69576
- end: {
69577
- x: 400,
69578
- y: 350
69579
- },
69580
- thickness: 15,
69581
- height: 280,
69582
- color: "#444444"
69583
- },
69584
- {
69585
- id: "9779xycw",
69586
- start: {
69587
- x: 0,
69588
- y: 350
69589
- },
69590
- end: {
69591
- x: 400,
69592
- y: 350
69593
- },
69594
- thickness: 15,
69595
- height: 280,
69596
- color: "#444444"
69597
- },
69598
- {
69599
- id: "epl8xjo0",
69600
- start: {
69601
- x: 800,
69602
- y: 0
69603
- },
69604
- end: {
69605
- x: 800,
69606
- y: 350
69607
- },
69608
- thickness: 15,
69609
- height: 280,
69610
- color: "#444444"
69611
- },
69612
- {
69613
- id: "pw24r5jz",
69614
- start: {
69615
- x: 400,
69616
- y: 350
69617
- },
69618
- end: {
69619
- x: 800,
69620
- y: 350
69621
- },
69622
- thickness: 15,
69623
- height: 280,
69624
- color: "#444444"
69625
- },
69626
- {
69627
- id: "xvghl92m",
69628
- start: {
69629
- x: 800,
69630
- y: 350
69631
- },
69632
- end: {
69633
- x: 1400,
69634
- y: 350
69635
- },
69636
- thickness: 15,
69637
- height: 280,
69638
- color: "#444444"
69639
- },
69640
- {
69641
- id: "j5kb9mas",
69642
- start: {
69643
- x: 200,
69644
- y: 350
69645
- },
69646
- end: {
69647
- x: 200,
69648
- y: 600
69649
- },
69650
- thickness: 15,
69651
- height: 280,
69652
- color: "#444444"
69653
- },
69654
- {
69655
- id: "lryeizdx",
69656
- start: {
69657
- x: 0,
69658
- y: 600
69659
- },
69660
- end: {
69661
- x: 200,
69662
- y: 600
69663
- },
69664
- thickness: 15,
69665
- height: 280,
69666
- color: "#444444"
69667
- },
69668
- {
69669
- id: "zp1xe5hf",
69670
- start: {
69671
- x: 1e3,
69672
- y: 350
69673
- },
69674
- end: {
69675
- x: 1e3,
69676
- y: 600
69677
- },
69678
- thickness: 15,
69679
- height: 280,
69680
- color: "#444444"
69681
- },
69682
- {
69683
- id: "2cvf9bma",
69684
- start: {
69685
- x: 200,
69686
- y: 350
69687
- },
69688
- end: {
69689
- x: 200,
69690
- y: 600
69691
- },
69692
- thickness: 15,
69693
- height: 280,
69694
- color: "#444444"
69695
- }
69696
- ],
69697
- rooms: [{
69698
- id: "room-1-1776067835920",
69699
- name: "Room 1",
69700
- walls: [
69701
- "lg5h806h",
69702
- "whcf9cv2",
69703
- "phvbebmu",
69704
- "xaxhdtmi",
69705
- "cs1poy28",
69706
- "irjmbyqg"
69707
- ],
69708
- floorTexture: "hardwood",
69709
- area: 114
69710
- }, {
69711
- id: "room-6-1776067835920",
69712
- name: "Room 6",
69713
- walls: [
69714
- "phvbebmu",
69715
- "zp1xe5hf",
69716
- "xvghl92m",
69717
- "pw24r5jz",
69718
- "9779xycw",
69719
- "j5kb9mas",
69720
- "mrcejzip",
69721
- "n45rb09q",
69722
- "cs1poy28",
69723
- "xaxhdtmi"
69724
- ],
69725
- floorTexture: "light-oak",
69726
- area: 32.5
69727
- }],
69728
- doors: [
69729
- {
69730
- id: "ri02cnm3",
69731
- wallId: "phvbebmu",
69732
- position: .8,
69733
- width: 90,
69734
- height: 210,
69735
- type: "single",
69736
- swingDirection: "left",
69737
- flipSide: false
69738
- },
69739
- {
69740
- id: "5vzer8y2",
69741
- wallId: "mrcejzip",
69742
- position: .5,
69743
- width: 300,
69744
- height: 210,
69745
- type: "double",
69746
- swingDirection: "left",
69747
- flipSide: false
69748
- },
69749
- {
69750
- id: "djdsr69e",
69751
- wallId: "9779xycw",
69752
- position: .6,
69753
- width: 90,
69754
- height: 210,
69755
- type: "single",
69756
- swingDirection: "left",
69757
- flipSide: false
69758
- },
69759
- {
69760
- id: "q7q6yxj5",
69761
- wallId: "pw24r5jz",
69762
- position: .5,
69763
- width: 90,
69764
- height: 210,
69765
- type: "single",
69766
- swingDirection: "left",
69767
- flipSide: false
69768
- },
69769
- {
69770
- id: "trlthzki",
69771
- wallId: "xvghl92m",
69772
- position: .3,
69773
- width: 90,
69774
- height: 210,
69775
- type: "single",
69776
- swingDirection: "left",
69777
- flipSide: false
69778
- },
69779
- {
69780
- id: "cftusuau",
69781
- wallId: "j5kb9mas",
69782
- position: .5,
69783
- width: 90,
69784
- height: 210,
69785
- type: "single",
69786
- swingDirection: "left",
69787
- flipSide: false
69788
- },
69789
- {
69790
- id: "ffwybstc",
69791
- wallId: "zp1xe5hf",
69792
- position: .5,
69793
- width: 90,
69794
- height: 210,
69795
- type: "single",
69796
- swingDirection: "left",
69797
- flipSide: false
69798
- },
69799
- {
69800
- id: "zbqvbt3e",
69801
- wallId: "n45rb09q",
69802
- position: .3,
69803
- width: 90,
69804
- height: 210,
69805
- type: "single",
69806
- swingDirection: "left",
69807
- flipSide: false
69808
- }
69809
- ],
69810
- windows: [
69811
- {
69812
- id: "str62d0g",
69813
- wallId: "lg5h806h",
69814
- position: .15,
69815
- width: 140,
69816
- height: 120,
69817
- sillHeight: 90,
69818
- type: "standard"
69819
- },
69820
- {
69821
- id: "rhl9pa6k",
69822
- wallId: "lg5h806h",
69823
- position: .45,
69824
- width: 140,
69825
- height: 120,
69826
- sillHeight: 90,
69827
- type: "standard"
69828
- },
69829
- {
69830
- id: "lg4nh0s5",
69831
- wallId: "lg5h806h",
69832
- position: .8,
69833
- width: 140,
69834
- height: 120,
69835
- sillHeight: 90,
69836
- type: "standard"
69837
- },
69838
- {
69839
- id: "8bpiebl6",
69840
- wallId: "whcf9cv2",
69841
- position: .3,
69842
- width: 120,
69843
- height: 120,
69844
- sillHeight: 90,
69845
- type: "standard"
69846
- },
69847
- {
69848
- id: "nqvio771",
69849
- wallId: "whcf9cv2",
69850
- position: .7,
69851
- width: 180,
69852
- height: 120,
69853
- sillHeight: 90,
69854
- type: "standard"
69855
- },
69856
- {
69857
- id: "4wfq1m5b",
69858
- wallId: "cs1poy28",
69859
- position: .7,
69860
- width: 150,
69861
- height: 120,
69862
- sillHeight: 90,
69863
- type: "standard"
69864
- },
69865
- {
69866
- id: "uy5t0vr6",
69867
- wallId: "irjmbyqg",
69868
- position: .1,
69869
- width: 120,
69870
- height: 120,
69871
- sillHeight: 90,
69872
- type: "standard"
69873
- }
69874
- ],
69875
- furniture: [
69876
- {
69877
- id: "3s34714b",
69878
- catalogId: "bed_queen",
69879
- position: {
69880
- x: 150,
69881
- y: 120
69882
- },
69883
- rotation: 0,
69884
- scale: {
69885
- x: 1,
69886
- y: 1,
69887
- z: 1
69888
- }
69889
- },
69890
- {
69891
- id: "vy1dh1df",
69892
- catalogId: "bed_queen",
69893
- position: {
69894
- x: 550,
69895
- y: 120
69896
- },
69897
- rotation: 0,
69898
- scale: {
69899
- x: 1,
69900
- y: 1,
69901
- z: 1
69902
- }
69903
- },
69904
- {
69905
- id: "lbkdt1gr",
69906
- catalogId: "bed_twin",
69907
- position: {
69908
- x: 1050,
69909
- y: 120
69910
- },
69911
- rotation: 0,
69912
- scale: {
69913
- x: 1,
69914
- y: 1,
69915
- z: 1
69916
- }
69917
- },
69918
- {
69919
- id: "929s823r",
69920
- catalogId: "sofa",
69921
- position: {
69922
- x: 500,
69923
- y: 450
69924
- },
69925
- rotation: 0,
69926
- scale: {
69927
- x: 1,
69928
- y: 1,
69929
- z: 1
69930
- }
69931
- },
69932
- {
69933
- id: "vemdx0ly",
69934
- catalogId: "dining_table",
69935
- position: {
69936
- x: 1100,
69937
- y: 470
69938
- },
69939
- rotation: 0,
69940
- scale: {
69941
- x: 1,
69942
- y: 1,
69943
- z: 1
69944
- }
69945
- },
69946
- {
69947
- id: "4ut780gy",
69948
- catalogId: "toilet",
69949
- position: {
69950
- x: 80,
69951
- y: 450
69952
- },
69953
- rotation: 0,
69954
- scale: {
69955
- x: 1,
69956
- y: 1,
69957
- z: 1
69958
- }
69959
- },
69960
- {
69961
- id: "b86ttpr9",
69962
- catalogId: "sink_b",
69963
- position: {
69964
- x: 80,
69965
- y: 530
69966
- },
69967
- rotation: 0,
69968
- scale: {
69969
- x: 1,
69970
- y: 1,
69971
- z: 1
69972
- }
69973
- },
69974
- {
69975
- id: "o5vi7zwx",
69976
- catalogId: "toilet",
69977
- position: {
69978
- x: 880,
69979
- y: 450
69980
- },
69981
- rotation: 0,
69982
- scale: {
69983
- x: 1,
69984
- y: 1,
69985
- z: 1
69986
- }
69987
- },
69988
- {
69989
- id: "5n8aegie",
69990
- catalogId: "sink_b",
69991
- position: {
69992
- x: 880,
69993
- y: 530
69994
- },
69995
- rotation: 0,
69996
- scale: {
69997
- x: 1,
69998
- y: 1,
69999
- z: 1
70000
- }
70001
- },
70002
- {
70003
- id: "3srr4a1o",
70004
- catalogId: "camera",
70005
- position: {
70006
- x: 350,
70007
- y: 125
70008
- },
70009
- rotation: 240,
70010
- scale: {
70011
- x: 1,
70012
- y: 1,
70013
- z: 1
70014
- }
70015
- },
70016
- {
70017
- id: "c5t2gb8x",
70018
- catalogId: "camera",
70019
- position: {
70020
- x: 1250,
70021
- y: 175
70022
- },
70023
- rotation: 0,
70024
- scale: {
70025
- x: 1,
70026
- y: 1,
70027
- z: 1
70028
- }
70029
- },
70030
- {
70031
- id: "2i2ebqoi",
70032
- catalogId: "camera",
70033
- position: {
70034
- x: 200,
70035
- y: 775
70036
- },
70037
- rotation: 0,
70038
- scale: {
70039
- x: 1,
70040
- y: 1,
70041
- z: 1
70042
- }
70043
- },
70044
- {
70045
- id: "uem6oqib",
70046
- catalogId: "camera",
70047
- position: {
70048
- x: 350,
70049
- y: 525
70050
- },
70051
- rotation: 225,
70052
- scale: {
70053
- x: 1,
70054
- y: 1,
70055
- z: 1
70056
- }
70057
- },
70058
- {
70059
- id: "h5sbi17v",
70060
- catalogId: "camera",
70061
- position: {
70062
- x: 775,
70063
- y: 450
70064
- },
70065
- rotation: 90,
70066
- scale: {
70067
- x: 1,
70068
- y: 1,
70069
- z: 1
70070
- }
70071
- },
70072
- {
70073
- id: "6uqjgzjq",
70074
- catalogId: "camera",
70075
- position: {
70076
- x: 1275,
70077
- y: 500
70078
- },
70079
- rotation: 345,
70080
- scale: {
70081
- x: 1,
70082
- y: 1,
70083
- z: 1
70084
- }
70085
- }
70086
- ],
70087
- stairs: [],
70088
- columns: [],
70089
- guides: [],
70090
- measurements: [],
70091
- annotations: [],
70092
- textAnnotations: [],
70093
- groups: []
70094
- }],
70095
- activeFloorId: "1fg6pga0",
70096
- createdAt: "2026-04-13T08:10:35.869Z",
70097
- updatedAt: "2026-04-13T08:58:30.617Z"
70098
- });
69452
+ currentProject.set(get(floorData) || createDefaultProject());
70099
69453
  });
70100
69454
  onMount(() => {
70101
69455
  set(ready, true);