@nice2dev/spatial-core 1.1.6 → 1.1.9

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.
Files changed (64) hide show
  1. package/dist/bim/index.d.ts +1 -1
  2. package/dist/cad/index.d.ts +1 -1
  3. package/dist/export/index.d.ts +1 -1
  4. package/dist/export/index.js +1 -1
  5. package/dist/floor-plan/index.d.ts +3 -3
  6. package/dist/import/import.worker.d.ts +1 -1
  7. package/dist/import/import.worker.js +1 -1
  8. package/dist/import/index.d.ts +3 -3
  9. package/dist/import/index.js +1 -1
  10. package/dist/import/workerImport.d.ts +1 -1
  11. package/dist/import/workerImport.js +1 -1
  12. package/dist/index.d.ts +15 -15
  13. package/dist/index.js +15 -15
  14. package/dist/measurement/index.d.ts +1 -1
  15. package/dist/objects/index.d.ts +2 -1
  16. package/dist/objects/index.js +36 -36
  17. package/dist/serialization/index.d.ts +1 -1
  18. package/dist/topology/index.d.ts +1 -1
  19. package/dist/transitions/index.d.ts +1 -1
  20. package/dist/unified/index.d.ts +2 -2
  21. package/dist/virtualization/ViewportCulling.d.ts +1 -1
  22. package/dist/virtualization/index.d.ts +2 -2
  23. package/dist/virtualization/index.js +2 -2
  24. package/package.json +2 -1
  25. package/dist/bim/index.d.ts.map +0 -1
  26. package/dist/bim/index.js.map +0 -1
  27. package/dist/cad/index.d.ts.map +0 -1
  28. package/dist/cad/index.js.map +0 -1
  29. package/dist/ecad/index.d.ts.map +0 -1
  30. package/dist/ecad/index.js.map +0 -1
  31. package/dist/export/index.d.ts.map +0 -1
  32. package/dist/export/index.js.map +0 -1
  33. package/dist/floor-plan/index.d.ts.map +0 -1
  34. package/dist/floor-plan/index.js.map +0 -1
  35. package/dist/grid/index.d.ts.map +0 -1
  36. package/dist/grid/index.js.map +0 -1
  37. package/dist/import/import.worker.d.ts.map +0 -1
  38. package/dist/import/import.worker.js.map +0 -1
  39. package/dist/import/index.d.ts.map +0 -1
  40. package/dist/import/index.js.map +0 -1
  41. package/dist/import/workerImport.d.ts.map +0 -1
  42. package/dist/import/workerImport.js.map +0 -1
  43. package/dist/index.d.ts.map +0 -1
  44. package/dist/index.js.map +0 -1
  45. package/dist/interior/index.d.ts.map +0 -1
  46. package/dist/interior/index.js.map +0 -1
  47. package/dist/measurement/index.d.ts.map +0 -1
  48. package/dist/measurement/index.js.map +0 -1
  49. package/dist/objects/index.d.ts.map +0 -1
  50. package/dist/objects/index.js.map +0 -1
  51. package/dist/serialization/index.d.ts.map +0 -1
  52. package/dist/serialization/index.js.map +0 -1
  53. package/dist/topology/index.d.ts.map +0 -1
  54. package/dist/topology/index.js.map +0 -1
  55. package/dist/transitions/index.d.ts.map +0 -1
  56. package/dist/transitions/index.js.map +0 -1
  57. package/dist/unified/index.d.ts.map +0 -1
  58. package/dist/unified/index.js.map +0 -1
  59. package/dist/virtualization/QuadTree.d.ts.map +0 -1
  60. package/dist/virtualization/QuadTree.js.map +0 -1
  61. package/dist/virtualization/ViewportCulling.d.ts.map +0 -1
  62. package/dist/virtualization/ViewportCulling.js.map +0 -1
  63. package/dist/virtualization/index.d.ts.map +0 -1
  64. package/dist/virtualization/index.js.map +0 -1
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @module @nice2dev/spatial-core/bim
8
8
  */
9
- import type { Point2D, Point3D } from '../grid/index';
9
+ import type { Point2D, Point3D } from '../grid/index.js';
10
10
  export type IfcSchema = 'IFC2x3' | 'IFC4' | 'IFC4x3';
11
11
  export interface IfcEntity {
12
12
  id: string;
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @module @nice2dev/spatial-core/cad
8
8
  */
9
- import type { Point2D, Point3D } from '../grid/index';
9
+ import type { Point2D, Point3D } from '../grid/index.js';
10
10
  export type ConstraintKind = 'parallel' | 'perpendicular' | 'distance' | 'angle' | 'coincident' | 'tangent' | 'equal-length' | 'symmetric' | 'horizontal' | 'vertical' | 'concentric' | 'midpoint' | 'fixed';
11
11
  export interface ParametricConstraint {
12
12
  id: string;
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * @module @nice2dev/spatial-core/export
11
11
  */
12
- import type { FloorPlanDocument } from '../floor-plan';
12
+ import type { FloorPlanDocument } from '../floor-plan/index.js';
13
13
  /** Output format for document export. */
14
14
  export type DocumentExportFormat = 'nsp' | 'svg' | 'dxf' | 'png' | 'pdf';
15
15
  /** Export options. */
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * @module @nice2dev/spatial-core/export
11
11
  */
12
- import { serialize } from '../serialization';
12
+ import { serialize } from '../serialization/index.js';
13
13
  /* ================================================================
14
14
  NSP JSON EXPORT
15
15
  ================================================================ */
@@ -8,9 +8,9 @@
8
8
  *
9
9
  * @module @nice2dev/spatial-core/floor-plan
10
10
  */
11
- import type { Point2D, BoundingBox } from '../grid/index';
12
- import type { SpatialObject, RoomType } from '../objects/index';
13
- export type { SpatialObject, Room, RoomType } from '../objects/index';
11
+ import type { Point2D, BoundingBox } from '../grid/index.js';
12
+ import type { SpatialObject, RoomType } from '../objects/index.js';
13
+ export type { SpatialObject, Room, RoomType } from '../objects/index.js';
14
14
  /** Floor plan document - the root object for .nsp.json files. */
15
15
  export interface FloorPlanDocument {
16
16
  /** Optional document identifier. */
@@ -8,7 +8,7 @@
8
8
  * - Send { type: 'import', content, format, options } message
9
9
  * - Receive { type: 'result', result } or { type: 'progress', progress } messages
10
10
  */
11
- import type { FileImportFormat, FileImportOptions, FileImportResult } from './index';
11
+ import type { FileImportFormat, FileImportOptions, FileImportResult } from './index.js';
12
12
  /** Worker input message. */
13
13
  export interface ImportWorkerInput {
14
14
  type: 'import';
@@ -8,7 +8,7 @@
8
8
  * - Send { type: 'import', content, format, options } message
9
9
  * - Receive { type: 'result', result } or { type: 'progress', progress } messages
10
10
  */
11
- import { importFile } from './index';
11
+ import { importFile } from './index.js';
12
12
  /* ================================================================
13
13
  WORKER MESSAGE HANDLER
14
14
  ================================================================ */
@@ -9,8 +9,8 @@
9
9
  *
10
10
  * @module @nice2dev/spatial-core/import
11
11
  */
12
- import type { FloorPlanDocument } from '../floor-plan';
13
- import type { Point2D } from '../grid';
12
+ import type { FloorPlanDocument } from '../floor-plan/index.js';
13
+ import type { Point2D } from '../grid/index.js';
14
14
  /** Import format. */
15
15
  export type FileImportFormat = 'dxf' | 'svg' | 'geojson' | 'ifc';
16
16
  /** Import options. */
@@ -107,4 +107,4 @@ export declare function detectFileImportFormat(filename: string, content?: strin
107
107
  * Import from file (browser File API).
108
108
  */
109
109
  export declare function importFromBrowserFile(file: File, options?: Partial<FileImportOptions>): Promise<FileImportResult>;
110
- export { importFileInWorker, importFileAsync, isWorkerSupported, terminateImportWorker, createImportWorker, type WorkerImportOptions, } from './workerImport';
110
+ export { importFileInWorker, importFileAsync, isWorkerSupported, terminateImportWorker, createImportWorker, type WorkerImportOptions, } from './workerImport.js';
@@ -1088,4 +1088,4 @@ function assembleDocument(walls, zones, objects, layersFound, docInfo) {
1088
1088
  /* ================================================================
1089
1089
  WEB WORKER IMPORT (re-exported)
1090
1090
  ================================================================ */
1091
- export { importFileInWorker, importFileAsync, isWorkerSupported, terminateImportWorker, createImportWorker, } from './workerImport';
1091
+ export { importFileInWorker, importFileAsync, isWorkerSupported, terminateImportWorker, createImportWorker, } from './workerImport.js';
@@ -14,7 +14,7 @@
14
14
  * }
15
15
  * ```
16
16
  */
17
- import type { FileImportFormat, FileImportOptions, FileImportResult } from './index';
17
+ import type { FileImportFormat, FileImportOptions, FileImportResult } from './index.js';
18
18
  /** Options for worker-based import. */
19
19
  export interface WorkerImportOptions extends Partial<FileImportOptions> {
20
20
  /** Progress callback (0-100). */
@@ -191,7 +191,7 @@ export function terminateImportWorker() {
191
191
  */
192
192
  export async function importFileAsync(content, format, options = {}) {
193
193
  // Import the sync function dynamically to avoid circular deps
194
- const { importFile } = await import('./index');
194
+ const { importFile } = await import('./index.js');
195
195
  if (isWorkerSupported()) {
196
196
  try {
197
197
  return await importFileInWorker(content, format, options);
package/dist/index.d.ts CHANGED
@@ -11,18 +11,18 @@
11
11
  *
12
12
  * @module @nice2dev/spatial-core
13
13
  */
14
- export * from './grid/index';
15
- export * from './objects/index';
16
- export * from './floor-plan/index';
17
- export { convertLength, convertArea, degToRad, radToDeg, distance3D, manhattanDistance2D, manhattanDistance3D, polylineLength, polygonPerimeter, angleBetweenPoints, angleAtVertex, angleBetweenVectors, normalizeAngle, snapAngle, polygonArea, rectangleArea, circleArea, triangleArea, midpoint2D, midpoint3D, polygonCentroid, lerp2D, lerp3D, projectPointOnLine, pointToLineDistance, formatLength, formatArea, formatAngle, autoFormatLength, autoFormatArea, type UnitSystem, type LengthUnit, type AreaUnit, type AngleUnit, type MeasurementResult, } from './measurement/index';
18
- export * from './serialization/index';
19
- export * from './export/index';
20
- export * from './topology/index';
21
- export * from './import/index';
22
- export * from './virtualization/index';
23
- export * from './unified/index';
24
- export * from './transitions/index';
25
- export * from './cad/index';
26
- export * from './bim/index';
27
- export * from './interior/index';
28
- export * from './ecad/index';
14
+ export * from './grid/index.js';
15
+ export * from './objects/index.js';
16
+ export * from './floor-plan/index.js';
17
+ export { convertLength, convertArea, degToRad, radToDeg, distance3D, manhattanDistance2D, manhattanDistance3D, polylineLength, polygonPerimeter, angleBetweenPoints, angleAtVertex, angleBetweenVectors, normalizeAngle, snapAngle, polygonArea, rectangleArea, circleArea, triangleArea, midpoint2D, midpoint3D, polygonCentroid, lerp2D, lerp3D, projectPointOnLine, pointToLineDistance, formatLength, formatArea, formatAngle, autoFormatLength, autoFormatArea, type UnitSystem, type LengthUnit, type AreaUnit, type AngleUnit, type MeasurementResult, } from './measurement/index.js';
18
+ export * from './serialization/index.js';
19
+ export * from './export/index.js';
20
+ export * from './topology/index.js';
21
+ export * from './import/index.js';
22
+ export * from './virtualization/index.js';
23
+ export * from './unified/index.js';
24
+ export * from './transitions/index.js';
25
+ export * from './cad/index.js';
26
+ export * from './bim/index.js';
27
+ export * from './interior/index.js';
28
+ export * from './ecad/index.js';
package/dist/index.js CHANGED
@@ -14,15 +14,15 @@
14
14
  // ═══════════════════════════════════════════════════════════════════════════════
15
15
  // Grid System
16
16
  // ═══════════════════════════════════════════════════════════════════════════════
17
- export * from './grid/index';
17
+ export * from './grid/index.js';
18
18
  // ═══════════════════════════════════════════════════════════════════════════════
19
19
  // Spatial Objects
20
20
  // ═══════════════════════════════════════════════════════════════════════════════
21
- export * from './objects/index';
21
+ export * from './objects/index.js';
22
22
  // ═══════════════════════════════════════════════════════════════════════════════
23
23
  // Floor Plan Model
24
24
  // ═══════════════════════════════════════════════════════════════════════════════
25
- export * from './floor-plan/index';
25
+ export * from './floor-plan/index.js';
26
26
  // ═══════════════════════════════════════════════════════════════════════════════
27
27
  // Measurement Utilities (excluding distance2D which is in grid)
28
28
  // ═══════════════════════════════════════════════════════════════════════════════
@@ -38,48 +38,48 @@ polygonArea, rectangleArea, circleArea, triangleArea,
38
38
  // Points
39
39
  midpoint2D, midpoint3D, polygonCentroid, lerp2D, lerp3D, projectPointOnLine, pointToLineDistance,
40
40
  // Formatting
41
- formatLength, formatArea, formatAngle, autoFormatLength, autoFormatArea, } from './measurement/index';
41
+ formatLength, formatArea, formatAngle, autoFormatLength, autoFormatArea, } from './measurement/index.js';
42
42
  // ═══════════════════════════════════════════════════════════════════════════════
43
43
  // Serialization
44
44
  // ═══════════════════════════════════════════════════════════════════════════════
45
- export * from './serialization/index';
45
+ export * from './serialization/index.js';
46
46
  // ═══════════════════════════════════════════════════════════════════════════════
47
47
  // Export (to various formats: NSP, SVG, DXF, PNG, PDF)
48
48
  // ═══════════════════════════════════════════════════════════════════════════════
49
- export * from './export/index';
49
+ export * from './export/index.js';
50
50
  // ═══════════════════════════════════════════════════════════════════════════════
51
51
  // Topology Layer (network connections, cable routing, coverage)
52
52
  // ═══════════════════════════════════════════════════════════════════════════════
53
- export * from './topology/index';
53
+ export * from './topology/index.js';
54
54
  // ═══════════════════════════════════════════════════════════════════════════════
55
55
  // Import (from DXF, SVG, GeoJSON, IFC)
56
56
  // ═══════════════════════════════════════════════════════════════════════════════
57
- export * from './import/index';
57
+ export * from './import/index.js';
58
58
  // ═══════════════════════════════════════════════════════════════════════════════
59
59
  // Virtualization (QuadTree, viewport culling for 1000+ objects)
60
60
  // ═══════════════════════════════════════════════════════════════════════════════
61
- export * from './virtualization/index';
61
+ export * from './virtualization/index.js';
62
62
  // ═══════════════════════════════════════════════════════════════════════════════
63
63
  // Unified 2D↔3D System (Shared Object Model, References, Materials, Layers)
64
64
  // ═══════════════════════════════════════════════════════════════════════════════
65
- export * from './unified/index';
65
+ export * from './unified/index.js';
66
66
  // ═══════════════════════════════════════════════════════════════════════════════
67
67
  // Editor Transitions (Quick Switch, Split View, Cross-Editor Undo, Bookmarks)
68
68
  // ═══════════════════════════════════════════════════════════════════════════════
69
- export * from './transitions/index';
69
+ export * from './transitions/index.js';
70
70
  // ═══════════════════════════════════════════════════════════════════════════════
71
71
  // Professional CAD (Parametric Constraints, Boolean Ops, Assembly, FEA)
72
72
  // ═══════════════════════════════════════════════════════════════════════════════
73
- export * from './cad/index';
73
+ export * from './cad/index.js';
74
74
  // ═══════════════════════════════════════════════════════════════════════════════
75
75
  // BIM / AEC (IFC, Revit, MEP, Clash Detection, 4D/5D, Digital Twin)
76
76
  // ═══════════════════════════════════════════════════════════════════════════════
77
- export * from './bim/index';
77
+ export * from './bim/index.js';
78
78
  // ═══════════════════════════════════════════════════════════════════════════════
79
79
  // Interior Design (Furniture, Lighting, Materials, Styles, Budget)
80
80
  // ═══════════════════════════════════════════════════════════════════════════════
81
- export * from './interior/index';
81
+ export * from './interior/index.js';
82
82
  // ═══════════════════════════════════════════════════════════════════════════════
83
83
  // Electrical & Electronics CAD (Schematic, PCB, SPICE, Harness, Panel, SLD)
84
84
  // ═══════════════════════════════════════════════════════════════════════════════
85
- export * from './ecad/index';
85
+ export * from './ecad/index.js';
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * @module @nice2dev/spatial-core/measurement
9
9
  */
10
- import type { Point2D, Point3D } from '../grid/index';
10
+ import type { Point2D, Point3D } from '../grid/index.js';
11
11
  /** Unit system. */
12
12
  export type UnitSystem = 'metric' | 'imperial';
13
13
  /** Length unit. */
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * @module @nice2dev/spatial-core/objects
10
10
  */
11
- import type { Point2D, Point3D, BoundingBox } from '../grid/index';
11
+ import type { Point2D, Point3D, BoundingBox } from '../grid/index.js';
12
12
  /** Transform in 2D space. */
13
13
  export interface Transform2D {
14
14
  position: Point2D;
@@ -255,6 +255,7 @@ export interface CatalogItem {
255
255
  name: string;
256
256
  category: ObjectCategory;
257
257
  type: string;
258
+ /** NiceIcon name (e.g. `lightbulb`, `camera`). */
258
259
  icon?: string;
259
260
  thumbnail?: string;
260
261
  description?: string;
@@ -16,7 +16,7 @@ export const OBJECT_CATALOG = [
16
16
  name: 'Smart Bulb',
17
17
  category: 'smart-home',
18
18
  type: 'light',
19
- icon: '💡',
19
+ icon: 'lightbulb',
20
20
  tags: ['lighting', 'bulb'],
21
21
  },
22
22
  {
@@ -24,7 +24,7 @@ export const OBJECT_CATALOG = [
24
24
  name: 'Dimmer Switch',
25
25
  category: 'smart-home',
26
26
  type: 'light-dimmer',
27
- icon: '🔆',
27
+ icon: 'lightbulb',
28
28
  tags: ['lighting', 'switch'],
29
29
  },
30
30
  {
@@ -32,7 +32,7 @@ export const OBJECT_CATALOG = [
32
32
  name: 'RGB Light',
33
33
  category: 'smart-home',
34
34
  type: 'light-rgb',
35
- icon: '🌈',
35
+ icon: 'lightbulb',
36
36
  tags: ['lighting', 'color'],
37
37
  },
38
38
  {
@@ -40,7 +40,7 @@ export const OBJECT_CATALOG = [
40
40
  name: 'LED Strip',
41
41
  category: 'smart-home',
42
42
  type: 'light-strip',
43
- icon: '💡',
43
+ icon: 'lightbulb',
44
44
  tags: ['lighting', 'strip'],
45
45
  },
46
46
  // Smart Home - Climate
@@ -49,7 +49,7 @@ export const OBJECT_CATALOG = [
49
49
  name: 'Thermostat',
50
50
  category: 'smart-home',
51
51
  type: 'thermostat',
52
- icon: '🌡️',
52
+ icon: 'thermometer',
53
53
  tags: ['climate', 'temperature'],
54
54
  },
55
55
  {
@@ -57,7 +57,7 @@ export const OBJECT_CATALOG = [
57
57
  name: 'HVAC Unit',
58
58
  category: 'smart-home',
59
59
  type: 'hvac',
60
- icon: '❄️',
60
+ icon: 'thermometer',
61
61
  tags: ['climate', 'cooling', 'heating'],
62
62
  },
63
63
  {
@@ -65,7 +65,7 @@ export const OBJECT_CATALOG = [
65
65
  name: 'Smart Fan',
66
66
  category: 'smart-home',
67
67
  type: 'fan',
68
- icon: '💨',
68
+ icon: 'wifi',
69
69
  tags: ['climate', 'fan'],
70
70
  },
71
71
  // Smart Home - Security
@@ -74,7 +74,7 @@ export const OBJECT_CATALOG = [
74
74
  name: 'Security Camera',
75
75
  category: 'smart-home',
76
76
  type: 'camera',
77
- icon: '📷',
77
+ icon: 'camera',
78
78
  tags: ['security', 'camera'],
79
79
  },
80
80
  {
@@ -82,7 +82,7 @@ export const OBJECT_CATALOG = [
82
82
  name: 'Video Doorbell',
83
83
  category: 'smart-home',
84
84
  type: 'camera-doorbell',
85
- icon: '🔔',
85
+ icon: 'bell',
86
86
  tags: ['security', 'doorbell'],
87
87
  },
88
88
  {
@@ -90,7 +90,7 @@ export const OBJECT_CATALOG = [
90
90
  name: 'Smart Lock',
91
91
  category: 'smart-home',
92
92
  type: 'lock',
93
- icon: '🔒',
93
+ icon: 'lock',
94
94
  tags: ['security', 'lock'],
95
95
  },
96
96
  {
@@ -98,7 +98,7 @@ export const OBJECT_CATALOG = [
98
98
  name: 'Motion Sensor',
99
99
  category: 'smart-home',
100
100
  type: 'sensor-motion',
101
- icon: '👁️',
101
+ icon: 'eye',
102
102
  tags: ['security', 'sensor'],
103
103
  },
104
104
  {
@@ -106,7 +106,7 @@ export const OBJECT_CATALOG = [
106
106
  name: 'Door Sensor',
107
107
  category: 'smart-home',
108
108
  type: 'sensor-door',
109
- icon: '🚪',
109
+ icon: 'door',
110
110
  tags: ['security', 'sensor'],
111
111
  },
112
112
  // Smart Home - Audio/Video
@@ -115,7 +115,7 @@ export const OBJECT_CATALOG = [
115
115
  name: 'Smart Speaker',
116
116
  category: 'smart-home',
117
117
  type: 'speaker',
118
- icon: '🔊',
118
+ icon: 'wifi',
119
119
  tags: ['audio', 'speaker'],
120
120
  },
121
121
  {
@@ -123,7 +123,7 @@ export const OBJECT_CATALOG = [
123
123
  name: 'Voice Assistant',
124
124
  category: 'smart-home',
125
125
  type: 'voice-assistant',
126
- icon: '🗣️',
126
+ icon: 'mic',
127
127
  tags: ['audio', 'assistant'],
128
128
  },
129
129
  {
@@ -131,7 +131,7 @@ export const OBJECT_CATALOG = [
131
131
  name: 'Smart TV',
132
132
  category: 'smart-home',
133
133
  type: 'tv',
134
- icon: '📺',
134
+ icon: 'monitor',
135
135
  tags: ['video', 'tv'],
136
136
  },
137
137
  // Furniture - Seating
@@ -264,7 +264,7 @@ export const OBJECT_CATALOG = [
264
264
  name: 'Router',
265
265
  category: 'network',
266
266
  type: 'router',
267
- icon: '📡',
267
+ icon: 'wifi',
268
268
  tags: ['network', 'router'],
269
269
  },
270
270
  {
@@ -272,7 +272,7 @@ export const OBJECT_CATALOG = [
272
272
  name: '24-Port Switch',
273
273
  category: 'network',
274
274
  type: 'switch',
275
- icon: '🔌',
275
+ icon: 'plug',
276
276
  tags: ['network', 'switch'],
277
277
  },
278
278
  {
@@ -280,7 +280,7 @@ export const OBJECT_CATALOG = [
280
280
  name: '48-Port Switch',
281
281
  category: 'network',
282
282
  type: 'switch',
283
- icon: '🔌',
283
+ icon: 'plug',
284
284
  tags: ['network', 'switch'],
285
285
  },
286
286
  {
@@ -288,7 +288,7 @@ export const OBJECT_CATALOG = [
288
288
  name: 'Firewall',
289
289
  category: 'network',
290
290
  type: 'firewall',
291
- icon: '🛡️',
291
+ icon: 'lock',
292
292
  tags: ['network', 'security'],
293
293
  },
294
294
  {
@@ -296,7 +296,7 @@ export const OBJECT_CATALOG = [
296
296
  name: 'WiFi Access Point',
297
297
  category: 'network',
298
298
  type: 'access-point',
299
- icon: '📶',
299
+ icon: 'wifi',
300
300
  tags: ['network', 'wifi'],
301
301
  },
302
302
  {
@@ -304,7 +304,7 @@ export const OBJECT_CATALOG = [
304
304
  name: 'Server',
305
305
  category: 'network',
306
306
  type: 'server',
307
- icon: '🖥️',
307
+ icon: 'monitor',
308
308
  tags: ['network', 'server'],
309
309
  },
310
310
  {
@@ -312,7 +312,7 @@ export const OBJECT_CATALOG = [
312
312
  name: 'NAS Storage',
313
313
  category: 'network',
314
314
  type: 'nas',
315
- icon: '💾',
315
+ icon: 'database',
316
316
  tags: ['network', 'storage'],
317
317
  },
318
318
  // Infrastructure
@@ -321,7 +321,7 @@ export const OBJECT_CATALOG = [
321
321
  name: '42U Rack',
322
322
  category: 'infrastructure',
323
323
  type: 'rack-42u',
324
- icon: '🗄️',
324
+ icon: 'server',
325
325
  defaultSize: { x: 0.6, y: 1.0, z: 2.0 },
326
326
  tags: ['datacenter', 'rack'],
327
327
  },
@@ -330,7 +330,7 @@ export const OBJECT_CATALOG = [
330
330
  name: '24U Rack',
331
331
  category: 'infrastructure',
332
332
  type: 'rack-24u',
333
- icon: '🗄️',
333
+ icon: 'server',
334
334
  defaultSize: { x: 0.6, y: 1.0, z: 1.2 },
335
335
  tags: ['datacenter', 'rack'],
336
336
  },
@@ -339,7 +339,7 @@ export const OBJECT_CATALOG = [
339
339
  name: 'UPS',
340
340
  category: 'infrastructure',
341
341
  type: 'ups-floor',
342
- icon: '🔋',
342
+ icon: 'zap',
343
343
  tags: ['datacenter', 'power'],
344
344
  },
345
345
  {
@@ -347,7 +347,7 @@ export const OBJECT_CATALOG = [
347
347
  name: 'PDU',
348
348
  category: 'infrastructure',
349
349
  type: 'pdu-vertical',
350
- icon: '⚡',
350
+ icon: 'zap',
351
351
  tags: ['datacenter', 'power'],
352
352
  },
353
353
  {
@@ -355,7 +355,7 @@ export const OBJECT_CATALOG = [
355
355
  name: 'CRAC Unit',
356
356
  category: 'infrastructure',
357
357
  type: 'cooling-crac',
358
- icon: '❄️',
358
+ icon: 'thermometer',
359
359
  tags: ['datacenter', 'cooling'],
360
360
  },
361
361
  // Building Elements
@@ -364,7 +364,7 @@ export const OBJECT_CATALOG = [
364
364
  name: 'Wall',
365
365
  category: 'building',
366
366
  type: 'wall',
367
- icon: '🧱',
367
+ icon: 'square',
368
368
  tags: ['building', 'wall'],
369
369
  },
370
370
  {
@@ -372,7 +372,7 @@ export const OBJECT_CATALOG = [
372
372
  name: 'Door',
373
373
  category: 'building',
374
374
  type: 'door',
375
- icon: '🚪',
375
+ icon: 'door',
376
376
  tags: ['building', 'door'],
377
377
  },
378
378
  {
@@ -380,7 +380,7 @@ export const OBJECT_CATALOG = [
380
380
  name: 'Window',
381
381
  category: 'building',
382
382
  type: 'window',
383
- icon: '🪟',
383
+ icon: 'window',
384
384
  tags: ['building', 'window'],
385
385
  },
386
386
  {
@@ -388,7 +388,7 @@ export const OBJECT_CATALOG = [
388
388
  name: 'Staircase',
389
389
  category: 'building',
390
390
  type: 'stair',
391
- icon: '🪜',
391
+ icon: 'stairs',
392
392
  tags: ['building', 'stair'],
393
393
  },
394
394
  // Game Objects
@@ -397,7 +397,7 @@ export const OBJECT_CATALOG = [
397
397
  name: 'Spawn Point',
398
398
  category: 'game',
399
399
  type: 'spawn-point',
400
- icon: '🎯',
400
+ icon: 'target',
401
401
  tags: ['game', 'spawn'],
402
402
  },
403
403
  {
@@ -405,7 +405,7 @@ export const OBJECT_CATALOG = [
405
405
  name: 'Checkpoint',
406
406
  category: 'game',
407
407
  type: 'checkpoint',
408
- icon: '🏁',
408
+ icon: 'target',
409
409
  tags: ['game', 'checkpoint'],
410
410
  },
411
411
  {
@@ -413,7 +413,7 @@ export const OBJECT_CATALOG = [
413
413
  name: 'Trigger Zone',
414
414
  category: 'game',
415
415
  type: 'trigger-zone',
416
- icon: '⚡',
416
+ icon: 'zap',
417
417
  tags: ['game', 'trigger'],
418
418
  },
419
419
  {
@@ -421,7 +421,7 @@ export const OBJECT_CATALOG = [
421
421
  name: 'Item Pickup',
422
422
  category: 'game',
423
423
  type: 'item-pickup',
424
- icon: '📦',
424
+ icon: 'box',
425
425
  tags: ['game', 'item'],
426
426
  },
427
427
  {
@@ -429,7 +429,7 @@ export const OBJECT_CATALOG = [
429
429
  name: 'Enemy Spawner',
430
430
  category: 'game',
431
431
  type: 'enemy-spawner',
432
- icon: '👾',
432
+ icon: 'gamepad',
433
433
  tags: ['game', 'enemy'],
434
434
  },
435
435
  ];
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * @module @nice2dev/spatial-core/serialization
12
12
  */
13
- import type { FloorPlanDocument, Floor } from '../floor-plan/index';
13
+ import type { FloorPlanDocument, Floor } from '../floor-plan/index.js';
14
14
  /** Serialization options. */
15
15
  export interface SerializationOptions {
16
16
  /** Pretty print JSON (default: false). */
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * @module @nice2dev/spatial-core/topology
12
12
  */
13
- import type { Point2D, BoundingBox } from '../grid';
13
+ import type { Point2D, BoundingBox } from '../grid/index.js';
14
14
  /** Connection medium type. */
15
15
  export type ConnectionMedium = 'ethernet-cat5' | 'ethernet-cat6' | 'ethernet-cat6a' | 'ethernet-cat7' | 'fiber-single' | 'fiber-multi' | 'coax' | 'power-line' | 'wifi-2.4ghz' | 'wifi-5ghz' | 'wifi-6ghz' | 'bluetooth' | 'zigbee' | 'z-wave' | 'thread' | 'matter' | 'lora' | 'cellular-4g' | 'cellular-5g' | 'serial' | 'usb' | 'hdmi' | 'displayport' | 'custom';
16
16
  /** Connection status. */
@@ -14,7 +14,7 @@
14
14
  *
15
15
  * @module @nice2dev/spatial-core/transitions
16
16
  */
17
- import type { Point2D, Point3D } from '../grid/index';
17
+ import type { Point2D, Point3D } from '../grid/index.js';
18
18
  export type ActiveEditor = '2d' | '3d' | 'split';
19
19
  export interface EditorTransitionState {
20
20
  /** Currently active editor */
@@ -14,8 +14,8 @@
14
14
  *
15
15
  * @module @nice2dev/spatial-core/unified
16
16
  */
17
- import type { Point2D, Point3D } from '../grid/index';
18
- import type { SpatialObject, Transform2D, Transform3D } from '../objects/index';
17
+ import type { Point2D, Point3D } from '../grid/index.js';
18
+ import type { SpatialObject, Transform2D, Transform3D } from '../objects/index.js';
19
19
  /** SpatialObject3D extends the base SpatialObject with full 3D support. */
20
20
  export interface SpatialObject3D extends Omit<SpatialObject, 'transform'> {
21
21
  transform2D: Transform2D;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Calculates visible bounds and filters objects for rendering optimization.
5
5
  */
6
- import type { Bounds, QuadTree, QuadTreeItem } from './QuadTree';
6
+ import type { Bounds, QuadTree, QuadTreeItem } from './QuadTree.js';
7
7
  /** Viewport state with pan/zoom */
8
8
  export interface ViewportState {
9
9
  /** Current zoom level (1 = 100%) */
@@ -4,5 +4,5 @@
4
4
  * Provides spatial indexing (QuadTree) and viewport culling utilities
5
5
  * for rendering optimization with 1000+ objects.
6
6
  */
7
- export { QuadTree, createFloorPlanQuadTree, type Bounds, type QuadTreeItem, } from './QuadTree';
8
- export { calculateVisibleBounds, isInViewport, filterVisibleItems, queryVisibleFromQuadTree, shouldUseVirtualRendering, calculateRenderStats, createQuadTreeUpdater, type ViewportState, type ContainerSize, } from './ViewportCulling';
7
+ export { QuadTree, createFloorPlanQuadTree, type Bounds, type QuadTreeItem } from './QuadTree.js';
8
+ export { calculateVisibleBounds, isInViewport, filterVisibleItems, queryVisibleFromQuadTree, shouldUseVirtualRendering, calculateRenderStats, createQuadTreeUpdater, type ViewportState, type ContainerSize, } from './ViewportCulling.js';