kitchen-simulator 1.1.1-test.49 → 1.1.1-test.50
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/es/@history.js +2 -0
- package/es/AppContext.js +3 -0
- package/es/KitchenConfigurator.js +645 -0
- package/es/KitchenConfiguratorApp.js +480 -0
- package/es/actions/area-actions.js +14 -0
- package/es/actions/export.js +23 -0
- package/es/actions/groups-actions.js +89 -0
- package/es/actions/holes-actions.js +119 -0
- package/es/actions/items-actions.js +313 -0
- package/es/actions/lines-actions.js +81 -0
- package/es/actions/project-actions.js +281 -0
- package/es/actions/scene-actions.js +33 -0
- package/es/actions/vertices-actions.js +27 -0
- package/es/actions/viewer2d-actions.js +58 -0
- package/es/actions/viewer3d-actions.js +23 -0
- package/es/catalog/areas/area/planner-element.js +40 -0
- package/es/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
- package/es/catalog/areas/area/textures/grass.jpg +0 -0
- package/es/catalog/areas/area/textures/parquet.jpg +0 -0
- package/es/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
- package/es/catalog/areas/area/textures/tile1.jpg +0 -0
- package/es/catalog/catalog.js +277 -0
- package/es/catalog/envMap/nx.hdr +0 -0
- package/es/catalog/envMap/ny.hdr +0 -0
- package/es/catalog/envMap/nz.hdr +0 -0
- package/es/catalog/envMap/px.hdr +0 -0
- package/es/catalog/envMap/py.hdr +0 -0
- package/es/catalog/envMap/pz.hdr +0 -0
- package/es/catalog/factories/area-factory-3d.js +181 -0
- package/es/catalog/factories/area-factory.js +81 -0
- package/es/catalog/factories/export.js +7 -0
- package/es/catalog/factories/wall-factory-3d.js +202 -0
- package/es/catalog/factories/wall-factory.js +268 -0
- package/es/catalog/holes/door-closet/planner-element.js +222 -0
- package/es/catalog/holes/door-double/door_double.png +0 -0
- package/es/catalog/holes/door-double/planner-element.js +315 -0
- package/es/catalog/holes/door-exterior/planner-element.js +215 -0
- package/es/catalog/holes/door-interior/planner-element.js +227 -0
- package/es/catalog/holes/door-panic/panicDoor.png +0 -0
- package/es/catalog/holes/door-panic/planner-element.js +503 -0
- package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
- package/es/catalog/holes/door-panic-double/planner-element.js +463 -0
- package/es/catalog/holes/door-sliding/planner-element.js +225 -0
- package/es/catalog/holes/doorway-framed/planner-element.js +145 -0
- package/es/catalog/holes/doorway-frameless/planner-element.js +104 -0
- package/es/catalog/holes/export.js +13 -0
- package/es/catalog/holes/gate/gate.jpg +0 -0
- package/es/catalog/holes/window-clear/planner-element.js +166 -0
- package/es/catalog/holes/window-clear/texture.png +0 -0
- package/es/catalog/holes/window-cross/planner-element.js +165 -0
- package/es/catalog/holes/window-cross/texture.png +0 -0
- package/es/catalog/holes/window-double-hung/planner-element.js +303 -0
- package/es/catalog/holes/window-double-hung/texture.png +0 -0
- package/es/catalog/holes/window-vertical/planner-element.js +276 -0
- package/es/catalog/holes/window-vertical/texture.png +0 -0
- package/es/catalog/lines/wall/planner-element.js +70 -0
- package/es/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks2.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks3.jpg +0 -0
- package/es/catalog/lines/wall/textures/morden-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/morden.jpg +0 -0
- package/es/catalog/lines/wall/textures/painted-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/painted.jpg +0 -0
- package/es/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/plaster.jpg +0 -0
- package/es/catalog/lines/wall/wall.png +0 -0
- package/es/catalog/molding/molding-dcm/planner-element.js +28 -0
- package/es/catalog/molding/molding-dcm/texture.png +0 -0
- package/es/catalog/molding/molding-fbm/planner-element.js +28 -0
- package/es/catalog/molding/molding-fbm/texture.png +0 -0
- package/es/catalog/molding/molding-lrm/planner-element.js +28 -0
- package/es/catalog/molding/molding-lrm/texture.png +0 -0
- package/es/catalog/properties/export.js +21 -0
- package/es/catalog/properties/property-checkbox.js +116 -0
- package/es/catalog/properties/property-color.js +39 -0
- package/es/catalog/properties/property-enum.js +97 -0
- package/es/catalog/properties/property-hidden.js +19 -0
- package/es/catalog/properties/property-lenght-measure.js +101 -0
- package/es/catalog/properties/property-length-measure.js +134 -0
- package/es/catalog/properties/property-length-measure_hole.js +101 -0
- package/es/catalog/properties/property-number.js +48 -0
- package/es/catalog/properties/property-read-only.js +26 -0
- package/es/catalog/properties/property-string.js +48 -0
- package/es/catalog/properties/property-toggle.js +39 -0
- package/es/catalog/properties/shared-property-style.js +14 -0
- package/es/catalog/utils/FuseUtils.js +82 -0
- package/es/catalog/utils/exporter.js +148 -0
- package/es/catalog/utils/geom-utils.js +189 -0
- package/es/catalog/utils/item-loader.js +1521 -0
- package/es/catalog/utils/load-obj.js +91 -0
- package/es/catalog/utils/mtl-loader.js +358 -0
- package/es/catalog/utils/obj-loader.js +477 -0
- package/es/class/FuseUtils.js +82 -0
- package/es/class/area.js +145 -0
- package/es/class/export.js +24 -0
- package/es/class/group.js +440 -0
- package/es/class/guide.js +62 -0
- package/es/class/hole.js +929 -0
- package/es/class/item.js +1883 -0
- package/es/class/layer.js +667 -0
- package/es/class/line.js +1180 -0
- package/es/class/project.js +793 -0
- package/es/class/vertex.js +202 -0
- package/es/components/content.js +107 -0
- package/es/components/disclaimer/disclaimer.js +97 -0
- package/es/components/export.js +9 -0
- package/es/components/style/button.js +113 -0
- package/es/components/style/cancel-button.js +22 -0
- package/es/components/style/content-container.js +33 -0
- package/es/components/style/content-title.js +29 -0
- package/es/components/style/delete-button.js +25 -0
- package/es/components/style/export.js +31 -0
- package/es/components/style/form-block.js +24 -0
- package/es/components/style/form-color-input.js +27 -0
- package/es/components/style/form-label.js +26 -0
- package/es/components/style/form-number-input.js +213 -0
- package/es/components/style/form-number-input_2.js +206 -0
- package/es/components/style/form-select.js +68 -0
- package/es/components/style/form-slider.js +61 -0
- package/es/components/style/form-submit-button.js +26 -0
- package/es/components/style/form-text-input.js +95 -0
- package/es/components/viewer2d/area.js +81 -0
- package/es/components/viewer2d/export.js +31 -0
- package/es/components/viewer2d/grids/grid-horizontal-streak.js +37 -0
- package/es/components/viewer2d/grids/grid-streak.js +37 -0
- package/es/components/viewer2d/grids/grid-vertical-streak.js +37 -0
- package/es/components/viewer2d/grids/grids.js +35 -0
- package/es/components/viewer2d/group.js +53 -0
- package/es/components/viewer2d/item.js +513 -0
- package/es/components/viewer2d/layer.js +164 -0
- package/es/components/viewer2d/line.js +882 -0
- package/es/components/viewer2d/ruler.js +100 -0
- package/es/components/viewer2d/rulerDist.js +146 -0
- package/es/components/viewer2d/rulerX.js +151 -0
- package/es/components/viewer2d/rulerY.js +153 -0
- package/es/components/viewer2d/scene.js +140 -0
- package/es/components/viewer2d/snap.js +74 -0
- package/es/components/viewer2d/state.js +78 -0
- package/es/components/viewer2d/utils.js +198 -0
- package/es/components/viewer2d/vertex.js +65 -0
- package/es/components/viewer2d/viewer2d.js +1398 -0
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +2592 -0
- package/es/components/viewer3d/dcm.js +401 -0
- package/es/components/viewer3d/fbm.js +414 -0
- package/es/components/viewer3d/front3D.js +66 -0
- package/es/components/viewer3d/grid-creator.js +25 -0
- package/es/components/viewer3d/grids/grid-horizontal-streak.js +36 -0
- package/es/components/viewer3d/grids/grid-streak.js +27 -0
- package/es/components/viewer3d/grids/grid-vertical-streak.js +36 -0
- package/es/components/viewer3d/libs/first-person-controls.js +67 -0
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +1281 -0
- package/es/components/viewer3d/libs/mtl-loader.js +357 -0
- package/es/components/viewer3d/libs/obj-loader.js +462 -0
- package/es/components/viewer3d/libs/orbit-controls.js +699 -0
- package/es/components/viewer3d/libs/pointer-lock-controls.js +46 -0
- package/es/components/viewer3d/lrm.js +305 -0
- package/es/components/viewer3d/model.js +708 -0
- package/es/components/viewer3d/pointer-lock-navigation.js +115 -0
- package/es/components/viewer3d/ruler-utils/itemRect.js +61 -0
- package/es/components/viewer3d/ruler-utils/layer3D.js +495 -0
- package/es/components/viewer3d/ruler-utils/ruler3D.js +227 -0
- package/es/components/viewer3d/ruler-utils/scene3D.js +60 -0
- package/es/components/viewer3d/ruler-utils/state3D.js +18 -0
- package/es/components/viewer3d/scene-creator.js +3608 -0
- package/es/components/viewer3d/three-memory-cleaner.js +51 -0
- package/es/components/viewer3d/viewer3d-first-person.js +315 -0
- package/es/components/viewer3d/viewer3d.js +2527 -0
- package/es/constants.js +636 -0
- package/es/index.js +16 -0
- package/es/models.js +510 -0
- package/es/plugins/SVGLoader.js +1412 -0
- package/es/plugins/autosave.js +33 -0
- package/es/plugins/console-debugger.js +37 -0
- package/es/plugins/export.js +9 -0
- package/es/plugins/keyboard.js +101 -0
- package/es/reducers/areas-reducer.js +12 -0
- package/es/reducers/export.js +25 -0
- package/es/reducers/groups-reducer.js +38 -0
- package/es/reducers/holes-reducer.js +62 -0
- package/es/reducers/items-reducer.js +140 -0
- package/es/reducers/lines-reducer.js +45 -0
- package/es/reducers/project-reducer.js +129 -0
- package/es/reducers/reducer.js +19 -0
- package/es/reducers/scene-reducer.js +28 -0
- package/es/reducers/user-reducer.js +40 -0
- package/es/reducers/vertices-reducer.js +19 -0
- package/es/reducers/viewer2d-reducer.js +75 -0
- package/es/reducers/viewer3d-reducer.js +56 -0
- package/es/shared-style.js +66 -0
- package/es/styles/export.js +5 -0
- package/es/styles/tabs.css +40 -0
- package/es/translator/en.js +104 -0
- package/es/translator/it.js +79 -0
- package/es/translator/ru.js +79 -0
- package/es/translator/translator.js +84 -0
- package/es/utils/browser.js +33 -0
- package/es/utils/email-validator.js +4 -0
- package/es/utils/export.js +25 -0
- package/es/utils/geometry.js +2420 -0
- package/es/utils/get-edges-of-subgraphs.js +27 -0
- package/es/utils/graph-cycles.js +237 -0
- package/es/utils/graph-inner-cycles.js +46 -0
- package/es/utils/graph.js +150 -0
- package/es/utils/helper.js +268 -0
- package/es/utils/history.js +29 -0
- package/es/utils/id-broker.js +19 -0
- package/es/utils/logger.js +8 -0
- package/es/utils/math.js +50 -0
- package/es/utils/molding.js +871 -0
- package/es/utils/name-generator.js +18 -0
- package/es/utils/objects-utils.js +50 -0
- package/es/utils/phone-validator.js +4 -0
- package/es/utils/process-black-list.js +18 -0
- package/es/utils/react-if.js +18 -0
- package/es/utils/snap-scene.js +99 -0
- package/es/utils/snap.js +237 -0
- package/es/utils/summarizeCart.js +24 -0
- package/es/utils/threeCSG.es6.js +498 -0
- package/es/version.js +2 -0
- package/lib/catalog/properties/property-string.js +55 -0
- package/lib/catalog/properties/property-toggle.js +46 -0
- package/lib/catalog/properties/shared-property-style.js +20 -0
- package/lib/catalog/utils/FuseUtils.js +88 -0
- package/lib/catalog/utils/exporter.js +155 -0
- package/lib/catalog/utils/geom-utils.js +205 -0
- package/lib/catalog/utils/item-loader.js +1533 -0
- package/lib/catalog/utils/load-obj.js +99 -0
- package/lib/catalog/utils/mtl-loader.js +363 -0
- package/lib/catalog/utils/obj-loader.js +482 -0
- package/lib/class/FuseUtils.js +88 -0
- package/lib/class/area.js +150 -0
- package/lib/class/export.js +96 -0
- package/lib/class/group.js +445 -0
- package/lib/class/guide.js +67 -0
- package/lib/class/hole.js +934 -0
- package/lib/class/item.js +1889 -0
- package/lib/class/layer.js +672 -0
- package/lib/class/line.js +1186 -0
- package/lib/class/project.js +799 -0
- package/lib/class/vertex.js +207 -0
- package/lib/components/content.js +116 -0
- package/lib/components/disclaimer/disclaimer.js +105 -0
- package/lib/components/export.js +33 -0
- package/lib/components/style/button.js +120 -0
- package/lib/components/style/cancel-button.js +29 -0
- package/lib/components/style/content-container.js +40 -0
- package/lib/components/style/content-title.js +37 -0
- package/lib/components/style/delete-button.js +34 -0
- package/lib/components/style/export.js +121 -0
- package/lib/components/style/form-block.js +31 -0
- package/lib/components/style/form-color-input.js +34 -0
- package/lib/components/style/form-label.js +33 -0
- package/lib/components/style/form-number-input.js +220 -0
- package/lib/components/style/form-number-input_2.js +213 -0
- package/lib/components/style/form-select.js +75 -0
- package/lib/components/style/form-slider.js +68 -0
- package/lib/components/style/form-submit-button.js +35 -0
- package/lib/components/style/form-text-input.js +101 -0
- package/lib/components/viewer2d/area.js +88 -0
- package/lib/components/viewer2d/export.js +121 -0
- package/lib/components/viewer2d/grids/grid-horizontal-streak.js +44 -0
- package/lib/components/viewer2d/grids/grid-streak.js +44 -0
- package/lib/components/viewer2d/grids/grid-vertical-streak.js +44 -0
- package/lib/components/viewer2d/grids/grids.js +44 -0
- package/lib/components/viewer2d/group.js +62 -0
- package/lib/components/viewer2d/item.js +521 -0
- package/lib/components/viewer2d/layer.js +171 -0
- package/lib/components/viewer2d/line.js +892 -0
- package/lib/components/viewer2d/ruler.js +107 -0
- package/lib/components/viewer2d/rulerDist.js +153 -0
- package/lib/components/viewer2d/rulerX.js +158 -0
- package/lib/components/viewer2d/rulerY.js +160 -0
- package/lib/components/viewer2d/scene.js +147 -0
- package/lib/components/viewer2d/snap.js +83 -0
- package/lib/components/viewer2d/state.js +87 -0
- package/lib/components/viewer2d/utils.js +210 -0
- package/lib/components/viewer2d/vertex.js +74 -0
- package/lib/components/viewer2d/viewer2d.js +1405 -0
- package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +2597 -0
- package/lib/components/viewer3d/dcm.js +407 -0
- package/lib/components/viewer3d/fbm.js +420 -0
- package/lib/components/viewer3d/front3D.js +75 -0
- package/lib/components/viewer3d/grid-creator.js +34 -0
- package/lib/components/viewer3d/grids/grid-horizontal-streak.js +44 -0
- package/lib/components/viewer3d/grids/grid-streak.js +35 -0
- package/lib/components/viewer3d/grids/grid-vertical-streak.js +44 -0
- package/lib/components/viewer3d/libs/first-person-controls.js +74 -0
- package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js +1287 -0
- package/lib/components/viewer3d/libs/mtl-loader.js +363 -0
- package/lib/components/viewer3d/libs/obj-loader.js +468 -0
- package/lib/components/viewer3d/libs/orbit-controls.js +705 -0
- package/lib/components/viewer3d/libs/pointer-lock-controls.js +52 -0
- package/lib/components/viewer3d/lrm.js +311 -0
- package/lib/components/viewer3d/model.js +714 -0
- package/lib/components/viewer3d/pointer-lock-navigation.js +122 -0
- package/lib/components/viewer3d/ruler-utils/itemRect.js +68 -0
- package/lib/components/viewer3d/ruler-utils/layer3D.js +502 -0
- package/lib/components/viewer3d/ruler-utils/ruler3D.js +234 -0
- package/lib/components/viewer3d/ruler-utils/scene3D.js +68 -0
- package/lib/components/viewer3d/ruler-utils/state3D.js +25 -0
- package/lib/components/viewer3d/scene-creator.js +3642 -0
- package/lib/components/viewer3d/three-memory-cleaner.js +60 -0
- package/lib/components/viewer3d/viewer3d-first-person.js +320 -0
- package/lib/components/viewer3d/viewer3d.js +2532 -0
- package/lib/constants.js +645 -0
- package/lib/index.js +96 -0
- package/lib/models.js +517 -0
- package/lib/plugins/SVGLoader.js +1417 -0
- package/lib/plugins/autosave.js +39 -0
- package/lib/plugins/console-debugger.js +44 -0
- package/lib/plugins/export.js +33 -0
- package/lib/plugins/keyboard.js +107 -0
- package/lib/reducers/areas-reducer.js +18 -0
- package/lib/reducers/export.js +97 -0
- package/lib/reducers/groups-reducer.js +44 -0
- package/lib/reducers/holes-reducer.js +68 -0
- package/lib/reducers/items-reducer.js +146 -0
- package/lib/reducers/lines-reducer.js +51 -0
- package/lib/reducers/project-reducer.js +135 -0
- package/lib/reducers/reducer.js +26 -0
- package/lib/reducers/scene-reducer.js +34 -0
- package/lib/reducers/user-reducer.js +46 -0
- package/lib/reducers/vertices-reducer.js +25 -0
- package/lib/reducers/viewer2d-reducer.js +82 -0
- package/lib/reducers/viewer3d-reducer.js +63 -0
- package/lib/shared-style.js +72 -0
- package/lib/styles/export.js +13 -0
- package/lib/translator/en.js +110 -0
- package/lib/translator/it.js +85 -0
- package/lib/translator/ru.js +85 -0
- package/lib/translator/translator.js +90 -0
- package/lib/utils/browser.js +40 -0
- package/lib/utils/email-validator.js +10 -0
- package/lib/utils/export.js +56 -0
- package/lib/utils/geometry.js +2516 -0
- package/lib/utils/get-edges-of-subgraphs.js +34 -0
- package/lib/utils/graph-cycles.js +240 -0
- package/lib/utils/graph-inner-cycles.js +54 -0
- package/lib/utils/graph.js +157 -0
- package/lib/utils/helper.js +291 -0
- package/lib/utils/history.js +36 -0
- package/lib/utils/id-broker.js +25 -0
- package/lib/utils/logger.js +14 -0
- package/lib/utils/math.js +57 -0
- package/lib/utils/molding.js +895 -0
- package/lib/utils/name-generator.js +23 -0
- package/lib/utils/objects-utils.js +60 -0
- package/lib/utils/phone-validator.js +10 -0
- package/lib/utils/process-black-list.js +24 -0
- package/lib/utils/react-if.js +24 -0
- package/lib/utils/snap-scene.js +105 -0
- package/lib/utils/snap.js +249 -0
- package/lib/utils/summarizeCart.js +30 -0
- package/lib/utils/threeCSG.es6.js +503 -0
- package/lib/version.js +8 -0
- package/package.json +3 -3
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
3
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
6
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
7
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
8
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
9
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
10
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
12
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
13
|
+
import { PropertyColor, PropertyEnum, PropertyString, PropertyNumber, PropertyLengthMeasure, PropertyToggle, PropertyCheckbox, PropertyHidden, PropertyReadOnly } from "./properties/export";
|
|
14
|
+
import { UNIT_CENTIMETER, UNIT_INCH } from "../constants";
|
|
15
|
+
import { returnReplaceableDeepSearchType } from "../components/viewer2d/utils";
|
|
16
|
+
var Catalog = /*#__PURE__*/function () {
|
|
17
|
+
function Catalog() {
|
|
18
|
+
var unit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : UNIT_CENTIMETER;
|
|
19
|
+
_classCallCheck(this, Catalog);
|
|
20
|
+
this.elements = {};
|
|
21
|
+
this.categories = {
|
|
22
|
+
root: {
|
|
23
|
+
name: 'root',
|
|
24
|
+
label: '/',
|
|
25
|
+
elements: [],
|
|
26
|
+
categories: []
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
this.propertyTypes = {};
|
|
30
|
+
this.unit = unit;
|
|
31
|
+
this.registerMultiplePropertyType([['color', PropertyColor, PropertyColor], ['enum', PropertyEnum, PropertyEnum], ['string', PropertyString, PropertyString], ['number', PropertyNumber, PropertyNumber], ['length-measure', PropertyLengthMeasure, PropertyLengthMeasure], ['toggle', PropertyToggle, PropertyToggle], ['checkbox', PropertyCheckbox, PropertyCheckbox], ['hidden', PropertyHidden, PropertyHidden], ['read-only', PropertyReadOnly, PropertyReadOnly]]);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @description Get catalog's element
|
|
36
|
+
* @param {string} type Element's type
|
|
37
|
+
* @return {?object} Element
|
|
38
|
+
*/
|
|
39
|
+
return _createClass(Catalog, [{
|
|
40
|
+
key: "getElement",
|
|
41
|
+
value: function getElement(type) {
|
|
42
|
+
if (this.hasElement(type)) {
|
|
43
|
+
return this.elements[type];
|
|
44
|
+
} else {
|
|
45
|
+
var deepSearchType = returnReplaceableDeepSearchType(type);
|
|
46
|
+
var element = this.elements[deepSearchType];
|
|
47
|
+
if (element) return element;
|
|
48
|
+
if (!element) return false;
|
|
49
|
+
// console.log("getElement", this);
|
|
50
|
+
throw new Error("Element ".concat(type, " does not exist in catalog"));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @description Get catalog category
|
|
56
|
+
* @param {string} categoryName Name of category
|
|
57
|
+
* @return {object} Category
|
|
58
|
+
*/
|
|
59
|
+
}, {
|
|
60
|
+
key: "getCategory",
|
|
61
|
+
value: function getCategory(categoryName) {
|
|
62
|
+
if (this.hasCategory(categoryName)) {
|
|
63
|
+
return this.categories[categoryName];
|
|
64
|
+
}
|
|
65
|
+
throw new Error("Category ".concat(categoryName, " does not exist in catalog"));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @description Return type of a specfied property
|
|
70
|
+
* @param {string} type Property type
|
|
71
|
+
* @return {?object} Property
|
|
72
|
+
*/
|
|
73
|
+
}, {
|
|
74
|
+
key: "getPropertyType",
|
|
75
|
+
value: function getPropertyType(type) {
|
|
76
|
+
if (this.propertyTypes.hasOwnProperty(type)) {
|
|
77
|
+
return this.propertyTypes[type];
|
|
78
|
+
}
|
|
79
|
+
throw new Error("Element ".concat(type, " does not exist in catalog"));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @description Register a new element
|
|
84
|
+
* @param {object} json Element structure
|
|
85
|
+
* @return {void}
|
|
86
|
+
*/
|
|
87
|
+
}, {
|
|
88
|
+
key: "registerElement",
|
|
89
|
+
value: function registerElement(json) {
|
|
90
|
+
json.properties = json.properties || {};
|
|
91
|
+
if (this.validateElement(json)) {
|
|
92
|
+
this.elements[json.name] = json;
|
|
93
|
+
this.categories.root.elements.push(this.elements[json.name]);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @description Register multiple elements
|
|
99
|
+
* @param {array} [elementArray] Array of elements
|
|
100
|
+
* @return {void}
|
|
101
|
+
*/
|
|
102
|
+
}, {
|
|
103
|
+
key: "registerMultipleElements",
|
|
104
|
+
value: function registerMultipleElements(elementArray) {
|
|
105
|
+
var _this = this;
|
|
106
|
+
elementArray.forEach(function (el) {
|
|
107
|
+
return _this.registerElement(el);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @description Register a new property
|
|
113
|
+
* @param {string} type Type of property
|
|
114
|
+
* @param {object} Viewer Property viewer component
|
|
115
|
+
* @param {object} Editor Property editor component
|
|
116
|
+
* @return {void}
|
|
117
|
+
*/
|
|
118
|
+
}, {
|
|
119
|
+
key: "registerPropertyType",
|
|
120
|
+
value: function registerPropertyType(type, Viewer, Editor) {
|
|
121
|
+
this.propertyTypes[type] = {
|
|
122
|
+
type: type,
|
|
123
|
+
Viewer: Viewer,
|
|
124
|
+
Editor: Editor
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @description Register multiple property
|
|
130
|
+
* @param {array} propertyTypeArray Array of properties
|
|
131
|
+
* @return {void}
|
|
132
|
+
*/
|
|
133
|
+
}, {
|
|
134
|
+
key: "registerMultiplePropertyType",
|
|
135
|
+
value: function registerMultiplePropertyType(propertyTypeArray) {
|
|
136
|
+
var _this2 = this;
|
|
137
|
+
propertyTypeArray.forEach(function (el) {
|
|
138
|
+
return _this2.registerPropertyType.apply(_this2, _toConsumableArray(el));
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @description Validate an element
|
|
144
|
+
* @param {object} json Element's structure
|
|
145
|
+
* @return {?boolean}
|
|
146
|
+
*/
|
|
147
|
+
}, {
|
|
148
|
+
key: "validateElement",
|
|
149
|
+
value: function validateElement(json) {
|
|
150
|
+
if (!json.hasOwnProperty('name')) throw new Error('Element not valid');
|
|
151
|
+
var name = json.name;
|
|
152
|
+
if (json.prototype.toLowerCase().includes('molding')) return true;
|
|
153
|
+
if (!json.hasOwnProperty('prototype')) throw new Error("Element ".concat(name, " doesn't have prototype"));
|
|
154
|
+
if (!json.hasOwnProperty('info')) throw new Error("Element ".concat(name, " doesn't have info"));
|
|
155
|
+
if (!json.info.hasOwnProperty('tag')) throw new Error("Element ".concat(name, " doesn't have tag"));
|
|
156
|
+
if (!json.info.hasOwnProperty('description')) throw new Error("Element ".concat(name, " doesn't have description"));
|
|
157
|
+
// if (!json.info.hasOwnProperty('image')) throw new Error(`Element ${name} doesn't have image`);
|
|
158
|
+
|
|
159
|
+
if (!json.hasOwnProperty('render2D')) throw new Error("Element ".concat(name, " doesn't have render2D handler"));
|
|
160
|
+
if (!json.hasOwnProperty('render3D')) throw new Error("Element ".concat(name, " doesn't have render3D handler"));
|
|
161
|
+
if (!json.hasOwnProperty('properties')) throw new Error("Element ".concat(name, " doesn't have properties"));
|
|
162
|
+
for (var propertyName in json.properties) {
|
|
163
|
+
var propertyConfigs = json.properties[propertyName];
|
|
164
|
+
if (!propertyConfigs.hasOwnProperty('type')) throw new Error("Element ".concat(name, ", Property ").concat(propertyName, " doesn't have type"));
|
|
165
|
+
if (!propertyConfigs.hasOwnProperty('defaultValue')) throw new Error("Element ".concat(name, ", Property ").concat(propertyName, " doesn't have defaultValue"));
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @description Check if catalog has element
|
|
172
|
+
* @param {string} type Element's type
|
|
173
|
+
* @return {boolean}
|
|
174
|
+
*/
|
|
175
|
+
}, {
|
|
176
|
+
key: "hasElement",
|
|
177
|
+
value: function hasElement(type) {
|
|
178
|
+
return this.elements.hasOwnProperty(type);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* @description Register a new category
|
|
183
|
+
* @param {string} name Name of category
|
|
184
|
+
* @param {string} label Label of category
|
|
185
|
+
* @param {array} [childs] Category's childs
|
|
186
|
+
* @return {?object} Registered category
|
|
187
|
+
*/
|
|
188
|
+
}, {
|
|
189
|
+
key: "registerCategory",
|
|
190
|
+
value: function registerCategory(name, label, childs) {
|
|
191
|
+
var _this3 = this;
|
|
192
|
+
if (this.validateCategory(name, label)) {
|
|
193
|
+
this.categories[name] = {
|
|
194
|
+
name: name,
|
|
195
|
+
label: label,
|
|
196
|
+
categories: [],
|
|
197
|
+
elements: []
|
|
198
|
+
};
|
|
199
|
+
this.categories.root.categories.push(this.categories[name]);
|
|
200
|
+
if (childs && childs.length) {
|
|
201
|
+
childs.forEach(function (el) {
|
|
202
|
+
return _this3.addToCategory(name, el);
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return this.categories[name];
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* @description Add an element to the specified category
|
|
212
|
+
* @param {string} name Name of category
|
|
213
|
+
* @param {object} child Element's structure
|
|
214
|
+
* @return {?void}
|
|
215
|
+
*/
|
|
216
|
+
}, {
|
|
217
|
+
key: "addToCategory",
|
|
218
|
+
value: function addToCategory(name, child) {
|
|
219
|
+
if (this.hasElement(child.name)) {
|
|
220
|
+
this.categories[name].elements.push(child);
|
|
221
|
+
this.categories.root.elements.splice(this.categories.root.elements.indexOf(child), 1);
|
|
222
|
+
} else if (this.hasCategory(child.name)) {
|
|
223
|
+
this.categories[name].categories.push(child);
|
|
224
|
+
this.categories.root.categories.splice(this.categories.root.categories.indexOf(child), 1);
|
|
225
|
+
} else {
|
|
226
|
+
throw new Error("child ".concat(child, " is either category nor element"));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* @description Check if category contain element
|
|
232
|
+
* @param {string} categoryName Name of category
|
|
233
|
+
* @param {string} elementName Name of element
|
|
234
|
+
* @return {boolean}
|
|
235
|
+
*/
|
|
236
|
+
}, {
|
|
237
|
+
key: "categoryHasElement",
|
|
238
|
+
value: function categoryHasElement(categoryName, elementName) {
|
|
239
|
+
return this.hasCategory(categoryName) && this.categories[categoryName].elements.some(function (el) {
|
|
240
|
+
return el.name === elementName;
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* @description Validate a category
|
|
246
|
+
* @param {string} name Name of category
|
|
247
|
+
* @param {string} label Label of category
|
|
248
|
+
* @return {?boolean}
|
|
249
|
+
*/
|
|
250
|
+
}, {
|
|
251
|
+
key: "validateCategory",
|
|
252
|
+
value: function validateCategory(name, label) {
|
|
253
|
+
if (!name) {
|
|
254
|
+
throw new Error('Category has undefined name');
|
|
255
|
+
}
|
|
256
|
+
if (name === '') {
|
|
257
|
+
throw new Error('Category has empty name');
|
|
258
|
+
}
|
|
259
|
+
if (this.hasCategory(name)) {
|
|
260
|
+
throw new Error('Category has already been registered');
|
|
261
|
+
}
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* @description Verify if catalog already contain a category with specified name
|
|
267
|
+
* @param {string} categoryName Name of category
|
|
268
|
+
* @return {boolean}
|
|
269
|
+
*/
|
|
270
|
+
}, {
|
|
271
|
+
key: "hasCategory",
|
|
272
|
+
value: function hasCategory(categoryName) {
|
|
273
|
+
return this.categories.hasOwnProperty(categoryName);
|
|
274
|
+
}
|
|
275
|
+
}]);
|
|
276
|
+
}();
|
|
277
|
+
export { Catalog as default };
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import * as Three from 'three';
|
|
2
|
+
import { Box3, Mesh, MeshBasicMaterial, MeshPhysicalMaterial, RepeatWrapping, Shape, TextureLoader, Vector2 } from 'three';
|
|
3
|
+
import * as SharedStyle from "../../shared-style";
|
|
4
|
+
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
|
|
5
|
+
var params = {
|
|
6
|
+
envMap: 'HDR',
|
|
7
|
+
roughness: 0.9,
|
|
8
|
+
metalness: 0.8,
|
|
9
|
+
exposure: 1.0
|
|
10
|
+
// debug: false
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Apply a texture to a wall face
|
|
15
|
+
* @param material: The material of the face
|
|
16
|
+
* @param texture: The texture to load
|
|
17
|
+
* @param length: The lenght of the face
|
|
18
|
+
* @param height: The height of the face
|
|
19
|
+
*/
|
|
20
|
+
var applyTexture = function applyTexture(material, texture, length, height) {
|
|
21
|
+
var loader = new TextureLoader();
|
|
22
|
+
if (texture) {
|
|
23
|
+
material.map = loader.load(texture.uri);
|
|
24
|
+
material.map.colorSpace = Three.SRGBColorSpace;
|
|
25
|
+
material.needsUpdate = true;
|
|
26
|
+
material.map.wrapS = RepeatWrapping;
|
|
27
|
+
material.map.wrapT = RepeatWrapping;
|
|
28
|
+
material.map.repeat.set(length * texture.lengthRepeatScale, height * texture.heightRepeatScale);
|
|
29
|
+
if (texture.normal) {
|
|
30
|
+
material.normalMap = loader.load(texture.normal.uri);
|
|
31
|
+
material.normalScale = new Vector2(texture.normal.normalScaleX, texture.normal.normalScaleY);
|
|
32
|
+
material.normalMap.wrapS = RepeatWrapping;
|
|
33
|
+
material.normalMap.wrapT = RepeatWrapping;
|
|
34
|
+
material.normalMap.repeat.set(length * texture.normal.lengthRepeatScale, height * texture.normal.heightRepeatScale);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Function that assign UV coordinates to a geometry
|
|
41
|
+
* @param geometry
|
|
42
|
+
*/
|
|
43
|
+
var assignUVs = function assignUVs(geometry) {
|
|
44
|
+
geometry.computeBoundingBox();
|
|
45
|
+
var _geometry$boundingBox = geometry.boundingBox,
|
|
46
|
+
min = _geometry$boundingBox.min,
|
|
47
|
+
max = _geometry$boundingBox.max;
|
|
48
|
+
var offset = new Vector2(0 - min.x, 0 - min.y);
|
|
49
|
+
var range = new Vector2(max.x - min.x, max.y - min.y);
|
|
50
|
+
var uvArray = [];
|
|
51
|
+
var position = geometry.attributes.position;
|
|
52
|
+
for (var i = 0; i < position.count; i += 3) {
|
|
53
|
+
var x1 = position.getX(i);
|
|
54
|
+
var y1 = position.getY(i);
|
|
55
|
+
var x2 = position.getX(i + 1);
|
|
56
|
+
var y2 = position.getY(i + 1);
|
|
57
|
+
var x3 = position.getX(i + 2);
|
|
58
|
+
var y3 = position.getY(i + 2);
|
|
59
|
+
uvArray.push((x1 + offset.x) / range.x, (y1 + offset.y) / range.y, (x2 + offset.x) / range.x, (y2 + offset.y) / range.y, (x3 + offset.x) / range.x, (y3 + offset.y) / range.y);
|
|
60
|
+
}
|
|
61
|
+
geometry.setAttribute('uv', new Three.BufferAttribute(new Float32Array(uvArray), 2));
|
|
62
|
+
geometry.needsUpdate = true;
|
|
63
|
+
};
|
|
64
|
+
export function createArea(element, layer, scene, textures) {
|
|
65
|
+
var vertices = [];
|
|
66
|
+
element.vertices.forEach(function (vertexID) {
|
|
67
|
+
vertices.push(layer.vertices.get(vertexID));
|
|
68
|
+
});
|
|
69
|
+
var texture = element.texture;
|
|
70
|
+
texture.lengthRepeatScale = 0.01;
|
|
71
|
+
texture.heightRepeatScale = 0.01;
|
|
72
|
+
var color = element.properties.get('patternColor');
|
|
73
|
+
if (element.selected) {
|
|
74
|
+
color = SharedStyle.AREA_MESH_COLOR.selected;
|
|
75
|
+
} else {
|
|
76
|
+
color = SharedStyle.AREA_MESH_COLOR.unselected;
|
|
77
|
+
}
|
|
78
|
+
if (texture.uri === undefined || texture.uri == '') {
|
|
79
|
+
texture.uri = layer.floorStyle.uri;
|
|
80
|
+
}
|
|
81
|
+
var shape = new Shape();
|
|
82
|
+
shape.moveTo(vertices[0].x, vertices[0].y);
|
|
83
|
+
for (var i = 1; i < vertices.length; i++) {
|
|
84
|
+
shape.lineTo(vertices[i].x, vertices[i].y);
|
|
85
|
+
}
|
|
86
|
+
function loadFloorENV() {
|
|
87
|
+
return new RGBELoader().load('/assets/Window.hdr', function (texture) {
|
|
88
|
+
texture.mapping = Three.EquirectangularReflectionMapping;
|
|
89
|
+
return texture;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
var floorENV = loadFloorENV();
|
|
93
|
+
var loader = new TextureLoader();
|
|
94
|
+
var areaMaterial = new MeshPhysicalMaterial({
|
|
95
|
+
side: Three.DoubleSide,
|
|
96
|
+
metalness: texture.metalness,
|
|
97
|
+
roughness: 0.3,
|
|
98
|
+
envMap: floorENV,
|
|
99
|
+
envMapIntensity: 1.8,
|
|
100
|
+
specularIntensity: 0.4,
|
|
101
|
+
map: loader.load(texture.uri)
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
/* Create holes for the area */
|
|
105
|
+
element.holes.forEach(function (holeID) {
|
|
106
|
+
var holeCoords = [];
|
|
107
|
+
layer.getIn(['areas', holeID, 'vertices']).forEach(function (vertexID) {
|
|
108
|
+
var _layer$getIn = layer.getIn(['vertices', vertexID]),
|
|
109
|
+
x = _layer$getIn.x,
|
|
110
|
+
y = _layer$getIn.y;
|
|
111
|
+
holeCoords.push([x, y]);
|
|
112
|
+
});
|
|
113
|
+
holeCoords = holeCoords.reverse();
|
|
114
|
+
var holeShape = createShape(holeCoords);
|
|
115
|
+
shape.holes.push(holeShape);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// This is extrude floor mesh
|
|
119
|
+
|
|
120
|
+
var extrudeSettings = {
|
|
121
|
+
depth: -3,
|
|
122
|
+
bevelEnabled: false
|
|
123
|
+
};
|
|
124
|
+
var shapeGeometry = new Three.ExtrudeGeometry(shape, extrudeSettings);
|
|
125
|
+
assignUVs(shapeGeometry);
|
|
126
|
+
var boundingBox = new Box3().setFromObject(new Mesh(shapeGeometry, new MeshBasicMaterial()));
|
|
127
|
+
var width = boundingBox.max.x - boundingBox.min.x;
|
|
128
|
+
var height = boundingBox.max.y - boundingBox.min.y;
|
|
129
|
+
var texture_unit = 70 * 2.54; // 70 inch
|
|
130
|
+
|
|
131
|
+
applyTexture(areaMaterial, texture, width / texture_unit * 100, height / texture_unit * 100);
|
|
132
|
+
var area = new Mesh(shapeGeometry, areaMaterial);
|
|
133
|
+
area.rotation.x -= Math.PI / 2;
|
|
134
|
+
area.receiveShadow = true;
|
|
135
|
+
area.name = 'floor';
|
|
136
|
+
// This mesh is use for creating ceiling mesh
|
|
137
|
+
|
|
138
|
+
var shapeGeometry2 = new Three.ShapeGeometry(shape);
|
|
139
|
+
var area2 = new Mesh(shapeGeometry2, new MeshBasicMaterial({
|
|
140
|
+
transparent: true,
|
|
141
|
+
opacity: 0.0
|
|
142
|
+
}));
|
|
143
|
+
area2.castShadow = true;
|
|
144
|
+
area2.rotation.x -= Math.PI / 2;
|
|
145
|
+
area2.receiveShadow = true;
|
|
146
|
+
area2.name = 'floorSupport';
|
|
147
|
+
var floorSupport = area2.clone();
|
|
148
|
+
area.userData.floorSupport = floorSupport;
|
|
149
|
+
return Promise.resolve(area);
|
|
150
|
+
}
|
|
151
|
+
export function updatedArea(element, layer, scene, textures, mesh, oldElement, differences, selfDestroy, selfBuild) {
|
|
152
|
+
var noPerf = function noPerf() {
|
|
153
|
+
selfDestroy();
|
|
154
|
+
return selfBuild();
|
|
155
|
+
};
|
|
156
|
+
var floor = mesh.getObjectByName('floor');
|
|
157
|
+
floor.receiveShadow = true;
|
|
158
|
+
if (differences[0] == 'selected') {
|
|
159
|
+
var color = element.selected ? SharedStyle.AREA_MESH_COLOR.selected : SharedStyle.AREA_MESH_COLOR.unselected;
|
|
160
|
+
floor.material.color.set(color);
|
|
161
|
+
} else if (differences[0] == 'properties') {
|
|
162
|
+
if (differences[1] === 'texture') {
|
|
163
|
+
return noPerf();
|
|
164
|
+
}
|
|
165
|
+
} else return noPerf();
|
|
166
|
+
return Promise.resolve(mesh);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* This function will create a shape given a list of coordinates
|
|
171
|
+
* @param shapeCoords
|
|
172
|
+
* @returns {Shape}
|
|
173
|
+
*/
|
|
174
|
+
var createShape = function createShape(shapeCoords) {
|
|
175
|
+
var shape = new Shape();
|
|
176
|
+
shape.moveTo(shapeCoords[0][0], shapeCoords[0][1]);
|
|
177
|
+
for (var i = 1; i < shapeCoords.length; i++) {
|
|
178
|
+
shape.lineTo(shapeCoords[i][0], shapeCoords[i][1]);
|
|
179
|
+
}
|
|
180
|
+
return shape;
|
|
181
|
+
};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import { createArea, updatedArea } from "./area-factory-3d";
|
|
9
|
+
import * as SharedStyle from "../../shared-style";
|
|
10
|
+
import Translator from "../../translator/translator";
|
|
11
|
+
var translator = new Translator();
|
|
12
|
+
export default function AreaFactory(name, info, textures) {
|
|
13
|
+
var areaElement = {
|
|
14
|
+
name: name,
|
|
15
|
+
prototype: 'areas',
|
|
16
|
+
info: _objectSpread(_objectSpread({}, info), {}, {
|
|
17
|
+
visibility: {
|
|
18
|
+
catalog: false,
|
|
19
|
+
layerElementsVisible: false
|
|
20
|
+
}
|
|
21
|
+
}),
|
|
22
|
+
properties: {
|
|
23
|
+
patternColor: {
|
|
24
|
+
label: translator.t('color'),
|
|
25
|
+
type: 'color',
|
|
26
|
+
defaultValue: 'rgba(175, 175, 175)'
|
|
27
|
+
},
|
|
28
|
+
thickness: {
|
|
29
|
+
label: translator.t('thickness'),
|
|
30
|
+
type: 'length-measure',
|
|
31
|
+
defaultValue: {
|
|
32
|
+
length: 0
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
render2D: function render2D(element, layer, scene) {
|
|
37
|
+
var path = '';
|
|
38
|
+
|
|
39
|
+
///print area path
|
|
40
|
+
element.vertices.forEach(function (vertexID, ind) {
|
|
41
|
+
var vertex = layer.vertices.get(vertexID);
|
|
42
|
+
path += (ind ? 'L' : 'M') + vertex.x + ' ' + vertex.y + ' ';
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
//add holes
|
|
46
|
+
element.holes.forEach(function (areaID) {
|
|
47
|
+
var area = layer.areas.get(areaID);
|
|
48
|
+
area.vertices.reverse().forEach(function (vertexID, ind) {
|
|
49
|
+
var vertex = layer.vertices.get(vertexID);
|
|
50
|
+
path += (ind ? 'L' : 'M') + vertex.x + ' ' + vertex.y + ' ';
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
var fill = element.selected ? SharedStyle.AREA_MESH_COLOR.selected : SharedStyle.AREA_MESH_COLOR.unselected;
|
|
54
|
+
return /*#__PURE__*/React.createElement("path", {
|
|
55
|
+
d: path,
|
|
56
|
+
fill: fill
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
render3D: function render3D(element, layer, scene) {
|
|
60
|
+
return createArea(element, layer, scene, textures);
|
|
61
|
+
},
|
|
62
|
+
updateRender3D: function updateRender3D(element, layer, scene, mesh, oldElement, differences, selfDestroy, selfBuild) {
|
|
63
|
+
return updatedArea(element, layer, scene, textures, mesh, oldElement, differences, selfDestroy, selfBuild);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
if (textures && textures !== {}) {
|
|
67
|
+
var textureValues = {
|
|
68
|
+
none: 'None'
|
|
69
|
+
};
|
|
70
|
+
for (var textureName in textures) {
|
|
71
|
+
textureValues[textureName] = textures[textureName].name;
|
|
72
|
+
}
|
|
73
|
+
areaElement.properties.texture = {
|
|
74
|
+
label: translator.t('texture'),
|
|
75
|
+
type: 'enum',
|
|
76
|
+
defaultValue: 'none',
|
|
77
|
+
values: textureValues
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return areaElement;
|
|
81
|
+
}
|