Skip to content

Commit

Permalink
fix(composer): Fix for bug on drag/drop introduced in last PR & fix f…
Browse files Browse the repository at this point in the history
…or drag/drop icons: (#364)

Co-authored-by: Emily Dodds <dodemily@amazon.com>
  • Loading branch information
mumanity and mumanity committed Nov 14, 2022
1 parent bd47478 commit 6dc40b9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
2 changes: 1 addition & 1 deletion packages/scene-composer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@
"lines": 77.48,
"statements": 76.58,
"functions": 76.76,
"branches": 63.26,
"branches": 63.0,
"branchesTrue": 100
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import React, { FC, useCallback, useState } from 'react';
import React, { FC, useCallback, useContext, useState } from 'react';
import { Object3D } from 'three';

import ISceneHierarchyNode from '../../model/ISceneHierarchyNode';
import { useChildNodes, useSceneHierarchyData } from '../../SceneHierarchyDataProvider';
import { DropHandler } from '../../../../../hooks/useDropMonitor';
import SubModelTree from '../SubModelTree';
import { COMPOSER_FEATURES, KnownComponentType } from '../../../../../interfaces';
import { IModelRefComponentInternal } from '../../../../../store';
import { IModelRefComponentInternal, useSceneDocument } from '../../../../../store';
import { ModelType } from '../../../../../models/SceneModels';
import useFeature from '../../../../../hooks/useFeature';
import { findComponentByType } from '../../../../../utils/nodeUtils';
import { sceneComposerIdContext } from '../../../../../common/sceneComposerIdContext';

import SceneNodeLabel from './SceneNodeLabel';
import { AcceptableDropTypes, EnhancedTree, EnhancedTreeItem } from './constants';
Expand Down Expand Up @@ -50,7 +52,9 @@ const SceneHierarchyTreeItem: FC<SceneHierarchyTreeItemProps> = ({

const [{ variation: subModelSelectionEnabled }] = useFeature(COMPOSER_FEATURES[COMPOSER_FEATURES.SubModelSelection]);
const showSubModel = subModelSelectionEnabled === 'T1' && isValidModelRef && !!model && !isViewing();
const hasChildRefs = childRefs.length > 0;
const sceneComposerId = useContext(sceneComposerIdContext);
const { getSceneNodeByRef } = useSceneDocument(sceneComposerId);
const isSubModel = !!findComponentByType(getSceneNodeByRef(key), KnownComponentType.SubModelRef);

const onExpandNode = useCallback((expanded) => {
setExpanded(expanded);
Expand All @@ -76,6 +80,7 @@ const SceneHierarchyTreeItem: FC<SceneHierarchyTreeItemProps> = ({
},
[key],
);

return (
<EnhancedTreeItem
key={key}
Expand All @@ -89,21 +94,18 @@ const SceneHierarchyTreeItem: FC<SceneHierarchyTreeItemProps> = ({
onActivated={onActivated}
acceptDrop={AcceptableDropTypes}
onDropped={dropHandler}
draggable={enableDragAndDrop && !isViewing()}
draggable={enableDragAndDrop && !isViewing() && !isSubModel}
dataType={componentTypes && componentTypes.length > 0 ? componentTypes[0] : /* istanbul ignore next */ 'default'} // TODO: This is somewhat based on the current assumption that items will currently only really have one componentType
data={{ ref: key }}
>
{expanded && (
<EnhancedTree droppable={enableDragAndDrop} acceptDrop={AcceptableDropTypes} onDropped={dropHandler}>
{hasChildRefs &&
childNodes.map((node, index) => (
<React.Fragment key={index}>
<SceneHierarchyTreeItem key={node.objectRef} enableDragAndDrop={enableDragAndDrop} {...node} />
</React.Fragment>
))}
{showSubModel && hasChildRefs && (
<SubModelTree parentRef={key} expanded={false} object3D={model!} selectable />
)}
{childNodes.map((node, index) => (
<React.Fragment key={index}>
<SceneHierarchyTreeItem key={node.objectRef} enableDragAndDrop={enableDragAndDrop} {...node} />
</React.Fragment>
))}
{showSubModel && <SubModelTree parentRef={key} expanded={false} object3D={model!} selectable />}
</EnhancedTree>
)}
</EnhancedTreeItem>
Expand Down

0 comments on commit 6dc40b9

Please sign in to comment.