@crystaldesign/web-planner-logic 26.13.0-beta.32 → 26.13.0-beta.34
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/build/cjs/{DivaBoxPlanner-f9f577b0.js → DivaBoxPlanner-7f6bd584.js} +3 -3
- package/build/cjs/{DivaStandardPlanner-fd71c557.js → DivaStandardPlanner-77c603dc.js} +1903 -195
- package/build/cjs/{DoorPlanner-1e941d6e.js → DoorPlanner-5de2bbf0.js} +2 -2
- package/build/cjs/{Host3DSignalR-7aa4d347.js → Host3DSignalR-26b95303.js} +2 -2
- package/build/cjs/{LiviqueWWSHandler-c8f83739.js → LiviqueWWSHandler-1e419862.js} +2 -2
- package/build/cjs/{PfisterWWSHandler-d3fd59c5.js → PfisterWWSHandler-b2f7a5ec.js} +2 -2
- package/build/cjs/{PlannerHandler2D-e6d1cebc.js → PlannerHandler2D-ff734c3e.js} +10 -10
- package/build/cjs/{SeriousBasketHandler-c8abdb16.js → SeriousBasketHandler-e54bd31b.js} +2 -2
- package/build/cjs/{ShelfPlanner-173ee746.js → ShelfPlanner-08e15d16.js} +489 -193
- package/build/cjs/{StandardWWSHandler-e31f5446.js → StandardWWSHandler-0e7b20dc.js} +2 -2
- package/build/cjs/{index-76d3a1ec.js → index-5dd5fb4b.js} +7067 -2170
- package/build/cjs/index.js +9 -3
- package/build/esm/{DivaBoxPlanner-086b4c02.js → DivaBoxPlanner-6ac448b4.js} +3 -3
- package/build/esm/{DivaStandardPlanner-9864a9dd.js → DivaStandardPlanner-abd9609d.js} +1893 -186
- package/build/esm/{DoorPlanner-d29bc13e.js → DoorPlanner-fde32e61.js} +2 -2
- package/build/esm/{Host3DSignalR-dbe6624e.js → Host3DSignalR-0f97c7f3.js} +2 -2
- package/build/esm/{LiviqueWWSHandler-60691979.js → LiviqueWWSHandler-9ee5b7cb.js} +2 -2
- package/build/esm/{PfisterWWSHandler-1fe8accd.js → PfisterWWSHandler-b9699549.js} +2 -2
- package/build/esm/{PlannerHandler2D-88b9a108.js → PlannerHandler2D-8d963e77.js} +2 -2
- package/build/esm/{SeriousBasketHandler-0a3966d6.js → SeriousBasketHandler-40e7e46c.js} +2 -2
- package/build/esm/{ShelfPlanner-614b7281.js → ShelfPlanner-69cbb2c1.js} +489 -193
- package/build/esm/{StandardWWSHandler-12b16709.js → StandardWWSHandler-dbf02663.js} +2 -2
- package/build/esm/{index-8d311c4b.js → index-88148ccc.js} +7022 -2163
- package/build/esm/index.js +2 -2
- package/build/types/web-planner-logic/src/index.d.ts +6 -1
- package/build/types/web-planner-logic/src/index.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts +13 -0
- package/build/types/web-planner-logic/src/interface/Articles/CatalogArticleDataType.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts +5 -0
- package/build/types/web-planner-logic/src/interface/DivaCatalogDataType.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts +15 -1
- package/build/types/web-planner-logic/src/interface/FunctionTypes/index.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts +10 -0
- package/build/types/web-planner-logic/src/interface/OptionTypes/CatalogOptionDataTypes.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/interface/Planner/ISaveSetPlanner.d.ts +10 -0
- package/build/types/web-planner-logic/src/interface/Planner/ISaveSetPlanner.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/interface/Planner/RoomSceneTypes.d.ts +76 -0
- package/build/types/web-planner-logic/src/interface/Planner/RoomSceneTypes.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/interface/Rendering/AlternativeRendering.d.ts +4 -0
- package/build/types/web-planner-logic/src/interface/Rendering/AlternativeRendering.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts +5 -0
- package/build/types/web-planner-logic/src/interface/ShelfPlanner/ShelfAccessoiresView.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts +1 -1
- package/build/types/web-planner-logic/src/interface/webPlannerParams/WebPlannerParamsType.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/Article/ArticleOptionState.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts +7 -0
- package/build/types/web-planner-logic/src/logic/ConfigTree/DivaConfigTreeHandler.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlanner.d.ts +51 -7
- package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlanner.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlannerGrid.d.ts +14 -2
- package/build/types/web-planner-logic/src/logic/ConfigTree/Shelfplanner/ShelfPlannerGrid.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/ConfigTree/viewerStateToggles.d.ts +19 -0
- package/build/types/web-planner-logic/src/logic/ConfigTree/viewerStateToggles.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/ConfigTree/viewerStateToggles.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/ConfigTree/viewerStateToggles.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts +107 -23
- package/build/types/web-planner-logic/src/logic/DivaWebPlanner.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts +74 -9
- package/build/types/web-planner-logic/src/logic/Planner/DivaPlannerHandler.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts +175 -4
- package/build/types/web-planner-logic/src/logic/Planner/DivaStandardPlanner.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/Planner/IDM3D/idm3dTranslation.d.ts +6 -7
- package/build/types/web-planner-logic/src/logic/Planner/IDM3D/idm3dTranslation.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/Planner/IDM3D/idm3dTranslation.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/IDM3D/idm3dTranslation.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/carrierGuests.d.ts +75 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/carrierGuests.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/guestPlacement.d.ts +47 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/guestPlacement.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/guestPlacement.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/guestPlacement.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementDefaults.d.ts +9 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementDefaults.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.d.ts +78 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementSlots.d.ts +81 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementSlots.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementTypes.d.ts +13 -0
- package/build/types/web-planner-logic/src/logic/Planner/Placement/placementTypes.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts +1 -1
- package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/SVGUtils.d.ts +1 -1
- package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts +13 -1
- package/build/types/web-planner-logic/src/logic/Planner/Rendering/PlannerHandler3D.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/Planner/Room/elementShapes.d.ts +56 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/elementShapes.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/elementShapes.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/elementShapes.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomCollisions.d.ts +90 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomCollisions.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomCollisions.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomCollisions.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomGroups.d.ts +32 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomGroups.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomGroups.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomGroups.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomProperties.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomProperties.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomScenes.d.ts +21 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomScenes.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomScenes.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomScenes.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomValidation.d.ts +13 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomValidation.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomValidation.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/roomValidation.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/rtvFeatures.d.ts +17 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/rtvFeatures.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/rtvFeatures.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/rtvFeatures.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/wallBinding.d.ts +72 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/wallBinding.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/wallBinding.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/wallBinding.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/wallMode.d.ts +7 -0
- package/build/types/web-planner-logic/src/logic/Planner/Room/wallMode.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/plannerSwitch.d.ts +32 -0
- package/build/types/web-planner-logic/src/logic/Planner/plannerSwitch.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Planner/plannerSwitch.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/logic/Planner/plannerSwitch.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts +12 -6
- package/build/types/web-planner-logic/src/logic/Set/DivaSet.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts +26 -6
- package/build/types/web-planner-logic/src/logic/Set/DivaSetHandler.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts +4 -0
- package/build/types/web-planner-logic/src/model/Articles/Article/CatalogArticleData.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts +27 -0
- package/build/types/web-planner-logic/src/model/Catalog/CatalogData.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Catalog/DivaCatalogData.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Catalog/IDMCatalogData.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts +10 -0
- package/build/types/web-planner-logic/src/model/Options/ArticleOptionData.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts +4 -1
- package/build/types/web-planner-logic/src/model/Options/CatalogOptionData.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Planner/DockingPoint.d.ts +1 -1
- package/build/types/web-planner-logic/src/model/Planner/DockingPoint.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts +29 -0
- package/build/types/web-planner-logic/src/model/Planner/PlannerElementData.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/model/Properties/propertySchemaRegistry.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/test/alternateRenderingToggle.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/alternateRenderingToggle.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/capturedSetImages.test.d.ts +1 -0
- package/build/types/web-planner-logic/src/test/capturedSetImages.test.d.ts.map +1 -1
- package/build/types/web-planner-logic/src/test/carrierGuests.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/carrierGuests.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/copyRestoreConnectors.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/copyRestoreConnectors.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/dragZones.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/dragZones.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/familySwapInPlace.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/familySwapInPlace.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/headlessRoomScenes.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/headlessRoomScenes.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/liveArUpdate.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/liveArUpdate.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/oltRectBody.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/oltRectBody.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/plannerRoomScenesSwitch.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/plannerRoomScenesSwitch.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/planning2DCapture.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/planning2DCapture.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/planningRoundTrip.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/planningRoundTrip.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/roomDragContact.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/roomDragContact.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/roomPlacement.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/roomPlacement.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/roomScenePlanning.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/roomScenePlanning.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/rotationSnap.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/rotationSnap.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/shelfEditNoting.test.d.ts +3 -0
- package/build/types/web-planner-logic/src/test/shelfEditNoting.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/shelfGridCarryOver.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/shelfGridCarryOver.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/shelfMoveLocks.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/shelfMoveLocks.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/shelfOfferedCells.test.d.ts +2 -0
- package/build/types/web-planner-logic/src/test/shelfOfferedCells.test.d.ts.map +1 -0
- package/build/types/web-planner-logic/src/test/sideCopySubstitute.test.d.ts +3 -0
- package/build/types/web-planner-logic/src/test/sideCopySubstitute.test.d.ts.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/** Where a carrier takes another element: in front of it, beside it, at its foot end, around it or under it. */
|
|
2
|
+
export type PlacementRelation = 'front' | 'side' | 'foot' | 'around' | 'under';
|
|
3
|
+
/**
|
|
4
|
+
* Where a guest looks in its slot (its front is the front of its planner SVG): at the carrier edge it stands at, away
|
|
5
|
+
* from it, the carrier's own rotation, or at the carrier's centre (`toCenter`, for round carriers; a straight edge
|
|
6
|
+
* treats it as `toCarrier`).
|
|
7
|
+
*/
|
|
8
|
+
export type SlotFacing = 'toCarrier' | 'awayFromCarrier' | 'parallel' | 'toCenter';
|
|
9
|
+
/** A type of the vocabulary: its parent, whose slots' `accepts` also match it. */
|
|
10
|
+
export interface PlacementTypeDefinition {
|
|
11
|
+
parent?: string;
|
|
12
|
+
}
|
|
13
|
+
/** How a guest stands in a slot, as written in rules: per accepted type or for the whole slot. */
|
|
14
|
+
export interface SlotGuestSpec {
|
|
15
|
+
/** cm to the carrier's edge, allowed range; below 0 the guest reaches under the carrier (a chair's seat under the top). */
|
|
16
|
+
distance?: [number, number];
|
|
17
|
+
/** cm to the carrier's edge a suggested place uses. */
|
|
18
|
+
ideal?: number;
|
|
19
|
+
facing?: SlotFacing;
|
|
20
|
+
/** deg the guest may turn further (data only). */
|
|
21
|
+
turn?: [number, number];
|
|
22
|
+
}
|
|
23
|
+
/** A slot as written in the default rules and in RTV_PRESET `placement.rules`. */
|
|
24
|
+
export interface PlacementSlotSpec extends SlotGuestSpec {
|
|
25
|
+
/** The accepted types, as a list (the slot's values for all) or with values per type; replaces the default's whole. */
|
|
26
|
+
accepts: string[] | Record<string, SlotGuestSpec>;
|
|
27
|
+
/** `around`: the least seat pitch (cm). */
|
|
28
|
+
pitch?: number;
|
|
29
|
+
/** `around`: gap (cm) added to a guest's width when that gives a wider pitch. */
|
|
30
|
+
spacing?: number;
|
|
31
|
+
/** `around`: the carrier depth (cm) from which its ends take guests too. */
|
|
32
|
+
endSeatsMinDepth?: number;
|
|
33
|
+
}
|
|
34
|
+
/** The slots of one carrier type as written, per relation. */
|
|
35
|
+
export type CarrierRulesSpec = Partial<Record<PlacementRelation, PlacementSlotSpec>>;
|
|
36
|
+
/** Rules per carrier type as written. */
|
|
37
|
+
export interface PlacementRulesSpec {
|
|
38
|
+
[carrierType: string]: CarrierRulesSpec;
|
|
39
|
+
}
|
|
40
|
+
/** How a guest stands in a slot: its gap (cm) to the carrier's edge, allowed and suggested, and where it looks. */
|
|
41
|
+
export interface SlotGuest {
|
|
42
|
+
distance: [number, number];
|
|
43
|
+
ideal: number;
|
|
44
|
+
facing: SlotFacing;
|
|
45
|
+
turn?: [number, number];
|
|
46
|
+
}
|
|
47
|
+
/** A slot: the guest types it takes with their gaps, and the `around` layout numbers. */
|
|
48
|
+
export interface PlacementSlot {
|
|
49
|
+
accepts: Record<string, SlotGuest>;
|
|
50
|
+
pitch?: number;
|
|
51
|
+
spacing?: number;
|
|
52
|
+
endSeatsMinDepth?: number;
|
|
53
|
+
}
|
|
54
|
+
/** The slots of one carrier type, per relation. */
|
|
55
|
+
export type CarrierRules = Partial<Record<PlacementRelation, PlacementSlot>>;
|
|
56
|
+
/** Slots per carrier type. */
|
|
57
|
+
export interface PlacementRules {
|
|
58
|
+
[carrierType: string]: CarrierRules;
|
|
59
|
+
}
|
|
60
|
+
/** A catalog's placement settings: its RTV_PRESET `placement` block over the central defaults. */
|
|
61
|
+
export interface PlacementOptions {
|
|
62
|
+
/** Palette group name → placement types (`placement.paletteGroups`). */
|
|
63
|
+
paletteGroups: Record<string, string[]>;
|
|
64
|
+
/** The default rules with the catalog's `placement.rules` merged over them. */
|
|
65
|
+
rules: PlacementRules;
|
|
66
|
+
}
|
|
67
|
+
/** Placement types as the rules compare them: a `;` list or an array, each trimmed and upper case, empties dropped. */
|
|
68
|
+
export declare function normalizePlacementTypes(value: unknown): string[];
|
|
69
|
+
/** The type and its ancestors in the vocabulary, the type first. */
|
|
70
|
+
export declare function getTypeLineage(type: string): string[];
|
|
71
|
+
/** The gap the slot gives `guestType`: its own entry, else the nearest ancestor's; undefined when the slot does not take it. */
|
|
72
|
+
export declare function getSlotGuest(slot: PlacementSlot | undefined, guestType: string | undefined): SlotGuest | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* The placement settings of an RTV_PRESET: `placement.paletteGroups` (palette group → types) and `placement.rules`
|
|
75
|
+
* merged field by field over {@link DEFAULT_PLACEMENT_RULES}. Unknown keys and values of the wrong type are ignored.
|
|
76
|
+
*/
|
|
77
|
+
export declare function resolvePlacementOptions(rtvPreset: Record<string, unknown> | undefined): PlacementOptions;
|
|
78
|
+
//# sourceMappingURL=placementRules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placementRules.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/placementRules.ts"],"names":[],"mappings":"AAGA,gHAAgH;AAChH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAI/E;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,iBAAiB,GAAG,UAAU,GAAG,UAAU,CAAC;AAInF,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kGAAkG;AAClG,MAAM,WAAW,aAAa;IAC5B,2HAA2H;IAC3H,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,kDAAkD;IAClD,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,kFAAkF;AAClF,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,uHAAuH;IACvH,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClD,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,8DAA8D;AAC9D,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAErF,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACzC;AAED,mHAAmH;AACnH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;AAE7E,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC7B,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAAC;CACrC;AAED,kGAAkG;AAClG,MAAM,WAAW,gBAAgB;IAC/B,wEAAwE;IACxE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,+EAA+E;IAC/E,KAAK,EAAE,cAAc,CAAC;CACvB;AAED,uHAAuH;AACvH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAIhE;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMrD;AAED,gIAAgI;AAChI,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAIlH;AA6FD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,gBAAgB,CAcxG"}
|
package/build/types/web-planner-logic/src/logic/Planner/Placement/placementRules.test.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placementRules.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/placementRules.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Vector2 } from '../../../model/Planner/wcVectors';
|
|
2
|
+
import { FloorPose } from '../Room/elementShapes';
|
|
3
|
+
import { FloorPoint } from '../Room/wallBinding';
|
|
4
|
+
import { PlacementRules, SlotGuest } from './placementRules';
|
|
5
|
+
/** A main element of a docking group as a carrier: its placement types, rotation and body outline (world). */
|
|
6
|
+
export interface SlotMember {
|
|
7
|
+
types: string[];
|
|
8
|
+
rotDeg: number;
|
|
9
|
+
body: Vector2[];
|
|
10
|
+
/** Its article's basket id, the carrier a guest names. */
|
|
11
|
+
basketId?: string;
|
|
12
|
+
}
|
|
13
|
+
/** The carrier member moved rigidly from pose `from` to pose `to` (see `movePoints`). */
|
|
14
|
+
export declare function moveSlotMember(member: SlotMember, from: FloorPose, to: FloorPose): SlotMember;
|
|
15
|
+
/**
|
|
16
|
+
* The members of a carrier with one rotation (an arm of an L, or a straight group): rotation and body points. In an
|
|
17
|
+
* `around` slot one edge of a member, turned so its front is that edge.
|
|
18
|
+
*/
|
|
19
|
+
export interface CarrierArm {
|
|
20
|
+
rotDeg: number;
|
|
21
|
+
points: Vector2[];
|
|
22
|
+
}
|
|
23
|
+
/** The relations whose places the planner lays out: in front of a carrier, beside its ends, all round it. */
|
|
24
|
+
export type SlotRelation = 'front' | 'side' | 'around';
|
|
25
|
+
/** Where a carrier group takes a guest type: in front of, beside or round the arms of the members with that slot. */
|
|
26
|
+
export interface CarrierSlot {
|
|
27
|
+
/** `<carrier type>.<relation>`, e.g. `SOFA.front`. */
|
|
28
|
+
id: string;
|
|
29
|
+
relation: SlotRelation;
|
|
30
|
+
arms: CarrierArm[];
|
|
31
|
+
guest: SlotGuest;
|
|
32
|
+
/** The members that offer the slot. */
|
|
33
|
+
members: SlotMember[];
|
|
34
|
+
/** `around`: the least seat pitch (cm). */
|
|
35
|
+
pitch?: number;
|
|
36
|
+
/** `around`: gap (cm) added to a guest's width when that gives a wider pitch. */
|
|
37
|
+
spacing?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* A place a slot offers a guest: its pose at the slot's ideal gap, and the way it may stand off that gap and still be in
|
|
41
|
+
* the slot: along `normal` (away from the carrier's edge) by `band` cm (min, max; the slot's distance range).
|
|
42
|
+
*/
|
|
43
|
+
export interface SlotPlace extends FloorPose {
|
|
44
|
+
normal: FloorPoint;
|
|
45
|
+
band: [number, number];
|
|
46
|
+
/** The least offset along `normal` from which a guest snaps to the place: closer it runs into the carrier's body. */
|
|
47
|
+
snapFrom: number;
|
|
48
|
+
}
|
|
49
|
+
/** The guest's body points around its centre when it is turned to `rotDeg`. */
|
|
50
|
+
export type GuestOutline = (rotDeg: number) => Vector2[];
|
|
51
|
+
/** The slots a carrier group offers a guest type (front, side, then around), from the slots of its members' types. */
|
|
52
|
+
export declare function getCarrierSlots(rules: PlacementRules, carrier: SlotMember[], guestType: string | undefined): CarrierSlot[];
|
|
53
|
+
/** The places a slot suggests for the guest, at its ideal gap and turned as it faces, in the order they are tried. */
|
|
54
|
+
export declare function getSlotPlaces(slot: CarrierSlot, guest: GuestOutline): SlotPlace[];
|
|
55
|
+
/**
|
|
56
|
+
* The first of the slots the guest's body stands in: `front` and `around`, in front of an arm (an edge) within its run
|
|
57
|
+
* at a gap in the slot's distance; `side`, beside an open end of an arm at such a gap, not reaching past the arm's back
|
|
58
|
+
* or front. Undefined when it stands in none.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getStandingSlot(slots: CarrierSlot[], guestBody: Vector2[]): CarrierSlot | undefined;
|
|
61
|
+
/** Whether the guest's body stands in one of the slots (see {@link getStandingSlot}). */
|
|
62
|
+
export declare function standsInSlot(slots: CarrierSlot[], guestBody: Vector2[]): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* The place nearest to a guest centred at `center` and where it would stand there, keeping its distance to the carrier
|
|
65
|
+
* within the place's band: index into `places` and centre. Undefined without places.
|
|
66
|
+
*/
|
|
67
|
+
export declare function getNearestPlace(places: SlotPlace[], center: FloorPoint): {
|
|
68
|
+
index: number;
|
|
69
|
+
center: FloorPoint;
|
|
70
|
+
} | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* The place a dragged guest centred at `center` snaps to (see {@link getNearestPlace}): the nearest within `reach` cm,
|
|
73
|
+
* but none the guest is pushed into its carrier's body at (`snapFrom`): contact holds it there, not the slot.
|
|
74
|
+
*/
|
|
75
|
+
export declare function getSnapPlace(places: SlotPlace[], center: FloorPoint, reach: number): {
|
|
76
|
+
index: number;
|
|
77
|
+
center: FloorPoint;
|
|
78
|
+
} | undefined;
|
|
79
|
+
/** Of the members that offer `slot`, the one whose body lies nearest to `point`: the carrier a guest there names. */
|
|
80
|
+
export declare function getNearestMember(slot: CarrierSlot, point: FloorPoint): SlotMember | undefined;
|
|
81
|
+
//# sourceMappingURL=placementSlots.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placementSlots.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/placementSlots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAc,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAqB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAgB,cAAc,EAA6B,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEtG,8GAA8G;AAC9G,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,UAAU,CAE7F;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,6GAA6G;AAC7G,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,qHAAqH;AACrH,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,uCAAuC;IACvC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvB,qHAAqH;IACrH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;AAqEzD,sHAAsH;AACtH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,EAAE,CAuB1H;AAkID,sHAAsH;AACtH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,GAAG,SAAS,CAmBnG;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,CAEhF;AAuBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,SAAS,CAE1H;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,SAAS,CAEtI;AAED,qHAAqH;AACrH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAQ7F"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** The article facts the placement-type chain reads. */
|
|
2
|
+
export interface PlacementTypeInput {
|
|
3
|
+
/** `PLACEMENT_TYPE` of the article. */
|
|
4
|
+
placementType?: string[];
|
|
5
|
+
/** The names of the article's palette group: every locale, and the catalog's own spelling. */
|
|
6
|
+
groupNames: (string | undefined)[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An article's placement types (primary first): its `PLACEMENT_TYPE`, else its palette group through the catalog's
|
|
10
|
+
* `placement.paletteGroups`. Undefined: collision and wall rule only.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolvePlacementType(input: PlacementTypeInput, paletteGroups: Record<string, string[]>): string[] | undefined;
|
|
13
|
+
//# sourceMappingURL=placementTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placementTypes.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Placement/placementTypes.ts"],"names":[],"mappings":"AAEA,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,8FAA8F;IAC9F,UAAU,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,SAAS,CAQ7H"}
|
package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DockingConfig, DockingPointHandler as CoreDockingPointHandler, DockingPointSvgLine, MinBorder, PlannerElement2D } from '@crystaldesign/planner-
|
|
1
|
+
import { DockingConfig, DockingPointHandler as CoreDockingPointHandler, DockingPointSvgLine, MinBorder, PlannerElement2D } from '@crystaldesign/planner-core';
|
|
2
2
|
/** Legacy minBorder parameter shape still used by this package's callers. */
|
|
3
3
|
interface LegacyMinBorder {
|
|
4
4
|
svgMinXVal: number;
|
package/build/types/web-planner-logic/src/logic/Planner/PlannerUtils/DockingPointHandler.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DockingPointHandler.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/PlannerUtils/DockingPointHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"DockingPointHandler.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/PlannerUtils/DockingPointHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE9J,6EAA6E;AAC7E,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,kFAAkF;AAClF,cAAM,mBAAoB,SAAQ,uBAAuB;IAChD,wBAAwB,CAC7B,cAAc,EAAE,gBAAgB,EAChC,cAAc,EAAE,mBAAmB,EAAE,EACrC,SAAS,EAAE,SAAS,GAAG,eAAe,EACtC,aAAa,EAAE,aAAa,GAC3B,IAAI;CAIR;AAED,QAAA,MAAM,uBAAuB,qBAA4B,CAAC;AAC1D,eAAe,uBAAuB,CAAC"}
|
|
@@ -66,6 +66,6 @@ export default class SVGUtils {
|
|
|
66
66
|
ccCheckStretchAreas(content: string, newWidthCM: number, newHeightCM: number, useglobalSvgScale: boolean, svgMinBorderXVal: number, svgMinBorderYVal: number, callback: any, svgSourceUrl?: string, keep?: {
|
|
67
67
|
width?: boolean;
|
|
68
68
|
depth?: boolean;
|
|
69
|
-
}): import("@crystaldesign/planner-
|
|
69
|
+
}): import("@crystaldesign/planner-core").StretchSizes;
|
|
70
70
|
}
|
|
71
71
|
//# sourceMappingURL=SVGUtils.d.ts.map
|
|
@@ -3,6 +3,11 @@ import { Nav3DMode, Nav3DParams } from '../../../interface/FunctionTypes';
|
|
|
3
3
|
import { ApiSettignsParams, ApiSettingsRetunParam, CallbackFunctionsParams, HandleReceiveRendering, Hybrid3DInfo_Camera, OnConnectionInitParams, Request3DParameter } from './types';
|
|
4
4
|
import HQRenderScript from './HQRenderScript';
|
|
5
5
|
import { Project3dType } from '../../../interface/Planner/Project3DTypes';
|
|
6
|
+
/**
|
|
7
|
+
* The renderer the AR landing page (`packages/ar-viewer`) renders a live planning with: `rtv-next` for plannings from the
|
|
8
|
+
* rtv-next planner. Absent = the legacy real-time viewer. The page keeps the same type (`usePlannerObserver`).
|
|
9
|
+
*/
|
|
10
|
+
export type LiveArRenderer = 'rtv-next';
|
|
6
11
|
export default class PlannerHandler3D {
|
|
7
12
|
private renderCache;
|
|
8
13
|
private hqRenderScriptCache;
|
|
@@ -24,8 +29,12 @@ export default class PlannerHandler3D {
|
|
|
24
29
|
private updatePlannerHqRenderScriptInView;
|
|
25
30
|
private updatePlannerCamInfoInView;
|
|
26
31
|
private liveArSocket?;
|
|
32
|
+
/** The live AR connection's landing URL, while it is open: one per planner, so phones that joined keep the planning. */
|
|
33
|
+
private liveArConnection?;
|
|
27
34
|
private liveArClientsConnected;
|
|
28
35
|
private liveArViewerUrl?;
|
|
36
|
+
/** The renderer the AR landing page renders the planning with; unset = the legacy real-time viewer. */
|
|
37
|
+
private liveArRenderer?;
|
|
29
38
|
/** Planning hash of the last render script actually emitted to the AR clients — guards against emitting the same planning twice. */
|
|
30
39
|
private lastSentArPlanningHash?;
|
|
31
40
|
private setRotationOfOrbitCube;
|
|
@@ -191,12 +200,15 @@ export default class PlannerHandler3D {
|
|
|
191
200
|
* after any that failed. The payload is diagnostics only and is not part of any saved state.
|
|
192
201
|
*/
|
|
193
202
|
getHQRenderScriptDebugData(): object | undefined;
|
|
194
|
-
|
|
203
|
+
/** Opens the live AR connection, or returns the open one; resolves with its landing page URL. */
|
|
204
|
+
openARObserverConnection(handleNoHqrs: () => void, renderer?: LiveArRenderer): Promise<string>;
|
|
205
|
+
private connectLiveAr;
|
|
195
206
|
/**
|
|
196
207
|
* Emit a render script to the connected AR live viewer. The script for a planning can reach this
|
|
197
208
|
* from more than one source (Unity via SignalR, the render script cache), so emitting is
|
|
198
209
|
* deduplicated per planning hash — the AR client already holds that exact script.
|
|
199
210
|
*/
|
|
200
211
|
sendARRenderScript(hqRenderScript: HQRenderScript, planningHash: string): void;
|
|
212
|
+
private liveArUpdate;
|
|
201
213
|
}
|
|
202
214
|
//# sourceMappingURL=PlannerHandler3D.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlannerHandler3D.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Rendering/PlannerHandler3D.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PlannerHandler3D.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Rendering/PlannerHandler3D.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Vector2 } from '../../../model/Planner/wcVectors';
|
|
2
|
+
import type { FloorPose } from './wallBinding';
|
|
3
|
+
/** An element on the floor: its body (OLT) and its free area (OLF, else the body), each as world polygons. */
|
|
4
|
+
export interface ElementShape {
|
|
5
|
+
body: Vector2[][];
|
|
6
|
+
free: Vector2[][];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An element's zone, the area its function needs beyond its body (door swing, drawer, pull-out): its free area (OLF) with
|
|
10
|
+
* the body (OLT) cut out where the two overlap.
|
|
11
|
+
*/
|
|
12
|
+
export interface ElementZone {
|
|
13
|
+
outline: Vector2[];
|
|
14
|
+
hole?: Vector2[];
|
|
15
|
+
}
|
|
16
|
+
/** A floor pose: centre and planner rotation (deg); the wall binding's. */
|
|
17
|
+
export type { FloorPose };
|
|
18
|
+
/** Points moved rigidly from pose `from` to pose `to`: turned about `from`'s centre, then shifted onto `to`'s. */
|
|
19
|
+
export declare function movePoints(points: Vector2[], from: FloorPose, to: FloorPose): Vector2[];
|
|
20
|
+
/** The shape moved rigidly from pose `from` to pose `to` (see {@link movePoints}). */
|
|
21
|
+
export declare function moveShape(shape: ElementShape, from: FloorPose, to: FloorPose): ElementShape;
|
|
22
|
+
/** Whether two floor polygons overlap, one inside the other included; concave ones are cut into convex pieces. */
|
|
23
|
+
export declare function polygonsOverlap(a: Vector2[], b: Vector2[]): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* The zone of an element as convex floor pieces: its free area minus its body, pieces narrower than a centimetre left
|
|
26
|
+
* out. None when the free area reaches nowhere beyond the body (no OLF, or an OLF equal to or inside the OLT).
|
|
27
|
+
*/
|
|
28
|
+
export declare function getZonePieces(shape: ElementShape): Vector2[][];
|
|
29
|
+
/** The zone of an element with body `body` (OLT) and free area `free` (OLF); undefined without one (see {@link getZonePieces}). */
|
|
30
|
+
export declare function getElementZone(body: Vector2[], free: Vector2[]): ElementZone | undefined;
|
|
31
|
+
/** Whether one of the `body` polygons stands in the zone (its convex `pieces`, see {@link getZonePieces}). */
|
|
32
|
+
export declare function standsInZone(body: Vector2[][], pieces: Vector2[][]): boolean;
|
|
33
|
+
/** The shortest distance (cm) between two floor polygons; 0 where they overlap. */
|
|
34
|
+
export declare function polygonsDistance(a: Vector2[], b: Vector2[]): number;
|
|
35
|
+
/** An axis-aligned box on the floor (cm). */
|
|
36
|
+
export interface FloorBounds {
|
|
37
|
+
minX: number;
|
|
38
|
+
maxX: number;
|
|
39
|
+
minZ: number;
|
|
40
|
+
maxZ: number;
|
|
41
|
+
}
|
|
42
|
+
/** The box around floor polygons, grown by `margin` cm on every side. */
|
|
43
|
+
export declare function boundsOf(polygons: Vector2[][], margin?: number): FloorBounds;
|
|
44
|
+
/** Whether two boxes overlap or touch. */
|
|
45
|
+
export declare const boundsMeet: (a: FloorBounds, b: FloorBounds) => boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Whether two elements collide: their bodies overlap, or one's body stands in the other's free area (two free areas may
|
|
48
|
+
* overlap). With `bodiesOnly` (a guest in its carrier's slot) only the bodies count.
|
|
49
|
+
*/
|
|
50
|
+
export declare function shapesCollide(a: ElementShape, b: ElementShape, bodiesOnly?: boolean): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* How deep (cm) two elements' bodies reach into each other: the way that parts their deepest overlapping convex pieces;
|
|
53
|
+
* 0 while they only touch (overlap by no more than the tolerance, see {@link shapesCollide}) or stand apart.
|
|
54
|
+
*/
|
|
55
|
+
export declare function bodiesOverlap(a: ElementShape, b: ElementShape): number;
|
|
56
|
+
//# sourceMappingURL=elementShapes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementShapes.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/elementShapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,8GAA8G;AAC9G,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;IAClB,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,2EAA2E;AAC3E,YAAY,EAAE,SAAS,EAAE,CAAC;AAU1B,kHAAkH;AAClH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,EAAE,CASvF;AAED,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,YAAY,CAG3F;AAuFD,kHAAkH;AAClH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAGnE;AA2CD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,EAAE,EAAE,CAO9D;AAED,mIAAmI;AACnI,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,WAAW,GAAG,SAAS,CAIxF;AAED,8GAA8G;AAC9G,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,CAE5E;AAUD,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAKnE;AAED,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,yEAAyE;AACzE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,SAAI,GAAG,WAAW,CAKvE;AAED,0CAA0C;AAC1C,eAAO,MAAM,UAAU,MAAO,WAAW,KAAK,WAAW,YAAiF,CAAC;AAI3I;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,UAAQ,GAAG,OAAO,CAM3F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAKtE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementShapes.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/elementShapes.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ElementShape, FloorPose } from './elementShapes';
|
|
2
|
+
import { PlacementRules } from '../Placement/placementRules';
|
|
3
|
+
import { SlotMember } from '../Placement/placementSlots';
|
|
4
|
+
/** An element (or a door swing) as collisions see it: its body and zone, its placement types and its group as slot carrier. */
|
|
5
|
+
export interface CollisionShape {
|
|
6
|
+
shape: ElementShape;
|
|
7
|
+
types: string[];
|
|
8
|
+
group: SlotMember[];
|
|
9
|
+
}
|
|
10
|
+
/** An element of a set as the planning's collision warning checks it. */
|
|
11
|
+
export interface CollisionPart extends CollisionShape {
|
|
12
|
+
elementId: number;
|
|
13
|
+
/** Its docking group, numbered within the set. */
|
|
14
|
+
groupIndex: number;
|
|
15
|
+
layer: number;
|
|
16
|
+
/** Whether the set's construction warning (`COLLISION_MSG`) already checks it against the set's other elements. */
|
|
17
|
+
constructionChecked: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** The colliding elements of one set, with the rules of its catalog. */
|
|
20
|
+
export interface CollisionSet {
|
|
21
|
+
setId: string;
|
|
22
|
+
catalogCodex: string;
|
|
23
|
+
/** The slots its elements offer as carriers. */
|
|
24
|
+
rules: PlacementRules;
|
|
25
|
+
/** The layers that collide with each other (`checkCollisionForDifferentLayers`); any other two layers never do. */
|
|
26
|
+
collidingLayers: number[];
|
|
27
|
+
parts: CollisionPart[];
|
|
28
|
+
}
|
|
29
|
+
/** One element of a colliding pair. */
|
|
30
|
+
export interface CollisionMember {
|
|
31
|
+
setId: string;
|
|
32
|
+
elementId: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Whether one of the pair stands in a slot of the other's group (by that one's rules): no collision. The bodies have to be
|
|
36
|
+
* clear, unless the slot lets its guest reach under the carrier (a negative distance: a chair's seat under the table top).
|
|
37
|
+
*/
|
|
38
|
+
export declare function slotExempt(rulesA: PlacementRules, a: CollisionShape, rulesB: PlacementRules, b: CollisionShape): boolean;
|
|
39
|
+
/** Whether two layers of one catalog collide: the same layer, or two of its `collidingLayers`. */
|
|
40
|
+
export declare const layersCollide: (collidingLayers: number[], a: number, b: number) => boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Pairs of elements of different docking groups, over all sets, whose bodies overlap or where one body stands in the
|
|
43
|
+
* other's zone; never a slot guest clear of its carrier, in one catalog layers only as allowed, in one set only pairs
|
|
44
|
+
* COLLISION_MSG skips.
|
|
45
|
+
*/
|
|
46
|
+
export declare function findRoomCollisions(sets: CollisionSet[]): [CollisionMember, CollisionMember][];
|
|
47
|
+
/** cm around the dragged bodies within which the zones of other elements show. */
|
|
48
|
+
export declare const DRAG_ZONE_REACH = 100;
|
|
49
|
+
/** A zone a viewer shows while the user drags: whose it is, and whether a body stands in it. */
|
|
50
|
+
export interface DragZone extends CollisionMember {
|
|
51
|
+
violated: boolean;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* What a room drag or turn runs into where the pointer has the group, which makes a release there invalid: the elements
|
|
55
|
+
* whose bodies the dragged ones run into, and whether a door's clearance does.
|
|
56
|
+
*/
|
|
57
|
+
export interface DragBlock {
|
|
58
|
+
elements: CollisionMember[];
|
|
59
|
+
door: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* A live drag's preview: the move (cm / deg, about the grabbed element's centre) from where the pointer put the grabbed
|
|
63
|
+
* element to where it shows (its dock, or its pose by the room rules), the zones to show meanwhile and, while contact
|
|
64
|
+
* holds the move back, what blocks it.
|
|
65
|
+
*/
|
|
66
|
+
export interface DragPreview {
|
|
67
|
+
dx: number;
|
|
68
|
+
dz: number;
|
|
69
|
+
dRotDeg: number;
|
|
70
|
+
zones?: DragZone[];
|
|
71
|
+
blockedBy?: DragBlock;
|
|
72
|
+
}
|
|
73
|
+
/** What the user drags: elements of one set that move as one (a docking group), and the guests that go with them. */
|
|
74
|
+
export interface DraggedUnit {
|
|
75
|
+
setId: string;
|
|
76
|
+
elementIds: number[];
|
|
77
|
+
/** The guests that follow the dragged elements (any set, with their docking groups). */
|
|
78
|
+
followers?: CollisionMember[];
|
|
79
|
+
/** Where the viewer shows them when that is not where the planner holds them (a dock snap): the rigid move there. */
|
|
80
|
+
shownAt?: {
|
|
81
|
+
from: FloorPose;
|
|
82
|
+
to: FloorPose;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The zones to show while `dragged` moves: its own and other elements' within `reach` cm of its bodies, each violated
|
|
87
|
+
* while a body of the other side stands in it (layer and slot-guest exemptions as in {@link findRoomCollisions}).
|
|
88
|
+
*/
|
|
89
|
+
export declare function findDragZones(sets: CollisionSet[], dragged: DraggedUnit, reach?: number): DragZone[];
|
|
90
|
+
//# sourceMappingURL=roomCollisions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomCollisions.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomCollisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,SAAS,EAMV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAiE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAExH,+HAA+H;AAC/H,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,mHAAmH;IACnH,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,KAAK,EAAE,cAAc,CAAC;IACtB,mHAAmH;IACnH,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AASD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,OAAO,CAGxH;AAED,kGAAkG;AAClG,eAAO,MAAM,aAAa,oBAAqB,MAAM,EAAE,KAAK,MAAM,KAAK,MAAM,YACJ,CAAC;AAW1E;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE,CAc7F;AAED,kFAAkF;AAClF,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,gGAAgG;AAChG,MAAM,WAAW,QAAS,SAAQ,eAAe;IAC/C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,qHAAqH;AACrH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,wFAAwF;IACxF,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,qHAAqH;IACrH,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,EAAE,EAAE,SAAS,CAAA;KAAE,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,SAAkB,GAAG,QAAQ,EAAE,CA0C7G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomCollisions.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomCollisions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import PlannerElementData from '../../../model/Planner/PlannerElementData';
|
|
2
|
+
import { FloorPose, WallBlock } from './wallBinding';
|
|
3
|
+
import { ElementGeoExtent } from '../../../interface/Planner/RoomSceneTypes';
|
|
4
|
+
import { ElementShape } from './elementShapes';
|
|
5
|
+
/** Whether two measured extents agree within {@link GEO_EXTENT_TOLERANCE}; a missing one only matches a missing one. */
|
|
6
|
+
export declare function sameGeoExtent(a: ElementGeoExtent | undefined, b: ElementGeoExtent | undefined): boolean;
|
|
7
|
+
/** A group's footprint in one rotation frame: bounding-box centre (world) and the block it forms. */
|
|
8
|
+
export interface GroupBlock extends FloorPose {
|
|
9
|
+
block: WallBlock;
|
|
10
|
+
}
|
|
11
|
+
/** Elements connected through docked docking points (the viewer's docking groups), singles included. */
|
|
12
|
+
export declare function getDockingGroups(elements: PlannerElementData[]): PlannerElementData[][];
|
|
13
|
+
/**
|
|
14
|
+
* The element's body and free area as world polygons: the body its OLT (polygon, else rectangle, see
|
|
15
|
+
* `getOLTOutlineWorldPos`), only without one width × depth; the free area its OLF, else the body. With `measured` each
|
|
16
|
+
* gets whatever of the 3D geometry the viewer measured reaches beyond the body (a headboard leaning back).
|
|
17
|
+
*/
|
|
18
|
+
export declare function getElementShape(element: PlannerElementData, measured?: boolean): ElementShape;
|
|
19
|
+
/** Combined footprint (bodies) of `members` as a block in the frame rotated by `rotDeg`. */
|
|
20
|
+
export declare function getGroupBlock(members: PlannerElementData[], rotDeg: number): GroupBlock;
|
|
21
|
+
/** Shortest signed turn from `fromDeg` to `toDeg`, in [-180, 180). */
|
|
22
|
+
export declare function getTurnDeg(fromDeg: number, toDeg: number): number;
|
|
23
|
+
/** Whether two floor poses are the same, up to rounding. */
|
|
24
|
+
export declare function isSamePose(a: FloorPose, b: FloorPose): boolean;
|
|
25
|
+
/** Moves `members` rigidly so the pose `from` (centre + rotation) lands on `to`. */
|
|
26
|
+
export declare function moveGroupRigidly(members: PlannerElementData[], from: FloorPose, to: FloorPose): void;
|
|
27
|
+
/**
|
|
28
|
+
* Which end of a group (in the frame rotated by `frameRotDeg`) a corner element needs flush in a room corner: its `side`
|
|
29
|
+
* ('left' = its local -x side, 'right', 'any'), only when that side is an end of the group. Undefined otherwise.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getCornerEnd(members: PlannerElementData[], frameRotDeg: number, corner: PlannerElementData, side: 'left' | 'right' | 'any'): 'min' | 'max' | 'any' | undefined;
|
|
32
|
+
//# sourceMappingURL=roomGroups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomGroups.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomGroups.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,2CAA2C,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,wHAAwH;AACxH,wBAAgB,aAAa,CAAC,CAAC,EAAE,gBAAgB,GAAG,SAAS,EAAE,CAAC,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAGvG;AAED,qGAAqG;AACrG,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,EAAE,CA+BvF;AA+BD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,UAAO,GAAG,YAAY,CAiB1F;AAYD,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,CAkBvF;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjE;AAKD,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAK9D;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,QAQ7F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,kBAAkB,EAAE,EAC7B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAC7B,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAWnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomGroups.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomGroups.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomProperties.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomProperties.test.ts"],"names":[],"mappings":"AACA,OAAO,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SceneEntry } from '../../../interface/Planner/RoomSceneTypes';
|
|
2
|
+
/**
|
|
3
|
+
* Whether `scene` is the implicit white room the viewer falls back to without catalog scenes. A planning does not save it:
|
|
4
|
+
* it was never chosen, so a catalog that adds scenes later opens the planning in its default scene.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isImplicitWhiteRoom(scene: SceneEntry | undefined): boolean;
|
|
7
|
+
/** Scene list injected by `?rtv-room` when the catalog has no scenes: the white room and one demo room. */
|
|
8
|
+
export declare const DEMO_ROOM_SCENES: SceneEntry[];
|
|
9
|
+
export interface RoomScenes {
|
|
10
|
+
scenes: SceneEntry[];
|
|
11
|
+
defaultSceneId: string;
|
|
12
|
+
/** The `?rtv-room` demo list is in use. */
|
|
13
|
+
isDemo: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Scene list and default scene of an RTV_PRESET bundle, without scenes whose id an earlier one has; without scenes the
|
|
17
|
+
* white room (or the demo list). The default is the preset's `defaultSceneId`, else the first scene; with `preferRoom`
|
|
18
|
+
* (the catalog's `DEFAULT_DO_SHOW_ROOM`) it is a scene with a room: that one when it has one, else the first that does.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveRoomScenes(rtvPreset: Record<string, unknown> | undefined, useDemoScenes: boolean, preferRoom?: boolean): RoomScenes;
|
|
21
|
+
//# sourceMappingURL=roomScenes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomScenes.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomScenes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAMvE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAE1E;AAED,2GAA2G;AAC3G,eAAO,MAAM,gBAAgB,EAAE,UAAU,EAiBxC,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;CACjB;AAcD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,UAAQ,GAAG,UAAU,CAYxI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomScenes.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomScenes.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RoomDefinition } from '../../../interface/Planner/RoomSceneTypes';
|
|
2
|
+
/** Whether the value is a plain object (no array) whose fields can be read. */
|
|
3
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
4
|
+
/** Twice the signed area of a footprint (shoelace); its sign is the loop's winding. */
|
|
5
|
+
export declare function doubleArea(footprint: [number, number][]): number;
|
|
6
|
+
/**
|
|
7
|
+
* A clean copy of `value` when it is a usable room, else undefined: at least 3 distinct finite [x, z] corners enclosing
|
|
8
|
+
* an area (repeated corners dropped, corners on a straight wall merged), `height` > 0 and `wallThickness` ≥ 0. Invalid
|
|
9
|
+
* openings (off their wall, negative, reaching past the wall end), look fields of the wrong type and a light preset not
|
|
10
|
+
* in `LIGHT_PRESETS` (the room is then lit by day) are dropped.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateRoomDefinition(value: unknown): RoomDefinition | undefined;
|
|
13
|
+
//# sourceMappingURL=roomValidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomValidation.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmE,MAAM,2CAA2C,CAAC;AAQ5I,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAsCD,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAKhE;AA+FD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAkBjF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roomValidation.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/roomValidation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** The rtv-next features a catalog can switch on or off. */
|
|
2
|
+
export interface RtvFeatures {
|
|
3
|
+
/** Swapping doors in 3D in the door planner step; off, the step keeps its 2D strip. */
|
|
4
|
+
doorSwap3D: boolean;
|
|
5
|
+
/** The gesture hints (a hand demonstrating a drag, once per browser session). */
|
|
6
|
+
coachHints: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** What a catalog says through its properties: a value per feature it sets, none for one it leaves to the preset. */
|
|
9
|
+
export type RtvFeatureOverrides = Partial<RtvFeatures>;
|
|
10
|
+
/** Without a word from the catalog or its RTV_PRESET, every feature is on. */
|
|
11
|
+
export declare const DEFAULT_RTV_FEATURES: RtvFeatures;
|
|
12
|
+
/**
|
|
13
|
+
* The features in effect: a catalog property decides where it is set; else the RTV_PRESET's `features` block; else
|
|
14
|
+
* {@link DEFAULT_RTV_FEATURES}. A preset value that is no boolean is ignored.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveRtvFeatures(rtvPreset: Record<string, unknown> | undefined, overrides?: RtvFeatureOverrides): RtvFeatures;
|
|
17
|
+
//# sourceMappingURL=rtvFeatures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtvFeatures.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/rtvFeatures.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC1B,uFAAuF;IACvF,UAAU,EAAE,OAAO,CAAC;IACpB,iFAAiF;IACjF,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,qHAAqH;AACrH,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEvD,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,EAAE,WAAoD,CAAC;AAExF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,SAAS,GAAE,mBAAwB,GAAG,WAAW,CAUnI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtvFeatures.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/logic/Planner/Room/rtvFeatures.test.ts"],"names":[],"mappings":""}
|