csyjk 1.2.2 → 2.2.2
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/{dist/app.js → app.js} +0 -0
- package/{dist/index.html → index.html} +0 -0
- package/package.json +5 -40
- package/{dist/style.css → style.css} +0 -0
- package/.babelrc +0 -7
- package/.idea/modules.xml +0 -8
- package/.idea/xx.iml +0 -12
- package/public/gltf.js +0 -2241
- package/public/index.html +0 -10
- package/src/index.js +0 -3
- package/src/lib/gltf/assets/check.jpg +0 -0
- package/src/lib/gltf/assets/iconfont/iconfont.css +0 -358
- package/src/lib/gltf/assets/iconfont/iconfont.eot +0 -0
- package/src/lib/gltf/assets/iconfont/iconfont.js +0 -1
- package/src/lib/gltf/assets/iconfont/iconfont.json +0 -604
- package/src/lib/gltf/assets/iconfont/iconfont.svg +0 -189
- package/src/lib/gltf/assets/iconfont/iconfont.ttf +0 -0
- package/src/lib/gltf/assets/iconfont/iconfont.woff +0 -0
- package/src/lib/gltf/assets/iconfont/iconfont.woff2 +0 -0
- package/src/lib/gltf/assets/yjkkit-sdk/index.js +0 -0
- package/src/lib/gltf/assets/yjkkit-sdk/package.json +0 -15
- package/src/lib/gltf/assets/yjkkit-sdk/src/extras/ContextMenu/ContextMenu.js +0 -863
- package/src/lib/gltf/assets/yjkkit-sdk/src/extras/ContextMenu/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/extras/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/index.js +0 -3
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurement.js +0 -462
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsControl.js +0 -279
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/AngleMeasurementsPlugin.js +0 -262
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AngleMeasurementsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/Annotation.js +0 -362
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/AnnotationsPlugin.js +0 -575
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AnnotationsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AxisGizmoPlugin/AxisGizmoPlugin.js +0 -333
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/AxisGizmoPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/BCFViewpointsPlugin/BCFViewpointsPlugin.js +0 -777
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/BCFViewpointsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurement.js +0 -525
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsControl.js +0 -242
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/DistanceMeasurementsPlugin.js +0 -297
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/DistanceMeasurementsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/FastNavPlugin/FastNavPlugin.js +0 -345
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/FastNavPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFDefaultDataSource.js +0 -122
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFLoaderPlugin.js +0 -462
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFPerformanceModelLoader.js +0 -508
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/GLTFSceneGraphLoader.js +0 -922
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/GLTFLoaderPlugin/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/CubeTextureCanvas.js +0 -273
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/NavCubePlugin.js +0 -687
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/NavCubePlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/OBJLoaderPlugin.js +0 -145
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/OBJSceneGraphLoader.js +0 -777
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/OBJLoaderPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLDefaultDataSource.js +0 -33
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLLoaderPlugin.js +0 -273
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/STLSceneGraphLoader.js +0 -313
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/STLLoaderPlugin/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Control.js +0 -1328
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Overview.js +0 -249
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/Plane.js +0 -169
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/SectionPlanesPlugin.js +0 -403
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SectionPlanesPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SkyboxesPlugin/SkyboxesPlugin.js +0 -134
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/SkyboxesPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/IFCStoreyPlanObjectStates.js +0 -77
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/Storey.js +0 -61
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/StoreyMap.js +0 -57
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/StoreyViewsPlugin.js +0 -822
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/StoreyViewsPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/ModelTreeView.js +0 -888
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/TreeViewNode.js +0 -88
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/TreeViewPlugin.js +0 -624
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/TreeViewPlugin/modelValidation.js +0 -87
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/ViewCullPlugin/ViewCullPlugin.js +0 -295
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/ViewCullPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/XKTDefaultDataSource.js +0 -78
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/XKTLoaderPlugin.js +0 -847
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV1.js +0 -167
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV2.js +0 -228
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV3.js +0 -220
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV4.js +0 -279
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV5.js +0 -244
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV6.js +0 -301
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV7.js +0 -426
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/ParserV8.js +0 -479
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XKTLoaderPlugin/parsers/lib/pako.js +0 -6818
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/XML3DLoaderPlugin.js +0 -238
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/XML3DSceneGraphLoader.js +0 -1279
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/.jshintrc +0 -11
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/deflate.js +0 -2060
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/inflate.js +0 -2155
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/mime-types.js +0 -1002
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/pako/codecs.js +0 -64
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/z-worker.js +0 -153
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip-ext.js +0 -267
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip-fs.js +0 -553
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zip.js +0 -991
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/XML3DLoaderPlugin/zipjs/zlib-asm/codecs.js +0 -49
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/index.js +0 -17
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/culling/ObjectCullStates.js +0 -205
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Dot.js +0 -78
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Label.js +0 -97
- package/src/lib/gltf/assets/yjkkit-sdk/src/plugins/lib/html/Wire.js +0 -95
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/Plugin.js +0 -112
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/Viewer.js +0 -372
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/index.js +0 -3
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/IFCObjectDefaultColors.js +0 -162
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/IFCObjectDefaults.js +0 -39
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaModel.js +0 -145
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaObject.js +0 -215
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/metadata/MetaScene.js +0 -311
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/CameraControl.js +0 -1669
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/cc.js +0 -0
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/CameraUpdater.js +0 -312
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PanController.js +0 -112
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PickController.js +0 -193
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/controllers/PivotController.js +0 -289
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/cu.js +0 -0
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/KeyboardAxisViewHandler.js +0 -122
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/KeyboardPanRotateDollyHandler.js +0 -186
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MouseMiscHandler.js +0 -68
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePanRotateDollyHandler.js +0 -439
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/MousePickHandler.js +0 -361
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/TouchPanRotateAndDollyHandler.js +0 -258
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/TouchPickHandler.js +0 -197
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/CameraControl/lib/handlers/mouspan.js +0 -498
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/Component.js +0 -908
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/Entity.js +0 -475
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/ImagePlane/ImagePlane.js +0 -570
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/ImagePlane/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/PerformanceModel.js +0 -2623
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/ENTITY_FLAGS.js +0 -21
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/PerformanceMesh.js +0 -262
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/PerformanceNode.js +0 -697
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/RENDER_PASSES.js +0 -34
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/ScratchMemory.js +0 -63
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/compression.js +0 -183
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingBuffer.js +0 -33
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingLayer.js +0 -736
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/LinesBatchingRenderers.js +0 -68
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingColorRenderer.js +0 -295
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesBatching/renderers/LinesBatchingSilhouetteRenderer.js +0 -327
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingLayer.js +0 -698
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/LinesInstancingRenderers.js +0 -68
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingColorRenderer.js +0 -364
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/linesInstancing/renderers/LinesInstancingSilhouetteRenderer.js +0 -356
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingBuffer.js +0 -33
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingLayer.js +0 -776
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/PointsBatchingRenderers.js +0 -113
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingColorRenderer.js +0 -340
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingOcclusionRenderer.js +0 -312
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickDepthRenderer.js +0 -343
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingPickMeshRenderer.js +0 -331
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingShadowRenderer.js +0 -242
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsBatching/renderers/PointsBatchingSilhouetteRenderer.js +0 -348
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingLayer.js +0 -737
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/PointsInstancingRenderers.js +0 -143
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingColorRenderer.js +0 -373
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingDepthRenderer.js +0 -366
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingOcclusionRenderer.js +0 -370
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickDepthRenderer.js +0 -386
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingPickMeshRenderer.js +0 -376
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingShadowRenderer.js +0 -293
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/pointsInstancing/renderers/PointsInstancingSilhouetteRenderer.js +0 -382
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingBuffer.js +0 -37
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingLayer.js +0 -1017
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/TrianglesBatchingRenderers.js +0 -246
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorQualityRenderer.js +0 -809
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingColorRenderer.js +0 -504
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingDepthRenderer.js +0 -297
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesColorRenderer.js +0 -300
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingEdgesRenderer.js +0 -322
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingNormalsRenderer.js +0 -311
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingOcclusionRenderer.js +0 -291
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickDepthRenderer.js +0 -319
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickMeshRenderer.js +0 -305
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingPickNormalsRenderer.js +0 -300
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingShadowRenderer.js +0 -242
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesBatching/renderers/TrianglesBatchingSilhouetteRenderer.js +0 -323
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingLayer.js +0 -969
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/TrianglesInstancingRenderers.js +0 -246
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorQualityRenderer.js +0 -859
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingColorRenderer.js +0 -557
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingDepthRenderer.js +0 -341
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesColorRenderer.js +0 -338
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingEdgesRenderer.js +0 -356
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingNormalsRenderer.js +0 -354
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingOcclusionRenderer.js +0 -329
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickDepthRenderer.js +0 -358
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickMeshRenderer.js +0 -349
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingPickNormalsRenderer.js +0 -363
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingShadowRenderer.js +0 -284
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/PerformanceModel/lib/layers/trianglesInstancing/renderers/TrianglesInstancingSilhouetteRenderer.js +0 -354
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Camera.js +0 -880
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraFlightAnimation.js +0 -669
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraPath.js +0 -194
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CameraPathAnimation.js +0 -326
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/CustomProjection.js +0 -149
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Frustum.js +0 -316
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Ortho.js +0 -286
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/Perspective.js +0 -302
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/camera/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/canvas/Canvas.js +0 -464
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/canvas/Spinner.js +0 -323
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/core.js +0 -234
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/Geometry.js +0 -33
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/ReadableGeometry.js +0 -689
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/VBOGeometry.js +0 -327
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildBoxGeometry.js +0 -238
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildBoxLinesGeometry.js +0 -106
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildCylinderGeometry.js +0 -271
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildGridGeometry.js +0 -102
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildPlaneGeometry.js +0 -168
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildSphereGeometry.js +0 -161
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildTorusGeometry.js +0 -172
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/buildVectorTextGeometry.js +0 -1721
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/builders/index.js +0 -8
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/index.js +0 -4
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/load3DSGeometry.js +0 -103
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/geometry/loaders/loadOBJGeometry.js +0 -130
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/index.js +0 -18
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/input/Input.js +0 -1475
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/libs/canvas2image.js +0 -218
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/libs/k3d.js +0 -1032
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/AmbientLight.js +0 -175
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/CubeTexture.js +0 -156
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/DirLight.js +0 -314
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/Light.js +0 -29
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/LightMap.js +0 -77
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/PointLight.js +0 -395
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/ReflectionMap.js +0 -79
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/Shadow.js +0 -138
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/lights/index.js +0 -5
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/marker/Marker.js +0 -382
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/marker/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/EdgeMaterial.js +0 -359
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/EmphasisMaterial.js +0 -577
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Fresnel.js +0 -222
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/LambertMaterial.js +0 -378
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/LinesMaterial.js +0 -169
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Material.js +0 -39
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/MetallicMaterial.js +0 -820
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/PhongMaterial.js +0 -860
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/PointsMaterial.js +0 -320
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/SpecularMaterial.js +0 -807
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/Texture.js +0 -522
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/materials/index.js +0 -8
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/Frustum.js +0 -118
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/buildEdgeIndices.js +0 -162
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/geometryCompressionUtils.js +0 -353
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/math.js +0 -5302
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/math/rtcCoords.js +0 -132
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/CameraMemento.js +0 -200
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/ModelMemento.js +0 -272
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/ObjectsMemento.js +0 -259
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mementos/index.js +0 -3
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/Mesh.js +0 -2165
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/draw/DrawRenderer.js +0 -978
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/draw/DrawShaderSource.js +0 -1566
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisEdgesRenderer.js +0 -249
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisEdgesShaderSource.js +0 -163
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisFillRenderer.js +0 -276
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/emphasis/EmphasisFillShaderSource.js +0 -269
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/occlusion/OcclusionRenderer.js +0 -207
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/occlusion/OcclusionShaderSource.js +0 -156
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickMeshRenderer.js +0 -210
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickMeshShaderSource.js +0 -146
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickTriangleRenderer.js +0 -186
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/pick/PickTriangleShaderSource.js +0 -120
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/shadow/ShadowRenderer.js +0 -214
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/mesh/shadow/ShadowShaderSource.js +0 -96
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/metriqs/Metriqs.js +0 -259
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/nodes/Node.js +0 -1356
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/nodes/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/CubicBezierCurve.js +0 -194
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/Curve.js +0 -183
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/Path.js +0 -239
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/QuadraticBezierCurve.js +0 -161
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/SplineCurve.js +0 -133
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/paths/index.js +0 -5
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/postfx/SAO.js +0 -547
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/scene/Scene.js +0 -2481
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/sectionPlane/SectionPlane.js +0 -194
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/sectionPlane/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/skybox/Skybox.js +0 -119
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/skybox/index.js +0 -1
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/stats.js +0 -45
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/Map.js +0 -45
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/Queue.js +0 -56
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils/index.js +0 -2
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/utils.js +0 -452
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/viewport/Viewport.js +0 -212
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/ArrayBuf.js +0 -121
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Attribute.js +0 -23
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Drawable.js +0 -270
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/FrameContext.js +0 -259
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/PickResult.js +0 -317
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Pickable.js +0 -69
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Program.js +0 -179
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderBuffer.js +0 -315
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderFlags.js +0 -203
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/RenderState.js +0 -40
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Renderer.js +0 -1300
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Sampler.js +0 -18
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Shader.js +0 -49
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/Texture2D.js +0 -217
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/occlusion/OcclusionLayer.js +0 -214
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/occlusion/OcclusionTester.js +0 -432
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/sao/SAODepthLimitedBlurRenderer.js +0 -326
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/sao/SAOOcclusionRenderer.js +0 -375
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webgl/webglEnums.js +0 -61
- package/src/lib/gltf/assets/yjkkit-sdk/src/viewer/scene/webglInfo.js +0 -48
- package/src/lib/gltf/gltf.css +0 -392
- package/src/lib/gltf/gltf.js +0 -2241
- package/webpack.config.js +0 -70
|
@@ -1,863 +0,0 @@
|
|
|
1
|
-
import {Map} from "../../viewer/scene/utils/Map.js";
|
|
2
|
-
|
|
3
|
-
const idMap = new Map();
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Internal data class that represents the state of a menu or a submenu.
|
|
7
|
-
* @private
|
|
8
|
-
*/
|
|
9
|
-
class Menu {
|
|
10
|
-
constructor(id) {
|
|
11
|
-
this.id = id;
|
|
12
|
-
this.parentItem = null; // Set to an Item when this Menu is a submenu
|
|
13
|
-
this.groups = [];
|
|
14
|
-
this.menuElement = null;
|
|
15
|
-
this.shown = false;
|
|
16
|
-
this.mouseOver = 0;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Internal data class that represents a group of Items in a Menu.
|
|
22
|
-
* @private
|
|
23
|
-
*/
|
|
24
|
-
class Group {
|
|
25
|
-
constructor() {
|
|
26
|
-
this.items = [];
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Internal data class that represents the state of a menu item.
|
|
32
|
-
* @private
|
|
33
|
-
*/
|
|
34
|
-
class Item {
|
|
35
|
-
constructor(id, getTitle, doAction, getEnabled) {
|
|
36
|
-
this.id = id;
|
|
37
|
-
this.getTitle = getTitle;
|
|
38
|
-
this.doAction = doAction;
|
|
39
|
-
this.getEnabled = getEnabled;
|
|
40
|
-
this.itemElement = null;
|
|
41
|
-
this.subMenu = null;
|
|
42
|
-
this.enabled = true;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* @desc A customizable HTML context menu.
|
|
48
|
-
*
|
|
49
|
-
* [<img src="http://yjkkit.io/img/docs/ContextMenu/ContextMenu.gif">](https://yjkkit.github.io/yjkkit-sdk/examples/#ContextMenu_Canvas_TreeViewPlugin_Custom)
|
|
50
|
-
*
|
|
51
|
-
* * [[Run this example](https://yjkkit.github.io/yjkkit-sdk/examples/#ContextMenu_Canvas_TreeViewPlugin_Custom)]
|
|
52
|
-
*
|
|
53
|
-
* ## Overview
|
|
54
|
-
*
|
|
55
|
-
* * A pure JavaScript, lightweight context menu
|
|
56
|
-
* * Dynamically configure menu items
|
|
57
|
-
* * Dynamically enable or disable items
|
|
58
|
-
* * Supports cascading sub-menus
|
|
59
|
-
* * Configure custom style with custom CSS (see examples above)
|
|
60
|
-
*
|
|
61
|
-
* ## Usage
|
|
62
|
-
*
|
|
63
|
-
* In the example below we'll create a ````ContextMenu```` that pops up whenever we right-click on an {@link Entity} within
|
|
64
|
-
* our {@link Scene}.
|
|
65
|
-
*
|
|
66
|
-
* First, we'll create the ````ContextMenu````, configuring it with a list of menu items.
|
|
67
|
-
*
|
|
68
|
-
* Each item has:
|
|
69
|
-
*
|
|
70
|
-
* * a ````title```` for the item,
|
|
71
|
-
* * a ````doAction()```` callback to fire when the item's title is clicked, and
|
|
72
|
-
* * an optional ````getEnabled()```` callback that indicates if the item should enabled in the menu or not.
|
|
73
|
-
*
|
|
74
|
-
* <br>
|
|
75
|
-
*
|
|
76
|
-
* The ````getEnabled()```` callbacks are invoked whenever the menu is shown. When an item's ````getEnabled()```` callback
|
|
77
|
-
* returns ````true````, then the item is enabled and clickable. When it returns ````false````, then the item is disabled
|
|
78
|
-
* and cannot be clicked. An item without a ````getEnabled()```` callback is always enabled and clickable.
|
|
79
|
-
*
|
|
80
|
-
* Note how the ````doAction()```` and ````getEnabled()```` callbacks accept a ````context````
|
|
81
|
-
* object. That must be set on the ````ContextMenu```` before we're able to we show it. The context object can be anything. In this example,
|
|
82
|
-
* we'll use the context object to provide the callbacks with the Entity that we right-clicked.
|
|
83
|
-
*
|
|
84
|
-
* We'll also initially enable the ````ContextMenu````.
|
|
85
|
-
*
|
|
86
|
-
* [[Run this example](https://yjkkit.github.io/yjkkit-sdk/examples/#ContextMenu_Canvas_Custom)]
|
|
87
|
-
*
|
|
88
|
-
* ````javascript
|
|
89
|
-
* const canvasContextMenu = new ContextMenu({
|
|
90
|
-
*
|
|
91
|
-
* enabled: true,
|
|
92
|
-
*
|
|
93
|
-
* items: [
|
|
94
|
-
* [
|
|
95
|
-
* {
|
|
96
|
-
* title: "Hide Object",
|
|
97
|
-
* getEnabled: (context) => {
|
|
98
|
-
* return context.entity.visible; // Can't hide entity if already hidden
|
|
99
|
-
* },
|
|
100
|
-
* doAction: function (context) {
|
|
101
|
-
* context.entity.visible = false;
|
|
102
|
-
* }
|
|
103
|
-
* }
|
|
104
|
-
* ],
|
|
105
|
-
* [
|
|
106
|
-
* {
|
|
107
|
-
* title: "Select Object",
|
|
108
|
-
* getEnabled: (context) => {
|
|
109
|
-
* return (!context.entity.selected); // Can't select an entity that's already selected
|
|
110
|
-
* },
|
|
111
|
-
* doAction: function (context) {
|
|
112
|
-
* context.entity.selected = true;
|
|
113
|
-
* }
|
|
114
|
-
* }
|
|
115
|
-
* ],
|
|
116
|
-
* [
|
|
117
|
-
* {
|
|
118
|
-
* title: "X-Ray Object",
|
|
119
|
-
* getEnabled: (context) => {
|
|
120
|
-
* return (!context.entity.xrayed); // Can't X-ray an entity that's already X-rayed
|
|
121
|
-
* },
|
|
122
|
-
* doAction: (context) => {
|
|
123
|
-
* context.entity.xrayed = true;
|
|
124
|
-
* }
|
|
125
|
-
* }
|
|
126
|
-
* ]
|
|
127
|
-
* ]
|
|
128
|
-
* });
|
|
129
|
-
* ````
|
|
130
|
-
*
|
|
131
|
-
* Next, we'll make the ````ContextMenu```` appear whenever we right-click on an Entity. Whenever we right-click
|
|
132
|
-
* on the canvas, we'll attempt to pick the Entity at those mouse coordinates. If we succeed, we'll feed the
|
|
133
|
-
* Entity into ````ContextMenu```` via the context object, then show the ````ContextMenu````.
|
|
134
|
-
*
|
|
135
|
-
* From there, each ````ContextMenu```` item's ````getEnabled()```` callback will be invoked (if provided), to determine if the item should
|
|
136
|
-
* be enabled. If we click an item, its ````doAction()```` callback will be invoked with our context object.
|
|
137
|
-
*
|
|
138
|
-
* Remember that we must set the context on our ````ContextMenu```` before we show it, otherwise it will log an error to the console,
|
|
139
|
-
* and ignore our attempt to show it.
|
|
140
|
-
*
|
|
141
|
-
* ````javascript*
|
|
142
|
-
* viewer.scene.canvas.canvas.oncontextmenu = (e) => { // Right-clicked on the canvas
|
|
143
|
-
*
|
|
144
|
-
* if (!objectContextMenu.enabled) {
|
|
145
|
-
* return;
|
|
146
|
-
* }
|
|
147
|
-
*
|
|
148
|
-
* var hit = viewer.scene.pick({ // Try to pick an Entity at the coordinates
|
|
149
|
-
* canvasPos: [e.pageX, e.pageY]
|
|
150
|
-
* });
|
|
151
|
-
*
|
|
152
|
-
* if (hit) { // Picked an Entity
|
|
153
|
-
*
|
|
154
|
-
* objectContextMenu.context = { // Feed entity to ContextMenu
|
|
155
|
-
* entity: hit.entity
|
|
156
|
-
* };
|
|
157
|
-
*
|
|
158
|
-
* objectContextMenu.show(e.pageX, e.pageY); // Show the ContextMenu
|
|
159
|
-
* }
|
|
160
|
-
*
|
|
161
|
-
* e.preventDefault();
|
|
162
|
-
* });
|
|
163
|
-
* ````
|
|
164
|
-
*
|
|
165
|
-
* Note how we only show the ````ContextMenu```` if it's enabled. We can use that mechanism to switch between multiple
|
|
166
|
-
* ````ContextMenu```` instances depending on what we clicked.
|
|
167
|
-
*
|
|
168
|
-
* ## Dynamic Item Titles
|
|
169
|
-
*
|
|
170
|
-
* To make an item dynamically regenerate its title text whenever we show the ````ContextMenu````, provide its title with a
|
|
171
|
-
* ````getTitle()```` callback. The callback will fire each time you show ````ContextMenu````, which will dynamically
|
|
172
|
-
* set the item title text.
|
|
173
|
-
*
|
|
174
|
-
* In the example below, we'll create a simple ````ContextMenu```` that allows us to toggle the selection of an object
|
|
175
|
-
* via its first item, which changes text depending on whether we are selecting or deselecting the object.
|
|
176
|
-
*
|
|
177
|
-
* [[Run an example](https://yjkkit.github.io/yjkkit-sdk/examples/#ContextMenu_dynamicItemTitles)]
|
|
178
|
-
*
|
|
179
|
-
* ````javascript
|
|
180
|
-
* const canvasContextMenu = new ContextMenu({
|
|
181
|
-
*
|
|
182
|
-
* enabled: true,
|
|
183
|
-
*
|
|
184
|
-
* items: [
|
|
185
|
-
* [
|
|
186
|
-
* {
|
|
187
|
-
* getTitle: (context) => {
|
|
188
|
-
* return (!context.entity.selected) ? "Select" : "Undo Select";
|
|
189
|
-
* },
|
|
190
|
-
* doAction: function (context) {
|
|
191
|
-
* context.entity.selected = !context.entity.selected;
|
|
192
|
-
* }
|
|
193
|
-
* },
|
|
194
|
-
* {
|
|
195
|
-
* title: "Clear Selection",
|
|
196
|
-
* getEnabled: function (context) {
|
|
197
|
-
* return (context.viewer.scene.numSelectedObjects > 0);
|
|
198
|
-
* },
|
|
199
|
-
* doAction: function (context) {
|
|
200
|
-
* context.viewer.scene.setObjectsSelected(context.viewer.scene.selectedObjectIds, false);
|
|
201
|
-
* }
|
|
202
|
-
* }
|
|
203
|
-
* ]
|
|
204
|
-
* ]
|
|
205
|
-
* });
|
|
206
|
-
* ````
|
|
207
|
-
*
|
|
208
|
-
* ## Sub-menus
|
|
209
|
-
*
|
|
210
|
-
* Each menu item can optionally have a sub-menu, which will appear when we hover over the item.
|
|
211
|
-
*
|
|
212
|
-
* In the example below, we'll create a much simpler ````ContextMenu```` that has only one item, called "Effects", which
|
|
213
|
-
* will open a cascading sub-menu whenever we hover over that item.
|
|
214
|
-
*
|
|
215
|
-
* Note that our "Effects" item has no ````doAction```` callback, because an item with a sub-menu performs no
|
|
216
|
-
* action of its own.
|
|
217
|
-
*
|
|
218
|
-
* [[Run this example](https://yjkkit.github.io/yjkkit-sdk/examples/#ContextMenu_subMenus)]
|
|
219
|
-
*
|
|
220
|
-
* ````javascript
|
|
221
|
-
* const canvasContextMenu = new ContextMenu({
|
|
222
|
-
* items: [ // Top level items
|
|
223
|
-
* [
|
|
224
|
-
* {
|
|
225
|
-
* getTitle: (context) => {
|
|
226
|
-
* return "Effects";
|
|
227
|
-
* },
|
|
228
|
-
*
|
|
229
|
-
* items: [ // Sub-menu
|
|
230
|
-
* [
|
|
231
|
-
* {
|
|
232
|
-
* getTitle: (context) => {
|
|
233
|
-
* return (!context.entity.visible) ? "Show" : "Hide";
|
|
234
|
-
* },
|
|
235
|
-
* doAction: function (context) {
|
|
236
|
-
* context.entity.visible = !context.entity.visible;
|
|
237
|
-
* }
|
|
238
|
-
* },
|
|
239
|
-
* {
|
|
240
|
-
* getTitle: (context) => {
|
|
241
|
-
* return (!context.entity.selected) ? "Select" : "Undo Select";
|
|
242
|
-
* },
|
|
243
|
-
* doAction: function (context) {
|
|
244
|
-
* context.entity.selected = !context.entity.selected;
|
|
245
|
-
* }
|
|
246
|
-
* },
|
|
247
|
-
* {
|
|
248
|
-
* getTitle: (context) => {
|
|
249
|
-
* return (!context.entity.highlighted) ? "Highlight" : "Undo Highlight";
|
|
250
|
-
* },
|
|
251
|
-
* doAction: function (context) {
|
|
252
|
-
* context.entity.highlighted = !context.entity.highlighted;
|
|
253
|
-
* }
|
|
254
|
-
* }
|
|
255
|
-
* ]
|
|
256
|
-
* ]
|
|
257
|
-
* }
|
|
258
|
-
* ]
|
|
259
|
-
* ]
|
|
260
|
-
* });
|
|
261
|
-
* ````
|
|
262
|
-
*/
|
|
263
|
-
class ContextMenu {
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Creates a ````ContextMenu````.
|
|
267
|
-
*
|
|
268
|
-
* The ````ContextMenu```` will be initially hidden.
|
|
269
|
-
*
|
|
270
|
-
* @param {Object} [cfg] ````ContextMenu```` configuration.
|
|
271
|
-
* @param {Object} [cfg.items] The context menu items. These can also be dynamically set on {@link ContextMenu#items}. See the class documentation for an example.
|
|
272
|
-
* @param {Object} [cfg.context] The context, which is passed into the item callbacks. This can also be dynamically set on {@link ContextMenu#context}. This must be set before calling {@link ContextMenu#show}.
|
|
273
|
-
* @param {Boolean} [cfg.enabled=true] Whether this ````ContextMenu```` is initially enabled. {@link ContextMenu#show} does nothing while this is ````false````.
|
|
274
|
-
* @param {Boolean} [cfg.hideOnMouseDown=true] Whether this ````ContextMenu```` automatically hides whenever we mouse-down or tap anywhere in the page.
|
|
275
|
-
*/
|
|
276
|
-
constructor(cfg = {}) {
|
|
277
|
-
|
|
278
|
-
this._id = idMap.addItem();
|
|
279
|
-
this._context = null;
|
|
280
|
-
this._enabled = false; // True when the ContextMenu is enabled
|
|
281
|
-
this._itemsCfg = []; // Items as given as configs
|
|
282
|
-
this._rootMenu = null; // The root Menu in the tree
|
|
283
|
-
this._menuList = []; // List of Menus
|
|
284
|
-
this._menuMap = {}; // Menus mapped to their IDs
|
|
285
|
-
this._itemList = []; // List of Items
|
|
286
|
-
this._itemMap = {}; // Items mapped to their IDs
|
|
287
|
-
this._shown = false; // True when the ContextMenu is visible
|
|
288
|
-
this._nextId = 0;
|
|
289
|
-
|
|
290
|
-
/**
|
|
291
|
-
* Subscriptions to events fired at this ContextMenu.
|
|
292
|
-
* @private
|
|
293
|
-
*/
|
|
294
|
-
this._eventSubs = {};
|
|
295
|
-
|
|
296
|
-
if (cfg.hideOnMouseDown !== false) {
|
|
297
|
-
document.addEventListener("mousedown", (event) => {
|
|
298
|
-
if (!event.target.classList.contains("yjkkit-context-menu-item")) {
|
|
299
|
-
this.hide();
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
if (cfg.items) {
|
|
305
|
-
this.items = cfg.items;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
this.context = cfg.context;
|
|
309
|
-
this.enabled = cfg.enabled !== false;
|
|
310
|
-
this.hide();
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
/**
|
|
315
|
-
Subscribes to an event fired at this ````ContextMenu````.
|
|
316
|
-
|
|
317
|
-
@param {String} event The event
|
|
318
|
-
@param {Function} callback Callback fired on the event
|
|
319
|
-
*/
|
|
320
|
-
on(event, callback) {
|
|
321
|
-
let subs = this._eventSubs[event];
|
|
322
|
-
if (!subs) {
|
|
323
|
-
subs = [];
|
|
324
|
-
this._eventSubs[event] = subs;
|
|
325
|
-
}
|
|
326
|
-
subs.push(callback);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
/**
|
|
330
|
-
Fires an event at this ````ContextMenu````.
|
|
331
|
-
|
|
332
|
-
@param {String} event The event type name
|
|
333
|
-
@param {Object} value The event parameters
|
|
334
|
-
*/
|
|
335
|
-
fire(event, value) {
|
|
336
|
-
const subs = this._eventSubs[event];
|
|
337
|
-
if (subs) {
|
|
338
|
-
for (let i = 0, len = subs.length; i < len; i++) {
|
|
339
|
-
subs[i](value);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
/**
|
|
345
|
-
* Sets the ````ContextMenu```` items.
|
|
346
|
-
*
|
|
347
|
-
* These can be updated dynamically at any time.
|
|
348
|
-
*
|
|
349
|
-
* See class documentation for an example.
|
|
350
|
-
*
|
|
351
|
-
* @type {Object[]}
|
|
352
|
-
*/
|
|
353
|
-
set items(itemsCfg) {
|
|
354
|
-
this._clear();
|
|
355
|
-
this._itemsCfg = itemsCfg || [];
|
|
356
|
-
this._parseItems(itemsCfg);
|
|
357
|
-
this._createUI();
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Gets the ````ContextMenu```` items.
|
|
362
|
-
*
|
|
363
|
-
* @type {Object[]}
|
|
364
|
-
*/
|
|
365
|
-
get items() {
|
|
366
|
-
return this._itemsCfg;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
/**
|
|
370
|
-
* Sets whether this ````ContextMenu```` is enabled.
|
|
371
|
-
*
|
|
372
|
-
* Hides the menu when disabling.
|
|
373
|
-
*
|
|
374
|
-
* @type {Boolean}
|
|
375
|
-
*/
|
|
376
|
-
set enabled(enabled) {
|
|
377
|
-
enabled = (!!enabled);
|
|
378
|
-
if (enabled === this._enabled) {
|
|
379
|
-
return;
|
|
380
|
-
}
|
|
381
|
-
this._enabled = enabled;
|
|
382
|
-
if (!this._enabled) {
|
|
383
|
-
this.hide();
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
/**
|
|
388
|
-
* Gets whether this ````ContextMenu```` is enabled.
|
|
389
|
-
*
|
|
390
|
-
* {@link ContextMenu#show} does nothing while this is ````false````.
|
|
391
|
-
*
|
|
392
|
-
* @type {Boolean}
|
|
393
|
-
*/
|
|
394
|
-
get enabled() {
|
|
395
|
-
return this._enabled;
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
/**
|
|
399
|
-
* Sets the ````ContextMenu```` context.
|
|
400
|
-
*
|
|
401
|
-
* The context can be any object that you need to be provides to the callbacks configured on {@link ContextMenu#items}.
|
|
402
|
-
*
|
|
403
|
-
* This must be set before calling {@link ContextMenu#show}.
|
|
404
|
-
*
|
|
405
|
-
* @type {Object}
|
|
406
|
-
*/
|
|
407
|
-
set context(context) {
|
|
408
|
-
this._context = context;
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
/**
|
|
412
|
-
* Gets the ````ContextMenu```` context.
|
|
413
|
-
*
|
|
414
|
-
* @type {Object}
|
|
415
|
-
*/
|
|
416
|
-
get context() {
|
|
417
|
-
return this._context;
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
/**
|
|
421
|
-
* Shows this ````ContextMenu```` at the given page coordinates.
|
|
422
|
-
*
|
|
423
|
-
* Does nothing when {@link ContextMenu#enabled} is ````false````.
|
|
424
|
-
*
|
|
425
|
-
* Logs error to console and does nothing if {@link ContextMenu#context} has not been set.
|
|
426
|
-
*
|
|
427
|
-
* Fires a "shown" event when shown.
|
|
428
|
-
*
|
|
429
|
-
* @param {Number} pageX Page X-coordinate.
|
|
430
|
-
* @param {Number} pageY Page Y-coordinate.
|
|
431
|
-
*/
|
|
432
|
-
show(pageX, pageY) {
|
|
433
|
-
if (!this._context) {
|
|
434
|
-
console.error("ContextMenu cannot be shown without a context - set context first");
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
437
|
-
if (!this._enabled) {
|
|
438
|
-
return;
|
|
439
|
-
}
|
|
440
|
-
if (this._shown) {
|
|
441
|
-
return;
|
|
442
|
-
}
|
|
443
|
-
this._hideAllMenus();
|
|
444
|
-
this._updateItemsTitles();
|
|
445
|
-
this._updateItemsEnabledStatus();
|
|
446
|
-
this._showMenu(this._rootMenu.id, pageX, pageY);
|
|
447
|
-
this._shown = true;
|
|
448
|
-
this.fire("shown", {});
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
/**
|
|
452
|
-
* Gets whether this ````ContextMenu```` is currently shown or not.
|
|
453
|
-
*
|
|
454
|
-
* @returns {Boolean} Whether this ````ContextMenu```` is shown.
|
|
455
|
-
*/
|
|
456
|
-
get shown() {
|
|
457
|
-
return this._shown;
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
/**
|
|
461
|
-
* Hides this ````ContextMenu````.
|
|
462
|
-
*
|
|
463
|
-
* Fires a "hidden" event when hidden.
|
|
464
|
-
*/
|
|
465
|
-
hide() {
|
|
466
|
-
if (!this._enabled) {
|
|
467
|
-
return;
|
|
468
|
-
}
|
|
469
|
-
if (!this._shown) {
|
|
470
|
-
return;
|
|
471
|
-
}
|
|
472
|
-
this._hideAllMenus();
|
|
473
|
-
this._shown = false;
|
|
474
|
-
this.fire("hidden", {});
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
/**
|
|
478
|
-
* Destroys this ````ContextMenu````.
|
|
479
|
-
*/
|
|
480
|
-
destroy() {
|
|
481
|
-
this._context = null;
|
|
482
|
-
this._clear();
|
|
483
|
-
if (this._id !== null) {
|
|
484
|
-
idMap.removeItem(this._id);
|
|
485
|
-
this._id = null;
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
_clear() { // Destroys DOM elements, clears menu data
|
|
490
|
-
for (let i = 0, len = this._menuList.length; i < len; i++) {
|
|
491
|
-
const menu = this._menuList[i];
|
|
492
|
-
const menuElement = menu.menuElement;
|
|
493
|
-
menuElement.parentElement.removeChild(menuElement);
|
|
494
|
-
}
|
|
495
|
-
this._itemsCfg = [];
|
|
496
|
-
this._rootMenu = null;
|
|
497
|
-
this._menuList = [];
|
|
498
|
-
this._menuMap = {};
|
|
499
|
-
this._itemList = [];
|
|
500
|
-
this._itemMap = {};
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
_parseItems(itemsCfg) { // Parses "items" config into menu data
|
|
504
|
-
|
|
505
|
-
const visitItems = (itemsCfg) => {
|
|
506
|
-
|
|
507
|
-
const menuId = this._getNextId();
|
|
508
|
-
const menu = new Menu(menuId);
|
|
509
|
-
|
|
510
|
-
for (let i = 0, len = itemsCfg.length; i < len; i++) {
|
|
511
|
-
|
|
512
|
-
const itemsGroupCfg = itemsCfg[i];
|
|
513
|
-
|
|
514
|
-
const group = new Group();
|
|
515
|
-
|
|
516
|
-
menu.groups.push(group);
|
|
517
|
-
|
|
518
|
-
for (let j = 0, lenj = itemsGroupCfg.length; j < lenj; j++) {
|
|
519
|
-
|
|
520
|
-
const itemCfg = itemsGroupCfg[j];
|
|
521
|
-
const subItemsCfg = itemCfg.items;
|
|
522
|
-
const hasSubItems = (subItemsCfg && (subItemsCfg.length > 0));
|
|
523
|
-
const itemId = this._getNextId();
|
|
524
|
-
|
|
525
|
-
const getTitle = itemCfg.getTitle || (() => {
|
|
526
|
-
return (itemCfg.title || "");
|
|
527
|
-
});
|
|
528
|
-
|
|
529
|
-
const doAction = itemCfg.doAction || itemCfg.callback || (() => {
|
|
530
|
-
});
|
|
531
|
-
|
|
532
|
-
const getEnabled = itemCfg.getEnabled || (() => {
|
|
533
|
-
return true;
|
|
534
|
-
});
|
|
535
|
-
|
|
536
|
-
const item = new Item(itemId, getTitle, doAction, getEnabled);
|
|
537
|
-
|
|
538
|
-
item.parentMenu = menu;
|
|
539
|
-
|
|
540
|
-
group.items.push(item);
|
|
541
|
-
|
|
542
|
-
if (hasSubItems) {
|
|
543
|
-
const subMenu = visitItems(subItemsCfg);
|
|
544
|
-
item.subMenu = subMenu;
|
|
545
|
-
subMenu.parentItem = item;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
this._itemList.push(item);
|
|
549
|
-
this._itemMap[item.id] = item;
|
|
550
|
-
}
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
this._menuList.push(menu);
|
|
554
|
-
this._menuMap[menu.id] = menu;
|
|
555
|
-
|
|
556
|
-
return menu;
|
|
557
|
-
};
|
|
558
|
-
|
|
559
|
-
this._rootMenu = visitItems(itemsCfg);
|
|
560
|
-
}
|
|
561
|
-
|
|
562
|
-
_getNextId() { // Returns a unique ID
|
|
563
|
-
return "ContextMenu_" + this._id + "" + this._nextId++; // Start ID with alpha chars to make a valid DOM element selector
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
_createUI() { // Builds DOM elements for the entire menu tree
|
|
567
|
-
|
|
568
|
-
const visitMenu = (menu) => {
|
|
569
|
-
|
|
570
|
-
this._createMenuUI(menu);
|
|
571
|
-
|
|
572
|
-
const groups = menu.groups;
|
|
573
|
-
for (let i = 0, len = groups.length; i < len; i++) {
|
|
574
|
-
const group = groups[i];
|
|
575
|
-
const groupItems = group.items;
|
|
576
|
-
for (let j = 0, lenj = groupItems.length; j < lenj; j++) {
|
|
577
|
-
const item = groupItems[j];
|
|
578
|
-
const subMenu = item.subMenu;
|
|
579
|
-
if (subMenu) {
|
|
580
|
-
visitMenu(subMenu);
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
};
|
|
585
|
-
|
|
586
|
-
visitMenu(this._rootMenu);
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
_createMenuUI(menu) { // Builds DOM elements for a menu
|
|
590
|
-
|
|
591
|
-
const groups = menu.groups;
|
|
592
|
-
const html = [];
|
|
593
|
-
|
|
594
|
-
/* html.push('<div class="yjkkit-context-menu ' + menu.id + '" style="z-index:300000; position: absolute;">'); */
|
|
595
|
-
html.push('<div class="yjkkit-context-menu ' + menu.id + '" style="z-index:300000; position: fixed;">');
|
|
596
|
-
|
|
597
|
-
html.push('<ul>');
|
|
598
|
-
|
|
599
|
-
if (groups) {
|
|
600
|
-
|
|
601
|
-
for (let i = 0, len = groups.length; i < len; i++) {
|
|
602
|
-
|
|
603
|
-
const group = groups[i];
|
|
604
|
-
const groupIdx = i;
|
|
605
|
-
const groupLen = len;
|
|
606
|
-
const groupItems = group.items;
|
|
607
|
-
|
|
608
|
-
if (groupItems) {
|
|
609
|
-
|
|
610
|
-
for (let j = 0, lenj = groupItems.length; j < lenj; j++) {
|
|
611
|
-
|
|
612
|
-
const item = groupItems[j];
|
|
613
|
-
const itemSubMenu = item.subMenu;
|
|
614
|
-
const actionTitle = item.title || "";
|
|
615
|
-
|
|
616
|
-
if (itemSubMenu) {
|
|
617
|
-
|
|
618
|
-
html.push(
|
|
619
|
-
'<li id="' + item.id + '" class="yjkkit-context-menu-item" style="' +
|
|
620
|
-
((groupIdx === groupLen - 1) || ((j < lenj - 1)) ? 'border-bottom: 0' : 'border-bottom: 1px solid black') +
|
|
621
|
-
'">' +
|
|
622
|
-
actionTitle +
|
|
623
|
-
' [MORE]' +
|
|
624
|
-
'</li>');
|
|
625
|
-
|
|
626
|
-
} else {
|
|
627
|
-
|
|
628
|
-
html.push(
|
|
629
|
-
'<li id="' + item.id + '" class="yjkkit-context-menu-item" style="' +
|
|
630
|
-
((groupIdx === groupLen - 1) || ((j < lenj - 1)) ? 'border-bottom: 0' : 'border-bottom: 1px solid black') +
|
|
631
|
-
'">' +
|
|
632
|
-
actionTitle +
|
|
633
|
-
'</li>');
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
html.push('</ul>');
|
|
641
|
-
html.push('</div>');
|
|
642
|
-
|
|
643
|
-
const htmlString = html.join("");
|
|
644
|
-
|
|
645
|
-
// document.body.insertAdjacentHTML('beforeend', htmlString);
|
|
646
|
-
document.getElementById("myViewer").insertAdjacentHTML('beforeend', htmlString);
|
|
647
|
-
|
|
648
|
-
const menuElement = document.querySelector("." + menu.id);
|
|
649
|
-
|
|
650
|
-
menu.menuElement = menuElement;
|
|
651
|
-
|
|
652
|
-
menuElement.style["border-radius"] = 4 + "px";
|
|
653
|
-
menuElement.style.display = 'none';
|
|
654
|
-
menuElement.style["z-index"] = 300000;
|
|
655
|
-
menuElement.style.background = "white";
|
|
656
|
-
menuElement.style.border = "1px solid black";
|
|
657
|
-
menuElement.style["box-shadow"] = "0 4px 5px 0 gray";
|
|
658
|
-
menuElement.oncontextmenu = (e) => {
|
|
659
|
-
e.preventDefault();
|
|
660
|
-
};
|
|
661
|
-
|
|
662
|
-
// Bind event handlers
|
|
663
|
-
|
|
664
|
-
const self = this;
|
|
665
|
-
|
|
666
|
-
let lastSubMenu = null;
|
|
667
|
-
|
|
668
|
-
if (groups) {
|
|
669
|
-
|
|
670
|
-
for (let i = 0, len = groups.length; i < len; i++) {
|
|
671
|
-
|
|
672
|
-
const group = groups[i];
|
|
673
|
-
const groupItems = group.items;
|
|
674
|
-
|
|
675
|
-
if (groupItems) {
|
|
676
|
-
|
|
677
|
-
for (let j = 0, lenj = groupItems.length; j < lenj; j++) {
|
|
678
|
-
|
|
679
|
-
const item = groupItems[j];
|
|
680
|
-
const itemSubMenu = item.subMenu;
|
|
681
|
-
|
|
682
|
-
item.itemElement = document.getElementById(item.id);
|
|
683
|
-
|
|
684
|
-
if (!item.itemElement) {
|
|
685
|
-
console.error("ContextMenu item element not found: " + item.id);
|
|
686
|
-
continue;
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
item.itemElement.addEventListener("mouseenter", (event) => {
|
|
690
|
-
event.preventDefault();
|
|
691
|
-
if (item.enabled === false) {
|
|
692
|
-
return;
|
|
693
|
-
}
|
|
694
|
-
const subMenu = item.subMenu;
|
|
695
|
-
if (!subMenu) {
|
|
696
|
-
if (lastSubMenu) {
|
|
697
|
-
self._hideMenu(lastSubMenu.id);
|
|
698
|
-
lastSubMenu = null;
|
|
699
|
-
}
|
|
700
|
-
return;
|
|
701
|
-
}
|
|
702
|
-
if (lastSubMenu && (lastSubMenu.id !== subMenu.id)) {
|
|
703
|
-
self._hideMenu(lastSubMenu.id);
|
|
704
|
-
lastSubMenu = null;
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
const itemElement = item.itemElement;
|
|
708
|
-
const subMenuElement = subMenu.menuElement;
|
|
709
|
-
|
|
710
|
-
const itemRect = itemElement.getBoundingClientRect();
|
|
711
|
-
const menuRect = subMenuElement.getBoundingClientRect();
|
|
712
|
-
|
|
713
|
-
const subMenuWidth = 200; // TODO
|
|
714
|
-
const showOnLeft = ((itemRect.right + subMenuWidth) > window.innerWidth);
|
|
715
|
-
|
|
716
|
-
if (showOnLeft) {
|
|
717
|
-
self._showMenu(subMenu.id, itemRect.left - subMenuWidth, itemRect.top - 1);
|
|
718
|
-
} else {
|
|
719
|
-
self._showMenu(subMenu.id, itemRect.right - 5, itemRect.top - 1);
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
lastSubMenu = subMenu;
|
|
723
|
-
});
|
|
724
|
-
|
|
725
|
-
if (!itemSubMenu) {
|
|
726
|
-
|
|
727
|
-
// Item without sub-menu
|
|
728
|
-
// clicking item fires the item's action callback
|
|
729
|
-
|
|
730
|
-
item.itemElement.addEventListener("click", (event) => {
|
|
731
|
-
event.preventDefault();
|
|
732
|
-
self.hide();
|
|
733
|
-
if (!self._context) {
|
|
734
|
-
return;
|
|
735
|
-
}
|
|
736
|
-
if (item.enabled === false) {
|
|
737
|
-
return;
|
|
738
|
-
}
|
|
739
|
-
if (item.doAction) {
|
|
740
|
-
item.doAction(self._context);
|
|
741
|
-
}
|
|
742
|
-
});
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
item.itemElement.addEventListener("mouseenter", (event) => {
|
|
746
|
-
event.preventDefault();
|
|
747
|
-
if (item.enabled === false) {
|
|
748
|
-
return;
|
|
749
|
-
}
|
|
750
|
-
if (item.doHover) {
|
|
751
|
-
item.doHover(self._context);
|
|
752
|
-
}
|
|
753
|
-
});
|
|
754
|
-
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
}
|
|
758
|
-
}
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
|
|
762
|
-
_updateItemsTitles() { // Dynamically updates the title of each Item to the result of Item#getTitle()
|
|
763
|
-
if (!this._context) {
|
|
764
|
-
return;
|
|
765
|
-
}
|
|
766
|
-
for (let i = 0, len = this._itemList.length; i < len; i++) {
|
|
767
|
-
const item = this._itemList[i];
|
|
768
|
-
const itemElement = item.itemElement;
|
|
769
|
-
if (!itemElement) {
|
|
770
|
-
continue;
|
|
771
|
-
}
|
|
772
|
-
const title = item.getTitle(this._context);
|
|
773
|
-
if (item.subMenu) {
|
|
774
|
-
itemElement.innerText = title;
|
|
775
|
-
} else {
|
|
776
|
-
itemElement.innerText = title;
|
|
777
|
-
}
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
_updateItemsEnabledStatus() { // Enables or disables each Item, depending on the result of Item#getEnabled()
|
|
782
|
-
if (!this._context) {
|
|
783
|
-
return;
|
|
784
|
-
}
|
|
785
|
-
for (let i = 0, len = this._itemList.length; i < len; i++) {
|
|
786
|
-
const item = this._itemList[i];
|
|
787
|
-
const itemElement = item.itemElement;
|
|
788
|
-
if (!itemElement) {
|
|
789
|
-
continue;
|
|
790
|
-
}
|
|
791
|
-
const getEnabled = item.getEnabled;
|
|
792
|
-
if (!getEnabled) {
|
|
793
|
-
continue;
|
|
794
|
-
}
|
|
795
|
-
const enabled = getEnabled(this._context);
|
|
796
|
-
item.enabled = enabled;
|
|
797
|
-
if (!enabled) {
|
|
798
|
-
itemElement.classList.add("disabled");
|
|
799
|
-
} else {
|
|
800
|
-
itemElement.classList.remove("disabled");
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
_showMenu(menuId, pageX, pageY) { // Shows the given menu, at the specified page coordinates
|
|
806
|
-
const menu = this._menuMap[menuId];
|
|
807
|
-
if (!menu) {
|
|
808
|
-
console.error("Menu not found: " + menuId);
|
|
809
|
-
return;
|
|
810
|
-
}
|
|
811
|
-
if (menu.shown) {
|
|
812
|
-
return;
|
|
813
|
-
}
|
|
814
|
-
const menuElement = menu.menuElement;
|
|
815
|
-
if (menuElement) {
|
|
816
|
-
this._showMenuElement(menuElement, pageX, pageY);
|
|
817
|
-
menu.shown = true;
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
|
|
821
|
-
_hideMenu(menuId) { // Hides the given menu
|
|
822
|
-
const menu = this._menuMap[menuId];
|
|
823
|
-
if (!menu) {
|
|
824
|
-
console.error("Menu not found: " + menuId);
|
|
825
|
-
return;
|
|
826
|
-
}
|
|
827
|
-
if (!menu.shown) {
|
|
828
|
-
return;
|
|
829
|
-
}
|
|
830
|
-
const menuElement = menu.menuElement;
|
|
831
|
-
if (menuElement) {
|
|
832
|
-
this._hideMenuElement(menuElement);
|
|
833
|
-
menu.shown = false;
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
_hideAllMenus() {
|
|
838
|
-
for (let i = 0, len = this._menuList.length; i < len; i++) {
|
|
839
|
-
const menu = this._menuList[i];
|
|
840
|
-
this._hideMenu(menu.id);
|
|
841
|
-
}
|
|
842
|
-
}
|
|
843
|
-
|
|
844
|
-
_showMenuElement(menuElement, pageX, pageY) { // Shows the given menu element, at the specified page coordinates
|
|
845
|
-
menuElement.style.display = 'block';
|
|
846
|
-
const menuHeight = menuElement.offsetHeight;
|
|
847
|
-
const menuWidth = menuElement.offsetWidth;
|
|
848
|
-
if ((pageY + menuHeight) > window.innerHeight) {
|
|
849
|
-
pageY = window.innerHeight - menuHeight;
|
|
850
|
-
}
|
|
851
|
-
if ((pageX + menuWidth) > window.innerWidth) {
|
|
852
|
-
pageX = window.innerWidth - menuWidth;
|
|
853
|
-
}
|
|
854
|
-
menuElement.style.left = pageX + 'px';
|
|
855
|
-
menuElement.style.top = pageY + 'px';
|
|
856
|
-
}
|
|
857
|
-
|
|
858
|
-
_hideMenuElement(menuElement) {
|
|
859
|
-
menuElement.style.display = 'none';
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
export {ContextMenu};
|