uiconfig-blueprint 0.1.0-dev.1 → 0.1.0-dev.11
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/README.md +27 -1
- package/dist/ConfigObject.d.ts +2 -1
- package/dist/UiConfigRendererBlueprint.d.ts +6 -4
- package/dist/allPaths-Dhco1c7a.js +23 -0
- package/dist/{allPaths-EYaH0Usv.js.map → allPaths-Dhco1c7a.js.map} +1 -1
- package/dist/{allPathsLoader-UVZ15qNf.js → allPathsLoader-BNvrKJa2.js} +5 -5
- package/dist/{allPathsLoader-UVZ15qNf.js.map → allPathsLoader-BNvrKJa2.js.map} +1 -1
- package/dist/bpComponents/BPButtonComponent.d.ts +1 -0
- package/dist/bpComponents/BPColorInputComponent.d.ts +1 -0
- package/dist/bpComponents/BPComponent.d.ts +3 -1
- package/dist/bpComponents/BPContainerComponent.d.ts +1 -1
- package/dist/bpComponents/BPFileComponent.d.ts +8 -5
- package/dist/bpComponents/BPFolderComponent.d.ts +9 -1
- package/dist/bpComponents/BPInputComponent.d.ts +2 -1
- package/dist/bpComponents/BPNumberInputComponent.d.ts +3 -1
- package/dist/bpComponents/BPSliderInputComponent.d.ts +1 -0
- package/dist/bpComponents/BPTreeComponent.d.ts +20 -10
- package/dist/bpComponents/BPValueComponent.d.ts +4 -1
- package/dist/bpComponents/BPVectorInputComponent.d.ts +1 -0
- package/dist/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
- package/dist/bpComponents/NumberUnits.d.ts +7 -0
- package/dist/components/DialogContext.d.ts +18 -10
- package/dist/components/DraggableIcon.d.ts +1 -0
- package/dist/components/ExtendedNumericInput.d.ts +13 -3
- package/dist/components/FileComponent.d.ts +3 -1
- package/dist/components/InspectorStackComponent.d.ts +2 -1
- package/dist/components/NumericInput.d.ts +79 -0
- package/dist/components/Tree2.d.ts +52 -0
- package/dist/components/TreeNode2.d.ts +43 -0
- package/dist/components/axesIcons.d.ts +7 -0
- package/dist/components/bpIconWrapper.d.ts +2 -2
- package/dist/components/iconMapping.d.ts +198 -0
- package/dist/components/loadingState.d.ts +4 -0
- package/dist/components/shapesIcons.d.ts +100 -0
- package/dist/components/treeTypes.d.ts +18 -0
- package/dist/index-B1k4Miq7.js +671 -0
- package/dist/index-B1k4Miq7.js.map +1 -0
- package/dist/index-BvGAMcRo.js +671 -0
- package/dist/index-BvGAMcRo.js.map +1 -0
- package/dist/index-GANXo7JZ.js +13560 -0
- package/dist/index-GANXo7JZ.js.map +1 -0
- package/dist/index.js +71 -36
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/lib.d.ts +4 -1
- package/dist/{splitPathsBySizeLoader-GhF5umHk.js → splitPathsBySizeLoader-DGIXBgyZ.js} +6 -6
- package/dist/{splitPathsBySizeLoader-GhF5umHk.js.map → splitPathsBySizeLoader-DGIXBgyZ.js.map} +1 -1
- package/docs/assets/highlight.css +45 -17
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/UI.html +10 -5
- package/docs/classes/UiConfigRendererBlueprint.html +10 -5
- package/docs/index.html +16 -5
- package/lib/css/renderer.css +189 -23
- package/lib/css/renderer.css.map +1 -1
- package/lib/esm/ConfigObject.d.ts +2 -1
- package/lib/esm/ConfigObject.js +15 -9
- package/lib/esm/ConfigObject.js.map +1 -1
- package/lib/esm/UiConfigRendererBlueprint.d.ts +6 -4
- package/lib/esm/UiConfigRendererBlueprint.js +30 -17
- package/lib/esm/UiConfigRendererBlueprint.js.map +1 -1
- package/lib/esm/bpComponents/BPButtonComponent.d.ts +1 -0
- package/lib/esm/bpComponents/BPButtonComponent.js +4 -2
- package/lib/esm/bpComponents/BPButtonComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPColorInputComponent.d.ts +1 -0
- package/lib/esm/bpComponents/BPColorInputComponent.js +4 -2
- package/lib/esm/bpComponents/BPColorInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPComponent.d.ts +3 -1
- package/lib/esm/bpComponents/BPComponent.js +15 -2
- package/lib/esm/bpComponents/BPComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPContainerComponent.d.ts +1 -1
- package/lib/esm/bpComponents/BPContainerComponent.js +12 -2
- package/lib/esm/bpComponents/BPContainerComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPDropdownInputComponent.js +7 -3
- package/lib/esm/bpComponents/BPDropdownInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPFileComponent.d.ts +8 -5
- package/lib/esm/bpComponents/BPFileComponent.js +18 -24
- package/lib/esm/bpComponents/BPFileComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPFolderComponent.d.ts +9 -1
- package/lib/esm/bpComponents/BPFolderComponent.js +55 -12
- package/lib/esm/bpComponents/BPFolderComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPInputComponent.d.ts +2 -1
- package/lib/esm/bpComponents/BPInputComponent.js +2 -1
- package/lib/esm/bpComponents/BPInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPNumberInputComponent.d.ts +3 -1
- package/lib/esm/bpComponents/BPNumberInputComponent.js +6 -1
- package/lib/esm/bpComponents/BPNumberInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPPanelComponent.js +1 -1
- package/lib/esm/bpComponents/BPPanelComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPSliderInputComponent.d.ts +1 -0
- package/lib/esm/bpComponents/BPSliderInputComponent.js +18 -6
- package/lib/esm/bpComponents/BPSliderInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPTextInputComponent.js +1 -1
- package/lib/esm/bpComponents/BPTextInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPToggleInputComponent.js +3 -2
- package/lib/esm/bpComponents/BPToggleInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPTreeComponent.d.ts +20 -10
- package/lib/esm/bpComponents/BPTreeComponent.js +120 -26
- package/lib/esm/bpComponents/BPTreeComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPTreeFolderComponent.js +4 -3
- package/lib/esm/bpComponents/BPTreeFolderComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPValueComponent.d.ts +4 -1
- package/lib/esm/bpComponents/BPValueComponent.js +19 -3
- package/lib/esm/bpComponents/BPValueComponent.js.map +1 -1
- package/lib/esm/bpComponents/BPVectorInputComponent.d.ts +1 -0
- package/lib/esm/bpComponents/BPVectorInputComponent.js +14 -8
- package/lib/esm/bpComponents/BPVectorInputComponent.js.map +1 -1
- package/lib/esm/bpComponents/GetNumberTransformFunctions.d.ts +4 -0
- package/lib/esm/bpComponents/GetNumberTransformFunctions.js +14 -0
- package/lib/esm/bpComponents/GetNumberTransformFunctions.js.map +1 -0
- package/lib/esm/bpComponents/NumberUnits.d.ts +7 -0
- package/lib/esm/bpComponents/NumberUnits.js +101 -0
- package/lib/esm/bpComponents/NumberUnits.js.map +1 -0
- package/lib/esm/components/AppToaster.js.map +1 -1
- package/lib/esm/components/ConfigurationPanelComponent.js +6 -1
- package/lib/esm/components/ConfigurationPanelComponent.js.map +1 -1
- package/lib/esm/components/DialogContext.d.ts +18 -10
- package/lib/esm/components/DialogContext.js +52 -33
- package/lib/esm/components/DialogContext.js.map +1 -1
- package/lib/esm/components/DraggableIcon.d.ts +1 -0
- package/lib/esm/components/DraggableIcon.js +7 -4
- package/lib/esm/components/DraggableIcon.js.map +1 -1
- package/lib/esm/components/ExtendedNumericInput.d.ts +13 -3
- package/lib/esm/components/ExtendedNumericInput.js +62 -17
- package/lib/esm/components/ExtendedNumericInput.js.map +1 -1
- package/lib/esm/components/FileComponent.d.ts +3 -1
- package/lib/esm/components/FileComponent.js +19 -19
- package/lib/esm/components/FileComponent.js.map +1 -1
- package/lib/esm/components/InspectorStackComponent.d.ts +2 -1
- package/lib/esm/components/InspectorStackComponent.js +2 -2
- package/lib/esm/components/InspectorStackComponent.js.map +1 -1
- package/lib/esm/components/NumericInput.d.ts +79 -0
- package/lib/esm/components/NumericInput.js +311 -0
- package/lib/esm/components/NumericInput.js.map +1 -0
- package/lib/esm/components/Tree2.d.ts +52 -0
- package/lib/esm/components/Tree2.js +177 -0
- package/lib/esm/components/Tree2.js.map +1 -0
- package/lib/esm/components/TreeNode2.d.ts +43 -0
- package/lib/esm/components/TreeNode2.js +111 -0
- package/lib/esm/components/TreeNode2.js.map +1 -0
- package/lib/esm/components/VisualStyleContext.js +9 -3
- package/lib/esm/components/VisualStyleContext.js.map +1 -1
- package/lib/esm/components/axesIcons.d.ts +7 -0
- package/lib/esm/components/axesIcons.js +10 -0
- package/lib/esm/components/axesIcons.js.map +1 -0
- package/lib/esm/components/bpIconWrapper.d.ts +2 -2
- package/lib/esm/components/bpIconWrapper.js +2 -2
- package/lib/esm/components/bpIconWrapper.js.map +1 -1
- package/lib/esm/components/iconMapping.d.ts +198 -0
- package/lib/esm/components/iconMapping.js +202 -0
- package/lib/esm/components/iconMapping.js.map +1 -0
- package/lib/esm/components/loadingState.d.ts +4 -0
- package/lib/esm/components/loadingState.js +10 -0
- package/lib/esm/components/loadingState.js.map +1 -1
- package/lib/esm/components/shapesIcons.d.ts +100 -0
- package/lib/esm/components/shapesIcons.js +102 -0
- package/lib/esm/components/shapesIcons.js.map +1 -0
- package/lib/esm/components/treeTypes.d.ts +18 -0
- package/lib/esm/components/treeTypes.js +2 -0
- package/lib/esm/components/treeTypes.js.map +1 -0
- package/lib/esm/lib.d.ts +4 -1
- package/lib/esm/lib.js +4 -1
- package/lib/esm/lib.js.map +1 -1
- package/lib/esm/renderer.css.js +1 -0
- package/package.json +62 -13
- package/src/ConfigObject.tsx +25 -11
- package/src/UiConfigRendererBlueprint.tsx +31 -20
- package/src/bpComponents/BPButtonComponent.scss +5 -1
- package/src/bpComponents/BPButtonComponent.tsx +9 -2
- package/src/bpComponents/BPColorInputComponent.tsx +8 -2
- package/src/bpComponents/BPComponent.tsx +17 -4
- package/src/bpComponents/BPContainerComponent.tsx +13 -1
- package/src/bpComponents/BPDropdownInputComponent.tsx +8 -2
- package/src/bpComponents/BPFileComponent.tsx +55 -27
- package/src/bpComponents/BPFolderComponent.scss +20 -6
- package/src/bpComponents/BPFolderComponent.tsx +105 -16
- package/src/bpComponents/BPInputComponent.tsx +6 -2
- package/src/bpComponents/BPNumberInputComponent.tsx +14 -2
- package/src/bpComponents/BPPanelComponent.tsx +1 -1
- package/src/bpComponents/BPSliderInputComponent.tsx +40 -20
- package/src/bpComponents/BPTextInputComponent.tsx +1 -0
- package/src/bpComponents/BPToggleInputComponent.tsx +6 -3
- package/src/bpComponents/BPTreeComponent.tsx +125 -25
- package/src/bpComponents/BPTreeFolderComponent.tsx +3 -3
- package/src/bpComponents/BPValueComponent.tsx +31 -4
- package/src/bpComponents/BPVectorInputComponent.tsx +23 -20
- package/src/bpComponents/GetNumberTransformFunctions.tsx +14 -0
- package/src/bpComponents/NumberUnits.tsx +123 -0
- package/src/components/AppToaster.tsx +20 -0
- package/src/components/ConfigurationPanelComponent.tsx +14 -3
- package/src/components/DialogContext.tsx +125 -65
- package/src/components/DraggableIcon.tsx +6 -5
- package/src/components/ExtendedNumericInput.tsx +70 -18
- package/src/components/FileComponent.tsx +48 -25
- package/src/components/InspectorStackComponent.tsx +2 -2
- package/src/components/NumericInput.tsx +679 -0
- package/src/components/Tree2.tsx +344 -0
- package/src/components/TreeNode2.tsx +192 -0
- package/src/components/VisualStyleContext.tsx +10 -2
- package/src/components/axesIcons.tsx +116 -0
- package/src/components/bpIconWrapper.tsx +5 -4
- package/src/components/common.scss +17 -0
- package/src/components/iconMapping.ts +354 -0
- package/src/components/loadingState.tsx +9 -0
- package/src/components/shapesIcons.tsx +980 -0
- package/src/components/tree2.scss +69 -0
- package/src/components/treeTypes.ts +97 -0
- package/src/lib.ts +4 -1
- package/src/renderer.scss +79 -11
- package/tsconfig.json +1 -0
- package/dist/allPaths-EYaH0Usv.js +0 -23
- package/dist/index-0vU2D25U.js +0 -604
- package/dist/index-0vU2D25U.js.map +0 -1
- package/dist/index-JBvBPdy9.js +0 -604
- package/dist/index-JBvBPdy9.js.map +0 -1
- package/dist/index-OyL-zObJ.js +0 -12765
- package/dist/index-OyL-zObJ.js.map +0 -1
- package/lib/cjs/ConfigObject.d.ts +0 -18
- package/lib/cjs/ConfigObject.js +0 -82
- package/lib/cjs/ConfigObject.js.map +0 -1
- package/lib/cjs/UiConfigRendererBlueprint.d.ts +0 -13
- package/lib/cjs/UiConfigRendererBlueprint.js +0 -56
- package/lib/cjs/UiConfigRendererBlueprint.js.map +0 -1
- package/lib/cjs/bpComponents/BPButtonComponent.d.ts +0 -8
- package/lib/cjs/bpComponents/BPButtonComponent.js +0 -19
- package/lib/cjs/bpComponents/BPButtonComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPColorInputComponent.d.ts +0 -24
- package/lib/cjs/bpComponents/BPColorInputComponent.js +0 -127
- package/lib/cjs/bpComponents/BPColorInputComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPComponent.d.ts +0 -29
- package/lib/cjs/bpComponents/BPComponent.js +0 -59
- package/lib/cjs/bpComponents/BPComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPContainerComponent.d.ts +0 -21
- package/lib/cjs/bpComponents/BPContainerComponent.js +0 -54
- package/lib/cjs/bpComponents/BPContainerComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPDropdownInputComponent.d.ts +0 -15
- package/lib/cjs/bpComponents/BPDropdownInputComponent.js +0 -43
- package/lib/cjs/bpComponents/BPDropdownInputComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPFileComponent.d.ts +0 -25
- package/lib/cjs/bpComponents/BPFileComponent.js +0 -69
- package/lib/cjs/bpComponents/BPFileComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPFolderComponent.d.ts +0 -16
- package/lib/cjs/bpComponents/BPFolderComponent.js +0 -39
- package/lib/cjs/bpComponents/BPFolderComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPInputComponent.d.ts +0 -11
- package/lib/cjs/bpComponents/BPInputComponent.js +0 -34
- package/lib/cjs/bpComponents/BPInputComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPLabelledComponent.d.ts +0 -8
- package/lib/cjs/bpComponents/BPLabelledComponent.js +0 -14
- package/lib/cjs/bpComponents/BPLabelledComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPNumberInputComponent.d.ts +0 -10
- package/lib/cjs/bpComponents/BPNumberInputComponent.js +0 -40
- package/lib/cjs/bpComponents/BPNumberInputComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPPanelComponent.d.ts +0 -16
- package/lib/cjs/bpComponents/BPPanelComponent.js +0 -35
- package/lib/cjs/bpComponents/BPPanelComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPSliderInputComponent.d.ts +0 -14
- package/lib/cjs/bpComponents/BPSliderInputComponent.js +0 -41
- package/lib/cjs/bpComponents/BPSliderInputComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPTextInputComponent.d.ts +0 -7
- package/lib/cjs/bpComponents/BPTextInputComponent.js +0 -19
- package/lib/cjs/bpComponents/BPTextInputComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPToggleInputComponent.d.ts +0 -8
- package/lib/cjs/bpComponents/BPToggleInputComponent.js +0 -22
- package/lib/cjs/bpComponents/BPToggleInputComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPTreeComponent.d.ts +0 -36
- package/lib/cjs/bpComponents/BPTreeComponent.js +0 -131
- package/lib/cjs/bpComponents/BPTreeComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPTreeFolderComponent.d.ts +0 -10
- package/lib/cjs/bpComponents/BPTreeFolderComponent.js +0 -40
- package/lib/cjs/bpComponents/BPTreeFolderComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPValueComponent.d.ts +0 -16
- package/lib/cjs/bpComponents/BPValueComponent.js +0 -46
- package/lib/cjs/bpComponents/BPValueComponent.js.map +0 -1
- package/lib/cjs/bpComponents/BPVectorInputComponent.d.ts +0 -19
- package/lib/cjs/bpComponents/BPVectorInputComponent.js +0 -110
- package/lib/cjs/bpComponents/BPVectorInputComponent.js.map +0 -1
- package/lib/cjs/components/ConfigurationPanelComponent.d.ts +0 -4
- package/lib/cjs/components/ConfigurationPanelComponent.js +0 -30
- package/lib/cjs/components/ConfigurationPanelComponent.js.map +0 -1
- package/lib/cjs/components/DialogContext.d.ts +0 -48
- package/lib/cjs/components/DialogContext.js +0 -79
- package/lib/cjs/components/DialogContext.js.map +0 -1
- package/lib/cjs/components/DraggableIcon.d.ts +0 -19
- package/lib/cjs/components/DraggableIcon.js +0 -70
- package/lib/cjs/components/DraggableIcon.js.map +0 -1
- package/lib/cjs/components/ExtendedNumericInput.d.ts +0 -25
- package/lib/cjs/components/ExtendedNumericInput.js +0 -174
- package/lib/cjs/components/ExtendedNumericInput.js.map +0 -1
- package/lib/cjs/components/FileComponent.d.ts +0 -7
- package/lib/cjs/components/FileComponent.js +0 -49
- package/lib/cjs/components/FileComponent.js.map +0 -1
- package/lib/cjs/components/FormGroupComponent.d.ts +0 -6
- package/lib/cjs/components/FormGroupComponent.js +0 -16
- package/lib/cjs/components/FormGroupComponent.js.map +0 -1
- package/lib/cjs/components/InspectorStackComponent.d.ts +0 -4
- package/lib/cjs/components/InspectorStackComponent.js +0 -27
- package/lib/cjs/components/InspectorStackComponent.js.map +0 -1
- package/lib/cjs/components/VisualStyleContext.d.ts +0 -119
- package/lib/cjs/components/VisualStyleContext.js +0 -60
- package/lib/cjs/components/VisualStyleContext.js.map +0 -1
- package/lib/cjs/components/bpIconWrapper.d.ts +0 -2
- package/lib/cjs/components/bpIconWrapper.js +0 -9
- package/lib/cjs/components/bpIconWrapper.js.map +0 -1
- package/lib/cjs/components/loadingState.d.ts +0 -4
- package/lib/cjs/components/loadingState.js +0 -16
- package/lib/cjs/components/loadingState.js.map +0 -1
- package/lib/cjs/components/variableIcons.d.ts +0 -40
- package/lib/cjs/components/variableIcons.js +0 -46
- package/lib/cjs/components/variableIcons.js.map +0 -1
- package/lib/cjs/contexts.d.ts +0 -1
- package/lib/cjs/contexts.js +0 -3
- package/lib/cjs/contexts.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -4
- package/lib/cjs/index.js +0 -9
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/lib.d.ts +0 -32
- package/lib/cjs/lib.js +0 -49
- package/lib/cjs/lib.js.map +0 -1
- package/lib/cjs/threejs.d.ts +0 -2
- package/lib/cjs/threejs.js +0 -3
- package/lib/cjs/threejs.js.map +0 -1
- package/lib/esnext/ConfigObject.d.ts +0 -18
- package/lib/esnext/ConfigObject.js +0 -75
- package/lib/esnext/ConfigObject.js.map +0 -1
- package/lib/esnext/UiConfigRendererBlueprint.d.ts +0 -13
- package/lib/esnext/UiConfigRendererBlueprint.js +0 -52
- package/lib/esnext/UiConfigRendererBlueprint.js.map +0 -1
- package/lib/esnext/bpComponents/BPButtonComponent.d.ts +0 -8
- package/lib/esnext/bpComponents/BPButtonComponent.js +0 -15
- package/lib/esnext/bpComponents/BPButtonComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPColorInputComponent.d.ts +0 -24
- package/lib/esnext/bpComponents/BPColorInputComponent.js +0 -110
- package/lib/esnext/bpComponents/BPColorInputComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPComponent.d.ts +0 -29
- package/lib/esnext/bpComponents/BPComponent.js +0 -46
- package/lib/esnext/bpComponents/BPComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPContainerComponent.d.ts +0 -21
- package/lib/esnext/bpComponents/BPContainerComponent.js +0 -51
- package/lib/esnext/bpComponents/BPContainerComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPDropdownInputComponent.d.ts +0 -15
- package/lib/esnext/bpComponents/BPDropdownInputComponent.js +0 -40
- package/lib/esnext/bpComponents/BPDropdownInputComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPFileComponent.d.ts +0 -25
- package/lib/esnext/bpComponents/BPFileComponent.js +0 -52
- package/lib/esnext/bpComponents/BPFileComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPFolderComponent.d.ts +0 -16
- package/lib/esnext/bpComponents/BPFolderComponent.js +0 -30
- package/lib/esnext/bpComponents/BPFolderComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPInputComponent.d.ts +0 -11
- package/lib/esnext/bpComponents/BPInputComponent.js +0 -19
- package/lib/esnext/bpComponents/BPInputComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPLabelledComponent.d.ts +0 -8
- package/lib/esnext/bpComponents/BPLabelledComponent.js +0 -13
- package/lib/esnext/bpComponents/BPLabelledComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPNumberInputComponent.d.ts +0 -10
- package/lib/esnext/bpComponents/BPNumberInputComponent.js +0 -21
- package/lib/esnext/bpComponents/BPNumberInputComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPPanelComponent.d.ts +0 -16
- package/lib/esnext/bpComponents/BPPanelComponent.js +0 -31
- package/lib/esnext/bpComponents/BPPanelComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPSliderInputComponent.d.ts +0 -14
- package/lib/esnext/bpComponents/BPSliderInputComponent.js +0 -39
- package/lib/esnext/bpComponents/BPSliderInputComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPTextInputComponent.d.ts +0 -7
- package/lib/esnext/bpComponents/BPTextInputComponent.js +0 -15
- package/lib/esnext/bpComponents/BPTextInputComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPToggleInputComponent.d.ts +0 -8
- package/lib/esnext/bpComponents/BPToggleInputComponent.js +0 -18
- package/lib/esnext/bpComponents/BPToggleInputComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPTreeComponent.d.ts +0 -36
- package/lib/esnext/bpComponents/BPTreeComponent.js +0 -111
- package/lib/esnext/bpComponents/BPTreeComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPTreeFolderComponent.d.ts +0 -10
- package/lib/esnext/bpComponents/BPTreeFolderComponent.js +0 -23
- package/lib/esnext/bpComponents/BPTreeFolderComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPValueComponent.d.ts +0 -16
- package/lib/esnext/bpComponents/BPValueComponent.js +0 -29
- package/lib/esnext/bpComponents/BPValueComponent.js.map +0 -1
- package/lib/esnext/bpComponents/BPVectorInputComponent.d.ts +0 -19
- package/lib/esnext/bpComponents/BPVectorInputComponent.js +0 -93
- package/lib/esnext/bpComponents/BPVectorInputComponent.js.map +0 -1
- package/lib/esnext/components/ConfigurationPanelComponent.d.ts +0 -4
- package/lib/esnext/components/ConfigurationPanelComponent.js +0 -26
- package/lib/esnext/components/ConfigurationPanelComponent.js.map +0 -1
- package/lib/esnext/components/DialogContext.d.ts +0 -48
- package/lib/esnext/components/DialogContext.js +0 -55
- package/lib/esnext/components/DialogContext.js.map +0 -1
- package/lib/esnext/components/DraggableIcon.d.ts +0 -19
- package/lib/esnext/components/DraggableIcon.js +0 -62
- package/lib/esnext/components/DraggableIcon.js.map +0 -1
- package/lib/esnext/components/ExtendedNumericInput.d.ts +0 -25
- package/lib/esnext/components/ExtendedNumericInput.js +0 -151
- package/lib/esnext/components/ExtendedNumericInput.js.map +0 -1
- package/lib/esnext/components/FileComponent.d.ts +0 -7
- package/lib/esnext/components/FileComponent.js +0 -42
- package/lib/esnext/components/FileComponent.js.map +0 -1
- package/lib/esnext/components/FormGroupComponent.d.ts +0 -6
- package/lib/esnext/components/FormGroupComponent.js +0 -11
- package/lib/esnext/components/FormGroupComponent.js.map +0 -1
- package/lib/esnext/components/InspectorStackComponent.d.ts +0 -4
- package/lib/esnext/components/InspectorStackComponent.js +0 -23
- package/lib/esnext/components/InspectorStackComponent.js.map +0 -1
- package/lib/esnext/components/VisualStyleContext.d.ts +0 -119
- package/lib/esnext/components/VisualStyleContext.js +0 -53
- package/lib/esnext/components/VisualStyleContext.js.map +0 -1
- package/lib/esnext/components/bpIconWrapper.d.ts +0 -2
- package/lib/esnext/components/bpIconWrapper.js +0 -5
- package/lib/esnext/components/bpIconWrapper.js.map +0 -1
- package/lib/esnext/components/loadingState.d.ts +0 -4
- package/lib/esnext/components/loadingState.js +0 -12
- package/lib/esnext/components/loadingState.js.map +0 -1
- package/lib/esnext/components/variableIcons.d.ts +0 -40
- package/lib/esnext/components/variableIcons.js +0 -43
- package/lib/esnext/components/variableIcons.js.map +0 -1
- package/lib/esnext/contexts.d.ts +0 -1
- package/lib/esnext/contexts.js +0 -2
- package/lib/esnext/contexts.js.map +0 -1
- package/lib/esnext/index.d.ts +0 -4
- package/lib/esnext/index.js +0 -5
- package/lib/esnext/index.js.map +0 -1
- package/lib/esnext/lib.d.ts +0 -32
- package/lib/esnext/lib.js +0 -33
- package/lib/esnext/lib.js.map +0 -1
- package/lib/esnext/threejs.d.ts +0 -2
- package/lib/esnext/threejs.js +0 -2
- package/lib/esnext/threejs.js.map +0 -1
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
* Changes:
|
|
17
|
+
* - Added support for drag and drop
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
import classNames from "classnames";
|
|
21
|
+
import * as React from "react";
|
|
22
|
+
|
|
23
|
+
import type {TreeEventHandler} from "@blueprintjs/core";
|
|
24
|
+
import {Classes, DISPLAYNAME_PREFIX, type Props} from "@blueprintjs/core";
|
|
25
|
+
import {TreeNode2} from "./TreeNode2";
|
|
26
|
+
import {TREE_NODE} from "@blueprintjs/core/lib/esnext/common/classes";
|
|
27
|
+
import { TreeNodeInfo } from "./treeTypes";
|
|
28
|
+
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
30
|
+
export interface TreeProps<T = {}> extends Props {
|
|
31
|
+
/**
|
|
32
|
+
* Whether to use a compact appearance which reduces the visual padding around node content.
|
|
33
|
+
*/
|
|
34
|
+
compact?: boolean;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The data specifying the contents and appearance of the tree.
|
|
38
|
+
*/
|
|
39
|
+
contents: ReadonlyArray<TreeNodeInfo<T>>;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Invoked when a node is clicked anywhere other than the caret for expanding/collapsing the node.
|
|
43
|
+
*/
|
|
44
|
+
onNodeClick?: TreeEventHandler<T>;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Invoked when caret of an expanded node is clicked.
|
|
48
|
+
*/
|
|
49
|
+
onNodeCollapse?: TreeEventHandler<T>;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Invoked when a node is right-clicked or the context menu button is pressed on a focused node.
|
|
53
|
+
*/
|
|
54
|
+
onNodeContextMenu?: TreeEventHandler<T>;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Invoked when a node is double-clicked. Be careful when using this in combination with
|
|
58
|
+
* an `onNodeClick` (single-click) handler, as the way this behaves can vary between browsers.
|
|
59
|
+
* See http://stackoverflow.com/q/5497073/3124288
|
|
60
|
+
*/
|
|
61
|
+
onNodeDoubleClick?: TreeEventHandler<T>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Invoked when the caret of a collapsed node is clicked.
|
|
65
|
+
*/
|
|
66
|
+
onNodeExpand?: TreeEventHandler<T>;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Invoked when the mouse is moved over a node.
|
|
70
|
+
*/
|
|
71
|
+
onNodeMouseEnter?: TreeEventHandler<T>;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Invoked when the mouse is moved out of a node.
|
|
75
|
+
*/
|
|
76
|
+
onNodeMouseLeave?: TreeEventHandler<T>;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Invoked when a node is dropped onto another node.
|
|
80
|
+
*/
|
|
81
|
+
onNodeDrop?: (source: TreeNodeInfo<T>, sourcePath: number[], target: TreeNodeInfo<T>, targetPath: number[], event: React.DragEvent<HTMLElement>, index?: number) => void;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Invoked when a node drag starts.
|
|
85
|
+
*/
|
|
86
|
+
onNodeDragStart?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Invoked when a node is dragged over another node.
|
|
90
|
+
*/
|
|
91
|
+
onNodeDragOver?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Invoked when a node drag ends.
|
|
95
|
+
*/
|
|
96
|
+
onNodeDragEnd?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Invoked when a dragged node enters another node.
|
|
100
|
+
*/
|
|
101
|
+
onNodeDragEnter?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Invoked when a dragged node leaves another node.
|
|
105
|
+
*/
|
|
106
|
+
onNodeDragLeave?: (node: TreeNodeInfo<T>, path: number[], event: React.DragEvent<HTMLElement>) => void;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* A function that determines whether a node can be dropped onto another node.
|
|
110
|
+
* @param source
|
|
111
|
+
* @param target
|
|
112
|
+
*/
|
|
113
|
+
canDropNode?: (source: TreeNodeInfo<T>, sourcePath: number[], target: TreeNodeInfo<T>, targetPath: number[], index?: number) => boolean;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Tree component.
|
|
118
|
+
*
|
|
119
|
+
* @see https://blueprintjs.com/docs/#core/components/tree
|
|
120
|
+
*/
|
|
121
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
122
|
+
export class Tree2<T = {}> extends React.Component<TreeProps<T>> {
|
|
123
|
+
public static displayName = `${DISPLAYNAME_PREFIX}.Tree`;
|
|
124
|
+
|
|
125
|
+
public static ofType<U>() {
|
|
126
|
+
return Tree2 as new (props: TreeProps<U>) => Tree2<U>;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public static nodeFromPath<U>(
|
|
130
|
+
path: readonly number[],
|
|
131
|
+
treeNodes?: ReadonlyArray<TreeNodeInfo<U>>,
|
|
132
|
+
): TreeNodeInfo<U> {
|
|
133
|
+
if (path.length === 1) {
|
|
134
|
+
return treeNodes![path[0]];
|
|
135
|
+
} else {
|
|
136
|
+
return Tree2.nodeFromPath(path.slice(1), treeNodes![path[0]].childNodes);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
private nodeRefs: { [nodeId: string]: HTMLElement } = {};
|
|
141
|
+
private dragSource: { node: TreeNodeInfo<T>; path: number[] } | null = null;
|
|
142
|
+
private draggingNode?: { node: TreeNodeInfo<T>; path: number[] };
|
|
143
|
+
private dragOverNode?: { node: TreeNodeInfo<T>; path: number[]; currentTarget?: HTMLElement };
|
|
144
|
+
private rootRef: React.RefObject<HTMLDivElement> = React.createRef<HTMLDivElement>();
|
|
145
|
+
|
|
146
|
+
public render() {
|
|
147
|
+
return (
|
|
148
|
+
<div
|
|
149
|
+
className={classNames(Classes.TREE, this.props.className, {
|
|
150
|
+
[Classes.COMPACT]: this.props.compact,
|
|
151
|
+
})}
|
|
152
|
+
ref={this.rootRef}
|
|
153
|
+
>
|
|
154
|
+
{this.renderNodes(this.props.contents, [], Classes.TREE_ROOT)}
|
|
155
|
+
</div>
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Returns the underlying HTML element of the `Tree` node with an id of `nodeId`.
|
|
161
|
+
* This element does not contain the children of the node, only its label and controls.
|
|
162
|
+
* If the node is not currently mounted, `undefined` is returned.
|
|
163
|
+
*/
|
|
164
|
+
public getNodeContentElement(nodeId: string | number): HTMLElement | undefined {
|
|
165
|
+
return this.nodeRefs[nodeId];
|
|
166
|
+
}
|
|
167
|
+
private renderNodeSpacer = (node: TreeNodeInfo<T>, path: number[], i: number)=> {
|
|
168
|
+
return <li className={Classes.TREE + "-drop-spacer"}
|
|
169
|
+
key={"drop-" + node.id + "-" + i}
|
|
170
|
+
>
|
|
171
|
+
<div
|
|
172
|
+
onDragOver={(e) => this.handleNodeDragOver(node, path, e, i)}
|
|
173
|
+
onDrop={(e) => this.handleNodeDrop(node, path, e, i)}
|
|
174
|
+
onDragEnter={(e) => this.handleNodeDragEnter(node, path, e, i)}
|
|
175
|
+
onDragLeave={(e) => this.handleNodeDragLeave(node, path, e, i)}
|
|
176
|
+
></div>
|
|
177
|
+
</li>
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
private renderNodes(
|
|
181
|
+
treeNodes: ReadonlyArray<TreeNodeInfo<T>> | undefined,
|
|
182
|
+
currentPath?: number[],
|
|
183
|
+
className?: string,
|
|
184
|
+
parentNode?: TreeNodeInfo<T>,
|
|
185
|
+
) {
|
|
186
|
+
if (treeNodes == null) {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
const nodeItems = treeNodes.map((node, i) => {
|
|
191
|
+
const elementPath = currentPath!.concat(i);
|
|
192
|
+
const draggable = !!node.draggable;
|
|
193
|
+
const droppable = !!node.droppable;
|
|
194
|
+
const parentDroppable = !!(parentNode && parentNode.droppable);
|
|
195
|
+
return (<React.Fragment key={'wr-'+node.id}>
|
|
196
|
+
{parentDroppable && i === 0 && this.renderNodeSpacer(parentNode, elementPath, i)}
|
|
197
|
+
<TreeNode2<T>
|
|
198
|
+
{...node}
|
|
199
|
+
key={'node-'+node.id}
|
|
200
|
+
contentRef={this.handleContentRef}
|
|
201
|
+
depth={elementPath.length - 1}
|
|
202
|
+
onClick={this.handleNodeClick}
|
|
203
|
+
onContextMenu={this.handleNodeContextMenu}
|
|
204
|
+
onCollapse={this.handleNodeCollapse}
|
|
205
|
+
onDoubleClick={this.handleNodeDoubleClick}
|
|
206
|
+
onExpand={this.handleNodeExpand}
|
|
207
|
+
onMouseEnter={this.handleNodeMouseEnter}
|
|
208
|
+
onMouseLeave={this.handleNodeMouseLeave}
|
|
209
|
+
path={elementPath}
|
|
210
|
+
draggable={draggable}
|
|
211
|
+
onDragStart={draggable ? this.handleNodeDragStart : undefined}
|
|
212
|
+
onDragEnd={draggable ? this.handleNodeDragEnd : undefined}
|
|
213
|
+
onDragOver={droppable ? this.handleNodeDragOver : undefined}
|
|
214
|
+
onDrop={droppable ? this.handleNodeDrop : undefined}
|
|
215
|
+
onDragEnter={droppable ? this.handleNodeDragEnter : undefined}
|
|
216
|
+
onDragLeave={droppable ? this.handleNodeDragLeave : undefined}
|
|
217
|
+
>
|
|
218
|
+
{this.renderNodes(node.childNodes, elementPath, undefined, node)}
|
|
219
|
+
</TreeNode2>
|
|
220
|
+
{parentDroppable && i >= 0 && this.renderNodeSpacer(parentNode, elementPath, i + 1)}
|
|
221
|
+
</React.Fragment>)
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
return <ul className={classNames(Classes.TREE_NODE_LIST, className)}>{nodeItems}</ul>;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
private handleContentRef = (node: TreeNodeInfo<T>, element: HTMLElement | null) => {
|
|
228
|
+
if (element != null) {
|
|
229
|
+
this.nodeRefs[node.id] = element;
|
|
230
|
+
} else {
|
|
231
|
+
// don't want our object to get bloated with old keys
|
|
232
|
+
delete this.nodeRefs[node.id];
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
private handleNodeCollapse = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
|
|
237
|
+
this.props.onNodeCollapse?.(node, path, e);
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
private handleNodeClick = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
|
|
241
|
+
this.props.onNodeClick?.(node, path, e);
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
private handleNodeContextMenu = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
|
|
245
|
+
this.props.onNodeContextMenu?.(node, path, e);
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
private handleNodeDoubleClick = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
|
|
249
|
+
this.props.onNodeDoubleClick?.(node, path, e);
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
private handleNodeExpand = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
|
|
253
|
+
this.props.onNodeExpand?.(node, path, e);
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
private handleNodeMouseEnter = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
|
|
257
|
+
this.props.onNodeMouseEnter?.(node, path, e);
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
private handleNodeMouseLeave = (node: TreeNodeInfo<T>, path: number[], e: React.MouseEvent<HTMLElement>) => {
|
|
261
|
+
this.props.onNodeMouseLeave?.(node, path, e);
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
// Drag and drop handlers
|
|
265
|
+
private handleNodeDragStart = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => {
|
|
266
|
+
this.dragSource = { node, path };
|
|
267
|
+
this.draggingNode = { node, path };
|
|
268
|
+
this.rootRef?.current?.classList.add(Classes.TREE + "-dragging-node");
|
|
269
|
+
this.addNodeClass(node, TREE_NODE + "-dragging");
|
|
270
|
+
e.dataTransfer.effectAllowed = "move";
|
|
271
|
+
try {
|
|
272
|
+
e.dataTransfer.setData("application/json", JSON.stringify({ nodeId: node.id, path }));
|
|
273
|
+
} catch {
|
|
274
|
+
// ignore
|
|
275
|
+
}
|
|
276
|
+
this.props.onNodeDragStart?.(node, path, e);
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
private handleNodeDragOver = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>, index?: number) => {
|
|
280
|
+
if (this.dragSource && this.props.canDropNode) {
|
|
281
|
+
const canDrop = this.props.canDropNode(this.dragSource.node, this.dragSource.path, node, path, index);
|
|
282
|
+
if (!canDrop) {
|
|
283
|
+
e.dataTransfer.dropEffect = "none";
|
|
284
|
+
e.preventDefault();
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const currentTarget = e.currentTarget as HTMLElement;
|
|
289
|
+
if ((this.dragOverNode?.node.id !== node.id || this.dragOverNode?.currentTarget !== currentTarget) && this.draggingNode?.node.id !== node.id) {
|
|
290
|
+
if (this.dragOverNode) this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
|
|
291
|
+
this.dragOverNode = { node, path, currentTarget };
|
|
292
|
+
this.addNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
|
|
293
|
+
}
|
|
294
|
+
e.preventDefault();
|
|
295
|
+
e.dataTransfer.dropEffect = "move";
|
|
296
|
+
this.props.onNodeDragOver?.(node, path, e);
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
private handleNodeDrop = (targetNode: TreeNodeInfo<T>, targetPath: number[], e: React.DragEvent<HTMLElement>, index?: number) => {
|
|
300
|
+
e.preventDefault();
|
|
301
|
+
const source = this.dragSource
|
|
302
|
+
const canDrop = !source ? false : (this.props.canDropNode ? this.props.canDropNode(source.node, source.path, targetNode, targetPath, index) : true);
|
|
303
|
+
if (this.dragOverNode) this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
|
|
304
|
+
if (this.draggingNode) this.removeNodeClass(this.draggingNode.node, TREE_NODE + "-dragging");
|
|
305
|
+
this.dragSource = null;
|
|
306
|
+
this.draggingNode = undefined;
|
|
307
|
+
this.rootRef?.current?.classList.remove(Classes.TREE + "-dragging-node");
|
|
308
|
+
this.dragOverNode = undefined;
|
|
309
|
+
if (canDrop && source && this.props.onNodeDrop) {
|
|
310
|
+
this.props.onNodeDrop(source.node, source.path, targetNode, targetPath, e, index);
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
private handleNodeDragEnd = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>, _index?: number) => {
|
|
315
|
+
if (this.draggingNode) this.removeNodeClass(this.draggingNode.node, TREE_NODE + "-dragging");
|
|
316
|
+
if (this.dragOverNode) this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
|
|
317
|
+
this.dragSource = null;
|
|
318
|
+
this.draggingNode = undefined;
|
|
319
|
+
this.rootRef?.current?.classList.remove(Classes.TREE + "-dragging-node");
|
|
320
|
+
this.dragOverNode = undefined;
|
|
321
|
+
this.props.onNodeDragEnd?.(node, path, e);
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
private handleNodeDragEnter = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>, _index?: number) => {
|
|
325
|
+
this.props.onNodeDragEnter?.(node, path, e);
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
private handleNodeDragLeave = (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>, _index?: number) => {
|
|
329
|
+
if (this.dragOverNode) this.removeNodeClass(this.dragOverNode.node, TREE_NODE + "-dragover", this.dragOverNode.currentTarget);
|
|
330
|
+
this.dragOverNode = undefined;
|
|
331
|
+
this.props.onNodeDragLeave?.(node, path, e);
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
private addNodeClass = (node: TreeNodeInfo<T>|number[], className: string, currentTarget?: HTMLElement) => {
|
|
335
|
+
const el = this.nodeRefs[!Array.isArray(node) ? node.id : Tree2.nodeFromPath(node, this.props.contents).id];
|
|
336
|
+
if (el) el.classList.add(className);
|
|
337
|
+
if(currentTarget) currentTarget.classList.add(className);
|
|
338
|
+
}
|
|
339
|
+
private removeNodeClass = (node: TreeNodeInfo<T>|number[], className: string, currentTarget?: HTMLElement) => {
|
|
340
|
+
const el = this.nodeRefs[!Array.isArray(node) ? node.id : Tree2.nodeFromPath(node, this.props.contents).id];
|
|
341
|
+
if (el) el.classList.remove(className);
|
|
342
|
+
if(currentTarget) currentTarget.classList.remove(className);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
* Changes:
|
|
17
|
+
* - Added support for drag and drop
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import classNames from "classnames";
|
|
21
|
+
import * as React from "react";
|
|
22
|
+
|
|
23
|
+
import {CaretRight} from "@blueprintjs/icons";
|
|
24
|
+
|
|
25
|
+
import type {TreeEventHandler, TreeNodeInfo} from "@blueprintjs/core";
|
|
26
|
+
import {Classes, Collapse, DISPLAYNAME_PREFIX, Icon} from "@blueprintjs/core";
|
|
27
|
+
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
29
|
+
export interface TreeNodeProps<T = {}> extends TreeNodeInfo<T> {
|
|
30
|
+
children?: React.ReactNode;
|
|
31
|
+
contentRef?: (node: TreeNodeInfo<T>, element: HTMLDivElement | null) => void;
|
|
32
|
+
depth: number;
|
|
33
|
+
key?: string | number;
|
|
34
|
+
onClick?: TreeEventHandler<T>;
|
|
35
|
+
onCollapse?: TreeEventHandler<T>;
|
|
36
|
+
onContextMenu?: TreeEventHandler<T>;
|
|
37
|
+
onDoubleClick?: TreeEventHandler<T>;
|
|
38
|
+
onExpand?: TreeEventHandler<T>;
|
|
39
|
+
onMouseEnter?: TreeEventHandler<T>;
|
|
40
|
+
onMouseLeave?: TreeEventHandler<T>;
|
|
41
|
+
path: number[];
|
|
42
|
+
draggable?: boolean;
|
|
43
|
+
onDragStart?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
|
|
44
|
+
onDragOver?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
|
|
45
|
+
onDrop?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
|
|
46
|
+
onDragEnd?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
|
|
47
|
+
onDragEnter?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
|
|
48
|
+
onDragLeave?: (node: TreeNodeInfo<T>, path: number[], e: React.DragEvent<HTMLElement>) => void;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Tree node component.
|
|
53
|
+
*
|
|
54
|
+
* @see https://blueprintjs.com/docs/#core/components/tree.tree-node
|
|
55
|
+
*/
|
|
56
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
57
|
+
export class TreeNode2<T = {}> extends React.Component<TreeNodeProps<T>> {
|
|
58
|
+
public static displayName = `${DISPLAYNAME_PREFIX}.TreeNode`;
|
|
59
|
+
|
|
60
|
+
/** @deprecated no longer necessary now that the TypeScript parser supports type arguments on JSX element tags */
|
|
61
|
+
public static ofType<U>() {
|
|
62
|
+
return TreeNode2 as new (props: TreeNodeProps<U>) => TreeNode2<U>;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public render() {
|
|
66
|
+
const { children, className, disabled, icon, isExpanded, isSelected, label, draggable } = this.props;
|
|
67
|
+
const classes = classNames(
|
|
68
|
+
Classes.TREE_NODE,
|
|
69
|
+
{
|
|
70
|
+
[Classes.DISABLED]: disabled,
|
|
71
|
+
[Classes.TREE_NODE_SELECTED]: isSelected,
|
|
72
|
+
[Classes.TREE_NODE_EXPANDED]: isExpanded,
|
|
73
|
+
},
|
|
74
|
+
className,
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
const contentClasses = classNames(
|
|
78
|
+
Classes.TREE_NODE_CONTENT,
|
|
79
|
+
`${Classes.TREE_NODE_CONTENT}-${this.props.depth}`,
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const eventHandlers =
|
|
83
|
+
disabled === true
|
|
84
|
+
? {}
|
|
85
|
+
: {
|
|
86
|
+
onClick: this.handleClick,
|
|
87
|
+
onContextMenu: this.handleContextMenu,
|
|
88
|
+
onDoubleClick: this.handleDoubleClick,
|
|
89
|
+
onMouseEnter: this.handleMouseEnter,
|
|
90
|
+
onMouseLeave: this.handleMouseLeave,
|
|
91
|
+
draggable: draggable,
|
|
92
|
+
onDragStart: this.handleDragStart,
|
|
93
|
+
onDragOver: this.handleDragOver,
|
|
94
|
+
onDrop: this.handleDrop,
|
|
95
|
+
onDragEnd: this.handleDragEnd,
|
|
96
|
+
onDragEnter: this.handleDragEnter,
|
|
97
|
+
onDragLeave: this.handleDragLeave,
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
return (
|
|
101
|
+
<li className={classes}>
|
|
102
|
+
<div className={contentClasses} ref={this.handleContentRef} {...eventHandlers}>
|
|
103
|
+
{this.maybeRenderCaret()}
|
|
104
|
+
<Icon className={Classes.TREE_NODE_ICON} icon={icon} aria-hidden={true} tabIndex={-1} />
|
|
105
|
+
<span className={Classes.TREE_NODE_LABEL}>{label}</span>
|
|
106
|
+
{this.maybeRenderSecondaryLabel()}
|
|
107
|
+
</div>
|
|
108
|
+
<Collapse isOpen={isExpanded}>{children}</Collapse>
|
|
109
|
+
</li>
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private maybeRenderCaret() {
|
|
114
|
+
const { children, isExpanded, disabled, hasCaret = React.Children.count(children) > 0 } = this.props;
|
|
115
|
+
if (hasCaret) {
|
|
116
|
+
const caretClasses = classNames(
|
|
117
|
+
Classes.TREE_NODE_CARET,
|
|
118
|
+
isExpanded ? Classes.TREE_NODE_CARET_OPEN : Classes.TREE_NODE_CARET_CLOSED,
|
|
119
|
+
);
|
|
120
|
+
return (
|
|
121
|
+
<CaretRight
|
|
122
|
+
title={isExpanded ? "Collapse group" : "Expand group"}
|
|
123
|
+
className={caretClasses}
|
|
124
|
+
onClick={disabled === true ? undefined : this.handleCaretClick}
|
|
125
|
+
/>
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
return <span className={Classes.TREE_NODE_CARET_NONE} />;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
private maybeRenderSecondaryLabel() {
|
|
132
|
+
if (this.props.secondaryLabel != null) {
|
|
133
|
+
return <span className={Classes.TREE_NODE_SECONDARY_LABEL}>{this.props.secondaryLabel}</span>;
|
|
134
|
+
} else {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
private handleCaretClick = (e: React.MouseEvent<HTMLElement>) => {
|
|
140
|
+
e.stopPropagation();
|
|
141
|
+
const { isExpanded, onCollapse, onExpand } = this.props;
|
|
142
|
+
(isExpanded ? onCollapse : onExpand)?.(this.props, this.props.path, e);
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
private handleClick = (e: React.MouseEvent<HTMLDivElement>) => {
|
|
146
|
+
this.props.onClick?.(this.props, this.props.path, e);
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
private handleContentRef = (element: HTMLDivElement | null) => {
|
|
150
|
+
this.props.contentRef?.(this.props, element);
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
private handleContextMenu = (e: React.MouseEvent<HTMLDivElement>) => {
|
|
154
|
+
this.props.onContextMenu?.(this.props, this.props.path, e);
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
private handleDoubleClick = (e: React.MouseEvent<HTMLDivElement>) => {
|
|
158
|
+
this.props.onDoubleClick?.(this.props, this.props.path, e);
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
private handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {
|
|
162
|
+
this.props.onMouseEnter?.(this.props, this.props.path, e);
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
private handleMouseLeave = (e: React.MouseEvent<HTMLDivElement>) => {
|
|
166
|
+
this.props.onMouseLeave?.(this.props, this.props.path, e);
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
private handleDragStart = (e: React.DragEvent<HTMLDivElement>) => {
|
|
170
|
+
this.props.onDragStart?.(this.props, this.props.path, e);
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
private handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {
|
|
174
|
+
this.props.onDragOver?.(this.props, this.props.path, e);
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
private handleDrop = (e: React.DragEvent<HTMLDivElement>) => {
|
|
178
|
+
this.props.onDrop?.(this.props, this.props.path, e);
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
private handleDragEnd = (e: React.DragEvent<HTMLDivElement>) => {
|
|
182
|
+
this.props.onDragEnd?.(this.props, this.props.path, e);
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
private handleDragEnter = (e: React.DragEvent<HTMLDivElement>) => {
|
|
186
|
+
this.props.onDragEnter?.(this.props, this.props.path, e);
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
private handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {
|
|
190
|
+
this.props.onDragLeave?.(this.props, this.props.path, e);
|
|
191
|
+
};
|
|
192
|
+
}
|
|
@@ -30,14 +30,14 @@ const localStorageIds = {
|
|
|
30
30
|
export function setupVisualStyle(){
|
|
31
31
|
const [darkMode, setDarkMode] = React.useState(localStorage.getItem(localStorageIds.darkMode) !== (defaultVisualStyle.darkMode ? 'false' : 'true'))
|
|
32
32
|
React.useEffect(() => {
|
|
33
|
-
localStorage.setItem(
|
|
33
|
+
localStorage.setItem(localStorageIds.darkMode, darkMode ? 'true' : 'false')
|
|
34
34
|
const clas = Classes.DARK
|
|
35
35
|
if(!darkMode) document.body.classList.remove(clas)
|
|
36
36
|
else document.body.classList.add(clas)
|
|
37
37
|
}, [darkMode])
|
|
38
38
|
const [theme, setTheme] = React.useState(localStorage.getItem(localStorageIds.theme) || defaultVisualStyle.theme)
|
|
39
39
|
React.useEffect(() => {
|
|
40
|
-
localStorage.setItem(
|
|
40
|
+
localStorage.setItem(localStorageIds.theme, theme)
|
|
41
41
|
document.documentElement.classList.remove(...Object.keys(defaultVisualStyle.themes).map(k => k))
|
|
42
42
|
document.documentElement.classList.add(theme)
|
|
43
43
|
}, [theme])
|
|
@@ -60,6 +60,10 @@ export function ThemeSettingsMenuComponent() {
|
|
|
60
60
|
// intent={intent}
|
|
61
61
|
// labelElement={"⌘,"}
|
|
62
62
|
roleStructure="menuitem"
|
|
63
|
+
popoverProps={{
|
|
64
|
+
hoverOpenDelay: 150,
|
|
65
|
+
hoverCloseDelay: 300,
|
|
66
|
+
}}
|
|
63
67
|
children={
|
|
64
68
|
<>
|
|
65
69
|
<MenuItem icon="flash" text="Light Mode"
|
|
@@ -83,6 +87,10 @@ export function ThemeSettingsMenuComponent() {
|
|
|
83
87
|
// intent={intent}
|
|
84
88
|
// labelElement={"⌘,"}
|
|
85
89
|
roleStructure="menuitem"
|
|
90
|
+
popoverProps={{
|
|
91
|
+
hoverOpenDelay: 150,
|
|
92
|
+
hoverCloseDelay: 300,
|
|
93
|
+
}}
|
|
86
94
|
children={
|
|
87
95
|
<>
|
|
88
96
|
{Object.entries(visualStyle.themes).map(([key, value]) => (
|