kitchen-simulator 5.0.0-test.3 → 5.0.0-test.4
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/KitchenConfigurator.js +1 -1
- package/es/KitchenConfigurator.js.map +1 -1
- package/package.json +8 -12
- package/src/KitchenConfigurator.jsx +1 -1
- package/lib/@history.js +0 -11
- package/lib/@history.js.map +0 -1
- package/lib/AppContext.js +0 -11
- package/lib/AppContext.js.map +0 -1
- package/lib/KitchenConfigurator.js +0 -1353
- package/lib/KitchenConfigurator.js.map +0 -1
- package/lib/KitchenConfiguratorApp.js +0 -539
- package/lib/KitchenConfiguratorApp.js.map +0 -1
- package/lib/actions/area-actions.js +0 -22
- package/lib/actions/area-actions.js.map +0 -1
- package/lib/actions/export.js +0 -44
- package/lib/actions/export.js.map +0 -1
- package/lib/actions/groups-actions.js +0 -108
- package/lib/actions/groups-actions.js.map +0 -1
- package/lib/actions/holes-actions.js +0 -141
- package/lib/actions/holes-actions.js.map +0 -1
- package/lib/actions/items-actions.js +0 -365
- package/lib/actions/items-actions.js.map +0 -1
- package/lib/actions/lines-actions.js +0 -98
- package/lib/actions/lines-actions.js.map +0 -1
- package/lib/actions/project-actions.js +0 -333
- package/lib/actions/project-actions.js.map +0 -1
- package/lib/actions/scene-actions.js +0 -44
- package/lib/actions/scene-actions.js.map +0 -1
- package/lib/actions/user-actions.js +0 -69
- package/lib/actions/user-actions.js.map +0 -1
- package/lib/actions/vertices-actions.js +0 -36
- package/lib/actions/vertices-actions.js.map +0 -1
- package/lib/actions/viewer2d-actions.js +0 -74
- package/lib/actions/viewer2d-actions.js.map +0 -1
- package/lib/actions/viewer3d-actions.js +0 -33
- package/lib/actions/viewer3d-actions.js.map +0 -1
- package/lib/catalog/areas/area/planner-element.js +0 -47
- package/lib/catalog/areas/area/planner-element.js.map +0 -1
- package/lib/catalog/catalog.js +0 -283
- package/lib/catalog/catalog.js.map +0 -1
- package/lib/catalog/factories/area-factory-3d.js +0 -192
- package/lib/catalog/factories/area-factory-3d.js.map +0 -1
- package/lib/catalog/factories/area-factory.js +0 -90
- package/lib/catalog/factories/area-factory.js.map +0 -1
- package/lib/catalog/factories/export.js +0 -26
- package/lib/catalog/factories/export.js.map +0 -1
- package/lib/catalog/factories/wall-factory-3d.js +0 -213
- package/lib/catalog/factories/wall-factory-3d.js.map +0 -1
- package/lib/catalog/factories/wall-factory.js +0 -279
- package/lib/catalog/factories/wall-factory.js.map +0 -1
- package/lib/catalog/holes/door-closet/planner-element.js +0 -232
- package/lib/catalog/holes/door-closet/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-double/planner-element.js +0 -325
- package/lib/catalog/holes/door-double/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-exterior/planner-element.js +0 -225
- package/lib/catalog/holes/door-exterior/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-interior/planner-element.js +0 -237
- package/lib/catalog/holes/door-interior/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-panic/planner-element.js +0 -513
- package/lib/catalog/holes/door-panic/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-panic-double/planner-element.js +0 -473
- package/lib/catalog/holes/door-panic-double/planner-element.js.map +0 -1
- package/lib/catalog/holes/door-sliding/planner-element.js +0 -235
- package/lib/catalog/holes/door-sliding/planner-element.js.map +0 -1
- package/lib/catalog/holes/doorway-framed/planner-element.js +0 -155
- package/lib/catalog/holes/doorway-framed/planner-element.js.map +0 -1
- package/lib/catalog/holes/doorway-frameless/planner-element.js +0 -114
- package/lib/catalog/holes/doorway-frameless/planner-element.js.map +0 -1
- package/lib/catalog/holes/window-clear/planner-element.js +0 -176
- package/lib/catalog/holes/window-clear/planner-element.js.map +0 -1
- package/lib/catalog/holes/window-cross/planner-element.js +0 -175
- package/lib/catalog/holes/window-cross/planner-element.js.map +0 -1
- package/lib/catalog/holes/window-double-hung/planner-element.js +0 -313
- package/lib/catalog/holes/window-double-hung/planner-element.js.map +0 -1
- package/lib/catalog/holes/window-vertical/planner-element.js +0 -286
- package/lib/catalog/holes/window-vertical/planner-element.js.map +0 -1
- package/lib/catalog/lines/wall/planner-element.js +0 -77
- package/lib/catalog/lines/wall/planner-element.js.map +0 -1
- package/lib/catalog/molding/molding-dcm/planner-element.js +0 -39
- package/lib/catalog/molding/molding-dcm/planner-element.js.map +0 -1
- package/lib/catalog/molding/molding-fbm/planner-element.js +0 -39
- package/lib/catalog/molding/molding-fbm/planner-element.js.map +0 -1
- package/lib/catalog/molding/molding-lrm/planner-element.js +0 -39
- package/lib/catalog/molding/molding-lrm/planner-element.js.map +0 -1
- package/lib/catalog/properties/export.js +0 -82
- package/lib/catalog/properties/export.js.map +0 -1
- package/lib/catalog/properties/property-checkbox.js +0 -79
- package/lib/catalog/properties/property-checkbox.js.map +0 -1
- package/lib/catalog/properties/property-color.js +0 -47
- package/lib/catalog/properties/property-color.js.map +0 -1
- package/lib/catalog/properties/property-enum.js +0 -63
- package/lib/catalog/properties/property-enum.js.map +0 -1
- package/lib/catalog/properties/property-hidden.js +0 -27
- package/lib/catalog/properties/property-hidden.js.map +0 -1
- package/lib/catalog/properties/property-lenght-measure.js +0 -109
- package/lib/catalog/properties/property-lenght-measure.js.map +0 -1
- package/lib/catalog/properties/property-length-measure.js +0 -93
- package/lib/catalog/properties/property-length-measure.js.map +0 -1
- package/lib/catalog/properties/property-length-measure_hole.js +0 -109
- package/lib/catalog/properties/property-length-measure_hole.js.map +0 -1
- package/lib/catalog/properties/property-number.js +0 -56
- package/lib/catalog/properties/property-number.js.map +0 -1
- package/lib/catalog/properties/property-read-only.js +0 -34
- package/lib/catalog/properties/property-read-only.js.map +0 -1
- package/lib/catalog/properties/property-string.js +0 -56
- package/lib/catalog/properties/property-string.js.map +0 -1
- package/lib/catalog/properties/property-toggle.js +0 -47
- package/lib/catalog/properties/property-toggle.js.map +0 -1
- package/lib/catalog/properties/shared-property-style.js +0 -21
- package/lib/catalog/properties/shared-property-style.js.map +0 -1
- package/lib/catalog/utils/FuseUtils.js +0 -89
- package/lib/catalog/utils/FuseUtils.js.map +0 -1
- package/lib/catalog/utils/exporter.js +0 -156
- package/lib/catalog/utils/exporter.js.map +0 -1
- package/lib/catalog/utils/geom-utils.js +0 -206
- package/lib/catalog/utils/geom-utils.js.map +0 -1
- package/lib/catalog/utils/item-loader.js +0 -1534
- package/lib/catalog/utils/item-loader.js.map +0 -1
- package/lib/catalog/utils/load-obj.js +0 -100
- package/lib/catalog/utils/load-obj.js.map +0 -1
- package/lib/catalog/utils/mtl-loader.js +0 -360
- package/lib/catalog/utils/mtl-loader.js.map +0 -1
- package/lib/catalog/utils/obj-loader.js +0 -479
- package/lib/catalog/utils/obj-loader.js.map +0 -1
- package/lib/class/FuseUtils.js +0 -89
- package/lib/class/FuseUtils.js.map +0 -1
- package/lib/class/area.js +0 -151
- package/lib/class/area.js.map +0 -1
- package/lib/class/export.js +0 -97
- package/lib/class/export.js.map +0 -1
- package/lib/class/group.js +0 -446
- package/lib/class/group.js.map +0 -1
- package/lib/class/guide.js +0 -68
- package/lib/class/guide.js.map +0 -1
- package/lib/class/hole.js +0 -935
- package/lib/class/hole.js.map +0 -1
- package/lib/class/item.js +0 -1894
- package/lib/class/item.js.map +0 -1
- package/lib/class/layer.js +0 -673
- package/lib/class/layer.js.map +0 -1
- package/lib/class/line.js +0 -1296
- package/lib/class/line.js.map +0 -1
- package/lib/class/project.js +0 -829
- package/lib/class/project.js.map +0 -1
- package/lib/class/vertex.js +0 -272
- package/lib/class/vertex.js.map +0 -1
- package/lib/components/atoms/Snackbar/index.js +0 -57
- package/lib/components/atoms/Snackbar/index.js.map +0 -1
- package/lib/components/atoms/radio-button/index.js +0 -33
- package/lib/components/atoms/radio-button/index.js.map +0 -1
- package/lib/components/atoms/radio-button/styles.js +0 -12
- package/lib/components/atoms/radio-button/styles.js.map +0 -1
- package/lib/components/button/MainButton.js +0 -98
- package/lib/components/button/MainButton.js.map +0 -1
- package/lib/components/button/ToggleMeasureButton.js +0 -63
- package/lib/components/button/ToggleMeasureButton.js.map +0 -1
- package/lib/components/catalog-view/catalog-breadcrumb.js +0 -61
- package/lib/components/catalog-view/catalog-breadcrumb.js.map +0 -1
- package/lib/components/catalog-view/catalog-item.js +0 -233
- package/lib/components/catalog-view/catalog-item.js.map +0 -1
- package/lib/components/catalog-view/catalog-list.js +0 -189
- package/lib/components/catalog-view/catalog-list.js.map +0 -1
- package/lib/components/catalog-view/catalog-page-item.js +0 -137
- package/lib/components/catalog-view/catalog-page-item.js.map +0 -1
- package/lib/components/catalog-view/catalog-turn-back-page-item.js +0 -113
- package/lib/components/catalog-view/catalog-turn-back-page-item.js.map +0 -1
- package/lib/components/configurator/custom-configurator.js +0 -101
- package/lib/components/configurator/custom-configurator.js.map +0 -1
- package/lib/components/configurator/project-configurator.js +0 -138
- package/lib/components/configurator/project-configurator.js.map +0 -1
- package/lib/components/content.js +0 -132
- package/lib/components/content.js.map +0 -1
- package/lib/components/export.js +0 -90
- package/lib/components/export.js.map +0 -1
- package/lib/components/firstsetting/button/styles.js +0 -34
- package/lib/components/firstsetting/button/styles.js.map +0 -1
- package/lib/components/firstsetting/export.js +0 -16
- package/lib/components/firstsetting/export.js.map +0 -1
- package/lib/components/firstsetting/firstsetting-content-button.js +0 -224
- package/lib/components/firstsetting/firstsetting-content-button.js.map +0 -1
- package/lib/components/firstsetting/firstsetting-toggle-button.js +0 -133
- package/lib/components/firstsetting/firstsetting-toggle-button.js.map +0 -1
- package/lib/components/firstsetting/firstsetting.js +0 -633
- package/lib/components/firstsetting/firstsetting.js.map +0 -1
- package/lib/components/footerbar/button/ControlButton.js +0 -79
- package/lib/components/footerbar/button/ControlButton.js.map +0 -1
- package/lib/components/footerbar/button/DirectionButton.js +0 -76
- package/lib/components/footerbar/button/DirectionButton.js.map +0 -1
- package/lib/components/footerbar/button/DirectionPanSpinButton.js +0 -57
- package/lib/components/footerbar/button/DirectionPanSpinButton.js.map +0 -1
- package/lib/components/footerbar/button/ToggleButton.js +0 -83
- package/lib/components/footerbar/button/ToggleButton.js.map +0 -1
- package/lib/components/footerbar/button/ToggleConvertButton.js +0 -80
- package/lib/components/footerbar/button/ToggleConvertButton.js.map +0 -1
- package/lib/components/footerbar/button/ToggleMeasureButton.js +0 -59
- package/lib/components/footerbar/button/ToggleMeasureButton.js.map +0 -1
- package/lib/components/footerbar/button/styles.js +0 -29
- package/lib/components/footerbar/button/styles.js.map +0 -1
- package/lib/components/footerbar/export.js +0 -16
- package/lib/components/footerbar/export.js.map +0 -1
- package/lib/components/footerbar/footer-content-button.js +0 -224
- package/lib/components/footerbar/footer-content-button.js.map +0 -1
- package/lib/components/footerbar/footer-toggle-button.js +0 -133
- package/lib/components/footerbar/footer-toggle-button.js.map +0 -1
- package/lib/components/footerbar/footerbar.js +0 -808
- package/lib/components/footerbar/footerbar.js.map +0 -1
- package/lib/components/footerbar/styles.js +0 -41
- package/lib/components/footerbar/styles.js.map +0 -1
- package/lib/components/header/button/MenuButton.js +0 -77
- package/lib/components/header/button/MenuButton.js.map +0 -1
- package/lib/components/header/button/SaveButton.js +0 -57
- package/lib/components/header/button/SaveButton.js.map +0 -1
- package/lib/components/header/button/styles.js +0 -68
- package/lib/components/header/button/styles.js.map +0 -1
- package/lib/components/header/export.js +0 -12
- package/lib/components/header/export.js.map +0 -1
- package/lib/components/header/header.js +0 -556
- package/lib/components/header/header.js.map +0 -1
- package/lib/components/header/styles.js +0 -47
- package/lib/components/header/styles.js.map +0 -1
- package/lib/components/login/Login.js +0 -94
- package/lib/components/login/Login.js.map +0 -1
- package/lib/components/login/LoginForm/index.js +0 -140
- package/lib/components/login/LoginForm/index.js.map +0 -1
- package/lib/components/login/Register.js +0 -104
- package/lib/components/login/Register.js.map +0 -1
- package/lib/components/login/RegisterForm/index.js +0 -237
- package/lib/components/login/RegisterForm/index.js.map +0 -1
- package/lib/components/login/jwtService.js +0 -239
- package/lib/components/login/jwtService.js.map +0 -1
- package/lib/components/molecules/slider/index.js +0 -22
- package/lib/components/molecules/slider/index.js.map +0 -1
- package/lib/components/molecules/slider/styles.js +0 -2
- package/lib/components/molecules/slider/styles.js.map +0 -1
- package/lib/components/myprojects/export.js +0 -12
- package/lib/components/myprojects/export.js.map +0 -1
- package/lib/components/myprojects/index.js +0 -453
- package/lib/components/myprojects/index.js.map +0 -1
- package/lib/components/myprojects/styles.js +0 -31
- package/lib/components/myprojects/styles.js.map +0 -1
- package/lib/components/sidebar/custom-accordion.js +0 -45
- package/lib/components/sidebar/custom-accordion.js.map +0 -1
- package/lib/components/sidebar/export.js +0 -50
- package/lib/components/sidebar/export.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js +0 -74
- package/lib/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js +0 -124
- package/lib/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js +0 -135
- package/lib/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js +0 -260
- package/lib/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js +0 -84
- package/lib/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/element-editor.js +0 -884
- package/lib/components/sidebar/panel-element-editor/element-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/multi-elements-editor.js +0 -2
- package/lib/components/sidebar/panel-element-editor/multi-elements-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/panel-element-editor.js +0 -56
- package/lib/components/sidebar/panel-element-editor/panel-element-editor.js.map +0 -1
- package/lib/components/sidebar/panel-element-editor/panel-multi-elements-editor.js +0 -125
- package/lib/components/sidebar/panel-element-editor/panel-multi-elements-editor.js.map +0 -1
- package/lib/components/sidebar/panel-group-editor.js +0 -218
- package/lib/components/sidebar/panel-group-editor.js.map +0 -1
- package/lib/components/sidebar/panel-groups.js +0 -274
- package/lib/components/sidebar/panel-groups.js.map +0 -1
- package/lib/components/sidebar/panel-guides.js +0 -192
- package/lib/components/sidebar/panel-guides.js.map +0 -1
- package/lib/components/sidebar/panel-layer-elements.js +0 -258
- package/lib/components/sidebar/panel-layer-elements.js.map +0 -1
- package/lib/components/sidebar/panel-layers.js +0 -347
- package/lib/components/sidebar/panel-layers.js.map +0 -1
- package/lib/components/sidebar/panel.js +0 -110
- package/lib/components/sidebar/panel.js.map +0 -1
- package/lib/components/sidebar/sidebar.js +0 -117
- package/lib/components/sidebar/sidebar.js.map +0 -1
- package/lib/components/sidebar/toolbar-panel.js +0 -171
- package/lib/components/sidebar/toolbar-panel.js.map +0 -1
- package/lib/components/sign/export.js +0 -18
- package/lib/components/sign/export.js.map +0 -1
- package/lib/components/sign/main/index.js +0 -567
- package/lib/components/sign/main/index.js.map +0 -1
- package/lib/components/sign/main/styles.js +0 -27
- package/lib/components/sign/main/styles.js.map +0 -1
- package/lib/components/style/button.js +0 -121
- package/lib/components/style/button.js.map +0 -1
- package/lib/components/style/cancel-button.js +0 -30
- package/lib/components/style/cancel-button.js.map +0 -1
- package/lib/components/style/content-container.js +0 -41
- package/lib/components/style/content-container.js.map +0 -1
- package/lib/components/style/content-title.js +0 -38
- package/lib/components/style/content-title.js.map +0 -1
- package/lib/components/style/delete-button.js +0 -35
- package/lib/components/style/delete-button.js.map +0 -1
- package/lib/components/style/export.js +0 -122
- package/lib/components/style/export.js.map +0 -1
- package/lib/components/style/form-block.js +0 -32
- package/lib/components/style/form-block.js.map +0 -1
- package/lib/components/style/form-color-input.js +0 -35
- package/lib/components/style/form-color-input.js.map +0 -1
- package/lib/components/style/form-label.js +0 -34
- package/lib/components/style/form-label.js.map +0 -1
- package/lib/components/style/form-number-input.js +0 -197
- package/lib/components/style/form-number-input.js.map +0 -1
- package/lib/components/style/form-number-input_2.js +0 -214
- package/lib/components/style/form-number-input_2.js.map +0 -1
- package/lib/components/style/form-select.js +0 -30
- package/lib/components/style/form-select.js.map +0 -1
- package/lib/components/style/form-slider.js +0 -53
- package/lib/components/style/form-slider.js.map +0 -1
- package/lib/components/style/form-submit-button.js +0 -36
- package/lib/components/style/form-submit-button.js.map +0 -1
- package/lib/components/style/form-text-input.js +0 -84
- package/lib/components/style/form-text-input.js.map +0 -1
- package/lib/components/toolbar/button/ControlButton.js +0 -76
- package/lib/components/toolbar/button/ControlButton.js.map +0 -1
- package/lib/components/toolbar/button/DirectionButton.js +0 -57
- package/lib/components/toolbar/button/DirectionButton.js.map +0 -1
- package/lib/components/toolbar/button/RightButton.js +0 -140
- package/lib/components/toolbar/button/RightButton.js.map +0 -1
- package/lib/components/toolbar/button/ToggleButton.js +0 -66
- package/lib/components/toolbar/button/ToggleButton.js.map +0 -1
- package/lib/components/toolbar/button/index.js +0 -94
- package/lib/components/toolbar/button/index.js.map +0 -1
- package/lib/components/toolbar/button/styles.js +0 -21
- package/lib/components/toolbar/button/styles.js.map +0 -1
- package/lib/components/toolbar/components/DoorStyleMenu.js +0 -112
- package/lib/components/toolbar/components/DoorStyleMenu.js.map +0 -1
- package/lib/components/toolbar/components/Pricing.js +0 -110
- package/lib/components/toolbar/components/Pricing.js.map +0 -1
- package/lib/components/toolbar/components/ReviewForQuote.js +0 -485
- package/lib/components/toolbar/components/ReviewForQuote.js.map +0 -1
- package/lib/components/toolbar/export.js +0 -50
- package/lib/components/toolbar/export.js.map +0 -1
- package/lib/components/toolbar/main/Alert.js +0 -132
- package/lib/components/toolbar/main/Alert.js.map +0 -1
- package/lib/components/toolbar/main/TakePictureModal.js +0 -109
- package/lib/components/toolbar/main/TakePictureModal.js.map +0 -1
- package/lib/components/toolbar/main/confirm-popup.js +0 -95
- package/lib/components/toolbar/main/confirm-popup.js.map +0 -1
- package/lib/components/toolbar/main/index.js +0 -4619
- package/lib/components/toolbar/main/index.js.map +0 -1
- package/lib/components/toolbar/main/myComponents.js +0 -125
- package/lib/components/toolbar/main/myComponents.js.map +0 -1
- package/lib/components/toolbar/main/styles.js +0 -73
- package/lib/components/toolbar/main/styles.js.map +0 -1
- package/lib/components/toolbar/plugin-item.js +0 -156
- package/lib/components/toolbar/plugin-item.js.map +0 -1
- package/lib/components/toolbar/popup/appliance/appliance-category/index.js +0 -86
- package/lib/components/toolbar/popup/appliance/appliance-category/index.js.map +0 -1
- package/lib/components/toolbar/popup/appliance/choose-appliance/index.js +0 -85
- package/lib/components/toolbar/popup/appliance/choose-appliance/index.js.map +0 -1
- package/lib/components/toolbar/popup/appliance/index.js +0 -89
- package/lib/components/toolbar/popup/appliance/index.js.map +0 -1
- package/lib/components/toolbar/popup/autosaveprompt/index.js +0 -99
- package/lib/components/toolbar/popup/autosaveprompt/index.js.map +0 -1
- package/lib/components/toolbar/popup/autosaveprompt/styles.js +0 -16
- package/lib/components/toolbar/popup/autosaveprompt/styles.js.map +0 -1
- package/lib/components/toolbar/popup/cabinet/cabinet-category/index.js +0 -86
- package/lib/components/toolbar/popup/cabinet/cabinet-category/index.js.map +0 -1
- package/lib/components/toolbar/popup/cabinet/choose-product/index.js +0 -107
- package/lib/components/toolbar/popup/cabinet/choose-product/index.js.map +0 -1
- package/lib/components/toolbar/popup/cabinet/index.js +0 -91
- package/lib/components/toolbar/popup/cabinet/index.js.map +0 -1
- package/lib/components/toolbar/popup/doorStyle/choose-style/index.js +0 -59
- package/lib/components/toolbar/popup/doorStyle/choose-style/index.js.map +0 -1
- package/lib/components/toolbar/popup/doorStyle/index.js +0 -68
- package/lib/components/toolbar/popup/doorStyle/index.js.map +0 -1
- package/lib/components/toolbar/popup/doorStyle/style-category/index.js +0 -152
- package/lib/components/toolbar/popup/doorStyle/style-category/index.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +0 -9
- package/lib/components/toolbar/popup/downloadsummary/downloadSummaryContext.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js +0 -128
- package/lib/components/toolbar/popup/downloadsummary/downloadSummaryTemp.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/index.js +0 -572
- package/lib/components/toolbar/popup/downloadsummary/index.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/show2D/show2DView.js +0 -60
- package/lib/components/toolbar/popup/downloadsummary/show2D/show2DView.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js +0 -200
- package/lib/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/show3D/show3DView.js +0 -254
- package/lib/components/toolbar/popup/downloadsummary/show3D/show3DView.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js +0 -1762
- package/lib/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showCabinetInfo.js +0 -96
- package/lib/components/toolbar/popup/downloadsummary/showCabinetInfo.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js +0 -125
- package/lib/components/toolbar/popup/downloadsummary/showElevation/showElevationView.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js +0 -1713
- package/lib/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js +0 -184
- package/lib/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/showWarranty.js +0 -115
- package/lib/components/toolbar/popup/downloadsummary/showWarranty.js.map +0 -1
- package/lib/components/toolbar/popup/downloadsummary/styles.js +0 -47
- package/lib/components/toolbar/popup/downloadsummary/styles.js.map +0 -1
- package/lib/components/toolbar/popup/finishingtouch/category/index.js +0 -44
- package/lib/components/toolbar/popup/finishingtouch/category/index.js.map +0 -1
- package/lib/components/toolbar/popup/finishingtouch/index.js +0 -54
- package/lib/components/toolbar/popup/finishingtouch/index.js.map +0 -1
- package/lib/components/toolbar/popup/finishingtouch/material-edit.js +0 -163
- package/lib/components/toolbar/popup/finishingtouch/material-edit.js.map +0 -1
- package/lib/components/toolbar/popup/finishingtouch/product/index.js +0 -65
- package/lib/components/toolbar/popup/finishingtouch/product/index.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js +0 -124
- package/lib/components/toolbar/popup/floorplan/choose-floor/confirm-popup.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/choose-floor/index.js +0 -255
- package/lib/components/toolbar/popup/floorplan/choose-floor/index.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/choose-floor/styles.js +0 -20
- package/lib/components/toolbar/popup/floorplan/choose-floor/styles.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/floor-category/index.js +0 -99
- package/lib/components/toolbar/popup/floorplan/floor-category/index.js.map +0 -1
- package/lib/components/toolbar/popup/floorplan/index.js +0 -56
- package/lib/components/toolbar/popup/floorplan/index.js.map +0 -1
- package/lib/components/toolbar/popup/index.js +0 -195
- package/lib/components/toolbar/popup/index.js.map +0 -1
- package/lib/components/toolbar/popup/newproject/index.js +0 -75
- package/lib/components/toolbar/popup/newproject/index.js.map +0 -1
- package/lib/components/toolbar/popup/newproject/styles.js +0 -16
- package/lib/components/toolbar/popup/newproject/styles.js.map +0 -1
- package/lib/components/toolbar/popup/product/appliance.js +0 -73
- package/lib/components/toolbar/popup/product/appliance.js.map +0 -1
- package/lib/components/toolbar/popup/product/cabinetproduct.js +0 -33
- package/lib/components/toolbar/popup/product/cabinetproduct.js.map +0 -1
- package/lib/components/toolbar/popup/product/doorstyle.js +0 -59
- package/lib/components/toolbar/popup/product/doorstyle.js.map +0 -1
- package/lib/components/toolbar/popup/product/doorstyleproduct.js +0 -59
- package/lib/components/toolbar/popup/product/doorstyleproduct.js.map +0 -1
- package/lib/components/toolbar/popup/product/floor.js +0 -59
- package/lib/components/toolbar/popup/product/floor.js.map +0 -1
- package/lib/components/toolbar/popup/product/floorproduct.js +0 -68
- package/lib/components/toolbar/popup/product/floorproduct.js.map +0 -1
- package/lib/components/toolbar/popup/product/index.js +0 -59
- package/lib/components/toolbar/popup/product/index.js.map +0 -1
- package/lib/components/toolbar/popup/product/primary.js +0 -71
- package/lib/components/toolbar/popup/product/primary.js.map +0 -1
- package/lib/components/toolbar/popup/product/productline.js +0 -128
- package/lib/components/toolbar/popup/product/productline.js.map +0 -1
- package/lib/components/toolbar/popup/product/reviewItem.js +0 -346
- package/lib/components/toolbar/popup/product/reviewItem.js.map +0 -1
- package/lib/components/toolbar/popup/product/reviewMolding.js +0 -291
- package/lib/components/toolbar/popup/product/reviewMolding.js.map +0 -1
- package/lib/components/toolbar/popup/product/styles.js +0 -79
- package/lib/components/toolbar/popup/product/styles.js.map +0 -1
- package/lib/components/toolbar/popup/savedesign/FullPictureForm.js +0 -169
- package/lib/components/toolbar/popup/savedesign/FullPictureForm.js.map +0 -1
- package/lib/components/toolbar/popup/savedesign/index.js +0 -516
- package/lib/components/toolbar/popup/savedesign/index.js.map +0 -1
- package/lib/components/toolbar/popup/savedesign/styles.js +0 -26
- package/lib/components/toolbar/popup/savedesign/styles.js.map +0 -1
- package/lib/components/toolbar/popup/setDoorStyleOption/index.js +0 -64
- package/lib/components/toolbar/popup/setDoorStyleOption/index.js.map +0 -1
- package/lib/components/toolbar/popup/styles.js +0 -104
- package/lib/components/toolbar/popup/styles.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/AddToCartOptions.js +0 -166
- package/lib/components/toolbar/popup/submitforquote/AddToCartOptions.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/CustomerRequestsForm.js +0 -93
- package/lib/components/toolbar/popup/submitforquote/CustomerRequestsForm.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/SkipDesignerReview.js +0 -45
- package/lib/components/toolbar/popup/submitforquote/SkipDesignerReview.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/StepDots.js +0 -40
- package/lib/components/toolbar/popup/submitforquote/StepDots.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/cart-choice.js +0 -141
- package/lib/components/toolbar/popup/submitforquote/cart-choice.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/doorstyle-menus.js +0 -50
- package/lib/components/toolbar/popup/submitforquote/doorstyle-menus.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/index.js +0 -698
- package/lib/components/toolbar/popup/submitforquote/index.js.map +0 -1
- package/lib/components/toolbar/popup/submitforquote/styles.js +0 -38
- package/lib/components/toolbar/popup/submitforquote/styles.js.map +0 -1
- package/lib/components/toolbar/popup/submitprompt/index.js +0 -79
- package/lib/components/toolbar/popup/submitprompt/index.js.map +0 -1
- package/lib/components/toolbar/popup/submitprompt/styles.js +0 -16
- package/lib/components/toolbar/popup/submitprompt/styles.js.map +0 -1
- package/lib/components/toolbar/toolbar-button.js +0 -111
- package/lib/components/toolbar/toolbar-button.js.map +0 -1
- package/lib/components/toolbar/toolbar-load-button.js +0 -36
- package/lib/components/toolbar/toolbar-load-button.js.map +0 -1
- package/lib/components/toolbar/toolbar-save-button.js +0 -34
- package/lib/components/toolbar/toolbar-save-button.js.map +0 -1
- package/lib/components/tutorial-view/Modal.js +0 -503
- package/lib/components/tutorial-view/Modal.js.map +0 -1
- package/lib/components/tutorial-view/styles.js +0 -13
- package/lib/components/tutorial-view/styles.js.map +0 -1
- package/lib/components/viewer2d/area.js +0 -90
- package/lib/components/viewer2d/area.js.map +0 -1
- package/lib/components/viewer2d/export.js +0 -122
- package/lib/components/viewer2d/export.js.map +0 -1
- package/lib/components/viewer2d/grids/grid-horizontal-streak.js +0 -45
- package/lib/components/viewer2d/grids/grid-horizontal-streak.js.map +0 -1
- package/lib/components/viewer2d/grids/grid-streak.js +0 -45
- package/lib/components/viewer2d/grids/grid-streak.js.map +0 -1
- package/lib/components/viewer2d/grids/grid-vertical-streak.js +0 -45
- package/lib/components/viewer2d/grids/grid-vertical-streak.js.map +0 -1
- package/lib/components/viewer2d/grids/grids.js +0 -45
- package/lib/components/viewer2d/grids/grids.js.map +0 -1
- package/lib/components/viewer2d/group.js +0 -63
- package/lib/components/viewer2d/group.js.map +0 -1
- package/lib/components/viewer2d/item.js +0 -522
- package/lib/components/viewer2d/item.js.map +0 -1
- package/lib/components/viewer2d/layer.js +0 -172
- package/lib/components/viewer2d/layer.js.map +0 -1
- package/lib/components/viewer2d/line.js +0 -899
- package/lib/components/viewer2d/line.js.map +0 -1
- package/lib/components/viewer2d/ruler.js +0 -108
- package/lib/components/viewer2d/ruler.js.map +0 -1
- package/lib/components/viewer2d/rulerDist.js +0 -154
- package/lib/components/viewer2d/rulerDist.js.map +0 -1
- package/lib/components/viewer2d/rulerX.js +0 -159
- package/lib/components/viewer2d/rulerX.js.map +0 -1
- package/lib/components/viewer2d/rulerY.js +0 -161
- package/lib/components/viewer2d/rulerY.js.map +0 -1
- package/lib/components/viewer2d/scene.js +0 -148
- package/lib/components/viewer2d/scene.js.map +0 -1
- package/lib/components/viewer2d/snap.js +0 -84
- package/lib/components/viewer2d/snap.js.map +0 -1
- package/lib/components/viewer2d/state.js +0 -88
- package/lib/components/viewer2d/state.js.map +0 -1
- package/lib/components/viewer2d/utils.js +0 -174
- package/lib/components/viewer2d/utils.js.map +0 -1
- package/lib/components/viewer2d/vertex.js +0 -76
- package/lib/components/viewer2d/vertex.js.map +0 -1
- package/lib/components/viewer2d/viewer2d.js +0 -1409
- package/lib/components/viewer2d/viewer2d.js.map +0 -1
- package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +0 -2598
- package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js.map +0 -1
- package/lib/components/viewer3d/dcm.js +0 -408
- package/lib/components/viewer3d/dcm.js.map +0 -1
- package/lib/components/viewer3d/fbm.js +0 -421
- package/lib/components/viewer3d/fbm.js.map +0 -1
- package/lib/components/viewer3d/front3D.js +0 -76
- package/lib/components/viewer3d/front3D.js.map +0 -1
- package/lib/components/viewer3d/grid-creator.js +0 -35
- package/lib/components/viewer3d/grid-creator.js.map +0 -1
- package/lib/components/viewer3d/grids/grid-horizontal-streak.js +0 -45
- package/lib/components/viewer3d/grids/grid-horizontal-streak.js.map +0 -1
- package/lib/components/viewer3d/grids/grid-streak.js +0 -36
- package/lib/components/viewer3d/grids/grid-streak.js.map +0 -1
- package/lib/components/viewer3d/grids/grid-vertical-streak.js +0 -45
- package/lib/components/viewer3d/grids/grid-vertical-streak.js.map +0 -1
- package/lib/components/viewer3d/libs/first-person-controls.js +0 -75
- package/lib/components/viewer3d/libs/first-person-controls.js.map +0 -1
- package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js +0 -1288
- package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js.map +0 -1
- package/lib/components/viewer3d/libs/mtl-loader.js +0 -360
- package/lib/components/viewer3d/libs/mtl-loader.js.map +0 -1
- package/lib/components/viewer3d/libs/obj-loader.js +0 -465
- package/lib/components/viewer3d/libs/obj-loader.js.map +0 -1
- package/lib/components/viewer3d/libs/orbit-controls.js +0 -701
- package/lib/components/viewer3d/libs/orbit-controls.js.map +0 -1
- package/lib/components/viewer3d/libs/pointer-lock-controls.js +0 -48
- package/lib/components/viewer3d/libs/pointer-lock-controls.js.map +0 -1
- package/lib/components/viewer3d/lrm.js +0 -312
- package/lib/components/viewer3d/lrm.js.map +0 -1
- package/lib/components/viewer3d/model.js +0 -715
- package/lib/components/viewer3d/model.js.map +0 -1
- package/lib/components/viewer3d/pointer-lock-navigation.js +0 -123
- package/lib/components/viewer3d/pointer-lock-navigation.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/itemRect.js +0 -69
- package/lib/components/viewer3d/ruler-utils/itemRect.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/layer3D.js +0 -503
- package/lib/components/viewer3d/ruler-utils/layer3D.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/ruler3D.js +0 -235
- package/lib/components/viewer3d/ruler-utils/ruler3D.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/scene3D.js +0 -70
- package/lib/components/viewer3d/ruler-utils/scene3D.js.map +0 -1
- package/lib/components/viewer3d/ruler-utils/state3D.js +0 -26
- package/lib/components/viewer3d/ruler-utils/state3D.js.map +0 -1
- package/lib/components/viewer3d/scene-creator.js +0 -3641
- package/lib/components/viewer3d/scene-creator.js.map +0 -1
- package/lib/components/viewer3d/three-memory-cleaner.js +0 -61
- package/lib/components/viewer3d/three-memory-cleaner.js.map +0 -1
- package/lib/components/viewer3d/viewer3d-first-person.js +0 -321
- package/lib/components/viewer3d/viewer3d-first-person.js.map +0 -1
- package/lib/components/viewer3d/viewer3d.js +0 -2508
- package/lib/components/viewer3d/viewer3d.js.map +0 -1
- package/lib/components/wizardstep/button/styles.js +0 -67
- package/lib/components/wizardstep/button/styles.js.map +0 -1
- package/lib/components/wizardstep/export.js +0 -12
- package/lib/components/wizardstep/export.js.map +0 -1
- package/lib/components/wizardstep/index.js +0 -978
- package/lib/components/wizardstep/index.js.map +0 -1
- package/lib/components/wizardstep/styles.js +0 -68
- package/lib/components/wizardstep/styles.js.map +0 -1
- package/lib/components/wizardstep/wizardstep-content-button.js +0 -224
- package/lib/components/wizardstep/wizardstep-content-button.js.map +0 -1
- package/lib/components/wizardstep/wizardstep-toggle-button.js +0 -133
- package/lib/components/wizardstep/wizardstep-toggle-button.js.map +0 -1
- package/lib/constants.js +0 -646
- package/lib/constants.js.map +0 -1
- package/lib/hooks/useCheckCart.js +0 -60
- package/lib/hooks/useCheckCart.js.map +0 -1
- package/lib/hooks/useGetPricesBySku.js +0 -81
- package/lib/hooks/useGetPricesBySku.js.map +0 -1
- package/lib/hooks/useValidateToken.js +0 -207
- package/lib/hooks/useValidateToken.js.map +0 -1
- package/lib/index.js +0 -102
- package/lib/index.js.map +0 -1
- package/lib/models.js +0 -518
- package/lib/models.js.map +0 -1
- package/lib/plugins/SVGLoader.js +0 -1418
- package/lib/plugins/SVGLoader.js.map +0 -1
- package/lib/plugins/autosave.js +0 -40
- package/lib/plugins/autosave.js.map +0 -1
- package/lib/plugins/console-debugger.js +0 -45
- package/lib/plugins/console-debugger.js.map +0 -1
- package/lib/plugins/export.js +0 -34
- package/lib/plugins/export.js.map +0 -1
- package/lib/plugins/keyboard.js +0 -108
- package/lib/plugins/keyboard.js.map +0 -1
- package/lib/reducers/areas-reducer.js +0 -19
- package/lib/reducers/areas-reducer.js.map +0 -1
- package/lib/reducers/export.js +0 -98
- package/lib/reducers/export.js.map +0 -1
- package/lib/reducers/groups-reducer.js +0 -45
- package/lib/reducers/groups-reducer.js.map +0 -1
- package/lib/reducers/holes-reducer.js +0 -69
- package/lib/reducers/holes-reducer.js.map +0 -1
- package/lib/reducers/items-reducer.js +0 -147
- package/lib/reducers/items-reducer.js.map +0 -1
- package/lib/reducers/lines-reducer.js +0 -52
- package/lib/reducers/lines-reducer.js.map +0 -1
- package/lib/reducers/project-reducer.js +0 -136
- package/lib/reducers/project-reducer.js.map +0 -1
- package/lib/reducers/reducer.js +0 -27
- package/lib/reducers/reducer.js.map +0 -1
- package/lib/reducers/scene-reducer.js +0 -35
- package/lib/reducers/scene-reducer.js.map +0 -1
- package/lib/reducers/user-reducer.js +0 -48
- package/lib/reducers/user-reducer.js.map +0 -1
- package/lib/reducers/vertices-reducer.js +0 -26
- package/lib/reducers/vertices-reducer.js.map +0 -1
- package/lib/reducers/viewer2d-reducer.js +0 -83
- package/lib/reducers/viewer2d-reducer.js.map +0 -1
- package/lib/reducers/viewer3d-reducer.js +0 -64
- package/lib/reducers/viewer3d-reducer.js.map +0 -1
- package/lib/shared-style.js +0 -73
- package/lib/shared-style.js.map +0 -1
- package/lib/styles/export.js +0 -14
- package/lib/styles/export.js.map +0 -1
- package/lib/translator/en.js +0 -111
- package/lib/translator/en.js.map +0 -1
- package/lib/translator/it.js +0 -86
- package/lib/translator/it.js.map +0 -1
- package/lib/translator/ru.js +0 -86
- package/lib/translator/ru.js.map +0 -1
- package/lib/translator/translator.js +0 -91
- package/lib/translator/translator.js.map +0 -1
- package/lib/utils/browser.js +0 -41
- package/lib/utils/browser.js.map +0 -1
- package/lib/utils/email-validator.js +0 -11
- package/lib/utils/email-validator.js.map +0 -1
- package/lib/utils/export.js +0 -57
- package/lib/utils/export.js.map +0 -1
- package/lib/utils/geometry.js +0 -2329
- package/lib/utils/geometry.js.map +0 -1
- package/lib/utils/get-edges-of-subgraphs.js +0 -29
- package/lib/utils/get-edges-of-subgraphs.js.map +0 -1
- package/lib/utils/graph-cycles.js +0 -241
- package/lib/utils/graph-cycles.js.map +0 -1
- package/lib/utils/graph-inner-cycles.js +0 -55
- package/lib/utils/graph-inner-cycles.js.map +0 -1
- package/lib/utils/graph.js +0 -152
- package/lib/utils/graph.js.map +0 -1
- package/lib/utils/helper.js +0 -360
- package/lib/utils/helper.js.map +0 -1
- package/lib/utils/history.js +0 -37
- package/lib/utils/history.js.map +0 -1
- package/lib/utils/id-broker.js +0 -26
- package/lib/utils/id-broker.js.map +0 -1
- package/lib/utils/logger.js +0 -15
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/math.js +0 -58
- package/lib/utils/math.js.map +0 -1
- package/lib/utils/molding.js +0 -864
- package/lib/utils/molding.js.map +0 -1
- package/lib/utils/name-generator.js +0 -24
- package/lib/utils/name-generator.js.map +0 -1
- package/lib/utils/objects-utils.js +0 -61
- package/lib/utils/objects-utils.js.map +0 -1
- package/lib/utils/phone-validator.js +0 -11
- package/lib/utils/phone-validator.js.map +0 -1
- package/lib/utils/process-black-list.js +0 -25
- package/lib/utils/process-black-list.js.map +0 -1
- package/lib/utils/react-if.js +0 -25
- package/lib/utils/react-if.js.map +0 -1
- package/lib/utils/snap-scene.js +0 -106
- package/lib/utils/snap-scene.js.map +0 -1
- package/lib/utils/snap.js +0 -250
- package/lib/utils/snap.js.map +0 -1
- package/lib/utils/threeCSG.es6.js +0 -504
- package/lib/utils/threeCSG.es6.js.map +0 -1
- package/lib/version.js +0 -8
- package/lib/version.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"camera-controls.module.js","names":["MOUSE_BUTTON","LEFT","RIGHT","MIDDLE","ACTION","Object","freeze","NONE","ROTATE","TRUCK","OFFSET","DOLLY","ZOOM","TOUCH_ROTATE","TOUCH_TRUCK","TOUCH_OFFSET","TOUCH_DOLLY","TOUCH_ZOOM","TOUCH_DOLLY_TRUCK","TOUCH_DOLLY_OFFSET","TOUCH_DOLLY_ROTATE","TOUCH_ZOOM_TRUCK","TOUCH_ZOOM_OFFSET","TOUCH_ZOOM_ROTATE","DOLLY_DIRECTION","IN","OUT","isPerspectiveCamera","camera","isOrthographicCamera","PI_2","Math","PI","PI_HALF","EPSILON","DEG2RAD","clamp","value","min","max","approxZero","number","error","arguments","length","undefined","abs","approxEquals","a","b","roundToStep","step","round","infinityToMaxNumber","isFinite","Number","MAX_VALUE","maxNumberToInfinity","Infinity","smoothDamp","current","target","currentVelocityRef","smoothTime","maxSpeed","deltaTime","omega","x","exp","change","originalTo","maxChange","temp","output","smoothDampVec3","out","targetX","targetY","y","targetZ","z","changeX","changeY","changeZ","originalToX","originalToY","originalToZ","maxChangeSq","magnitudeSq","magnitude","sqrt","tempX","tempY","tempZ","origMinusCurrentX","origMinusCurrentY","origMinusCurrentZ","outMinusOrigX","outMinusOrigY","outMinusOrigZ","extractClientCoordFromEvent","pointers","set","forEach","pointer","clientX","clientY","notSupportedInOrthographicCamera","message","console","warn","concat","EventDispatcher","exports","_classCallCheck","_listeners","_createClass","key","addEventListener","type","listener","listeners","indexOf","push","hasEventListener","removeEventListener","listenerArray","index","splice","removeAllEventListeners","Array","isArray","dispatchEvent","event","array","slice","i","l","call","_a","VERSION","TOUCH_DOLLY_FACTOR","isMac","test","globalThis","navigator","platform","THREE","_ORIGIN","_AXIS_Y","_AXIS_Z","_v2","_v3A","_v3B","_v3C","_cameraDirection","_xColumn","_yColumn","_zColumn","_deltaTarget","_deltaOffset","_sphericalA","_sphericalB","_box3A","_box3B","_sphere","_quaternionA","_quaternionB","_rotationMatrix","_raycaster","CameraControls","_EventDispatcher","domElement","_this","_callSuper","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","minDistance","maxDistance","infinityDolly","minZoom","maxZoom","draggingSmoothTime","azimuthRotateSpeed","polarRotateSpeed","dollySpeed","dollyDragInverted","truckSpeed","dollyToCursor","dragToOffset","verticalDragToForward","boundaryFriction","restThreshold","colliderMeshes","cancel","_enabled","_state","_viewport","_changedDolly","_changedZoom","_hasRested","_boundaryEnclosesCamera","_needsUpdate","_updatedLastTime","_elementRect","DOMRect","_isDragging","_dragNeedsUpdate","_activePointers","_lockedPointer","_interactiveArea","_isUserControllingRotate","_isUserControllingDolly","_isUserControllingTruck","_isUserControllingOffset","_isUserControllingZoom","_lastDollyDirection","_thetaVelocity","_phiVelocity","_radiusVelocity","_targetVelocity","Vector3","_focalOffsetVelocity","_zoomVelocity","_truckInternal","deltaX","deltaY","truckX","pedestalY","_camera","offset","copy","position","sub","_target","fov","getEffectiveFOV","targetDistance","tan","height","right","left","zoom","width","top","bottom","setFocalOffset","_focalOffsetEnd","truck","forward","_rotateInternal","theta","phi","rotate","_dollyInternal","delta","dollyScale","pow","lastDistance","_sphericalEnd","radius","distance","clampedDistance","overflowedDistance","_dollyToNoClamp","dollyInFixed","_dollyControlCoord","sign","_zoomInternal","zoomScale","lastZoom","_zoom","zoomTo","_yAxisUpSpace","Quaternion","setFromUnitVectors","up","_yAxisUpSpaceInverse","clone","_targetEnd","_focalOffset","_spherical","Spherical","setFromVector3","applyQuaternion","_lastDistance","_zoomEnd","_lastZoom","_nearPlaneCorners","_updateNearPlaneCorners","_boundary","Box3","_cameraUp0","_target0","_position0","_zoom0","_focalOffset0","Vector2","mouseButtons","middle","wheel","touches","one","two","three","dragStartPosition","lastDragPosition","dollyStart","onPointerDown","_domElement","elRect","getBoundingClientRect","mouseButton","pointerType","buttons","zombiePointer","_findPointerByMouseButton","_disposePointer","pointerId","ownerDocument","onPointerMove","passive","onPointerUp","startDragging","cancelable","preventDefault","_findPointerById","movementX","movementY","dragging","endDragging","lastScrollTimeStamp","onMouseWheel","now","performance","_getClientRect","deltaYFactor","deltaMode","onContextMenu","PointerEvent","isMultiTouch","dx","dy","isPointerLockActive","pointerLockElement","lockedPointer","dollyX","dollyY","dollyDirection","dollyDelta","lockPointer","requestPointerLock","onPointerLockChange","onPointerLockError","unlockPointer","_b","_c","exitPointerLock","_addAllEventListeners","style","touchAction","userSelect","webkitUserSelect","_removeAllEventListeners","connect","update","_inherits","get","updateCameraUp","updateProjectionMatrix","enabled","azimuthAngle","polarAngle","boundaryEnclosesCamera","interactiveArea","_superPropGet","enableTransition","rotateTo","rotateAzimuthTo","rotatePolarTo","makeSafe","resolveImmediately","_createOnRestPromise","dolly","dollyTo","lastRadius","hasCollider","maxDistanceByCollisionTest","_collisionTest","isCollided","isDollyIn","Promise","resolve","add","_getCameraDirection","multiplyScalar","zoomStep","pan","updateMatrix","setFromMatrixColumn","matrix","to","moveTo","crossVectors","elevate","_encloseToBoundary","lookInDirectionOf","point","direction","normalize","setPosition","fitToBox","box3OrObject","_ref","_ref$cover","cover","_ref$paddingLeft","paddingLeft","_ref$paddingRight","paddingRight","_ref$paddingBottom","paddingBottom","_ref$paddingTop","paddingTop","promises","aabb","isBox3","setFromObject","isEmpty","normal","setFromSpherical","rotation","viewFromPolar","multiply","setFromAxisAngle","bb","makeEmpty","expandByPoint","setX","setY","setZ","premultiply","invert","bbSize","getSize","center","getCenter","getDistanceToFitBox","all","fitToSphere","sphereOrMesh","isSphere","boundingSphere","createBoundingSphere","distanceToFit","getDistanceToFitSphere","diameter","setLookAt","positionX","positionY","positionZ","normalizeRotations","lerpLookAt","positionAX","positionAY","positionAZ","targetAX","targetAY","targetAZ","positionBX","positionBY","positionBZ","targetBX","targetBY","targetBZ","t","targetA","positionA","targetB","positionB","lerp","deltaTheta","deltaPhi","deltaRadius","setTarget","pos","getPosition","promise","setOrbitPoint","updateMatrixWorld","matrixWorldInverse","distanceTo","cameraToPoint","setBoundary","box3","clampPoint","setViewport","viewportOrX","Vector4","depth","boundingRectAspect","aspect","heightToFit","vFOV","hFOV","atan","sin","getTarget","receiveEndValue","_out","isVector3","getSpherical","getFocalOffset","reset","saveState","applyCameraUp","cameraDirection","subVectors","side","deltaTarget","deltaOffset","deltaZoom","dollyControlAmount","planeX","cross","lengthSq","planeY","worldToScreen","prevRadius","lerpRatio","cursor","newTargetEnd","isMin","isMax","dollyAmount","targetEndDiff","worldCursorPosition","near","far","unproject","quaternion","dot","prevZoom","prevPlaneConstant","newPlaneConstant","pullBack","lookAt","affectOffset","updated","toJSON","JSON","stringify","toArray","focalOffset","target0","position0","zoom0","focalOffset0","fromJSON","json","obj","parse","fromArray","setAttribute","disconnect","removeAttribute","dispose","_getTargetDirection","divideScalar","negate","find","activePointer","friction","offsetLength2","newTarget","clampedTarget","deltaClampedTarget","deltaClampedTargetLength2","offsetFactor","heightHalf","widthHalf","zoomInv","rayDirection","nearPlaneCorner","applyMatrix4","origin","addVectors","intersects","intersectObjects","rect","w","_this2","onResolve","_","install","libs","Sphere","Matrix4","Raycaster","object3d","traverseVisible","object","isMesh","expandByObject","maxRadiusSq","mesh","geometry","matrixWorld","bufferGeometry","attributes","count","fromBufferAttribute","distanceToSquared"],"sources":["../../../../src/components/viewer3d/camera-controls-module/camera-controls.module.js"],"sourcesContent":["/*!\n * camera-controls\n * https://github.com/yomotsu/camera-controls\n * (c) 2017 @yomotsu\n * Released under the MIT License.\n */\n// see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#value\nconst MOUSE_BUTTON = {\n LEFT: 1,\n RIGHT: 2,\n MIDDLE: 4\n};\nconst ACTION = Object.freeze({\n NONE: 0,\n ROTATE: 1,\n TRUCK: 2,\n OFFSET: 4,\n DOLLY: 8,\n ZOOM: 16,\n TOUCH_ROTATE: 32,\n TOUCH_TRUCK: 64,\n TOUCH_OFFSET: 128,\n TOUCH_DOLLY: 256,\n TOUCH_ZOOM: 512,\n TOUCH_DOLLY_TRUCK: 1024,\n TOUCH_DOLLY_OFFSET: 2048,\n TOUCH_DOLLY_ROTATE: 4096,\n TOUCH_ZOOM_TRUCK: 8192,\n TOUCH_ZOOM_OFFSET: 16384,\n TOUCH_ZOOM_ROTATE: 32768\n});\nconst DOLLY_DIRECTION = {\n NONE: 0,\n IN: 1,\n OUT: -1\n};\nfunction isPerspectiveCamera(camera) {\n return camera.isPerspectiveCamera;\n}\nfunction isOrthographicCamera(camera) {\n return camera.isOrthographicCamera;\n}\n\nconst PI_2 = Math.PI * 2;\nconst PI_HALF = Math.PI / 2;\n\nconst EPSILON = 1e-5;\nconst DEG2RAD = Math.PI / 180;\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction approxZero(number, error = EPSILON) {\n return Math.abs(number) < error;\n}\nfunction approxEquals(a, b, error = EPSILON) {\n return approxZero(a - b, error);\n}\nfunction roundToStep(value, step) {\n return Math.round(value / step) * step;\n}\nfunction infinityToMaxNumber(value) {\n if (isFinite(value)) return value;\n if (value < 0) return -Number.MAX_VALUE;\n return Number.MAX_VALUE;\n}\nfunction maxNumberToInfinity(value) {\n if (Math.abs(value) < Number.MAX_VALUE) return value;\n return value * Infinity;\n}\n// https://docs.unity3d.com/ScriptReference/Mathf.SmoothDamp.html\n// https://github.com/Unity-Technologies/UnityCsReference/blob/a2bdfe9b3c4cd4476f44bf52f848063bfaf7b6b9/Runtime/Export/Math/Mathf.cs#L308\nfunction smoothDamp(\n current,\n target,\n currentVelocityRef,\n smoothTime,\n maxSpeed = Infinity,\n deltaTime\n) {\n // Based on Game Programming Gems 4 Chapter 1.10\n smoothTime = Math.max(0.0001, smoothTime);\n const omega = 2 / smoothTime;\n const x = omega * deltaTime;\n const exp = 1 / (1 + x + 0.48 * x * x + 0.235 * x * x * x);\n let change = current - target;\n const originalTo = target;\n // Clamp maximum speed\n const maxChange = maxSpeed * smoothTime;\n change = clamp(change, -maxChange, maxChange);\n target = current - change;\n const temp = (currentVelocityRef.value + omega * change) * deltaTime;\n currentVelocityRef.value = (currentVelocityRef.value - omega * temp) * exp;\n let output = target + (change + temp) * exp;\n // Prevent overshooting\n if (originalTo - current > 0.0 === output > originalTo) {\n output = originalTo;\n currentVelocityRef.value = (output - originalTo) / deltaTime;\n }\n return output;\n}\n// https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.html\n// https://github.com/Unity-Technologies/UnityCsReference/blob/a2bdfe9b3c4cd4476f44bf52f848063bfaf7b6b9/Runtime/Export/Math/Vector3.cs#L97\nfunction smoothDampVec3(\n current,\n target,\n currentVelocityRef,\n smoothTime,\n maxSpeed = Infinity,\n deltaTime,\n out\n) {\n // Based on Game Programming Gems 4 Chapter 1.10\n smoothTime = Math.max(0.0001, smoothTime);\n const omega = 2 / smoothTime;\n const x = omega * deltaTime;\n const exp = 1 / (1 + x + 0.48 * x * x + 0.235 * x * x * x);\n let targetX = target.x;\n let targetY = target.y;\n let targetZ = target.z;\n let changeX = current.x - targetX;\n let changeY = current.y - targetY;\n let changeZ = current.z - targetZ;\n const originalToX = targetX;\n const originalToY = targetY;\n const originalToZ = targetZ;\n // Clamp maximum speed\n const maxChange = maxSpeed * smoothTime;\n const maxChangeSq = maxChange * maxChange;\n const magnitudeSq = changeX * changeX + changeY * changeY + changeZ * changeZ;\n if (magnitudeSq > maxChangeSq) {\n const magnitude = Math.sqrt(magnitudeSq);\n changeX = (changeX / magnitude) * maxChange;\n changeY = (changeY / magnitude) * maxChange;\n changeZ = (changeZ / magnitude) * maxChange;\n }\n targetX = current.x - changeX;\n targetY = current.y - changeY;\n targetZ = current.z - changeZ;\n const tempX = (currentVelocityRef.x + omega * changeX) * deltaTime;\n const tempY = (currentVelocityRef.y + omega * changeY) * deltaTime;\n const tempZ = (currentVelocityRef.z + omega * changeZ) * deltaTime;\n currentVelocityRef.x = (currentVelocityRef.x - omega * tempX) * exp;\n currentVelocityRef.y = (currentVelocityRef.y - omega * tempY) * exp;\n currentVelocityRef.z = (currentVelocityRef.z - omega * tempZ) * exp;\n out.x = targetX + (changeX + tempX) * exp;\n out.y = targetY + (changeY + tempY) * exp;\n out.z = targetZ + (changeZ + tempZ) * exp;\n // Prevent overshooting\n const origMinusCurrentX = originalToX - current.x;\n const origMinusCurrentY = originalToY - current.y;\n const origMinusCurrentZ = originalToZ - current.z;\n const outMinusOrigX = out.x - originalToX;\n const outMinusOrigY = out.y - originalToY;\n const outMinusOrigZ = out.z - originalToZ;\n if (\n origMinusCurrentX * outMinusOrigX +\n origMinusCurrentY * outMinusOrigY +\n origMinusCurrentZ * outMinusOrigZ >\n 0\n ) {\n out.x = originalToX;\n out.y = originalToY;\n out.z = originalToZ;\n currentVelocityRef.x = (out.x - originalToX) / deltaTime;\n currentVelocityRef.y = (out.y - originalToY) / deltaTime;\n currentVelocityRef.z = (out.z - originalToZ) / deltaTime;\n }\n return out;\n}\n\nfunction extractClientCoordFromEvent(pointers, out) {\n out.set(0, 0);\n pointers.forEach(pointer => {\n out.x += pointer.clientX;\n out.y += pointer.clientY;\n });\n out.x /= pointers.length;\n out.y /= pointers.length;\n}\n\nfunction notSupportedInOrthographicCamera(camera, message) {\n if (isOrthographicCamera(camera)) {\n console.warn(`${message} is not supported in OrthographicCamera`);\n return true;\n }\n return false;\n}\n\nclass EventDispatcher {\n constructor() {\n this._listeners = {};\n }\n /**\n * Adds the specified event listener.\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n addEventListener(type, listener) {\n const listeners = this._listeners;\n if (listeners[type] === undefined) listeners[type] = [];\n if (listeners[type].indexOf(listener) === -1)\n listeners[type].push(listener);\n }\n /**\n * Presence of the specified event listener.\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n hasEventListener(type, listener) {\n const listeners = this._listeners;\n return (\n listeners[type] !== undefined && listeners[type].indexOf(listener) !== -1\n );\n }\n /**\n * Removes the specified event listener\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n removeEventListener(type, listener) {\n const listeners = this._listeners;\n const listenerArray = listeners[type];\n if (listenerArray !== undefined) {\n const index = listenerArray.indexOf(listener);\n if (index !== -1) listenerArray.splice(index, 1);\n }\n }\n /**\n * Removes all event listeners\n * @param type event name\n * @category Methods\n */\n removeAllEventListeners(type) {\n if (!type) {\n this._listeners = {};\n return;\n }\n if (Array.isArray(this._listeners[type])) this._listeners[type].length = 0;\n }\n /**\n * Fire an event type.\n * @param event DispatcherEvent\n * @category Methods\n */\n dispatchEvent(event) {\n const listeners = this._listeners;\n const listenerArray = listeners[event.type];\n if (listenerArray !== undefined) {\n event.target = this;\n const array = listenerArray.slice(0);\n for (let i = 0, l = array.length; i < l; i++) {\n array[i].call(this, event);\n }\n }\n }\n}\n\nvar _a;\nconst VERSION = '2.8.4'; // will be replaced with `version` in package.json during the build process.\nconst TOUCH_DOLLY_FACTOR = 1 / 8;\nconst isMac = /Mac/.test(\n (_a =\n globalThis === null || globalThis === void 0\n ? void 0\n : globalThis.navigator) === null || _a === void 0\n ? void 0\n : _a.platform\n);\nlet THREE;\nlet _ORIGIN;\nlet _AXIS_Y;\nlet _AXIS_Z;\nlet _v2;\nlet _v3A;\nlet _v3B;\nlet _v3C;\nlet _cameraDirection;\nlet _xColumn;\nlet _yColumn;\nlet _zColumn;\nlet _deltaTarget;\nlet _deltaOffset;\nlet _sphericalA;\nlet _sphericalB;\nlet _box3A;\nlet _box3B;\nlet _sphere;\nlet _quaternionA;\nlet _quaternionB;\nlet _rotationMatrix;\nlet _raycaster;\nclass CameraControls extends EventDispatcher {\n /**\n * Injects THREE as the dependency. You can then proceed to use CameraControls.\n *\n * e.g\n * ```javascript\n * CameraControls.install( { THREE: THREE } );\n * ```\n *\n * Note: If you do not wish to use enter three.js to reduce file size(tree-shaking for example), make a subset to install.\n *\n * ```js\n * import {\n * \tVector2,\n * \tVector3,\n * \tVector4,\n * \tQuaternion,\n * \tMatrix4,\n * \tSpherical,\n * \tBox3,\n * \tSphere,\n * \tRaycaster,\n * \tMathUtils,\n * } from 'three';\n *\n * const subsetOfTHREE = {\n * \tVector2 : Vector2,\n * \tVector3 : Vector3,\n * \tVector4 : Vector4,\n * \tQuaternion: Quaternion,\n * \tMatrix4 : Matrix4,\n * \tSpherical : Spherical,\n * \tBox3 : Box3,\n * \tSphere : Sphere,\n * \tRaycaster : Raycaster,\n * };\n\n * CameraControls.install( { THREE: subsetOfTHREE } );\n * ```\n * @category Statics\n */\n static install(libs) {\n THREE = libs.THREE;\n _ORIGIN = Object.freeze(new THREE.Vector3(0, 0, 0));\n _AXIS_Y = Object.freeze(new THREE.Vector3(0, 1, 0));\n _AXIS_Z = Object.freeze(new THREE.Vector3(0, 0, 1));\n _v2 = new THREE.Vector2();\n _v3A = new THREE.Vector3();\n _v3B = new THREE.Vector3();\n _v3C = new THREE.Vector3();\n _cameraDirection = new THREE.Vector3();\n _xColumn = new THREE.Vector3();\n _yColumn = new THREE.Vector3();\n _zColumn = new THREE.Vector3();\n _deltaTarget = new THREE.Vector3();\n _deltaOffset = new THREE.Vector3();\n _sphericalA = new THREE.Spherical();\n _sphericalB = new THREE.Spherical();\n _box3A = new THREE.Box3();\n _box3B = new THREE.Box3();\n _sphere = new THREE.Sphere();\n _quaternionA = new THREE.Quaternion();\n _quaternionB = new THREE.Quaternion();\n _rotationMatrix = new THREE.Matrix4();\n _raycaster = new THREE.Raycaster();\n }\n /**\n * list all ACTIONs\n * @category Statics\n */\n static get ACTION() {\n return ACTION;\n }\n /**\n * Creates a `CameraControls` instance.\n *\n * Note:\n * You **must install** three.js before using camera-controls. see [#install](#install)\n * Not doing so will lead to runtime errors (`undefined` references to THREE).\n *\n * e.g.\n * ```\n * CameraControls.install( { THREE } );\n * const cameraControls = new CameraControls( camera, domElement );\n * ```\n *\n * @param camera A `THREE.PerspectiveCamera` or `THREE.OrthographicCamera` to be controlled.\n * @param domElement A `HTMLElement` for the draggable area, usually `renderer.domElement`.\n * @category Constructor\n */\n constructor(camera, domElement) {\n super();\n /**\n * Minimum vertical angle in radians.\n * The angle has to be between `0` and `.maxPolarAngle` inclusive.\n * The default value is `0`.\n *\n * e.g.\n * ```\n * cameraControls.maxPolarAngle = 0;\n * ```\n * @category Properties\n */\n this.minPolarAngle = 0; // radians\n /**\n * Maximum vertical angle in radians.\n * The angle has to be between `.maxPolarAngle` and `Math.PI` inclusive.\n * The default value is `Math.PI`.\n *\n * e.g.\n * ```\n * cameraControls.maxPolarAngle = Math.PI;\n * ```\n * @category Properties\n */\n this.maxPolarAngle = Math.PI; // radians\n /**\n * Minimum horizontal angle in radians.\n * The angle has to be less than `.maxAzimuthAngle`.\n * The default value is `- Infinity`.\n *\n * e.g.\n * ```\n * cameraControls.minAzimuthAngle = - Infinity;\n * ```\n * @category Properties\n */\n this.minAzimuthAngle = -Infinity; // radians\n /**\n * Maximum horizontal angle in radians.\n * The angle has to be greater than `.minAzimuthAngle`.\n * The default value is `Infinity`.\n *\n * e.g.\n * ```\n * cameraControls.maxAzimuthAngle = Infinity;\n * ```\n * @category Properties\n */\n this.maxAzimuthAngle = Infinity; // radians\n // How far you can dolly in and out ( PerspectiveCamera only )\n /**\n * Minimum distance for dolly. The value must be higher than `0`. Default is `Number.EPSILON`.\n * PerspectiveCamera only.\n * @category Properties\n */\n this.minDistance = Number.EPSILON;\n /**\n * Maximum distance for dolly. The value must be higher than `minDistance`. Default is `Infinity`.\n * PerspectiveCamera only.\n * @category Properties\n */\n this.maxDistance = Infinity;\n /**\n * `true` to enable Infinity Dolly for wheel and pinch. Use this with `minDistance` and `maxDistance`\n * If the Dolly distance is less (or over) than the `minDistance` (or `maxDistance`), `infinityDolly` will keep the distance and pushes the target position instead.\n * @category Properties\n */\n this.infinityDolly = false;\n /**\n * Minimum camera zoom.\n * @category Properties\n */\n this.minZoom = 0.01;\n /**\n * Maximum camera zoom.\n * @category Properties\n */\n this.maxZoom = Infinity;\n /**\n * Approximate time in seconds to reach the target. A smaller value will reach the target faster.\n * @category Properties\n */\n this.smoothTime = 0.25;\n /**\n * the smoothTime while dragging\n * @category Properties\n */\n this.draggingSmoothTime = 0.125;\n /**\n * Max transition speed in unit-per-seconds\n * @category Properties\n */\n this.maxSpeed = Infinity;\n /**\n * Speed of azimuth (horizontal) rotation.\n * @category Properties\n */\n this.azimuthRotateSpeed = 1.0;\n /**\n * Speed of polar (vertical) rotation.\n * @category Properties\n */\n this.polarRotateSpeed = 1.0;\n /**\n * Speed of mouse-wheel dollying.\n * @category Properties\n */\n this.dollySpeed = 1.0;\n /**\n * `true` to invert direction when dollying or zooming via drag\n * @category Properties\n */\n this.dollyDragInverted = false;\n /**\n * Speed of drag for truck and pedestal.\n * @category Properties\n */\n this.truckSpeed = 2.0;\n /**\n * `true` to enable Dolly-in to the mouse cursor coords.\n * @category Properties\n */\n this.dollyToCursor = false;\n /**\n * @category Properties\n */\n this.dragToOffset = false;\n /**\n * The same as `.screenSpacePanning` in three.js's OrbitControls.\n * @category Properties\n */\n this.verticalDragToForward = false;\n /**\n * Friction ratio of the boundary.\n * @category Properties\n */\n this.boundaryFriction = 0.0;\n /**\n * Controls how soon the `rest` event fires as the camera slows.\n * @category Properties\n */\n this.restThreshold = 0.01;\n /**\n * An array of Meshes to collide with camera.\n * Be aware colliderMeshes may decrease performance. The collision test uses 4 raycasters from the camera since the near plane has 4 corners.\n * @category Properties\n */\n this.colliderMeshes = [];\n /**\n * Force cancel user dragging.\n * @category Methods\n */\n // cancel will be overwritten in the constructor.\n this.cancel = () => {};\n this._enabled = true;\n this._state = ACTION.NONE;\n this._viewport = null;\n this._changedDolly = 0;\n this._changedZoom = 0;\n this._hasRested = true;\n this._boundaryEnclosesCamera = false;\n this._needsUpdate = true;\n this._updatedLastTime = false;\n this._elementRect = new DOMRect();\n this._isDragging = false;\n this._dragNeedsUpdate = true;\n this._activePointers = [];\n this._lockedPointer = null;\n this._interactiveArea = new DOMRect(0, 0, 1, 1);\n // Use draggingSmoothTime over smoothTime while true.\n // set automatically true on user-dragging start.\n // set automatically false on programmable methods call.\n this._isUserControllingRotate = false;\n this._isUserControllingDolly = false;\n this._isUserControllingTruck = false;\n this._isUserControllingOffset = false;\n this._isUserControllingZoom = false;\n this._lastDollyDirection = DOLLY_DIRECTION.NONE;\n // velocities for smoothDamp\n this._thetaVelocity = { value: 0 };\n this._phiVelocity = { value: 0 };\n this._radiusVelocity = { value: 0 };\n this._targetVelocity = new THREE.Vector3();\n this._focalOffsetVelocity = new THREE.Vector3();\n this._zoomVelocity = { value: 0 };\n this._truckInternal = (deltaX, deltaY, dragToOffset) => {\n let truckX;\n let pedestalY;\n if (isPerspectiveCamera(this._camera)) {\n const offset = _v3A.copy(this._camera.position).sub(this._target);\n // half of the fov is center to top of screen\n const fov = this._camera.getEffectiveFOV() * DEG2RAD;\n const targetDistance = offset.length() * Math.tan(fov * 0.5);\n truckX =\n (this.truckSpeed * deltaX * targetDistance) /\n this._elementRect.height;\n pedestalY =\n (this.truckSpeed * deltaY * targetDistance) /\n this._elementRect.height;\n } else if (isOrthographicCamera(this._camera)) {\n const camera = this._camera;\n truckX =\n (deltaX * (camera.right - camera.left)) /\n camera.zoom /\n this._elementRect.width;\n pedestalY =\n (deltaY * (camera.top - camera.bottom)) /\n camera.zoom /\n this._elementRect.height;\n } else {\n return;\n }\n if (this.verticalDragToForward) {\n dragToOffset\n ? this.setFocalOffset(\n this._focalOffsetEnd.x + truckX,\n this._focalOffsetEnd.y,\n this._focalOffsetEnd.z,\n true\n )\n : this.truck(truckX, 0, true);\n this.forward(-pedestalY, true);\n } else {\n dragToOffset\n ? this.setFocalOffset(\n this._focalOffsetEnd.x + truckX,\n this._focalOffsetEnd.y + pedestalY,\n this._focalOffsetEnd.z,\n true\n )\n : this.truck(truckX, pedestalY, true);\n }\n };\n this._rotateInternal = (deltaX, deltaY) => {\n const theta =\n (PI_2 * this.azimuthRotateSpeed * deltaX) / this._elementRect.height; // divide by *height* to refer the resolution\n const phi =\n (PI_2 * this.polarRotateSpeed * deltaY) / this._elementRect.height;\n this.rotate(theta, phi, true);\n };\n this._dollyInternal = (delta, x, y) => {\n const dollyScale = Math.pow(0.95, -delta * this.dollySpeed);\n const lastDistance = this._sphericalEnd.radius;\n const distance = this._sphericalEnd.radius * dollyScale;\n const clampedDistance = clamp(\n distance,\n this.minDistance,\n this.maxDistance\n );\n const overflowedDistance = clampedDistance - distance;\n if (this.infinityDolly && this.dollyToCursor) {\n this._dollyToNoClamp(distance, true);\n } else if (this.infinityDolly && !this.dollyToCursor) {\n this.dollyInFixed(overflowedDistance, true);\n this._dollyToNoClamp(clampedDistance, true);\n } else {\n this._dollyToNoClamp(clampedDistance, true);\n }\n if (this.dollyToCursor) {\n this._changedDolly +=\n (this.infinityDolly ? distance : clampedDistance) - lastDistance;\n this._dollyControlCoord.set(x, y);\n }\n this._lastDollyDirection = Math.sign(-delta);\n };\n this._zoomInternal = (delta, x, y) => {\n const zoomScale = Math.pow(0.95, delta * this.dollySpeed);\n const lastZoom = this._zoom;\n const zoom = this._zoom * zoomScale;\n // for both PerspectiveCamera and OrthographicCamera\n this.zoomTo(zoom, true);\n if (this.dollyToCursor) {\n this._changedZoom += zoom - lastZoom;\n this._dollyControlCoord.set(x, y);\n }\n };\n // Check if the user has installed THREE\n if (typeof THREE === 'undefined') {\n console.error(\n 'camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information.'\n );\n }\n this._camera = camera;\n this._yAxisUpSpace = new THREE.Quaternion().setFromUnitVectors(\n this._camera.up,\n _AXIS_Y\n );\n // this._yAxisUpSpaceInverse = this._yAxisUpSpace.clone().invert();\n this._yAxisUpSpaceInverse = this._yAxisUpSpace.clone();\n this._state = ACTION.NONE;\n // the location\n this._target = new THREE.Vector3();\n this._targetEnd = this._target.clone();\n this._focalOffset = new THREE.Vector3();\n this._focalOffsetEnd = this._focalOffset.clone();\n // rotation\n this._spherical = new THREE.Spherical().setFromVector3(\n _v3A.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)\n );\n this._sphericalEnd = this._spherical.clone();\n this._lastDistance = this._spherical.radius;\n this._zoom = this._camera.zoom;\n this._zoomEnd = this._zoom;\n this._lastZoom = this._zoom;\n // collisionTest uses nearPlane.s\n this._nearPlaneCorners = [\n new THREE.Vector3(),\n new THREE.Vector3(),\n new THREE.Vector3(),\n new THREE.Vector3()\n ];\n this._updateNearPlaneCorners();\n // Target cannot move outside of this box\n this._boundary = new THREE.Box3(\n new THREE.Vector3(-Infinity, -Infinity, -Infinity),\n new THREE.Vector3(Infinity, Infinity, Infinity)\n );\n // reset\n this._cameraUp0 = this._camera.up.clone();\n this._target0 = this._target.clone();\n this._position0 = this._camera.position.clone();\n this._zoom0 = this._zoom;\n this._focalOffset0 = this._focalOffset.clone();\n this._dollyControlCoord = new THREE.Vector2();\n // configs\n this.mouseButtons = {\n left: ACTION.ROTATE,\n middle: ACTION.DOLLY,\n right: ACTION.TRUCK,\n wheel: isPerspectiveCamera(this._camera)\n ? ACTION.DOLLY\n : isOrthographicCamera(this._camera)\n ? ACTION.ZOOM\n : ACTION.NONE\n };\n this.touches = {\n one: ACTION.TOUCH_ROTATE,\n two: isPerspectiveCamera(this._camera)\n ? ACTION.TOUCH_DOLLY_TRUCK\n : isOrthographicCamera(this._camera)\n ? ACTION.TOUCH_ZOOM_TRUCK\n : ACTION.NONE,\n three: ACTION.TOUCH_TRUCK\n };\n const dragStartPosition = new THREE.Vector2();\n const lastDragPosition = new THREE.Vector2();\n const dollyStart = new THREE.Vector2();\n const onPointerDown = event => {\n if (!this._enabled || !this._domElement) return;\n if (\n this._interactiveArea.left !== 0 ||\n this._interactiveArea.top !== 0 ||\n this._interactiveArea.width !== 1 ||\n this._interactiveArea.height !== 1\n ) {\n const elRect = this._domElement.getBoundingClientRect();\n const left = event.clientX / elRect.width;\n const top = event.clientY / elRect.height;\n // check if the interactiveArea contains the drag start position.\n if (\n left < this._interactiveArea.left ||\n left > this._interactiveArea.right ||\n top < this._interactiveArea.top ||\n top > this._interactiveArea.bottom\n )\n return;\n }\n // Don't call `event.preventDefault()` on the pointerdown event\n // to keep receiving pointermove evens outside dragging iframe\n // https://taye.me/blog/tips/2015/11/16/mouse-drag-outside-iframe/\n const mouseButton =\n event.pointerType !== 'mouse'\n ? null\n : (event.buttons & MOUSE_BUTTON.LEFT) === MOUSE_BUTTON.LEFT\n ? MOUSE_BUTTON.LEFT\n : (event.buttons & MOUSE_BUTTON.MIDDLE) === MOUSE_BUTTON.MIDDLE\n ? MOUSE_BUTTON.MIDDLE\n : (event.buttons & MOUSE_BUTTON.RIGHT) === MOUSE_BUTTON.RIGHT\n ? MOUSE_BUTTON.RIGHT\n : null;\n if (mouseButton !== null) {\n const zombiePointer = this._findPointerByMouseButton(mouseButton);\n zombiePointer && this._disposePointer(zombiePointer);\n }\n if (\n (event.buttons & MOUSE_BUTTON.LEFT) === MOUSE_BUTTON.LEFT &&\n this._lockedPointer\n )\n return;\n const pointer = {\n pointerId: event.pointerId,\n clientX: event.clientX,\n clientY: event.clientY,\n deltaX: 0,\n deltaY: 0,\n mouseButton\n };\n this._activePointers.push(pointer);\n // eslint-disable-next-line no-undef\n this._domElement.ownerDocument.removeEventListener(\n 'pointermove',\n onPointerMove,\n { passive: false }\n );\n this._domElement.ownerDocument.removeEventListener(\n 'pointerup',\n onPointerUp\n );\n this._domElement.ownerDocument.addEventListener(\n 'pointermove',\n onPointerMove,\n { passive: false }\n );\n this._domElement.ownerDocument.addEventListener('pointerup', onPointerUp);\n this._isDragging = true;\n startDragging(event);\n };\n const onPointerMove = event => {\n if (event.cancelable) event.preventDefault();\n const pointerId = event.pointerId;\n const pointer = this._lockedPointer || this._findPointerById(pointerId);\n if (!pointer) return;\n pointer.clientX = event.clientX;\n pointer.clientY = event.clientY;\n pointer.deltaX = event.movementX;\n pointer.deltaY = event.movementY;\n this._state = 0;\n if (event.pointerType === 'touch') {\n switch (this._activePointers.length) {\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n } else {\n if (\n (!this._isDragging && this._lockedPointer) ||\n (this._isDragging &&\n (event.buttons & MOUSE_BUTTON.LEFT) === MOUSE_BUTTON.LEFT)\n ) {\n this._state = this._state | this.mouseButtons.left;\n }\n if (\n this._isDragging &&\n (event.buttons & MOUSE_BUTTON.MIDDLE) === MOUSE_BUTTON.MIDDLE\n ) {\n this._state = this._state | this.mouseButtons.middle;\n }\n if (\n this._isDragging &&\n (event.buttons & MOUSE_BUTTON.RIGHT) === MOUSE_BUTTON.RIGHT\n ) {\n this._state = this._state | this.mouseButtons.right;\n }\n }\n dragging();\n };\n const onPointerUp = event => {\n const pointer = this._findPointerById(event.pointerId);\n if (pointer && pointer === this._lockedPointer) return;\n pointer && this._disposePointer(pointer);\n if (event.pointerType === 'touch') {\n switch (this._activePointers.length) {\n case 0:\n this._state = ACTION.NONE;\n break;\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n } else {\n this._state = ACTION.NONE;\n }\n endDragging();\n };\n let lastScrollTimeStamp = -1;\n const onMouseWheel = event => {\n if (!this._domElement) return;\n if (!this._enabled || this.mouseButtons.wheel === ACTION.NONE) return;\n if (\n this._interactiveArea.left !== 0 ||\n this._interactiveArea.top !== 0 ||\n this._interactiveArea.width !== 1 ||\n this._interactiveArea.height !== 1\n ) {\n const elRect = this._domElement.getBoundingClientRect();\n const left = event.clientX / elRect.width;\n const top = event.clientY / elRect.height;\n // check if the interactiveArea contains the drag start position.\n if (\n left < this._interactiveArea.left ||\n left > this._interactiveArea.right ||\n top < this._interactiveArea.top ||\n top > this._interactiveArea.bottom\n )\n return;\n }\n event.preventDefault();\n if (\n this.dollyToCursor ||\n this.mouseButtons.wheel === ACTION.ROTATE ||\n this.mouseButtons.wheel === ACTION.TRUCK\n ) {\n const now = performance.now();\n // only need to fire this at scroll start.\n if (lastScrollTimeStamp - now < 1000)\n this._getClientRect(this._elementRect);\n lastScrollTimeStamp = now;\n }\n // Ref: https://github.com/cedricpinson/osgjs/blob/00e5a7e9d9206c06fdde0436e1d62ab7cb5ce853/sources/osgViewer/input/source/InputSourceMouse.js#L89-L103\n const deltaYFactor = isMac ? -1 : -3;\n const delta =\n event.deltaMode === 1\n ? event.deltaY / deltaYFactor\n : event.deltaY / (deltaYFactor * 10);\n const x = this.dollyToCursor\n ? ((event.clientX - this._elementRect.x) / this._elementRect.width) *\n 2 -\n 1\n : 0;\n const y = this.dollyToCursor\n ? ((event.clientY - this._elementRect.y) / this._elementRect.height) *\n -2 +\n 1\n : 0;\n switch (this.mouseButtons.wheel) {\n case ACTION.ROTATE: {\n this._rotateInternal(event.deltaX, event.deltaY);\n this._isUserControllingRotate = true;\n break;\n }\n case ACTION.TRUCK: {\n this._truckInternal(event.deltaX, event.deltaY, false);\n this._isUserControllingTruck = true;\n break;\n }\n case ACTION.OFFSET: {\n this._truckInternal(event.deltaX, event.deltaY, true);\n this._isUserControllingOffset = true;\n break;\n }\n case ACTION.DOLLY: {\n this._dollyInternal(-delta, x, y);\n this._isUserControllingDolly = true;\n break;\n }\n case ACTION.ZOOM: {\n this._zoomInternal(-delta, x, y);\n this._isUserControllingZoom = true;\n break;\n }\n }\n this.dispatchEvent({ type: 'control' });\n };\n const onContextMenu = event => {\n if (!this._domElement || !this._enabled) return;\n // contextmenu event is fired right after pointerdown\n // remove attached handlers and active pointer, if interrupted by contextmenu.\n if (this.mouseButtons.right === CameraControls.ACTION.NONE) {\n const pointerId = event instanceof PointerEvent ? event.pointerId : 0;\n const pointer = this._findPointerById(pointerId);\n pointer && this._disposePointer(pointer);\n // eslint-disable-next-line no-undef\n this._domElement.ownerDocument.removeEventListener(\n 'pointermove',\n onPointerMove,\n { passive: false }\n );\n this._domElement.ownerDocument.removeEventListener(\n 'pointerup',\n onPointerUp\n );\n return;\n }\n event.preventDefault();\n };\n const startDragging = event => {\n if (!this._enabled) return;\n extractClientCoordFromEvent(this._activePointers, _v2);\n this._getClientRect(this._elementRect);\n dragStartPosition.copy(_v2);\n lastDragPosition.copy(_v2);\n const isMultiTouch = this._activePointers.length >= 2;\n if (isMultiTouch) {\n // 2 finger pinch\n const dx = _v2.x - this._activePointers[1].clientX;\n const dy = _v2.y - this._activePointers[1].clientY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n dollyStart.set(0, distance);\n // center coords of 2 finger truck\n const x =\n (this._activePointers[0].clientX + this._activePointers[1].clientX) *\n 0.5;\n const y =\n (this._activePointers[0].clientY + this._activePointers[1].clientY) *\n 0.5;\n lastDragPosition.set(x, y);\n }\n this._state = 0;\n if (!event) {\n if (this._lockedPointer)\n this._state = this._state | this.mouseButtons.left;\n } else if ('pointerType' in event && event.pointerType === 'touch') {\n switch (this._activePointers.length) {\n case 1:\n this._state = this.touches.one;\n break;\n case 2:\n this._state = this.touches.two;\n break;\n case 3:\n this._state = this.touches.three;\n break;\n }\n } else {\n if (\n !this._lockedPointer &&\n (event.buttons & MOUSE_BUTTON.LEFT) === MOUSE_BUTTON.LEFT\n ) {\n this._state = this._state | this.mouseButtons.left;\n }\n if ((event.buttons & MOUSE_BUTTON.MIDDLE) === MOUSE_BUTTON.MIDDLE) {\n this._state = this._state | this.mouseButtons.middle;\n }\n if ((event.buttons & MOUSE_BUTTON.RIGHT) === MOUSE_BUTTON.RIGHT) {\n this._state = this._state | this.mouseButtons.right;\n }\n }\n // stop current movement on drag start\n if (\n (this._state & ACTION.ROTATE) === ACTION.ROTATE ||\n (this._state & ACTION.TOUCH_ROTATE) === ACTION.TOUCH_ROTATE ||\n (this._state & ACTION.TOUCH_DOLLY_ROTATE) ===\n ACTION.TOUCH_DOLLY_ROTATE ||\n (this._state & ACTION.TOUCH_ZOOM_ROTATE) === ACTION.TOUCH_ZOOM_ROTATE\n ) {\n this._sphericalEnd.theta = this._spherical.theta;\n this._sphericalEnd.phi = this._spherical.phi;\n this._thetaVelocity.value = 0;\n this._phiVelocity.value = 0;\n }\n if (\n (this._state & ACTION.TRUCK) === ACTION.TRUCK ||\n (this._state & ACTION.TOUCH_TRUCK) === ACTION.TOUCH_TRUCK ||\n (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK ||\n (this._state & ACTION.TOUCH_ZOOM_TRUCK) === ACTION.TOUCH_ZOOM_TRUCK\n ) {\n this._targetEnd.copy(this._target);\n this._targetVelocity.set(0, 0, 0);\n }\n if (\n (this._state & ACTION.DOLLY) === ACTION.DOLLY ||\n (this._state & ACTION.TOUCH_DOLLY) === ACTION.TOUCH_DOLLY ||\n (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK ||\n (this._state & ACTION.TOUCH_DOLLY_OFFSET) ===\n ACTION.TOUCH_DOLLY_OFFSET ||\n (this._state & ACTION.TOUCH_DOLLY_ROTATE) === ACTION.TOUCH_DOLLY_ROTATE\n ) {\n this._sphericalEnd.radius = this._spherical.radius;\n this._radiusVelocity.value = 0;\n }\n if (\n (this._state & ACTION.ZOOM) === ACTION.ZOOM ||\n (this._state & ACTION.TOUCH_ZOOM) === ACTION.TOUCH_ZOOM ||\n (this._state & ACTION.TOUCH_ZOOM_TRUCK) === ACTION.TOUCH_ZOOM_TRUCK ||\n (this._state & ACTION.TOUCH_ZOOM_OFFSET) === ACTION.TOUCH_ZOOM_OFFSET ||\n (this._state & ACTION.TOUCH_ZOOM_ROTATE) === ACTION.TOUCH_ZOOM_ROTATE\n ) {\n this._zoomEnd = this._zoom;\n this._zoomVelocity.value = 0;\n }\n if (\n (this._state & ACTION.OFFSET) === ACTION.OFFSET ||\n (this._state & ACTION.TOUCH_OFFSET) === ACTION.TOUCH_OFFSET ||\n (this._state & ACTION.TOUCH_DOLLY_OFFSET) ===\n ACTION.TOUCH_DOLLY_OFFSET ||\n (this._state & ACTION.TOUCH_ZOOM_OFFSET) === ACTION.TOUCH_ZOOM_OFFSET\n ) {\n this._focalOffsetEnd.copy(this._focalOffset);\n this._focalOffsetVelocity.set(0, 0, 0);\n }\n this.dispatchEvent({ type: 'controlstart' });\n };\n const dragging = () => {\n if (!this._enabled || !this._dragNeedsUpdate) return;\n this._dragNeedsUpdate = false;\n extractClientCoordFromEvent(this._activePointers, _v2);\n // When pointer lock is enabled clientX, clientY, screenX, and screenY remain 0.\n // If pointer lock is enabled, use the Delta directory, and assume active-pointer is not multiple.\n const isPointerLockActive =\n this._domElement &&\n this._domElement.ownerDocument.pointerLockElement === this._domElement;\n const lockedPointer = isPointerLockActive\n ? this._lockedPointer || this._activePointers[0]\n : null;\n const deltaX = lockedPointer\n ? -lockedPointer.deltaX\n : lastDragPosition.x - _v2.x;\n const deltaY = lockedPointer\n ? -lockedPointer.deltaY\n : lastDragPosition.y - _v2.y;\n lastDragPosition.copy(_v2);\n if (\n (this._state & ACTION.ROTATE) === ACTION.ROTATE ||\n (this._state & ACTION.TOUCH_ROTATE) === ACTION.TOUCH_ROTATE ||\n (this._state & ACTION.TOUCH_DOLLY_ROTATE) ===\n ACTION.TOUCH_DOLLY_ROTATE ||\n (this._state & ACTION.TOUCH_ZOOM_ROTATE) === ACTION.TOUCH_ZOOM_ROTATE\n ) {\n this._rotateInternal(deltaX, deltaY);\n this._isUserControllingRotate = true;\n }\n if (\n (this._state & ACTION.DOLLY) === ACTION.DOLLY ||\n (this._state & ACTION.ZOOM) === ACTION.ZOOM\n ) {\n const dollyX = this.dollyToCursor\n ? ((dragStartPosition.x - this._elementRect.x) /\n this._elementRect.width) *\n 2 -\n 1\n : 0;\n const dollyY = this.dollyToCursor\n ? ((dragStartPosition.y - this._elementRect.y) /\n this._elementRect.height) *\n -2 +\n 1\n : 0;\n const dollyDirection = this.dollyDragInverted ? -1 : 1;\n if ((this._state & ACTION.DOLLY) === ACTION.DOLLY) {\n this._dollyInternal(\n dollyDirection * deltaY * TOUCH_DOLLY_FACTOR,\n dollyX,\n dollyY\n );\n this._isUserControllingDolly = true;\n } else {\n this._zoomInternal(\n dollyDirection * deltaY * TOUCH_DOLLY_FACTOR,\n dollyX,\n dollyY\n );\n this._isUserControllingZoom = true;\n }\n }\n if (\n (this._state & ACTION.TOUCH_DOLLY) === ACTION.TOUCH_DOLLY ||\n (this._state & ACTION.TOUCH_ZOOM) === ACTION.TOUCH_ZOOM ||\n (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK ||\n (this._state & ACTION.TOUCH_ZOOM_TRUCK) === ACTION.TOUCH_ZOOM_TRUCK ||\n (this._state & ACTION.TOUCH_DOLLY_OFFSET) ===\n ACTION.TOUCH_DOLLY_OFFSET ||\n (this._state & ACTION.TOUCH_ZOOM_OFFSET) === ACTION.TOUCH_ZOOM_OFFSET ||\n (this._state & ACTION.TOUCH_DOLLY_ROTATE) ===\n ACTION.TOUCH_DOLLY_ROTATE ||\n (this._state & ACTION.TOUCH_ZOOM_ROTATE) === ACTION.TOUCH_ZOOM_ROTATE\n ) {\n const dx = _v2.x - this._activePointers[1].clientX;\n const dy = _v2.y - this._activePointers[1].clientY;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const dollyDelta = dollyStart.y - distance;\n dollyStart.set(0, distance);\n const dollyX = this.dollyToCursor\n ? ((lastDragPosition.x - this._elementRect.x) /\n this._elementRect.width) *\n 2 -\n 1\n : 0;\n const dollyY = this.dollyToCursor\n ? ((lastDragPosition.y - this._elementRect.y) /\n this._elementRect.height) *\n -2 +\n 1\n : 0;\n if (\n (this._state & ACTION.TOUCH_DOLLY) === ACTION.TOUCH_DOLLY ||\n (this._state & ACTION.TOUCH_DOLLY_ROTATE) ===\n ACTION.TOUCH_DOLLY_ROTATE ||\n (this._state & ACTION.TOUCH_DOLLY_TRUCK) ===\n ACTION.TOUCH_DOLLY_TRUCK ||\n (this._state & ACTION.TOUCH_DOLLY_OFFSET) ===\n ACTION.TOUCH_DOLLY_OFFSET\n ) {\n this._dollyInternal(dollyDelta * TOUCH_DOLLY_FACTOR, dollyX, dollyY);\n this._isUserControllingDolly = true;\n } else {\n this._zoomInternal(dollyDelta * TOUCH_DOLLY_FACTOR, dollyX, dollyY);\n this._isUserControllingZoom = true;\n }\n }\n if (\n (this._state & ACTION.TRUCK) === ACTION.TRUCK ||\n (this._state & ACTION.TOUCH_TRUCK) === ACTION.TOUCH_TRUCK ||\n (this._state & ACTION.TOUCH_DOLLY_TRUCK) === ACTION.TOUCH_DOLLY_TRUCK ||\n (this._state & ACTION.TOUCH_ZOOM_TRUCK) === ACTION.TOUCH_ZOOM_TRUCK\n ) {\n this._truckInternal(deltaX, deltaY, false);\n this._isUserControllingTruck = true;\n }\n if (\n (this._state & ACTION.OFFSET) === ACTION.OFFSET ||\n (this._state & ACTION.TOUCH_OFFSET) === ACTION.TOUCH_OFFSET ||\n (this._state & ACTION.TOUCH_DOLLY_OFFSET) ===\n ACTION.TOUCH_DOLLY_OFFSET ||\n (this._state & ACTION.TOUCH_ZOOM_OFFSET) === ACTION.TOUCH_ZOOM_OFFSET\n ) {\n this._truckInternal(deltaX, deltaY, true);\n this._isUserControllingOffset = true;\n }\n this.dispatchEvent({ type: 'control' });\n };\n const endDragging = () => {\n extractClientCoordFromEvent(this._activePointers, _v2);\n lastDragPosition.copy(_v2);\n this._dragNeedsUpdate = false;\n if (\n this._activePointers.length === 0 ||\n (this._activePointers.length === 1 &&\n this._activePointers[0] === this._lockedPointer)\n ) {\n this._isDragging = false;\n }\n if (this._activePointers.length === 0 && this._domElement) {\n // eslint-disable-next-line no-undef\n this._domElement.ownerDocument.removeEventListener(\n 'pointermove',\n onPointerMove,\n { passive: false }\n );\n this._domElement.ownerDocument.removeEventListener(\n 'pointerup',\n onPointerUp\n );\n this.dispatchEvent({ type: 'controlend' });\n }\n };\n this.lockPointer = () => {\n if (!this._enabled || !this._domElement) return;\n this.cancel();\n // Element.requestPointerLock is allowed to happen without any pointer active - create a faux one for compatibility with controls\n this._lockedPointer = {\n pointerId: -1,\n clientX: 0,\n clientY: 0,\n deltaX: 0,\n deltaY: 0,\n mouseButton: null\n };\n this._activePointers.push(this._lockedPointer);\n // eslint-disable-next-line no-undef\n this._domElement.ownerDocument.removeEventListener(\n 'pointermove',\n onPointerMove,\n { passive: false }\n );\n this._domElement.ownerDocument.removeEventListener(\n 'pointerup',\n onPointerUp\n );\n this._domElement.requestPointerLock();\n this._domElement.ownerDocument.addEventListener(\n 'pointerlockchange',\n onPointerLockChange\n );\n this._domElement.ownerDocument.addEventListener(\n 'pointerlockerror',\n onPointerLockError\n );\n this._domElement.ownerDocument.addEventListener(\n 'pointermove',\n onPointerMove,\n { passive: false }\n );\n this._domElement.ownerDocument.addEventListener('pointerup', onPointerUp);\n startDragging();\n };\n this.unlockPointer = () => {\n var _a, _b, _c;\n if (this._lockedPointer !== null) {\n this._disposePointer(this._lockedPointer);\n this._lockedPointer = null;\n }\n (_a = this._domElement) === null || _a === void 0\n ? void 0\n : _a.ownerDocument.exitPointerLock();\n (_b = this._domElement) === null || _b === void 0\n ? void 0\n : _b.ownerDocument.removeEventListener(\n 'pointerlockchange',\n onPointerLockChange\n );\n (_c = this._domElement) === null || _c === void 0\n ? void 0\n : _c.ownerDocument.removeEventListener(\n 'pointerlockerror',\n onPointerLockError\n );\n this.cancel();\n };\n const onPointerLockChange = () => {\n const isPointerLockActive =\n this._domElement &&\n this._domElement.ownerDocument.pointerLockElement === this._domElement;\n if (!isPointerLockActive) this.unlockPointer();\n };\n const onPointerLockError = () => {\n this.unlockPointer();\n };\n this._addAllEventListeners = domElement => {\n this._domElement = domElement;\n this._domElement.style.touchAction = 'none';\n this._domElement.style.userSelect = 'none';\n this._domElement.style.webkitUserSelect = 'none';\n this._domElement.addEventListener('pointerdown', onPointerDown);\n this._domElement.addEventListener('pointercancel', onPointerUp);\n this._domElement.addEventListener('wheel', onMouseWheel, {\n passive: false\n });\n this._domElement.addEventListener('contextmenu', onContextMenu);\n };\n this._removeAllEventListeners = () => {\n if (!this._domElement) return;\n this._domElement.style.touchAction = '';\n this._domElement.style.userSelect = '';\n this._domElement.style.webkitUserSelect = '';\n this._domElement.removeEventListener('pointerdown', onPointerDown);\n this._domElement.removeEventListener('pointercancel', onPointerUp);\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#matching_event_listeners_for_removal\n // > it's probably wise to use the same values used for the call to `addEventListener()` when calling `removeEventListener()`\n // see https://github.com/microsoft/TypeScript/issues/32912#issuecomment-522142969\n // eslint-disable-next-line no-undef\n this._domElement.removeEventListener('wheel', onMouseWheel, {\n passive: false\n });\n this._domElement.removeEventListener('contextmenu', onContextMenu);\n // eslint-disable-next-line no-undef\n this._domElement.ownerDocument.removeEventListener(\n 'pointermove',\n onPointerMove,\n { passive: false }\n );\n this._domElement.ownerDocument.removeEventListener(\n 'pointerup',\n onPointerUp\n );\n this._domElement.ownerDocument.removeEventListener(\n 'pointerlockchange',\n onPointerLockChange\n );\n this._domElement.ownerDocument.removeEventListener(\n 'pointerlockerror',\n onPointerLockError\n );\n };\n this.cancel = () => {\n if (this._state === ACTION.NONE) return;\n this._state = ACTION.NONE;\n this._activePointers.length = 0;\n endDragging();\n };\n if (domElement) this.connect(domElement);\n this.update(0);\n }\n /**\n * The camera to be controlled\n * @category Properties\n */\n get camera() {\n return this._camera;\n }\n set camera(camera) {\n this._camera = camera;\n this.updateCameraUp();\n this._camera.updateProjectionMatrix();\n this._updateNearPlaneCorners();\n this._needsUpdate = true;\n }\n /**\n * Whether or not the controls are enabled.\n * `false` to disable user dragging/touch-move, but all methods works.\n * @category Properties\n */\n get enabled() {\n return this._enabled;\n }\n set enabled(enabled) {\n this._enabled = enabled;\n if (!this._domElement) return;\n if (enabled) {\n this._domElement.style.touchAction = 'none';\n this._domElement.style.userSelect = 'none';\n this._domElement.style.webkitUserSelect = 'none';\n } else {\n this.cancel();\n this._domElement.style.touchAction = '';\n this._domElement.style.userSelect = '';\n this._domElement.style.webkitUserSelect = '';\n }\n }\n /**\n * Returns `true` if the controls are active updating.\n * readonly value.\n * @category Properties\n */\n get active() {\n return !this._hasRested;\n }\n /**\n * Getter for the current `ACTION`.\n * readonly value.\n * @category Properties\n */\n get currentAction() {\n return this._state;\n }\n /**\n * get/set Current distance.\n * @category Properties\n */\n get distance() {\n return this._spherical.radius;\n }\n set distance(distance) {\n if (\n this._spherical.radius === distance &&\n this._sphericalEnd.radius === distance\n )\n return;\n this._spherical.radius = distance;\n this._sphericalEnd.radius = distance;\n this._needsUpdate = true;\n }\n // horizontal angle\n /**\n * get/set the azimuth angle (horizontal) in radians.\n * Every 360 degrees turn is added to `.azimuthAngle` value, which is accumulative.\n * @category Properties\n */\n get azimuthAngle() {\n return this._spherical.theta;\n }\n set azimuthAngle(azimuthAngle) {\n if (\n this._spherical.theta === azimuthAngle &&\n this._sphericalEnd.theta === azimuthAngle\n )\n return;\n this._spherical.theta = azimuthAngle;\n this._sphericalEnd.theta = azimuthAngle;\n this._needsUpdate = true;\n }\n // vertical angle\n /**\n * get/set the polar angle (vertical) in radians.\n * @category Properties\n */\n get polarAngle() {\n return this._spherical.phi;\n }\n set polarAngle(polarAngle) {\n if (\n this._spherical.phi === polarAngle &&\n this._sphericalEnd.phi === polarAngle\n )\n return;\n this._spherical.phi = polarAngle;\n this._sphericalEnd.phi = polarAngle;\n this._needsUpdate = true;\n }\n /**\n * Whether camera position should be enclosed in the boundary or not.\n * @category Properties\n */\n get boundaryEnclosesCamera() {\n return this._boundaryEnclosesCamera;\n }\n set boundaryEnclosesCamera(boundaryEnclosesCamera) {\n this._boundaryEnclosesCamera = boundaryEnclosesCamera;\n this._needsUpdate = true;\n }\n /**\n * Set drag-start, touches and wheel enable area in the domElement.\n * each values are between `0` and `1` inclusive, where `0` is left/top and `1` is right/bottom of the screen.\n * e.g. `{ x: 0, y: 0, width: 1, height: 1 }` for entire area.\n * @category Properties\n */\n set interactiveArea(interactiveArea) {\n this._interactiveArea.width = clamp(interactiveArea.width, 0, 1);\n this._interactiveArea.height = clamp(interactiveArea.height, 0, 1);\n this._interactiveArea.x = clamp(\n interactiveArea.x,\n 0,\n 1 - this._interactiveArea.width\n );\n this._interactiveArea.y = clamp(\n interactiveArea.y,\n 0,\n 1 - this._interactiveArea.height\n );\n }\n /**\n * Adds the specified event listener.\n * Applicable event types (which is `K`) are:\n * | Event name | Timing |\n * | ------------------- | ------ |\n * | `'controlstart'` | When the user starts to control the camera via mouse / touches. ¹ |\n * | `'control'` | When the user controls the camera (dragging). |\n * | `'controlend'` | When the user ends to control the camera. ¹ |\n * | `'transitionstart'` | When any kind of transition starts, either user control or using a method with `enableTransition = true` |\n * | `'update'` | When the camera position is updated. |\n * | `'wake'` | When the camera starts moving. |\n * | `'rest'` | When the camera movement is below `.restThreshold` ². |\n * | `'sleep'` | When the camera end moving. |\n *\n * 1. `mouseButtons.wheel` (Mouse wheel control) does not emit `'controlstart'` and `'controlend'`. `mouseButtons.wheel` uses scroll-event internally, and scroll-event happens intermittently. That means \"start\" and \"end\" cannot be detected.\n * 2. Due to damping, `sleep` will usually fire a few seconds after the camera _appears_ to have stopped moving. If you want to do something (e.g. enable UI, perform another transition) at the point when the camera has stopped, you probably want the `rest` event. This can be fine tuned using the `.restThreshold` parameter. See the [Rest and Sleep Example](https://yomotsu.github.io/camera-controls/examples/rest-and-sleep.html).\n *\n * e.g.\n * ```\n * cameraControl.addEventListener( 'controlstart', myCallbackFunction );\n * ```\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n addEventListener(type, listener) {\n super.addEventListener(type, listener);\n }\n /**\n * Removes the specified event listener\n * e.g.\n * ```\n * cameraControl.addEventListener( 'controlstart', myCallbackFunction );\n * ```\n * @param type event name\n * @param listener handler function\n * @category Methods\n */\n removeEventListener(type, listener) {\n super.removeEventListener(type, listener);\n }\n /**\n * Rotate azimuthal angle(horizontal) and polar angle(vertical).\n * Every value is added to the current value.\n * @param azimuthAngle Azimuth rotate angle. In radian.\n * @param polarAngle Polar rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotate(azimuthAngle, polarAngle, enableTransition = false) {\n return this.rotateTo(\n this._sphericalEnd.theta + azimuthAngle,\n this._sphericalEnd.phi + polarAngle,\n enableTransition\n );\n }\n /**\n * Rotate azimuthal angle(horizontal) to the given angle and keep the same polar angle(vertical) target.\n *\n * e.g.\n * ```\n * cameraControls.rotateAzimuthTo( 30 * THREE.MathUtils.DEG2RAD, true );\n * ```\n * @param azimuthAngle Azimuth rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotateAzimuthTo(azimuthAngle, enableTransition = false) {\n return this.rotateTo(\n azimuthAngle,\n this._sphericalEnd.phi,\n enableTransition\n );\n }\n /**\n * Rotate polar angle(vertical) to the given angle and keep the same azimuthal angle(horizontal) target.\n *\n * e.g.\n * ```\n * cameraControls.rotatePolarTo( 30 * THREE.MathUtils.DEG2RAD, true );\n * ```\n * @param polarAngle Polar rotate angle. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotatePolarTo(polarAngle, enableTransition = false) {\n return this.rotateTo(\n this._sphericalEnd.theta,\n polarAngle,\n enableTransition\n );\n }\n /**\n * Rotate azimuthal angle(horizontal) and polar angle(vertical) to the given angle.\n * Camera view will rotate over the orbit pivot absolutely:\n *\n * azimuthAngle\n * ```\n * 0º\n * \\\n * 90º -----+----- -90º\n * \\\n * 180º\n * ```\n * | direction | angle |\n * | --------- | ---------------------- |\n * | front | 0º |\n * | left | 90º (`Math.PI / 2`) |\n * | right | -90º (`- Math.PI / 2`) |\n * | back | 180º (`Math.PI`) |\n *\n * polarAngle\n * ```\n * 180º\n * |\n * 90º\n * |\n * 0º\n * ```\n * | direction | angle |\n * | -------------------- | ---------------------- |\n * | top/sky | 180º (`Math.PI`) |\n * | horizontal from view | 90º (`Math.PI / 2`) |\n * | bottom/floor | 0º |\n *\n * @param azimuthAngle Azimuth rotate angle to. In radian.\n * @param polarAngle Polar rotate angle to. In radian.\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n rotateTo(azimuthAngle, polarAngle, enableTransition = false) {\n this._isUserControllingRotate = false;\n const theta = clamp(\n azimuthAngle,\n this.minAzimuthAngle,\n this.maxAzimuthAngle\n );\n const phi = clamp(polarAngle, this.minPolarAngle, this.maxPolarAngle);\n this._sphericalEnd.theta = theta;\n this._sphericalEnd.phi = phi;\n this._sphericalEnd.makeSafe();\n this._needsUpdate = true;\n if (!enableTransition) {\n this._spherical.theta = this._sphericalEnd.theta;\n this._spherical.phi = this._sphericalEnd.phi;\n }\n const resolveImmediately =\n !enableTransition ||\n (approxEquals(\n this._spherical.theta,\n this._sphericalEnd.theta,\n this.restThreshold\n ) &&\n approxEquals(\n this._spherical.phi,\n this._sphericalEnd.phi,\n this.restThreshold\n ));\n return this._createOnRestPromise(resolveImmediately);\n }\n /**\n * Dolly in/out camera position.\n * @param distance Distance of dollyIn. Negative number for dollyOut.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dolly(distance, enableTransition = false) {\n return this.dollyTo(this._sphericalEnd.radius - distance, enableTransition);\n }\n /**\n * Dolly in/out camera position to given distance.\n * @param distance Distance of dolly.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dollyTo(distance, enableTransition = false) {\n this._isUserControllingDolly = false;\n this._lastDollyDirection = DOLLY_DIRECTION.NONE;\n this._changedDolly = 0;\n return this._dollyToNoClamp(\n clamp(distance, this.minDistance, this.maxDistance),\n enableTransition\n );\n }\n _dollyToNoClamp(distance, enableTransition = false) {\n const lastRadius = this._sphericalEnd.radius;\n const hasCollider = this.colliderMeshes.length >= 1;\n if (hasCollider) {\n const maxDistanceByCollisionTest = this._collisionTest();\n const isCollided = approxEquals(\n maxDistanceByCollisionTest,\n this._spherical.radius\n );\n const isDollyIn = lastRadius > distance;\n if (!isDollyIn && isCollided) return Promise.resolve();\n this._sphericalEnd.radius = Math.min(\n distance,\n maxDistanceByCollisionTest\n );\n } else {\n this._sphericalEnd.radius = distance;\n }\n this._needsUpdate = true;\n if (!enableTransition) {\n this._spherical.radius = this._sphericalEnd.radius;\n }\n const resolveImmediately =\n !enableTransition ||\n approxEquals(\n this._spherical.radius,\n this._sphericalEnd.radius,\n this.restThreshold\n );\n return this._createOnRestPromise(resolveImmediately);\n }\n /**\n * Dolly in, but does not change the distance between the target and the camera, and moves the target position instead.\n * Specify a negative value for dolly out.\n * @param distance Distance of dolly.\n * @param enableTransition Whether to move smoothly or immediately.\n * @category Methods\n */\n dollyInFixed(distance, enableTransition = false) {\n this._targetEnd.add(\n this._getCameraDirection(_cameraDirection).multiplyScalar(distance)\n );\n if (!enableTransition) {\n this._target.copy(this._targetEnd);\n }\n const resolveImmediately =\n !enableTransition ||\n (approxEquals(this._target.x, this._targetEnd.x, this.restThreshold) &&\n approxEquals(this._target.y, this._targetEnd.y, this.restThreshold) &&\n approxEquals(this._target.z, this._targetEnd.z, this.restThreshold));\n return this._createOnRestPromise(resolveImmediately);\n }\n /**\n * Zoom in/out camera. The value is added to camera zoom.\n * Limits set with `.minZoom` and `.maxZoom`\n * @param zoomStep zoom scale\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n zoom(zoomStep, enableTransition = false) {\n return this.zoomTo(this._zoomEnd + zoomStep, enableTransition);\n }\n /**\n * Zoom in/out camera to given scale. The value overwrites camera zoom.\n * Limits set with .minZoom and .maxZoom\n * @param zoom\n * @param enableTransition\n * @category Methods\n */\n zoomTo(zoom, enableTransition = false) {\n this._isUserControllingZoom = false;\n this._zoomEnd = clamp(zoom, this.minZoom, this.maxZoom);\n this._needsUpdate = true;\n if (!enableTransition) {\n this._zoom = this._zoomEnd;\n }\n const resolveImmediately =\n !enableTransition ||\n approxEquals(this._zoom, this._zoomEnd, this.restThreshold);\n this._changedZoom = 0;\n return this._createOnRestPromise(resolveImmediately);\n }\n /**\n * @deprecated `pan()` has been renamed to `truck()`\n * @category Methods\n */\n pan(x, y, enableTransition = false) {\n console.warn('`pan` has been renamed to `truck`');\n return this.truck(x, y, enableTransition);\n }\n /**\n * Truck and pedestal camera using current azimuthal angle\n * @param x Horizontal translate amount\n * @param y Vertical translate amount\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n truck(x, y, enableTransition = false) {\n this._camera.updateMatrix();\n _xColumn.setFromMatrixColumn(this._camera.matrix, 0);\n _yColumn.setFromMatrixColumn(this._camera.matrix, 1);\n _xColumn.multiplyScalar(x);\n _yColumn.multiplyScalar(-y);\n const offset = _v3A.copy(_xColumn).add(_yColumn);\n const to = _v3B.copy(this._targetEnd).add(offset);\n return this.moveTo(to.x, to.y, to.z, enableTransition);\n }\n /**\n * Move forward / backward.\n * @param distance Amount to move forward / backward. Negative value to move backward\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n forward(distance, enableTransition = false) {\n _v3A.setFromMatrixColumn(this._camera.matrix, 0);\n _v3A.crossVectors(this._camera.up, _v3A);\n _v3A.multiplyScalar(distance);\n const to = _v3B.copy(this._targetEnd).add(_v3A);\n return this.moveTo(to.x, to.y, to.z, enableTransition);\n }\n /**\n * Move up / down.\n * @param height Amount to move up / down. Negative value to move down\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n elevate(height, enableTransition = false) {\n _v3A.copy(this._camera.up).multiplyScalar(height);\n return this.moveTo(\n this._targetEnd.x + _v3A.x,\n this._targetEnd.y + _v3A.y,\n this._targetEnd.z + _v3A.z,\n enableTransition\n );\n }\n /**\n * Move target position to given point.\n * @param x x coord to move center position\n * @param y y coord to move center position\n * @param z z coord to move center position\n * @param enableTransition Whether to move smoothly or immediately\n * @category Methods\n */\n moveTo(x, y, z, enableTransition = false) {\n this._isUserControllingTruck = false;\n const offset = _v3A.set(x, y, z).sub(this._targetEnd);\n this._encloseToBoundary(this._targetEnd, offset, this.boundaryFriction);\n this._needsUpdate = true;\n if (!enableTransition) {\n this._target.copy(this._targetEnd);\n }\n const resolveImmediately =\n !enableTransition ||\n (approxEquals(this._target.x, this._targetEnd.x, this.restThreshold) &&\n approxEquals(this._target.y, this._targetEnd.y, this.restThreshold) &&\n approxEquals(this._target.z, this._targetEnd.z, this.restThreshold));\n return this._createOnRestPromise(resolveImmediately);\n }\n /**\n * Look in the given point direction.\n * @param x point x.\n * @param y point y.\n * @param z point z.\n * @param enableTransition Whether to move smoothly or immediately.\n * @returns Transition end promise\n * @category Methods\n */\n lookInDirectionOf(x, y, z, enableTransition = false) {\n const point = _v3A.set(x, y, z);\n const direction = point.sub(this._targetEnd).normalize();\n const position = direction\n .multiplyScalar(-this._sphericalEnd.radius)\n .add(this._targetEnd);\n return this.setPosition(\n position.x,\n position.y,\n position.z,\n enableTransition\n );\n }\n /**\n * Fit the viewport to the box or the bounding box of the object, using the nearest axis. paddings are in unit.\n * set `cover: true` to fill enter screen.\n * e.g.\n * ```\n * cameraControls.fitToBox( myMesh );\n * ```\n * @param box3OrObject Axis aligned bounding box to fit the view.\n * @param enableTransition Whether to move smoothly or immediately.\n * @param options | `<object>` { cover: boolean, paddingTop: number, paddingLeft: number, paddingBottom: number, paddingRight: number }\n * @returns Transition end promise\n * @category Methods\n */\n fitToBox(\n box3OrObject,\n enableTransition,\n {\n cover = false,\n paddingLeft = 0,\n paddingRight = 0,\n paddingBottom = 0,\n paddingTop = 0\n } = {}\n ) {\n const promises = [];\n const aabb = box3OrObject.isBox3\n ? _box3A.copy(box3OrObject)\n : _box3A.setFromObject(box3OrObject);\n if (aabb.isEmpty()) {\n console.warn(\n 'camera-controls: fitTo() cannot be used with an empty box. Aborting'\n );\n Promise.resolve();\n }\n // round to closest axis ( forward | backward | right | left | top | bottom )\n const theta = roundToStep(this._sphericalEnd.theta, PI_HALF);\n const phi = roundToStep(this._sphericalEnd.phi, PI_HALF);\n promises.push(this.rotateTo(theta, phi, enableTransition));\n const normal = _v3A.setFromSpherical(this._sphericalEnd).normalize();\n const rotation = _quaternionA.setFromUnitVectors(normal, _AXIS_Z);\n const viewFromPolar = approxEquals(Math.abs(normal.y), 1);\n if (viewFromPolar) {\n rotation.multiply(_quaternionB.setFromAxisAngle(_AXIS_Y, theta));\n }\n rotation.multiply(this._yAxisUpSpaceInverse);\n // make oriented bounding box\n const bb = _box3B.makeEmpty();\n // left bottom back corner\n _v3B.copy(aabb.min).applyQuaternion(rotation);\n bb.expandByPoint(_v3B);\n // right bottom back corner\n _v3B.copy(aabb.min).setX(aabb.max.x).applyQuaternion(rotation);\n bb.expandByPoint(_v3B);\n // left top back corner\n _v3B.copy(aabb.min).setY(aabb.max.y).applyQuaternion(rotation);\n bb.expandByPoint(_v3B);\n // right top back corner\n _v3B.copy(aabb.max).setZ(aabb.min.z).applyQuaternion(rotation);\n bb.expandByPoint(_v3B);\n // left bottom front corner\n _v3B.copy(aabb.min).setZ(aabb.max.z).applyQuaternion(rotation);\n bb.expandByPoint(_v3B);\n // right bottom front corner\n _v3B.copy(aabb.max).setY(aabb.min.y).applyQuaternion(rotation);\n bb.expandByPoint(_v3B);\n // left top front corner\n _v3B.copy(aabb.max).setX(aabb.min.x).applyQuaternion(rotation);\n bb.expandByPoint(_v3B);\n // right top front corner\n _v3B.copy(aabb.max).applyQuaternion(rotation);\n bb.expandByPoint(_v3B);\n // add padding\n bb.min.x -= paddingLeft;\n bb.min.y -= paddingBottom;\n bb.max.x += paddingRight;\n bb.max.y += paddingTop;\n rotation.setFromUnitVectors(_AXIS_Z, normal);\n if (viewFromPolar) {\n rotation.premultiply(_quaternionB.invert());\n }\n rotation.premultiply(this._yAxisUpSpace);\n const bbSize = bb.getSize(_v3A);\n const center = bb.getCenter(_v3B).applyQuaternion(rotation);\n if (isPerspectiveCamera(this._camera)) {\n const distance = this.getDistanceToFitBox(\n bbSize.x,\n bbSize.y,\n bbSize.z,\n cover\n );\n promises.push(\n this.moveTo(center.x, center.y, center.z, enableTransition)\n );\n promises.push(this.dollyTo(distance, enableTransition));\n promises.push(this.setFocalOffset(0, 0, 0, enableTransition));\n } else if (isOrthographicCamera(this._camera)) {\n const camera = this._camera;\n const width = camera.right - camera.left;\n const height = camera.top - camera.bottom;\n const zoom = cover\n ? Math.max(width / bbSize.x, height / bbSize.y)\n : Math.min(width / bbSize.x, height / bbSize.y);\n promises.push(\n this.moveTo(center.x, center.y, center.z, enableTransition)\n );\n promises.push(this.zoomTo(zoom, enableTransition));\n promises.push(this.setFocalOffset(0, 0, 0, enableTransition));\n }\n return Promise.all(promises);\n }\n /**\n * Fit the viewport to the sphere or the bounding sphere of the object.\n * @param sphereOrMesh\n * @param enableTransition\n * @category Methods\n */\n fitToSphere(sphereOrMesh, enableTransition) {\n const promises = [];\n const isSphere = 'isSphere' in sphereOrMesh;\n const boundingSphere = isSphere\n ? _sphere.copy(sphereOrMesh)\n : CameraControls.createBoundingSphere(sphereOrMesh, _sphere);\n promises.push(\n this.moveTo(\n boundingSphere.center.x,\n boundingSphere.center.y,\n boundingSphere.center.z,\n enableTransition\n )\n );\n if (isPerspectiveCamera(this._camera)) {\n const distanceToFit = this.getDistanceToFitSphere(boundingSphere.radius);\n promises.push(this.dollyTo(distanceToFit, enableTransition));\n } else if (isOrthographicCamera(this._camera)) {\n const width = this._camera.right - this._camera.left;\n const height = this._camera.top - this._camera.bottom;\n const diameter = 2 * boundingSphere.radius;\n const zoom = Math.min(width / diameter, height / diameter);\n promises.push(this.zoomTo(zoom, enableTransition));\n }\n promises.push(this.setFocalOffset(0, 0, 0, enableTransition));\n return Promise.all(promises);\n }\n /**\n * Look at the `target` from the `position`.\n * @param positionX\n * @param positionY\n * @param positionZ\n * @param targetX\n * @param targetY\n * @param targetZ\n * @param enableTransition\n * @category Methods\n */\n setLookAt(\n positionX,\n positionY,\n positionZ,\n targetX,\n targetY,\n targetZ,\n enableTransition = false\n ) {\n this._isUserControllingRotate = false;\n this._isUserControllingDolly = false;\n this._isUserControllingTruck = false;\n this._lastDollyDirection = DOLLY_DIRECTION.NONE;\n this._changedDolly = 0;\n const target = _v3B.set(targetX, targetY, targetZ);\n const position = _v3A.set(positionX, positionY, positionZ);\n this._targetEnd.copy(target);\n this._sphericalEnd.setFromVector3(\n position.sub(target).applyQuaternion(this._yAxisUpSpace)\n );\n this.normalizeRotations();\n this._needsUpdate = true;\n if (!enableTransition) {\n this._target.copy(this._targetEnd);\n this._spherical.copy(this._sphericalEnd);\n }\n const resolveImmediately =\n !enableTransition ||\n (approxEquals(this._target.x, this._targetEnd.x, this.restThreshold) &&\n approxEquals(this._target.y, this._targetEnd.y, this.restThreshold) &&\n approxEquals(this._target.z, this._targetEnd.z, this.restThreshold) &&\n approxEquals(\n this._spherical.theta,\n this._sphericalEnd.theta,\n this.restThreshold\n ) &&\n approxEquals(\n this._spherical.phi,\n this._sphericalEnd.phi,\n this.restThreshold\n ) &&\n approxEquals(\n this._spherical.radius,\n this._sphericalEnd.radius,\n this.restThreshold\n ));\n return this._createOnRestPromise(resolveImmediately);\n }\n /**\n * Similar to setLookAt, but it interpolates between two states.\n * @param positionAX\n * @param positionAY\n * @param positionAZ\n * @param targetAX\n * @param targetAY\n * @param targetAZ\n * @param positionBX\n * @param positionBY\n * @param positionBZ\n * @param targetBX\n * @param targetBY\n * @param targetBZ\n * @param t\n * @param enableTransition\n * @category Methods\n */\n lerpLookAt(\n positionAX,\n positionAY,\n positionAZ,\n targetAX,\n targetAY,\n targetAZ,\n positionBX,\n positionBY,\n positionBZ,\n targetBX,\n targetBY,\n targetBZ,\n t,\n enableTransition = false\n ) {\n this._isUserControllingRotate = false;\n this._isUserControllingDolly = false;\n this._isUserControllingTruck = false;\n this._lastDollyDirection = DOLLY_DIRECTION.NONE;\n this._changedDolly = 0;\n const targetA = _v3A.set(targetAX, targetAY, targetAZ);\n const positionA = _v3B.set(positionAX, positionAY, positionAZ);\n _sphericalA.setFromVector3(\n positionA.sub(targetA).applyQuaternion(this._yAxisUpSpace)\n );\n const targetB = _v3C.set(targetBX, targetBY, targetBZ);\n const positionB = _v3B.set(positionBX, positionBY, positionBZ);\n _sphericalB.setFromVector3(\n positionB.sub(targetB).applyQuaternion(this._yAxisUpSpace)\n );\n this._targetEnd.copy(targetA.lerp(targetB, t)); // tricky\n const deltaTheta = _sphericalB.theta - _sphericalA.theta;\n const deltaPhi = _sphericalB.phi - _sphericalA.phi;\n const deltaRadius = _sphericalB.radius - _sphericalA.radius;\n this._sphericalEnd.set(\n _sphericalA.radius + deltaRadius * t,\n _sphericalA.phi + deltaPhi * t,\n _sphericalA.theta + deltaTheta * t\n );\n this.normalizeRotations();\n this._needsUpdate = true;\n if (!enableTransition) {\n this._target.copy(this._targetEnd);\n this._spherical.copy(this._sphericalEnd);\n }\n const resolveImmediately =\n !enableTransition ||\n (approxEquals(this._target.x, this._targetEnd.x, this.restThreshold) &&\n approxEquals(this._target.y, this._targetEnd.y, this.restThreshold) &&\n approxEquals(this._target.z, this._targetEnd.z, this.restThreshold) &&\n approxEquals(\n this._spherical.theta,\n this._sphericalEnd.theta,\n this.restThreshold\n ) &&\n approxEquals(\n this._spherical.phi,\n this._sphericalEnd.phi,\n this.restThreshold\n ) &&\n approxEquals(\n this._spherical.radius,\n this._sphericalEnd.radius,\n this.restThreshold\n ));\n return this._createOnRestPromise(resolveImmediately);\n }\n /**\n * Set angle and distance by given position.\n * An alias of `setLookAt()`, without target change. Thus keep gazing at the current target\n * @param positionX\n * @param positionY\n * @param positionZ\n * @param enableTransition\n * @category Methods\n */\n setPosition(positionX, positionY, positionZ, enableTransition = false) {\n return this.setLookAt(\n positionX,\n positionY,\n positionZ,\n this._targetEnd.x,\n this._targetEnd.y,\n this._targetEnd.z,\n enableTransition\n );\n }\n /**\n * Set the target position where gaze at.\n * An alias of `setLookAt()`, without position change. Thus keep the same position.\n * @param targetX\n * @param targetY\n * @param targetZ\n * @param enableTransition\n * @category Methods\n */\n setTarget(targetX, targetY, targetZ, enableTransition = false) {\n const pos = this.getPosition(_v3A);\n const promise = this.setLookAt(\n pos.x,\n pos.y,\n pos.z,\n targetX,\n targetY,\n targetZ,\n enableTransition\n );\n // see https://github.com/yomotsu/camera-controls/issues/335\n this._sphericalEnd.phi = clamp(\n this._sphericalEnd.phi,\n this.minPolarAngle,\n this.maxPolarAngle\n );\n return promise;\n }\n /**\n * Set focal offset using the screen parallel coordinates. z doesn't affect in Orthographic as with Dolly.\n * @param x\n * @param y\n * @param z\n * @param enableTransition\n * @category Methods\n */\n setFocalOffset(x, y, z, enableTransition = false) {\n this._isUserControllingOffset = false;\n this._focalOffsetEnd.set(x, y, z);\n this._needsUpdate = true;\n if (!enableTransition) this._focalOffset.copy(this._focalOffsetEnd);\n const resolveImmediately =\n !enableTransition ||\n (approxEquals(\n this._focalOffset.x,\n this._focalOffsetEnd.x,\n this.restThreshold\n ) &&\n approxEquals(\n this._focalOffset.y,\n this._focalOffsetEnd.y,\n this.restThreshold\n ) &&\n approxEquals(\n this._focalOffset.z,\n this._focalOffsetEnd.z,\n this.restThreshold\n ));\n return this._createOnRestPromise(resolveImmediately);\n }\n /**\n * Set orbit point without moving the camera.\n * SHOULD NOT RUN DURING ANIMATIONS. `setOrbitPoint()` will immediately fix the positions.\n * @param targetX\n * @param targetY\n * @param targetZ\n * @category Methods\n */\n setOrbitPoint(targetX, targetY, targetZ) {\n this._camera.updateMatrixWorld();\n _xColumn.setFromMatrixColumn(this._camera.matrixWorldInverse, 0);\n _yColumn.setFromMatrixColumn(this._camera.matrixWorldInverse, 1);\n _zColumn.setFromMatrixColumn(this._camera.matrixWorldInverse, 2);\n const position = _v3A.set(targetX, targetY, targetZ);\n const distance = position.distanceTo(this._camera.position);\n const cameraToPoint = position.sub(this._camera.position);\n _xColumn.multiplyScalar(cameraToPoint.x);\n _yColumn.multiplyScalar(cameraToPoint.y);\n _zColumn.multiplyScalar(cameraToPoint.z);\n _v3A.copy(_xColumn).add(_yColumn).add(_zColumn);\n _v3A.z = _v3A.z + distance;\n this.dollyTo(distance, false);\n this.setFocalOffset(-_v3A.x, _v3A.y, -_v3A.z, false);\n this.moveTo(targetX, targetY, targetZ, false);\n }\n /**\n * Set the boundary box that encloses the target of the camera. box3 is in THREE.Box3\n * @param box3\n * @category Methods\n */\n setBoundary(box3) {\n if (!box3) {\n this._boundary.min.set(-Infinity, -Infinity, -Infinity);\n this._boundary.max.set(Infinity, Infinity, Infinity);\n this._needsUpdate = true;\n return;\n }\n this._boundary.copy(box3);\n this._boundary.clampPoint(this._targetEnd, this._targetEnd);\n this._needsUpdate = true;\n }\n /**\n * Set (or unset) the current viewport.\n * Set this when you want to use renderer viewport and .dollyToCursor feature at the same time.\n * @param viewportOrX\n * @param y\n * @param width\n * @param height\n * @category Methods\n */\n setViewport(viewportOrX, y, width, height) {\n if (viewportOrX === null) {\n // null\n this._viewport = null;\n return;\n }\n this._viewport = this._viewport || new THREE.Vector4();\n if (typeof viewportOrX === 'number') {\n // number\n this._viewport.set(viewportOrX, y, width, height);\n } else {\n // Vector4\n this._viewport.copy(viewportOrX);\n }\n }\n /**\n * Calculate the distance to fit the box.\n * @param width box width\n * @param height box height\n * @param depth box depth\n * @returns distance\n * @category Methods\n */\n getDistanceToFitBox(width, height, depth, cover = false) {\n if (notSupportedInOrthographicCamera(this._camera, 'getDistanceToFitBox'))\n return this._spherical.radius;\n const boundingRectAspect = width / height;\n const fov = this._camera.getEffectiveFOV() * DEG2RAD;\n const aspect = this._camera.aspect;\n const heightToFit = (\n cover ? boundingRectAspect > aspect : boundingRectAspect < aspect\n )\n ? height\n : width / aspect;\n return (heightToFit * 0.5) / Math.tan(fov * 0.5) + depth * 0.5;\n }\n /**\n * Calculate the distance to fit the sphere.\n * @param radius sphere radius\n * @returns distance\n * @category Methods\n */\n getDistanceToFitSphere(radius) {\n if (\n notSupportedInOrthographicCamera(this._camera, 'getDistanceToFitSphere')\n )\n return this._spherical.radius;\n // https://stackoverflow.com/a/44849975\n const vFOV = this._camera.getEffectiveFOV() * DEG2RAD;\n const hFOV = Math.atan(Math.tan(vFOV * 0.5) * this._camera.aspect) * 2;\n const fov = 1 < this._camera.aspect ? vFOV : hFOV;\n return radius / Math.sin(fov * 0.5);\n }\n /**\n * Returns the orbit center position, where the camera looking at.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getTarget(out, receiveEndValue = true) {\n const _out = !!out && out.isVector3 ? out : new THREE.Vector3();\n return _out.copy(receiveEndValue ? this._targetEnd : this._target);\n }\n /**\n * Returns the camera position.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getPosition(out, receiveEndValue = true) {\n const _out = !!out && out.isVector3 ? out : new THREE.Vector3();\n return _out\n .setFromSpherical(receiveEndValue ? this._sphericalEnd : this._spherical)\n .applyQuaternion(this._yAxisUpSpaceInverse)\n .add(receiveEndValue ? this._targetEnd : this._target);\n }\n /**\n * Returns the spherical coordinates of the orbit.\n * @param out The receiving Spherical instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getSpherical(out, receiveEndValue = true) {\n const _out = out || new THREE.Spherical();\n return _out.copy(receiveEndValue ? this._sphericalEnd : this._spherical);\n }\n /**\n * Returns the focal offset, which is how much the camera appears to be translated in screen parallel coordinates.\n * @param out The receiving Vector3 instance to copy the result\n * @param receiveEndValue Whether receive the transition end coords or current. default is `true`\n * @category Methods\n */\n getFocalOffset(out, receiveEndValue = true) {\n const _out = !!out && out.isVector3 ? out : new THREE.Vector3();\n return _out.copy(\n receiveEndValue ? this._focalOffsetEnd : this._focalOffset\n );\n }\n /**\n * Normalize camera azimuth angle rotation between 0 and 360 degrees.\n * @category Methods\n */\n normalizeRotations() {\n this._sphericalEnd.theta = this._sphericalEnd.theta % PI_2;\n if (this._sphericalEnd.theta < 0) this._sphericalEnd.theta += PI_2;\n this._spherical.theta +=\n PI_2 *\n Math.round((this._sphericalEnd.theta - this._spherical.theta) / PI_2);\n }\n /**\n * Reset all rotation and position to defaults.\n * @param enableTransition\n * @category Methods\n */\n reset(enableTransition = false) {\n if (\n !approxEquals(this._camera.up.x, this._cameraUp0.x) ||\n !approxEquals(this._camera.up.y, this._cameraUp0.y) ||\n !approxEquals(this._camera.up.z, this._cameraUp0.z)\n ) {\n this._camera.up.copy(this._cameraUp0);\n const position = this.getPosition(_v3A);\n this.updateCameraUp();\n this.setPosition(position.x, position.y, position.z);\n }\n const promises = [\n this.setLookAt(\n this._position0.x,\n this._position0.y,\n this._position0.z,\n this._target0.x,\n this._target0.y,\n this._target0.z,\n enableTransition\n ),\n this.setFocalOffset(\n this._focalOffset0.x,\n this._focalOffset0.y,\n this._focalOffset0.z,\n enableTransition\n ),\n this.zoomTo(this._zoom0, enableTransition)\n ];\n return Promise.all(promises);\n }\n /**\n * Set current camera position as the default position.\n * @category Methods\n */\n saveState() {\n this._cameraUp0.copy(this._camera.up);\n this.getTarget(this._target0);\n this.getPosition(this._position0);\n this._zoom0 = this._zoom;\n this._focalOffset0.copy(this._focalOffset);\n }\n /**\n * Sync camera-up direction.\n * When camera-up vector is changed, `.updateCameraUp()` must be called.\n * @category Methods\n */\n updateCameraUp() {\n this._yAxisUpSpace.setFromUnitVectors(this._camera.up, _AXIS_Y);\n this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace).invert();\n }\n /**\n * Apply current camera-up direction to the camera.\n * The orbit system will be re-initialized with the current position.\n * @category Methods\n */\n applyCameraUp() {\n const cameraDirection = _v3A\n .subVectors(this._target, this._camera.position)\n .normalize();\n // So first find the vector off to the side, orthogonal to both this.object.up and\n // the \"view\" vector.\n const side = _v3B.crossVectors(cameraDirection, this._camera.up);\n // Then find the vector orthogonal to both this \"side\" vector and the \"view\" vector.\n // This vector will be the new \"up\" vector.\n this._camera.up.crossVectors(side, cameraDirection).normalize();\n this._camera.updateMatrixWorld();\n const position = this.getPosition(_v3A);\n this.updateCameraUp();\n this.setPosition(position.x, position.y, position.z);\n }\n /**\n * Update camera position and directions.\n * This should be called in your tick loop every time, and returns true if re-rendering is needed.\n * @param delta\n * @returns updated\n * @category Methods\n */\n update(delta) {\n const deltaTheta = this._sphericalEnd.theta - this._spherical.theta;\n const deltaPhi = this._sphericalEnd.phi - this._spherical.phi;\n const deltaRadius = this._sphericalEnd.radius - this._spherical.radius;\n const deltaTarget = _deltaTarget.subVectors(this._targetEnd, this._target);\n const deltaOffset = _deltaOffset.subVectors(\n this._focalOffsetEnd,\n this._focalOffset\n );\n const deltaZoom = this._zoomEnd - this._zoom;\n // update theta\n if (approxZero(deltaTheta)) {\n this._thetaVelocity.value = 0;\n this._spherical.theta = this._sphericalEnd.theta;\n } else {\n const smoothTime = this._isUserControllingRotate\n ? this.draggingSmoothTime\n : this.smoothTime;\n this._spherical.theta = smoothDamp(\n this._spherical.theta,\n this._sphericalEnd.theta,\n this._thetaVelocity,\n smoothTime,\n Infinity,\n delta\n );\n this._needsUpdate = true;\n }\n // update phi\n if (approxZero(deltaPhi)) {\n this._phiVelocity.value = 0;\n this._spherical.phi = this._sphericalEnd.phi;\n } else {\n const smoothTime = this._isUserControllingRotate\n ? this.draggingSmoothTime\n : this.smoothTime;\n this._spherical.phi = smoothDamp(\n this._spherical.phi,\n this._sphericalEnd.phi,\n this._phiVelocity,\n smoothTime,\n Infinity,\n delta\n );\n this._needsUpdate = true;\n }\n // update distance\n if (approxZero(deltaRadius)) {\n this._radiusVelocity.value = 0;\n this._spherical.radius = this._sphericalEnd.radius;\n } else {\n const smoothTime = this._isUserControllingDolly\n ? this.draggingSmoothTime\n : this.smoothTime;\n this._spherical.radius = smoothDamp(\n this._spherical.radius,\n this._sphericalEnd.radius,\n this._radiusVelocity,\n smoothTime,\n this.maxSpeed,\n delta\n );\n this._needsUpdate = true;\n }\n // update target position\n if (\n approxZero(deltaTarget.x) &&\n approxZero(deltaTarget.y) &&\n approxZero(deltaTarget.z)\n ) {\n this._targetVelocity.set(0, 0, 0);\n this._target.copy(this._targetEnd);\n } else {\n const smoothTime = this._isUserControllingTruck\n ? this.draggingSmoothTime\n : this.smoothTime;\n smoothDampVec3(\n this._target,\n this._targetEnd,\n this._targetVelocity,\n smoothTime,\n this.maxSpeed,\n delta,\n this._target\n );\n this._needsUpdate = true;\n }\n // update focalOffset\n if (\n approxZero(deltaOffset.x) &&\n approxZero(deltaOffset.y) &&\n approxZero(deltaOffset.z)\n ) {\n this._focalOffsetVelocity.set(0, 0, 0);\n this._focalOffset.copy(this._focalOffsetEnd);\n } else {\n const smoothTime = this._isUserControllingOffset\n ? this.draggingSmoothTime\n : this.smoothTime;\n smoothDampVec3(\n this._focalOffset,\n this._focalOffsetEnd,\n this._focalOffsetVelocity,\n smoothTime,\n this.maxSpeed,\n delta,\n this._focalOffset\n );\n this._needsUpdate = true;\n }\n // update zoom\n if (approxZero(deltaZoom)) {\n this._zoomVelocity.value = 0;\n this._zoom = this._zoomEnd;\n } else {\n const smoothTime = this._isUserControllingZoom\n ? this.draggingSmoothTime\n : this.smoothTime;\n this._zoom = smoothDamp(\n this._zoom,\n this._zoomEnd,\n this._zoomVelocity,\n smoothTime,\n Infinity,\n delta\n );\n }\n if (this.dollyToCursor) {\n if (isPerspectiveCamera(this._camera) && this._changedDolly !== 0) {\n const dollyControlAmount = this._spherical.radius - this._lastDistance;\n const camera = this._camera;\n const cameraDirection = this._getCameraDirection(_cameraDirection);\n const planeX = _v3A.copy(cameraDirection).cross(camera.up).normalize();\n if (planeX.lengthSq() === 0) planeX.x = 1.0;\n const planeY = _v3B.crossVectors(planeX, cameraDirection);\n const worldToScreen =\n this._sphericalEnd.radius *\n Math.tan(camera.getEffectiveFOV() * DEG2RAD * 0.5);\n const prevRadius = this._sphericalEnd.radius - dollyControlAmount;\n const lerpRatio =\n (prevRadius - this._sphericalEnd.radius) / this._sphericalEnd.radius;\n const cursor = _v3C\n .copy(this._targetEnd)\n .add(\n planeX.multiplyScalar(\n this._dollyControlCoord.x * worldToScreen * camera.aspect\n )\n )\n .add(\n planeY.multiplyScalar(this._dollyControlCoord.y * worldToScreen)\n );\n const newTargetEnd = _v3A.copy(this._targetEnd).lerp(cursor, lerpRatio);\n const isMin =\n this._lastDollyDirection === DOLLY_DIRECTION.IN &&\n this._spherical.radius <= this.minDistance;\n const isMax =\n this._lastDollyDirection === DOLLY_DIRECTION.OUT &&\n this.maxDistance <= this._spherical.radius;\n if (this.infinityDolly && (isMin || isMax)) {\n this._sphericalEnd.radius -= dollyControlAmount;\n this._spherical.radius -= dollyControlAmount;\n const dollyAmount = _v3B\n .copy(cameraDirection)\n .multiplyScalar(-dollyControlAmount);\n newTargetEnd.add(dollyAmount);\n }\n // target position may be moved beyond boundary.\n this._boundary.clampPoint(newTargetEnd, newTargetEnd);\n const targetEndDiff = _v3B.subVectors(newTargetEnd, this._targetEnd);\n this._targetEnd.copy(newTargetEnd);\n this._target.add(targetEndDiff);\n this._changedDolly -= dollyControlAmount;\n if (approxZero(this._changedDolly)) this._changedDolly = 0;\n } else if (\n isOrthographicCamera(this._camera) &&\n this._changedZoom !== 0\n ) {\n const dollyControlAmount = this._zoom - this._lastZoom;\n const camera = this._camera;\n const worldCursorPosition = _v3A\n .set(\n this._dollyControlCoord.x,\n this._dollyControlCoord.y,\n (camera.near + camera.far) / (camera.near - camera.far)\n )\n .unproject(camera);\n const quaternion = _v3B\n .set(0, 0, -1)\n .applyQuaternion(camera.quaternion);\n const cursor = _v3C\n .copy(worldCursorPosition)\n .add(quaternion.multiplyScalar(-worldCursorPosition.dot(camera.up)));\n const prevZoom = this._zoom - dollyControlAmount;\n const lerpRatio = -(prevZoom - this._zoom) / this._zoom;\n // find the \"distance\" (aka plane constant in three.js) of Plane\n // from a given position (this._targetEnd) and normal vector (cameraDirection)\n // https://www.maplesoft.com/support/help/maple/view.aspx?path=MathApps%2FEquationOfAPlaneNormal#bkmrk0\n const cameraDirection = this._getCameraDirection(_cameraDirection);\n const prevPlaneConstant = this._targetEnd.dot(cameraDirection);\n const newTargetEnd = _v3A.copy(this._targetEnd).lerp(cursor, lerpRatio);\n const newPlaneConstant = newTargetEnd.dot(cameraDirection);\n // Pull back the camera depth that has moved, to be the camera stationary as zoom\n const pullBack = cameraDirection.multiplyScalar(\n newPlaneConstant - prevPlaneConstant\n );\n newTargetEnd.sub(pullBack);\n // target position may be moved beyond boundary.\n this._boundary.clampPoint(newTargetEnd, newTargetEnd);\n const targetEndDiff = _v3B.subVectors(newTargetEnd, this._targetEnd);\n this._targetEnd.copy(newTargetEnd);\n this._target.add(targetEndDiff);\n // this._target.copy( this._targetEnd );\n this._changedZoom -= dollyControlAmount;\n if (approxZero(this._changedZoom)) this._changedZoom = 0;\n }\n }\n if (this._camera.zoom !== this._zoom) {\n this._camera.zoom = this._zoom;\n this._camera.updateProjectionMatrix();\n this._updateNearPlaneCorners();\n this._needsUpdate = true;\n }\n this._dragNeedsUpdate = true;\n // collision detection\n const maxDistance = this._collisionTest();\n this._spherical.radius = Math.min(this._spherical.radius, maxDistance);\n // decompose spherical to the camera position\n this._spherical.makeSafe();\n this._camera.position\n .setFromSpherical(this._spherical)\n .applyQuaternion(this._yAxisUpSpaceInverse)\n .add(this._target);\n this._camera.lookAt(this._target);\n // set offset after the orbit movement\n const affectOffset =\n !approxZero(this._focalOffset.x) ||\n !approxZero(this._focalOffset.y) ||\n !approxZero(this._focalOffset.z);\n if (affectOffset) {\n this._camera.updateMatrixWorld();\n _xColumn.setFromMatrixColumn(this._camera.matrix, 0);\n _yColumn.setFromMatrixColumn(this._camera.matrix, 1);\n _zColumn.setFromMatrixColumn(this._camera.matrix, 2);\n _xColumn.multiplyScalar(this._focalOffset.x);\n _yColumn.multiplyScalar(-this._focalOffset.y);\n _zColumn.multiplyScalar(this._focalOffset.z); // notice: z-offset will not affect in Orthographic.\n _v3A.copy(_xColumn).add(_yColumn).add(_zColumn);\n this._camera.position.add(_v3A);\n }\n if (this._boundaryEnclosesCamera) {\n this._encloseToBoundary(\n this._camera.position.copy(this._target),\n _v3A\n .setFromSpherical(this._spherical)\n .applyQuaternion(this._yAxisUpSpaceInverse),\n 1.0\n );\n }\n const updated = this._needsUpdate;\n if (updated && !this._updatedLastTime) {\n this._hasRested = false;\n this.dispatchEvent({ type: 'wake' });\n this.dispatchEvent({ type: 'update' });\n } else if (updated) {\n this.dispatchEvent({ type: 'update' });\n if (\n approxZero(deltaTheta, this.restThreshold) &&\n approxZero(deltaPhi, this.restThreshold) &&\n approxZero(deltaRadius, this.restThreshold) &&\n approxZero(deltaTarget.x, this.restThreshold) &&\n approxZero(deltaTarget.y, this.restThreshold) &&\n approxZero(deltaTarget.z, this.restThreshold) &&\n approxZero(deltaOffset.x, this.restThreshold) &&\n approxZero(deltaOffset.y, this.restThreshold) &&\n approxZero(deltaOffset.z, this.restThreshold) &&\n approxZero(deltaZoom, this.restThreshold) &&\n !this._hasRested\n ) {\n this._hasRested = true;\n this.dispatchEvent({ type: 'rest' });\n }\n } else if (!updated && this._updatedLastTime) {\n this.dispatchEvent({ type: 'sleep' });\n }\n this._lastDistance = this._spherical.radius;\n this._lastZoom = this._zoom;\n this._updatedLastTime = updated;\n this._needsUpdate = false;\n return updated;\n }\n /**\n * Get all state in JSON string\n * @category Methods\n */\n toJSON() {\n return JSON.stringify({\n enabled: this._enabled,\n minDistance: this.minDistance,\n maxDistance: infinityToMaxNumber(this.maxDistance),\n minZoom: this.minZoom,\n maxZoom: infinityToMaxNumber(this.maxZoom),\n minPolarAngle: this.minPolarAngle,\n maxPolarAngle: infinityToMaxNumber(this.maxPolarAngle),\n minAzimuthAngle: infinityToMaxNumber(this.minAzimuthAngle),\n maxAzimuthAngle: infinityToMaxNumber(this.maxAzimuthAngle),\n smoothTime: this.smoothTime,\n draggingSmoothTime: this.draggingSmoothTime,\n dollySpeed: this.dollySpeed,\n truckSpeed: this.truckSpeed,\n dollyToCursor: this.dollyToCursor,\n verticalDragToForward: this.verticalDragToForward,\n target: this._targetEnd.toArray(),\n position: _v3A\n .setFromSpherical(this._sphericalEnd)\n .add(this._targetEnd)\n .toArray(),\n zoom: this._zoomEnd,\n focalOffset: this._focalOffsetEnd.toArray(),\n target0: this._target0.toArray(),\n position0: this._position0.toArray(),\n zoom0: this._zoom0,\n focalOffset0: this._focalOffset0.toArray()\n });\n }\n /**\n * Reproduce the control state with JSON. enableTransition is where anim or not in a boolean.\n * @param json\n * @param enableTransition\n * @category Methods\n */\n fromJSON(json, enableTransition = false) {\n const obj = JSON.parse(json);\n this.enabled = obj.enabled;\n this.minDistance = obj.minDistance;\n this.maxDistance = maxNumberToInfinity(obj.maxDistance);\n this.minZoom = obj.minZoom;\n this.maxZoom = maxNumberToInfinity(obj.maxZoom);\n this.minPolarAngle = obj.minPolarAngle;\n this.maxPolarAngle = maxNumberToInfinity(obj.maxPolarAngle);\n this.minAzimuthAngle = maxNumberToInfinity(obj.minAzimuthAngle);\n this.maxAzimuthAngle = maxNumberToInfinity(obj.maxAzimuthAngle);\n this.smoothTime = obj.smoothTime;\n this.draggingSmoothTime = obj.draggingSmoothTime;\n this.dollySpeed = obj.dollySpeed;\n this.truckSpeed = obj.truckSpeed;\n this.dollyToCursor = obj.dollyToCursor;\n this.verticalDragToForward = obj.verticalDragToForward;\n this._target0.fromArray(obj.target0);\n this._position0.fromArray(obj.position0);\n this._zoom0 = obj.zoom0;\n this._focalOffset0.fromArray(obj.focalOffset0);\n this.moveTo(obj.target[0], obj.target[1], obj.target[2], enableTransition);\n _sphericalA.setFromVector3(\n _v3A\n .fromArray(obj.position)\n .sub(this._targetEnd)\n .applyQuaternion(this._yAxisUpSpace)\n );\n this.rotateTo(_sphericalA.theta, _sphericalA.phi, enableTransition);\n this.dollyTo(_sphericalA.radius, enableTransition);\n this.zoomTo(obj.zoom, enableTransition);\n this.setFocalOffset(\n obj.focalOffset[0],\n obj.focalOffset[1],\n obj.focalOffset[2],\n enableTransition\n );\n this._needsUpdate = true;\n }\n /**\n * Attach all internal event handlers to enable drag control.\n * @category Methods\n */\n connect(domElement) {\n if (this._domElement) {\n console.warn('camera-controls is already connected.');\n return;\n }\n domElement.setAttribute('data-camera-controls-version', VERSION);\n this._addAllEventListeners(domElement);\n this._getClientRect(this._elementRect);\n }\n /**\n * Detach all internal event handlers to disable drag control.\n */\n disconnect() {\n this.cancel();\n this._removeAllEventListeners();\n if (this._domElement) {\n this._domElement.removeAttribute('data-camera-controls-version');\n this._domElement = undefined;\n }\n }\n /**\n * Dispose the cameraControls instance itself, remove all eventListeners.\n * @category Methods\n */\n dispose() {\n // remove all user event listeners\n this.removeAllEventListeners();\n // remove all internal event listeners\n this.disconnect();\n }\n // it's okay to expose public though\n _getTargetDirection(out) {\n // divide by distance to normalize, lighter than `Vector3.prototype.normalize()`\n return out\n .setFromSpherical(this._spherical)\n .divideScalar(this._spherical.radius)\n .applyQuaternion(this._yAxisUpSpaceInverse);\n }\n // it's okay to expose public though\n _getCameraDirection(out) {\n return this._getTargetDirection(out).negate();\n }\n _findPointerById(pointerId) {\n return this._activePointers.find(\n activePointer => activePointer.pointerId === pointerId\n );\n }\n _findPointerByMouseButton(mouseButton) {\n return this._activePointers.find(\n activePointer => activePointer.mouseButton === mouseButton\n );\n }\n _disposePointer(pointer) {\n this._activePointers.splice(this._activePointers.indexOf(pointer), 1);\n }\n _encloseToBoundary(position, offset, friction) {\n const offsetLength2 = offset.lengthSq();\n if (offsetLength2 === 0.0) {\n // sanity check\n return position;\n }\n // See: https://twitter.com/FMS_Cat/status/1106508958640988161\n const newTarget = _v3B.copy(offset).add(position); // target\n const clampedTarget = this._boundary.clampPoint(newTarget, _v3C); // clamped target\n const deltaClampedTarget = clampedTarget.sub(newTarget); // newTarget -> clampedTarget\n const deltaClampedTargetLength2 = deltaClampedTarget.lengthSq(); // squared length of deltaClampedTarget\n if (deltaClampedTargetLength2 === 0.0) {\n // when the position doesn't have to be clamped\n return position.add(offset);\n } else if (deltaClampedTargetLength2 === offsetLength2) {\n // when the position is completely stuck\n return position;\n } else if (friction === 0.0) {\n return position.add(offset).add(deltaClampedTarget);\n } else {\n const offsetFactor =\n 1.0 +\n (friction * deltaClampedTargetLength2) / offset.dot(deltaClampedTarget);\n return position\n .add(_v3B.copy(offset).multiplyScalar(offsetFactor))\n .add(deltaClampedTarget.multiplyScalar(1.0 - friction));\n }\n }\n _updateNearPlaneCorners() {\n if (isPerspectiveCamera(this._camera)) {\n const camera = this._camera;\n const near = camera.near;\n const fov = camera.getEffectiveFOV() * DEG2RAD;\n const heightHalf = Math.tan(fov * 0.5) * near; // near plain half height\n const widthHalf = heightHalf * camera.aspect; // near plain half width\n this._nearPlaneCorners[0].set(-widthHalf, -heightHalf, 0);\n this._nearPlaneCorners[1].set(widthHalf, -heightHalf, 0);\n this._nearPlaneCorners[2].set(widthHalf, heightHalf, 0);\n this._nearPlaneCorners[3].set(-widthHalf, heightHalf, 0);\n } else if (isOrthographicCamera(this._camera)) {\n const camera = this._camera;\n const zoomInv = 1 / camera.zoom;\n const left = camera.left * zoomInv;\n const right = camera.right * zoomInv;\n const top = camera.top * zoomInv;\n const bottom = camera.bottom * zoomInv;\n this._nearPlaneCorners[0].set(left, top, 0);\n this._nearPlaneCorners[1].set(right, top, 0);\n this._nearPlaneCorners[2].set(right, bottom, 0);\n this._nearPlaneCorners[3].set(left, bottom, 0);\n }\n }\n // lateUpdate\n _collisionTest() {\n let distance = Infinity;\n const hasCollider = this.colliderMeshes.length >= 1;\n if (!hasCollider) return distance;\n if (notSupportedInOrthographicCamera(this._camera, '_collisionTest'))\n return distance;\n const rayDirection = this._getTargetDirection(_cameraDirection);\n _rotationMatrix.lookAt(_ORIGIN, rayDirection, this._camera.up);\n for (let i = 0; i < 4; i++) {\n const nearPlaneCorner = _v3B.copy(this._nearPlaneCorners[i]);\n nearPlaneCorner.applyMatrix4(_rotationMatrix);\n const origin = _v3C.addVectors(this._target, nearPlaneCorner);\n _raycaster.set(origin, rayDirection);\n _raycaster.far = this._spherical.radius + 1;\n const intersects = _raycaster.intersectObjects(this.colliderMeshes);\n if (intersects.length !== 0 && intersects[0].distance < distance) {\n distance = intersects[0].distance;\n }\n }\n return distance;\n }\n /**\n * Get its client rect and package into given `DOMRect` .\n */\n _getClientRect(target) {\n if (!this._domElement) return;\n const rect = this._domElement.getBoundingClientRect();\n target.x = rect.left;\n target.y = rect.top;\n if (this._viewport) {\n target.x += this._viewport.x;\n target.y += rect.height - this._viewport.w - this._viewport.y;\n target.width = this._viewport.z;\n target.height = this._viewport.w;\n } else {\n target.width = rect.width;\n target.height = rect.height;\n }\n return target;\n }\n _createOnRestPromise(resolveImmediately) {\n if (resolveImmediately) return Promise.resolve();\n this._hasRested = false;\n this.dispatchEvent({ type: 'transitionstart' });\n return new Promise(resolve => {\n const onResolve = () => {\n this.removeEventListener('rest', onResolve);\n resolve();\n };\n this.addEventListener('rest', onResolve);\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _addAllEventListeners(_domElement) {}\n _removeAllEventListeners() {}\n /**\n * backward compatible\n * @deprecated use smoothTime (in seconds) instead\n * @category Properties\n */\n get dampingFactor() {\n console.warn(\n '.dampingFactor has been deprecated. use smoothTime (in seconds) instead.'\n );\n return 0;\n }\n /**\n * backward compatible\n * @deprecated use smoothTime (in seconds) instead\n * @category Properties\n */\n set dampingFactor(_) {\n console.warn(\n '.dampingFactor has been deprecated. use smoothTime (in seconds) instead.'\n );\n }\n /**\n * backward compatible\n * @deprecated use draggingSmoothTime (in seconds) instead\n * @category Properties\n */\n get draggingDampingFactor() {\n console.warn(\n '.draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.'\n );\n return 0;\n }\n /**\n * backward compatible\n * @deprecated use draggingSmoothTime (in seconds) instead\n * @category Properties\n */\n set draggingDampingFactor(_) {\n console.warn(\n '.draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.'\n );\n }\n static createBoundingSphere(object3d, out = new THREE.Sphere()) {\n const boundingSphere = out;\n const center = boundingSphere.center;\n _box3A.makeEmpty();\n // find the center\n object3d.traverseVisible(object => {\n if (!object.isMesh) return;\n _box3A.expandByObject(object);\n });\n _box3A.getCenter(center);\n // find the radius\n let maxRadiusSq = 0;\n object3d.traverseVisible(object => {\n if (!object.isMesh) return;\n const mesh = object;\n const geometry = mesh.geometry.clone();\n geometry.applyMatrix4(mesh.matrixWorld);\n const bufferGeometry = geometry;\n const position = bufferGeometry.attributes.position;\n for (let i = 0, l = position.count; i < l; i++) {\n _v3A.fromBufferAttribute(position, i);\n maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_v3A));\n }\n });\n boundingSphere.radius = Math.sqrt(maxRadiusSq);\n return boundingSphere;\n }\n}\n\nexport { EventDispatcher, CameraControls as default };\n"],"mappings":"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","ignoreList":[]}
|