@pega/cosmos-react-build 2.0.0-rc.2 → 2.0.0
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/lib/components/FlowModeller/{Renderer/AddNode.d.ts → AddNode.d.ts} +6 -0
- package/lib/components/FlowModeller/AddNode.d.ts.map +1 -0
- package/lib/components/FlowModeller/AddNode.js +62 -0
- package/lib/components/FlowModeller/AddNode.js.map +1 -0
- package/lib/components/FlowModeller/FlowModeller.d.ts +2 -2
- package/lib/components/FlowModeller/FlowModeller.d.ts.map +1 -1
- package/lib/components/FlowModeller/FlowModeller.js +96 -107
- package/lib/components/FlowModeller/FlowModeller.js.map +1 -1
- package/lib/components/FlowModeller/Node/NodeTemplate.styles.d.ts +4 -8
- package/lib/components/FlowModeller/Node/NodeTemplate.styles.d.ts.map +1 -1
- package/lib/components/FlowModeller/Node/NodeTemplate.styles.js +10 -10
- package/lib/components/FlowModeller/Node/NodeTemplate.styles.js.map +1 -1
- package/lib/components/FlowModeller/Node/NodeTemplates.d.ts.map +1 -1
- package/lib/components/FlowModeller/Node/NodeTemplates.js +12 -3
- package/lib/components/FlowModeller/Node/NodeTemplates.js.map +1 -1
- package/lib/components/FlowModeller/NodeLibrary.d.ts +2 -1
- package/lib/components/FlowModeller/NodeLibrary.d.ts.map +1 -1
- package/lib/components/FlowModeller/NodeLibrary.js +10 -8
- package/lib/components/FlowModeller/NodeLibrary.js.map +1 -1
- package/lib/components/FlowModeller/Renderer/Connectors.d.ts +13 -0
- package/lib/components/FlowModeller/Renderer/Connectors.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/{Connector.js → Connectors.js} +13 -16
- package/lib/components/FlowModeller/Renderer/Connectors.js.map +1 -0
- package/lib/components/FlowModeller/Renderer/Nodes.d.ts +9 -0
- package/lib/components/FlowModeller/Renderer/Nodes.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/Nodes.js +25 -0
- package/lib/components/FlowModeller/Renderer/Nodes.js.map +1 -0
- package/lib/components/FlowModeller/Renderer/Renderer.js +4 -4
- package/lib/components/FlowModeller/Renderer/Renderer.js.map +1 -1
- package/lib/components/FlowModeller/Renderer/Renderer.types.d.ts +4 -4
- package/lib/components/FlowModeller/Renderer/Renderer.types.d.ts.map +1 -1
- package/lib/components/FlowModeller/Renderer/Renderer.types.js.map +1 -1
- package/lib/components/FlowModeller/Renderer/Utils/Graph.d.ts +6 -3
- package/lib/components/FlowModeller/Renderer/Utils/Graph.d.ts.map +1 -1
- package/lib/components/FlowModeller/Renderer/Utils/Graph.js +55 -0
- package/lib/components/FlowModeller/Renderer/Utils/Graph.js.map +1 -1
- package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.d.ts.map +1 -1
- package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.js +18 -15
- package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.js.map +1 -1
- package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.d.ts +24 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.js +152 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.js.map +1 -0
- package/lib/components/FlowModeller/Utils/AddNodeUtils.d.ts +16 -0
- package/lib/components/FlowModeller/Utils/AddNodeUtils.d.ts.map +1 -0
- package/lib/components/FlowModeller/Utils/AddNodeUtils.js +118 -0
- package/lib/components/FlowModeller/Utils/AddNodeUtils.js.map +1 -0
- package/lib/components/FlowModeller/helper.d.ts +1 -0
- package/lib/components/FlowModeller/helper.d.ts.map +1 -1
- package/lib/components/FlowModeller/helper.js +38 -7
- package/lib/components/FlowModeller/helper.js.map +1 -1
- package/lib/components/FlowModeller/index.d.ts +8 -1
- package/lib/components/FlowModeller/index.d.ts.map +1 -1
- package/lib/components/FlowModeller/index.js +6 -0
- package/lib/components/FlowModeller/index.js.map +1 -1
- package/lib/components/LifeCycle/Stage.d.ts.map +1 -1
- package/lib/components/LifeCycle/Stage.js +0 -4
- package/lib/components/LifeCycle/Stage.js.map +1 -1
- package/lib/components/LifeCycle/index.d.ts +1 -1
- package/lib/components/LifeCycle/index.d.ts.map +1 -1
- package/lib/components/LifeCycle/index.js.map +1 -1
- package/lib/components/PageTemplates/PageTemplates.d.ts.map +1 -1
- package/lib/components/PageTemplates/PageTemplates.js +21 -1
- package/lib/components/PageTemplates/PageTemplates.js.map +1 -1
- package/lib/components/Workbench/ConfigurationPanel.d.ts +5 -0
- package/lib/components/Workbench/ConfigurationPanel.d.ts.map +1 -0
- package/lib/components/Workbench/ConfigurationPanel.js +21 -0
- package/lib/components/Workbench/ConfigurationPanel.js.map +1 -0
- package/lib/components/Workbench/Toolbar.d.ts +14 -0
- package/lib/components/Workbench/Toolbar.d.ts.map +1 -0
- package/lib/components/Workbench/Toolbar.js +14 -0
- package/lib/components/Workbench/Toolbar.js.map +1 -0
- package/lib/components/Workbench/UtilityPanel.d.ts +7 -0
- package/lib/components/Workbench/UtilityPanel.d.ts.map +1 -0
- package/lib/components/Workbench/UtilityPanel.js +12 -0
- package/lib/components/Workbench/UtilityPanel.js.map +1 -0
- package/lib/components/Workbench/Workbench.d.ts +6 -0
- package/lib/components/Workbench/Workbench.d.ts.map +1 -0
- package/lib/components/Workbench/Workbench.js +24 -0
- package/lib/components/Workbench/Workbench.js.map +1 -0
- package/lib/components/Workbench/Workbench.styles.d.ts +10 -0
- package/lib/components/Workbench/Workbench.styles.d.ts.map +1 -0
- package/lib/components/Workbench/Workbench.styles.js +72 -0
- package/lib/components/Workbench/Workbench.styles.js.map +1 -0
- package/lib/components/Workbench/Workbench.types.d.ts +49 -0
- package/lib/components/Workbench/Workbench.types.d.ts.map +1 -0
- package/lib/components/Workbench/Workbench.types.js +2 -0
- package/lib/components/Workbench/Workbench.types.js.map +1 -0
- package/lib/components/Workbench/index.d.ts +2 -0
- package/lib/components/Workbench/index.d.ts.map +1 -0
- package/lib/components/Workbench/index.js +2 -0
- package/lib/components/Workbench/index.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/package.json +3 -3
- package/lib/components/FlowModeller/Renderer/AddNode.d.ts.map +0 -1
- package/lib/components/FlowModeller/Renderer/AddNode.js +0 -42
- package/lib/components/FlowModeller/Renderer/AddNode.js.map +0 -1
- package/lib/components/FlowModeller/Renderer/Connector.d.ts +0 -5
- package/lib/components/FlowModeller/Renderer/Connector.d.ts.map +0 -1
- package/lib/components/FlowModeller/Renderer/Connector.js.map +0 -1
- package/lib/components/FlowModeller/Renderer/ConnectorsContainer.d.ts +0 -12
- package/lib/components/FlowModeller/Renderer/ConnectorsContainer.d.ts.map +0 -1
- package/lib/components/FlowModeller/Renderer/ConnectorsContainer.js +0 -15
- package/lib/components/FlowModeller/Renderer/ConnectorsContainer.js.map +0 -1
- package/lib/components/FlowModeller/Renderer/Node.d.ts +0 -5
- package/lib/components/FlowModeller/Renderer/Node.d.ts.map +0 -1
- package/lib/components/FlowModeller/Renderer/Node.js +0 -18
- package/lib/components/FlowModeller/Renderer/Node.js.map +0 -1
- package/lib/components/FlowModeller/Renderer/NodesContainer.d.ts +0 -8
- package/lib/components/FlowModeller/Renderer/NodesContainer.d.ts.map +0 -1
- package/lib/components/FlowModeller/Renderer/NodesContainer.js +0 -15
- package/lib/components/FlowModeller/Renderer/NodesContainer.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, forwardRef } from 'react';
|
|
3
|
+
import { readableColor } from 'polished';
|
|
3
4
|
import { MenuButton, Icon, Flex, Tooltip, useElement, useI18n, cap, Text } from '@pega/cosmos-react-core';
|
|
4
5
|
import { StyledLabel, StyledCircle, StyledIcon, StyledCardHeader, StyledCardContent, StyledCard, StyledText, StyledTextWithEllipsis, StyledAdditionalData, StyledCardFooter, StyledAdditionalDataItem } from './NodeTemplate.styles';
|
|
5
6
|
const MetaListItem = ({ label, value }) => {
|
|
@@ -42,14 +43,22 @@ export const DefaultNode = forwardRef(({ id, label, type, description, additiona
|
|
|
42
43
|
const [nodeLabel, setNodeLabel] = useElement();
|
|
43
44
|
const [nodeDescription, setNodeDescription] = useElement();
|
|
44
45
|
const [nodeIcon, setNodeIcon] = useElement();
|
|
45
|
-
|
|
46
|
+
const color = readableColor(type.color);
|
|
47
|
+
return (_jsxs(StyledCard, { "aria-label": label, onClick: () => onClick?.(id), onKeyDown: handleEnterKeyDown, ref: ref, ...restProps, children: [_jsxs(Flex, { as: StyledCardHeader, container: { alignItems: 'center', pad: 1 }, children: [_jsx(StyledIcon, { id: id, style: {
|
|
48
|
+
'--bg-color': type.color,
|
|
49
|
+
'--fg-color': color
|
|
50
|
+
}, ref: setNodeIcon, children: _jsx(Icon, { name: type.icon }, void 0) }, void 0), _jsx(Tooltip, { target: nodeIcon, hideDelay: 'none', children: cap(type.name) }, void 0), _jsx(StyledText, { variant: 'h4', ref: setNodeLabel, children: label }, void 0), _jsx(Tooltip, { describeTarget: false, target: nodeLabel, hideDelay: 'none', children: label }, void 0), actionItems && (_jsx(MenuButton, { portal: true, variant: 'simple', text: t('actions'), icon: 'more', iconOnly: true, onClick: (e) => e.stopPropagation(), onKeyDown: (e) => e.stopPropagation(), menu: {
|
|
46
51
|
items: actionItems
|
|
47
52
|
} }, void 0))] }, void 0), description && (_jsxs(_Fragment, { children: [_jsx(StyledCardContent, { ref: setNodeDescription, children: description }, void 0), _jsx(Tooltip, { describeTarget: false, target: nodeDescription, hideDelay: 'none', children: description }, void 0)] }, void 0)), additionalData && (_jsx(StyledCardFooter, { children: _jsx(MetaList, { metadata: additionalData }, void 0) }, void 0))] }, void 0));
|
|
48
53
|
});
|
|
49
54
|
export const StartNode = ({ type, label }) => {
|
|
50
|
-
return (_jsxs(Flex, { container: { justify: 'center', direction: 'column' }, children: [_jsx(Flex, { as: StyledLabel,
|
|
55
|
+
return (_jsxs(Flex, { container: { justify: 'center', direction: 'column' }, children: [_jsx(Flex, { as: StyledLabel, nodeType: type, children: label }, void 0), _jsx(Flex, { as: StyledCircle, style: {
|
|
56
|
+
'--bg-color': type.color
|
|
57
|
+
}, tabIndex: '0', "aria-label": label, role: 'button' }, void 0)] }, void 0));
|
|
51
58
|
};
|
|
52
59
|
export const EndNode = ({ type, label }) => {
|
|
53
|
-
return (_jsxs(Flex, { container: { justify: 'center', direction: 'column' }, children: [_jsx(Flex, { as: StyledCircle,
|
|
60
|
+
return (_jsxs(Flex, { container: { justify: 'center', direction: 'column' }, children: [_jsx(Flex, { as: StyledCircle, style: {
|
|
61
|
+
'--bg-color': type.color
|
|
62
|
+
}, tabIndex: '0', "aria-label": label, role: 'button' }, void 0), _jsx(Flex, { as: StyledLabel, nodeType: type, children: label }, void 0)] }, void 0));
|
|
54
63
|
};
|
|
55
64
|
//# sourceMappingURL=NodeTemplates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeTemplates.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Node/NodeTemplates.tsx"],"names":[],"mappings":"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","sourcesContent":["import { PropsWithoutRef, useCallback, MouseEvent, KeyboardEvent, forwardRef, FC } from 'react';\n\nimport {\n MenuButton,\n Icon,\n Flex,\n Tooltip,\n useElement,\n useI18n,\n cap,\n Text\n} from '@pega/cosmos-react-core';\n\nimport {\n StyledLabel,\n StyledCircle,\n StyledIcon,\n StyledCardHeader,\n StyledCardContent,\n StyledCard,\n StyledText,\n StyledTextWithEllipsis,\n StyledAdditionalData,\n StyledCardFooter,\n StyledAdditionalDataItem\n} from './NodeTemplate.styles';\nimport { NodeProps, NodeComponentProps, AdditionalDataItemProps } from './Node.types';\n\nconst MetaListItem = ({ label, value }: AdditionalDataItemProps) => {\n const [nodeAdditionalDataItem, setNodeAdditionalDataItem] = useElement();\n return (\n <>\n <Flex\n as={StyledAdditionalDataItem}\n container={{ wrap: 'nowrap', pad: 0.25, gap: 0.25 }}\n item={{ grow: 1 }}\n ref={setNodeAdditionalDataItem}\n >\n <StyledTextWithEllipsis as='dd'>{label}</StyledTextWithEllipsis>\n <Text role='separator' variant='secondary' aria-hidden='true'>\n : \n </Text>\n <StyledTextWithEllipsis as='dt'>{value}</StyledTextWithEllipsis>\n </Flex>\n <Tooltip target={nodeAdditionalDataItem} hideDelay='none'>\n {`${label}:${value}`}\n </Tooltip>\n </>\n );\n};\n\nconst MetaList: FC<{ metadata: NodeProps['additionalData'] }> = ({ metadata }) => {\n const [nodeAdditionalData, setNodeAdditionalData] = useElement();\n let additionalDataValue = '';\n metadata?.forEach((item: AdditionalDataItemProps, index: number) => {\n if (index > 1) {\n additionalDataValue += `${item.label}: ${item.value}\n `;\n }\n });\n return (\n <Flex as={StyledAdditionalData} container={{ wrap: 'nowrap', colGap: 1, rowGap: 0.25 }}>\n {metadata?.map((data: AdditionalDataItemProps, index: number) => {\n if (index >= 2) {\n return;\n }\n return <MetaListItem key={data.id} {...data} />;\n })}\n {metadata && metadata.length > 2 && (\n <>\n <Flex\n as={StyledAdditionalDataItem}\n container={{ pad: 0.25 }}\n item={{ grow: 1, shrink: 0 }}\n ref={setNodeAdditionalData}\n >\n <StyledTextWithEllipsis as='dt'>{`+${metadata?.length - 2}`}</StyledTextWithEllipsis>\n </Flex>\n {additionalDataValue && (\n <Tooltip target={nodeAdditionalData} hideDelay='none'>\n {additionalDataValue}\n </Tooltip>\n )}\n </>\n )}\n </Flex>\n );\n};\nexport const DefaultNode = forwardRef(\n (\n {\n id,\n label,\n type,\n description,\n additionalData,\n actions,\n onActionClick,\n onClick,\n ...restProps\n }: PropsWithoutRef<NodeComponentProps>,\n ref: NodeComponentProps['ref']\n ) => {\n const t = useI18n();\n const actionItems = actions?.map(actionItem => {\n return {\n id: actionItem.id,\n primary: actionItem.text,\n onClick: (actionId: string, e: MouseEvent) => {\n e.stopPropagation();\n onActionClick?.({ actionId, nodeId: id }, e);\n }\n };\n });\n\n const handleEnterKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n onClick?.(id);\n }\n },\n [onClick]\n );\n\n const [nodeLabel, setNodeLabel] = useElement();\n const [nodeDescription, setNodeDescription] = useElement();\n\n const [nodeIcon, setNodeIcon] = useElement();\n\n return (\n <StyledCard\n aria-label={label}\n onClick={() => onClick?.(id)}\n onKeyDown={handleEnterKeyDown}\n ref={ref}\n {...restProps}\n >\n <Flex as={StyledCardHeader} container={{ alignItems: 'center', pad: 1 }}>\n <StyledIcon id={id} color={type.color} ref={setNodeIcon}>\n <Icon name={type.icon} />\n </StyledIcon>\n <Tooltip target={nodeIcon} hideDelay='none'>\n {cap(type.name)}\n </Tooltip>\n <StyledText variant='h4' ref={setNodeLabel}>\n {label}\n </StyledText>\n <Tooltip describeTarget={false} target={nodeLabel} hideDelay='none'>\n {label}\n </Tooltip>\n\n {actionItems && (\n <MenuButton\n portal\n variant='simple'\n text={t('actions')}\n icon='more'\n iconOnly\n onClick={(e: MouseEvent) => e.stopPropagation()}\n onKeyDown={(e: KeyboardEvent) => e.stopPropagation()}\n menu={{\n items: actionItems\n }}\n />\n )}\n </Flex>\n {description && (\n <>\n <StyledCardContent ref={setNodeDescription}>{description}</StyledCardContent>\n <Tooltip describeTarget={false} target={nodeDescription} hideDelay='none'>\n {description}\n </Tooltip>\n </>\n )}\n {additionalData && (\n <StyledCardFooter>\n <MetaList metadata={additionalData} />\n </StyledCardFooter>\n )}\n </StyledCard>\n );\n }\n);\n\nexport const StartNode = ({ type, label }: PropsWithoutRef<NodeProps>) => {\n return (\n <Flex container={{ justify: 'center', direction: 'column' }}>\n <Flex as={StyledLabel} type={type}>\n {label}\n </Flex>\n <Flex as={StyledCircle} color={type.color} tabIndex='0' aria-label={label} role='button' />\n </Flex>\n );\n};\n\nexport const EndNode = ({ type, label }: PropsWithoutRef<NodeProps>) => {\n return (\n <Flex container={{ justify: 'center', direction: 'column' }}>\n <Flex as={StyledCircle} color={type.color} tabIndex='0' aria-label={label} role='button' />\n <Flex as={StyledLabel} type={type}>\n {label}\n </Flex>\n </Flex>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"NodeTemplates.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Node/NodeTemplates.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n PropsWithoutRef,\n CSSProperties,\n useCallback,\n MouseEvent,\n KeyboardEvent,\n forwardRef,\n FC\n} from 'react';\nimport { readableColor } from 'polished';\n\nimport {\n MenuButton,\n Icon,\n Flex,\n Tooltip,\n useElement,\n useI18n,\n cap,\n Text\n} from '@pega/cosmos-react-core';\n\nimport {\n StyledLabel,\n StyledCircle,\n StyledIcon,\n StyledCardHeader,\n StyledCardContent,\n StyledCard,\n StyledText,\n StyledTextWithEllipsis,\n StyledAdditionalData,\n StyledCardFooter,\n StyledAdditionalDataItem\n} from './NodeTemplate.styles';\nimport { NodeProps, NodeComponentProps, AdditionalDataItemProps } from './Node.types';\n\nconst MetaListItem = ({ label, value }: AdditionalDataItemProps) => {\n const [nodeAdditionalDataItem, setNodeAdditionalDataItem] = useElement();\n return (\n <>\n <Flex\n as={StyledAdditionalDataItem}\n container={{ wrap: 'nowrap', pad: 0.25, gap: 0.25 }}\n item={{ grow: 1 }}\n ref={setNodeAdditionalDataItem}\n >\n <StyledTextWithEllipsis as='dd'>{label}</StyledTextWithEllipsis>\n <Text role='separator' variant='secondary' aria-hidden='true'>\n : \n </Text>\n <StyledTextWithEllipsis as='dt'>{value}</StyledTextWithEllipsis>\n </Flex>\n <Tooltip target={nodeAdditionalDataItem} hideDelay='none'>\n {`${label}:${value}`}\n </Tooltip>\n </>\n );\n};\n\nconst MetaList: FC<{ metadata: NodeProps['additionalData'] }> = ({ metadata }) => {\n const [nodeAdditionalData, setNodeAdditionalData] = useElement();\n let additionalDataValue = '';\n metadata?.forEach((item: AdditionalDataItemProps, index: number) => {\n if (index > 1) {\n additionalDataValue += `${item.label}: ${item.value}\n `;\n }\n });\n return (\n <Flex as={StyledAdditionalData} container={{ wrap: 'nowrap', colGap: 1, rowGap: 0.25 }}>\n {metadata?.map((data: AdditionalDataItemProps, index: number) => {\n if (index >= 2) {\n return;\n }\n return <MetaListItem key={data.id} {...data} />;\n })}\n {metadata && metadata.length > 2 && (\n <>\n <Flex\n as={StyledAdditionalDataItem}\n container={{ pad: 0.25 }}\n item={{ grow: 1, shrink: 0 }}\n ref={setNodeAdditionalData}\n >\n <StyledTextWithEllipsis as='dt'>{`+${metadata?.length - 2}`}</StyledTextWithEllipsis>\n </Flex>\n {additionalDataValue && (\n <Tooltip target={nodeAdditionalData} hideDelay='none'>\n {additionalDataValue}\n </Tooltip>\n )}\n </>\n )}\n </Flex>\n );\n};\nexport const DefaultNode = forwardRef(\n (\n {\n id,\n label,\n type,\n description,\n additionalData,\n actions,\n onActionClick,\n onClick,\n ...restProps\n }: PropsWithoutRef<NodeComponentProps>,\n ref: NodeComponentProps['ref']\n ) => {\n const t = useI18n();\n const actionItems = actions?.map(actionItem => {\n return {\n id: actionItem.id,\n primary: actionItem.text,\n onClick: (actionId: string, e: MouseEvent) => {\n e.stopPropagation();\n onActionClick?.({ actionId, nodeId: id }, e);\n }\n };\n });\n\n const handleEnterKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n onClick?.(id);\n }\n },\n [onClick]\n );\n\n const [nodeLabel, setNodeLabel] = useElement();\n const [nodeDescription, setNodeDescription] = useElement();\n\n const [nodeIcon, setNodeIcon] = useElement();\n const color = readableColor(type.color);\n return (\n <StyledCard\n aria-label={label}\n onClick={() => onClick?.(id)}\n onKeyDown={handleEnterKeyDown}\n ref={ref}\n {...restProps}\n >\n <Flex as={StyledCardHeader} container={{ alignItems: 'center', pad: 1 }}>\n <StyledIcon\n id={id}\n style={\n {\n '--bg-color': type.color,\n '--fg-color': color\n } as CSSProperties\n }\n ref={setNodeIcon}\n >\n <Icon name={type.icon} />\n </StyledIcon>\n <Tooltip target={nodeIcon} hideDelay='none'>\n {cap(type.name)}\n </Tooltip>\n <StyledText variant='h4' ref={setNodeLabel}>\n {label}\n </StyledText>\n <Tooltip describeTarget={false} target={nodeLabel} hideDelay='none'>\n {label}\n </Tooltip>\n\n {actionItems && (\n <MenuButton\n portal\n variant='simple'\n text={t('actions')}\n icon='more'\n iconOnly\n onClick={(e: MouseEvent) => e.stopPropagation()}\n onKeyDown={(e: KeyboardEvent) => e.stopPropagation()}\n menu={{\n items: actionItems\n }}\n />\n )}\n </Flex>\n {description && (\n <>\n <StyledCardContent ref={setNodeDescription}>{description}</StyledCardContent>\n <Tooltip describeTarget={false} target={nodeDescription} hideDelay='none'>\n {description}\n </Tooltip>\n </>\n )}\n {additionalData && (\n <StyledCardFooter>\n <MetaList metadata={additionalData} />\n </StyledCardFooter>\n )}\n </StyledCard>\n );\n }\n);\n\nexport const StartNode = ({ type, label }: PropsWithoutRef<NodeProps>) => {\n return (\n <Flex container={{ justify: 'center', direction: 'column' }}>\n <Flex as={StyledLabel} nodeType={type}>\n {label}\n </Flex>\n <Flex\n as={StyledCircle}\n style={\n {\n '--bg-color': type.color\n } as CSSProperties\n }\n tabIndex='0'\n aria-label={label}\n role='button'\n />\n </Flex>\n );\n};\n\nexport const EndNode = ({ type, label }: PropsWithoutRef<NodeProps>) => {\n return (\n <Flex container={{ justify: 'center', direction: 'column' }}>\n <Flex\n as={StyledCircle}\n style={\n {\n '--bg-color': type.color\n } as CSSProperties\n }\n tabIndex='0'\n aria-label={label}\n role='button'\n />\n <Flex as={StyledLabel} nodeType={type}>\n {label}\n </Flex>\n </Flex>\n );\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
1
|
+
import { FC, Ref } from 'react';
|
|
2
2
|
import { ForwardProps } from '@pega/cosmos-react-core';
|
|
3
3
|
import { NodeLibraryItem } from './Node/Node.types';
|
|
4
4
|
export interface NodeLibraryProps {
|
|
@@ -6,6 +6,7 @@ export interface NodeLibraryProps {
|
|
|
6
6
|
target: HTMLElement | null;
|
|
7
7
|
items: NodeLibraryItem[];
|
|
8
8
|
onClick: (libItem: NodeLibraryItem) => void;
|
|
9
|
+
ref?: Ref<HTMLDivElement>;
|
|
9
10
|
}
|
|
10
11
|
declare const NodeLibrary: FC<NodeLibraryProps & ForwardProps>;
|
|
11
12
|
export default NodeLibrary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeLibrary.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/NodeLibrary.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,
|
|
1
|
+
{"version":3,"file":"NodeLibrary.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/NodeLibrary.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EAGF,GAAG,EAOJ,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,YAAY,EAWb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOpD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5C,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B;AAED,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,GAAG,YAAY,CAwFpD,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
3
|
import styled from 'styled-components';
|
|
4
|
-
import {
|
|
4
|
+
import { readableColor } from 'polished';
|
|
5
|
+
import { Icon, Menu, menuHelpers, Popover, SearchInput, useI18n, cap, createStringMatcher } from '@pega/cosmos-react-core';
|
|
5
6
|
import { StyledIcon } from './Node/NodeTemplate.styles';
|
|
6
7
|
const StyledPopover = styled(Popover) `
|
|
7
8
|
min-width: 40ch;
|
|
@@ -16,11 +17,9 @@ const NodeLibrary = forwardRef(({ show, target, items, onClick }, ref) => {
|
|
|
16
17
|
searchEleRef?.current?.focus();
|
|
17
18
|
}
|
|
18
19
|
}, [show, searchEleRef.current]);
|
|
19
|
-
const searchRegex = useMemo(() =>
|
|
20
|
-
return new RegExp(escapeRegExp(search));
|
|
21
|
-
}, [search]);
|
|
20
|
+
const searchRegex = useMemo(() => (search ? createStringMatcher(cap(search), 'contains', '') : null), [search]);
|
|
22
21
|
const itemsToRender = useMemo(() => {
|
|
23
|
-
return menuHelpers.mapTree(
|
|
22
|
+
return menuHelpers.mapTree(searchRegex
|
|
24
23
|
? menuHelpers.flatten(items).filter(({ primary }) => {
|
|
25
24
|
return searchRegex.test(primary);
|
|
26
25
|
})
|
|
@@ -32,7 +31,10 @@ const NodeLibrary = forwardRef(({ show, target, items, onClick }, ref) => {
|
|
|
32
31
|
const nodeItem = node;
|
|
33
32
|
return {
|
|
34
33
|
...node,
|
|
35
|
-
visual: nodeItem.type ? (_jsx(StyledIcon, { id: node.id,
|
|
34
|
+
visual: nodeItem.type ? (_jsx(StyledIcon, { id: node.id, style: {
|
|
35
|
+
'--bg-color': nodeItem.type.color,
|
|
36
|
+
'--fg-color': readableColor(nodeItem.type.color)
|
|
37
|
+
}, children: _jsx(Icon, { name: nodeItem.type.icon }, void 0) }, void 0)) : undefined,
|
|
36
38
|
count: node.items ? node.items.length : undefined,
|
|
37
39
|
secondary: node.secondary,
|
|
38
40
|
selected: selectable ? !!node.selected : undefined
|
|
@@ -43,7 +45,7 @@ const NodeLibrary = forwardRef(({ show, target, items, onClick }, ref) => {
|
|
|
43
45
|
const selectedNode = menuHelpers.getItem(items, id);
|
|
44
46
|
onClick(selectedNode);
|
|
45
47
|
}, [onClick]);
|
|
46
|
-
return (_jsx(StyledPopover, { show: show, target: target, ref: ref, children: _jsx(Menu, { items: itemsToRender, onItemClick: onItemSelect, header: _jsx(SearchInput, { ref: searchEleRef, onSearchChange: setSearch, value: search, searchInputAriaLabel: t('search_nodes'), placeholder: t('search_nodes') }, void 0) }, void 0) }, void 0));
|
|
48
|
+
return (_jsx(_Fragment, { children: show && (_jsx(StyledPopover, { show: show, target: target, ref: ref, children: _jsx(Menu, { items: itemsToRender, onItemClick: onItemSelect, header: _jsx(SearchInput, { ref: searchEleRef, onSearchChange: setSearch, value: search, searchInputAriaLabel: t('search_nodes'), placeholder: t('search_nodes') }, void 0) }, void 0) }, void 0)) }, void 0));
|
|
47
49
|
});
|
|
48
50
|
export default NodeLibrary;
|
|
49
51
|
//# sourceMappingURL=NodeLibrary.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeLibrary.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/NodeLibrary.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,UAAU,EAGV,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,
|
|
1
|
+
{"version":3,"file":"NodeLibrary.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/NodeLibrary.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n FC,\n forwardRef,\n PropsWithoutRef,\n Ref,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n CSSProperties\n} from 'react';\nimport styled from 'styled-components';\nimport { readableColor } from 'polished';\n\nimport {\n ForwardProps,\n Icon,\n Menu,\n MenuGroupProps,\n menuHelpers,\n MenuItemProps,\n Popover,\n SearchInput,\n useI18n,\n cap,\n createStringMatcher\n} from '@pega/cosmos-react-core';\n\nimport { NodeLibraryItem } from './Node/Node.types';\nimport { StyledIcon } from './Node/NodeTemplate.styles';\n\nconst StyledPopover: typeof Popover = styled(Popover)`\n min-width: 40ch;\n`;\n\nexport interface NodeLibraryProps {\n show: boolean;\n target: HTMLElement | null;\n items: NodeLibraryItem[];\n onClick: (libItem: NodeLibraryItem) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst NodeLibrary: FC<NodeLibraryProps & ForwardProps> = forwardRef(\n (\n { show, target, items, onClick }: PropsWithoutRef<NodeLibraryProps>,\n ref: NodeLibraryProps['ref']\n ) => {\n const [search, setSearch] = useState('');\n\n const t = useI18n();\n const searchEleRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (show) {\n setSearch('');\n searchEleRef?.current?.focus();\n }\n }, [show, searchEleRef.current]);\n\n const searchRegex = useMemo(\n () => (search ? createStringMatcher(cap(search), 'contains', '') : null),\n [search]\n );\n\n const itemsToRender: (MenuItemProps | MenuGroupProps)[] = useMemo(() => {\n return menuHelpers.mapTree(\n searchRegex\n ? menuHelpers.flatten(items).filter(({ primary }: MenuItemProps) => {\n return searchRegex.test(primary);\n })\n : items,\n node => {\n let selectable = false;\n if (!node.items) {\n selectable = true;\n }\n\n const nodeItem: NodeLibraryItem = node as NodeLibraryItem;\n return {\n ...node,\n visual: nodeItem.type ? (\n <StyledIcon\n id={node.id}\n style={\n {\n '--bg-color': nodeItem.type.color,\n '--fg-color': readableColor(nodeItem.type.color)\n } as CSSProperties\n }\n >\n <Icon name={nodeItem.type.icon} />\n </StyledIcon>\n ) : undefined,\n count: node.items ? node.items.length : undefined,\n secondary: node.secondary,\n selected: selectable ? !!node.selected : undefined\n };\n }\n );\n }, [items, searchRegex]);\n\n const onItemSelect = useCallback(\n (id: MenuItemProps['id']) => {\n const selectedNode = menuHelpers.getItem(items, id) as NodeLibraryItem;\n onClick(selectedNode);\n },\n [onClick]\n );\n return (\n <>\n {show && (\n <StyledPopover show={show} target={target} ref={ref}>\n <Menu\n items={itemsToRender}\n onItemClick={onItemSelect}\n header={\n <SearchInput\n ref={searchEleRef}\n onSearchChange={setSearch}\n value={search}\n searchInputAriaLabel={t('search_nodes')}\n placeholder={t('search_nodes')}\n />\n }\n />\n </StyledPopover>\n )}\n </>\n );\n }\n);\n\nexport default NodeLibrary;\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FC, ComponentType } from 'react';
|
|
2
|
+
import { RendererConnectorProps } from './Renderer.types';
|
|
3
|
+
export interface ConnectorProps {
|
|
4
|
+
items: RendererConnectorProps[];
|
|
5
|
+
dimensions: {
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
};
|
|
9
|
+
content?: ComponentType<RendererConnectorProps>;
|
|
10
|
+
}
|
|
11
|
+
declare const Connectors: FC<ConnectorProps>;
|
|
12
|
+
export default Connectors;
|
|
13
|
+
//# sourceMappingURL=Connectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Connectors.d.ts","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Connectors.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAK1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAyD1D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAChC,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CACjD;AACD,QAAA,MAAM,UAAU,EAAE,EAAE,CAAC,cAAc,CAqClC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import styled
|
|
3
|
-
import {
|
|
2
|
+
import styled from 'styled-components';
|
|
3
|
+
import { useTheme } from '@pega/cosmos-react-core';
|
|
4
4
|
const CURVE_RADIUS = 16;
|
|
5
5
|
const genLine = (points) => {
|
|
6
6
|
const lineStr = points
|
|
@@ -32,19 +32,16 @@ const genLine = (points) => {
|
|
|
32
32
|
.join('');
|
|
33
33
|
return `M${lineStr.substr(1)}`;
|
|
34
34
|
};
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
padding: calc(0.5 * ${theme.base.spacing});
|
|
42
|
-
`;
|
|
43
|
-
});
|
|
44
|
-
StyledLabel.defaultProps = defaultThemeProp;
|
|
45
|
-
const Connector = ({ points, labelLayout }) => {
|
|
35
|
+
const StyledConnectorContainer = styled.div `
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 0;
|
|
38
|
+
left: 0;
|
|
39
|
+
`;
|
|
40
|
+
const Connectors = ({ items, dimensions, content: Content }) => {
|
|
46
41
|
const theme = useTheme();
|
|
47
|
-
return (
|
|
42
|
+
return (_jsx(StyledConnectorContainer, { children: _jsx("svg", { width: dimensions.width, height: dimensions.height, xmlns: 'http://www.w3.org/2000/svg', viewBox: `0 0 ${dimensions.width} ${dimensions.height}`, children: items.map(item => {
|
|
43
|
+
return (_jsxs("g", { children: [_jsx("path", { id: item.id, d: genLine(item.points), stroke: theme.base.colors.slate.dark, strokeWidth: '1', fill: 'none' }, void 0), item.labelLayout && (_jsx("foreignObject", { x: item.labelLayout.x - item.labelLayout.width, y: item.points.length > 10 ? item.points[3].y - 15 : item.labelLayout.y - 7.5, width: item.labelLayout.width, height: item.labelLayout.height, children: Content && _jsx(Content, { ...item }, void 0) }, void 0))] }, item.id));
|
|
44
|
+
}) }, void 0) }, void 0));
|
|
48
45
|
};
|
|
49
|
-
export default
|
|
50
|
-
//# sourceMappingURL=
|
|
46
|
+
export default Connectors;
|
|
47
|
+
//# sourceMappingURL=Connectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Connectors.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Connectors.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AASnD,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,OAAO,GAAG,CAAC,MAAgB,EAAE,EAAE;IACnC,MAAM,OAAO,GAAW,MAAM;SAC3B,GAAG,CAAC,CAAC,KAAa,EAAE,GAAW,EAAE,GAAa,EAAE,EAAE;QACjD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAE1B,sDAAsD;QACtD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEhC,kEAAkE;QAClE,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAExD,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAClB,iBAAiB;YACjB,OAAO,IAAI,CAAC,IACV,CAAC,GAAG,YACN,IAAI,YAAY,IAAI,YAAY,WAAW,YAAY,IAAI,YAAY,EAAE,CAAC;QAE5E,gBAAgB;QAChB,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC,IACV,CAAC,GAAG,YACN,IAAI,YAAY,IAAI,YAAY,UAAU,YAAY,IAAI,YAAY,EAAE,CAAC;QAE3E,aAAa;QACb,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAClB,OAAO,IACL,CAAC,GAAG,YACN,IAAI,CAAC,IAAI,YAAY,IAAI,YAAY,WAAW,YAAY,IAAI,YAAY,EAAE,CAAC;QAEjF,cAAc;QACd,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAClB,OAAO,IACL,CAAC,GAAG,YACN,IAAI,CAAC,IAAI,YAAY,IAAI,YAAY,UAAU,YAAY,IAAI,YAAY,EAAE,CAAC;QAEhF,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAI1C,CAAC;AASF,MAAM,UAAU,GAAuB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;IACjF,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,OAAO,CACL,KAAC,wBAAwB,cACvB,cACE,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,MAAM,EAAE,UAAU,CAAC,MAAM,EACzB,KAAK,EAAC,4BAA4B,EAClC,OAAO,EAAE,OAAO,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,YAEtD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAChB,OAAO,CACL,wBACE,eACE,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EACvB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EACpC,WAAW,EAAC,GAAG,EACf,IAAI,EAAC,MAAM,WACX,EACD,IAAI,CAAC,WAAW,IAAI,CACnB,wBACE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAC9C,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,EAC7E,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAC7B,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,YAE9B,OAAO,IAAI,KAAC,OAAO,OAAK,IAAI,WAAI,WACnB,CACjB,KAjBK,IAAI,CAAC,EAAE,CAkBX,CACL,CAAC;YACJ,CAAC,CAAC,WACE,WACmB,CAC5B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["import { FC, ComponentType } from 'react';\nimport styled from 'styled-components';\n\nimport { useTheme } from '@pega/cosmos-react-core';\n\nimport { RendererConnectorProps } from './Renderer.types';\n\ninterface Points {\n x: number;\n y: number;\n}\n\nconst CURVE_RADIUS = 16;\nconst genLine = (points: Points[]) => {\n const lineStr: string = points\n .map((point: Points, idx: number, arr: Points[]) => {\n const { x, y } = point;\n const prev = arr[idx - 1];\n const next = arr[idx + 1];\n const line = `L${x},${y}`;\n\n // if the point is extream end, no need to add a curve\n if (!prev || !next) return line;\n\n // if point is colinear with prev and next, no need to add a curve\n if (prev.x === next.x || prev.y === next.y) return line;\n\n if (point.x > next.x)\n // BOTTOM-RIGHT ↲\n return `L${x},${\n y - CURVE_RADIUS\n }a${CURVE_RADIUS},${CURVE_RADIUS} 0 0 1 -${CURVE_RADIUS},${CURVE_RADIUS}`;\n\n // BOTTOM-LEFT ↳\n if (point.x < next.x)\n return `L${x},${\n y - CURVE_RADIUS\n }a${CURVE_RADIUS},${CURVE_RADIUS} 0 0 0 ${CURVE_RADIUS},${CURVE_RADIUS}`;\n\n // TOP-LEFT ↱\n if (point.x < prev.x)\n return `L${\n x + CURVE_RADIUS\n },${y}a${CURVE_RADIUS},${CURVE_RADIUS} 0 0 0 -${CURVE_RADIUS},${CURVE_RADIUS}`;\n\n // TOP-RIGHT ↴\n if (point.x > prev.x)\n return `L${\n x - CURVE_RADIUS\n },${y}a${CURVE_RADIUS},${CURVE_RADIUS} 0 0 1 ${CURVE_RADIUS},${CURVE_RADIUS}`;\n\n return `L${x},${y}`;\n })\n .join('');\n return `M${lineStr.substr(1)}`;\n};\n\nconst StyledConnectorContainer = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n`;\nexport interface ConnectorProps {\n items: RendererConnectorProps[];\n dimensions: {\n width: number;\n height: number;\n };\n content?: ComponentType<RendererConnectorProps>;\n}\nconst Connectors: FC<ConnectorProps> = ({ items, dimensions, content: Content }) => {\n const theme = useTheme();\n\n return (\n <StyledConnectorContainer>\n <svg\n width={dimensions.width}\n height={dimensions.height}\n xmlns='http://www.w3.org/2000/svg'\n viewBox={`0 0 ${dimensions.width} ${dimensions.height}`}\n >\n {items.map(item => {\n return (\n <g key={item.id}>\n <path\n id={item.id}\n d={genLine(item.points)}\n stroke={theme.base.colors.slate.dark}\n strokeWidth='1'\n fill='none'\n />\n {item.labelLayout && (\n <foreignObject\n x={item.labelLayout.x - item.labelLayout.width}\n y={item.points.length > 10 ? item.points[3].y - 15 : item.labelLayout.y - 7.5}\n width={item.labelLayout.width}\n height={item.labelLayout.height}\n >\n {Content && <Content {...item} />}\n </foreignObject>\n )}\n </g>\n );\n })}\n </svg>\n </StyledConnectorContainer>\n );\n};\n\nexport default Connectors;\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentType, FC } from 'react';
|
|
2
|
+
import { RendererNodeProps } from './Renderer.types';
|
|
3
|
+
export interface NodesProps {
|
|
4
|
+
items: RendererNodeProps[];
|
|
5
|
+
content?: ComponentType<RendererNodeProps>;
|
|
6
|
+
}
|
|
7
|
+
declare const Nodes: FC<NodesProps>;
|
|
8
|
+
export default Nodes;
|
|
9
|
+
//# sourceMappingURL=Nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Nodes.d.ts","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Nodes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAK1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAoBrD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CAC5C;AACD,QAAA,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAmBzB,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import styled, { css } from 'styled-components';
|
|
3
|
+
import { Flex } from '@pega/cosmos-react-core';
|
|
4
|
+
const StyledNodeWrapper = styled.div(({ dimensions, position }) => {
|
|
5
|
+
return css `
|
|
6
|
+
position: absolute;
|
|
7
|
+
top: 0;
|
|
8
|
+
left: 0;
|
|
9
|
+
width: ${dimensions.width}px;
|
|
10
|
+
height: ${dimensions.height}px;
|
|
11
|
+
transform: translate(${position.x}px, ${position.y}px);
|
|
12
|
+
`;
|
|
13
|
+
});
|
|
14
|
+
const StyledNodeContainer = styled.div `
|
|
15
|
+
position: absolute;
|
|
16
|
+
top: 0;
|
|
17
|
+
left: 0;
|
|
18
|
+
`;
|
|
19
|
+
const Nodes = ({ items, content: Node }) => {
|
|
20
|
+
return (_jsx(StyledNodeContainer, { children: items.map(item => {
|
|
21
|
+
return (_jsx(Flex, { as: StyledNodeWrapper, id: item.id, dimensions: item.dimensions, position: item.position, container: { justify: 'center' }, children: Node && _jsx(Node, { ...item }, void 0) }, item.id));
|
|
22
|
+
}) }, void 0));
|
|
23
|
+
};
|
|
24
|
+
export default Nodes;
|
|
25
|
+
//# sourceMappingURL=Nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Nodes.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Nodes.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAI/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAGjC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9B,OAAO,GAAG,CAAA;;;;aAIC,UAAU,CAAC,KAAK;cACf,UAAU,CAAC,MAAM;2BACJ,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC;GACnD,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAIrC,CAAC;AAKF,MAAM,KAAK,GAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;IACzD,OAAO,CACL,KAAC,mBAAmB,cACjB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChB,OAAO,CACL,KAAC,IAAI,IAEH,EAAE,EAAE,iBAAiB,EACrB,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,YAE/B,IAAI,IAAI,KAAC,IAAI,OAAK,IAAI,WAAI,IAPtB,IAAI,CAAC,EAAE,CAQP,CACR,CAAC;QACJ,CAAC,CAAC,WACkB,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC","sourcesContent":["import { ComponentType, FC } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Flex } from '@pega/cosmos-react-core';\n\nimport { RendererNodeProps } from './Renderer.types';\n\nconst StyledNodeWrapper = styled.div<{\n dimensions: RendererNodeProps['dimensions'];\n position: RendererNodeProps['position'];\n}>(({ dimensions, position }) => {\n return css`\n position: absolute;\n top: 0;\n left: 0;\n width: ${dimensions.width}px;\n height: ${dimensions.height}px;\n transform: translate(${position.x}px, ${position.y}px);\n `;\n});\nconst StyledNodeContainer = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n`;\nexport interface NodesProps {\n items: RendererNodeProps[];\n content?: ComponentType<RendererNodeProps>;\n}\nconst Nodes: FC<NodesProps> = ({ items, content: Node }) => {\n return (\n <StyledNodeContainer>\n {items.map(item => {\n return (\n <Flex\n key={item.id}\n as={StyledNodeWrapper}\n id={item.id}\n dimensions={item.dimensions}\n position={item.position}\n container={{ justify: 'center' }}\n >\n {Node && <Node {...item} />}\n </Flex>\n );\n })}\n </StyledNodeContainer>\n );\n};\n\nexport default Nodes;\n"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import styled from 'styled-components';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import Connectors from './Connectors';
|
|
4
|
+
import Nodes from './Nodes';
|
|
5
5
|
import GraphLayout from './Utils/GraphLayout';
|
|
6
6
|
const StyledWrapper = styled.div `
|
|
7
7
|
position: relative;
|
|
8
8
|
width: 100%;
|
|
9
9
|
height: 100%;
|
|
10
10
|
`;
|
|
11
|
-
const Renderer = ({ graphData }) => {
|
|
11
|
+
const Renderer = ({ graphData, connector, node }) => {
|
|
12
12
|
// apply the plotted positions
|
|
13
13
|
const graphDimensions = GraphLayout.plot(graphData);
|
|
14
|
-
return (_jsxs(StyledWrapper, { children: [_jsx(
|
|
14
|
+
return (_jsxs(StyledWrapper, { children: [_jsx(Connectors, { items: graphData.connectors, content: connector, dimensions: graphDimensions }, void 0), _jsx(Nodes, { items: graphData.nodes, content: node }, void 0)] }, void 0));
|
|
15
15
|
};
|
|
16
16
|
export default Renderer;
|
|
17
17
|
//# sourceMappingURL=Renderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Renderer.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,
|
|
1
|
+
{"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Renderer.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAE9C,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;CAI/B,CAAC;AAEF,MAAM,QAAQ,GAAsB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;IACrE,8BAA8B;IAC9B,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAA6B,SAAS,CAAC,CAAC;IAEhF,OAAO,CACL,MAAC,aAAa,eACZ,KAAC,UAAU,IAAC,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,WAAI,EAC5F,KAAC,KAAK,IAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,WAAI,YAClC,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import { FC } from 'react';\nimport styled from 'styled-components';\n\nimport Connectors from './Connectors';\nimport { RendererProps } from './Renderer.types';\nimport Nodes from './Nodes';\nimport GraphLayout from './Utils/GraphLayout';\n\nconst StyledWrapper = styled.div`\n position: relative;\n width: 100%;\n height: 100%;\n`;\n\nconst Renderer: FC<RendererProps> = ({ graphData, connector, node }) => {\n // apply the plotted positions\n const graphDimensions = GraphLayout.plot<RendererProps['graphData']>(graphData);\n\n return (\n <StyledWrapper>\n <Connectors items={graphData.connectors} content={connector} dimensions={graphDimensions} />\n <Nodes items={graphData.nodes} content={node} />\n </StyledWrapper>\n );\n};\n\nexport default Renderer;\n"]}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
2
|
import { GraphData } from './Utils/Graph';
|
|
3
3
|
import { PlottedGraphConnector, PlottedGraphNode } from './Utils/GraphLayout';
|
|
4
4
|
export interface AddNodeHandlerParams {
|
|
5
5
|
refType: 'node' | 'connector';
|
|
6
|
-
refId: string;
|
|
6
|
+
refId: string | string[];
|
|
7
7
|
}
|
|
8
8
|
export interface RendererNodeProps extends PlottedGraphNode {
|
|
9
|
-
children: ReactNode;
|
|
10
9
|
}
|
|
11
10
|
export interface RendererConnectorProps extends PlottedGraphConnector {
|
|
12
|
-
children?: ReactNode;
|
|
13
11
|
}
|
|
14
12
|
export interface RendererProps {
|
|
15
13
|
graphData: GraphData<RendererNodeProps, RendererConnectorProps>;
|
|
16
14
|
disableAutoLayout?: boolean;
|
|
15
|
+
connector?: ComponentType<RendererConnectorProps>;
|
|
16
|
+
node?: ComponentType<RendererNodeProps>;
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=Renderer.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.types.d.ts","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Renderer.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Renderer.types.d.ts","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Renderer.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;CAAG;AAE9D,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;CAAG;AAExE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,SAAS,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;IAChE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;CACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Renderer.types.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Renderer.types.ts"],"names":[],"mappings":"","sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"Renderer.types.js","sourceRoot":"","sources":["../../../../src/components/FlowModeller/Renderer/Renderer.types.ts"],"names":[],"mappings":"","sourcesContent":["import { ComponentType } from 'react';\n\nimport { GraphData } from './Utils/Graph';\nimport { PlottedGraphConnector, PlottedGraphNode } from './Utils/GraphLayout';\n\nexport interface AddNodeHandlerParams {\n refType: 'node' | 'connector';\n refId: string | string[];\n}\n\nexport interface RendererNodeProps extends PlottedGraphNode {}\n\nexport interface RendererConnectorProps extends PlottedGraphConnector {}\n\nexport interface RendererProps {\n graphData: GraphData<RendererNodeProps, RendererConnectorProps>;\n disableAutoLayout?: boolean;\n connector?: ComponentType<RendererConnectorProps>;\n node?: ComponentType<RendererNodeProps>;\n}\n"]}
|
|
@@ -9,12 +9,11 @@ export interface Node<T = unknown> {
|
|
|
9
9
|
id: string;
|
|
10
10
|
data?: T;
|
|
11
11
|
}
|
|
12
|
-
export interface GraphData<T extends Node, U extends ConnectorProps> {
|
|
12
|
+
export interface GraphData<T extends Node = Node, U extends ConnectorProps = ConnectorProps> {
|
|
13
13
|
nodes: T[];
|
|
14
14
|
connectors: U[];
|
|
15
15
|
}
|
|
16
|
-
export declare class DirectedGraph<T extends Node = Node, U extends ConnectorProps = ConnectorProps, D1 = unknown,
|
|
17
|
-
D2 = unknown> {
|
|
16
|
+
export declare class DirectedGraph<T extends Node = Node, U extends ConnectorProps = ConnectorProps, D1 = unknown, D2 = unknown> {
|
|
18
17
|
private nodes;
|
|
19
18
|
private connectors;
|
|
20
19
|
private nodeData;
|
|
@@ -44,6 +43,10 @@ D2 = unknown> {
|
|
|
44
43
|
hasConnector(id: string): boolean;
|
|
45
44
|
getConnector(id: string): U;
|
|
46
45
|
removeConnector(id: string): DirectedGraph<T, U>;
|
|
46
|
+
setConnector(id: string, data: {
|
|
47
|
+
fromNodeId?: string;
|
|
48
|
+
toNodeId?: string;
|
|
49
|
+
}): DirectedGraph<T, U>;
|
|
47
50
|
getInConnectors(toNodeId: string, fromNodeId?: string): ConnectorProps[];
|
|
48
51
|
getOutConnectors(fromNodeId: string, toNodeId?: string): ConnectorProps[];
|
|
49
52
|
getAllNodeConnectors(nodeId: string): ConnectorProps<unknown>[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/Graph.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,OAAO;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,cAAc;
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/Graph.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,OAAO;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,CAAC,SAAS,cAAc,GAAG,cAAc;IACzF,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,EAAE,CAAC,EAAE,CAAC;CACjB;AAED,qBAAa,aAAa,CACxB,CAAC,SAAS,IAAI,GAAG,IAAI,EACrB,CAAC,SAAS,cAAc,GAAG,cAAc,EACzC,EAAE,GAAG,OAAO,EACZ,EAAE,GAAG,OAAO;IAEZ,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,UAAU,CAAyB;IAG3C,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,aAAa,CAAoC;IAEzD,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,cAAc,CAA8C;IAEpE,OAAO,CAAC,aAAa,CAAyC;IAC9D,OAAO,CAAC,cAAc,CAA8C;IAEpE,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,eAAe,CAAK;gBAEhB,SAAS,GAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAiC;IAOtE,YAAY,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAO/B,YAAY,IAAI,MAAM;IAItB,QAAQ;IAIR,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,aAAa;IAoB1C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC;IAI1B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,UAAQ,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAyBzE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;IAMjC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE;IAMjC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOzC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOzC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK/B,kBAAkB,IAAI,MAAM;IAI5B,aAAa;IAIb,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAgD1D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIjC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC;IAI3B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IA+BhD,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAiE/F,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;IAkBxE,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;IAkBzE,oBAAoB,CAAC,MAAM,EAAE,MAAM;CAOpC"}
|
|
@@ -211,6 +211,61 @@ export class DirectedGraph {
|
|
|
211
211
|
}
|
|
212
212
|
return this;
|
|
213
213
|
}
|
|
214
|
+
setConnector(id, data) {
|
|
215
|
+
// VALIDATE
|
|
216
|
+
// -connector with given id exists
|
|
217
|
+
// -node with given fromNodeId exists
|
|
218
|
+
// -node with given toNodeId exists
|
|
219
|
+
if (!this.getConnector(id)) {
|
|
220
|
+
throw new Error(`Connector with id '${id}' does not exist.`);
|
|
221
|
+
}
|
|
222
|
+
if (data.fromNodeId && !this.getNode(data.fromNodeId)) {
|
|
223
|
+
throw new Error(`Node with id '${data.fromNodeId}' does not exist, to update fromNodeId.`);
|
|
224
|
+
}
|
|
225
|
+
if (data.toNodeId && !this.getNode(data.toNodeId)) {
|
|
226
|
+
throw new Error(`Node with id '${data.toNodeId}' does not exist, to update toNodeId.`);
|
|
227
|
+
}
|
|
228
|
+
const connector = this.getConnector(id);
|
|
229
|
+
// current references
|
|
230
|
+
let fromNodeId = connector.fromNodeId;
|
|
231
|
+
let toNodeId = connector.toNodeId;
|
|
232
|
+
// update prev nodes count - unset prev values
|
|
233
|
+
this.prevNodesCount[toNodeId][fromNodeId] -= 1;
|
|
234
|
+
if (this.prevNodesCount[toNodeId][fromNodeId] === 0) {
|
|
235
|
+
delete this.prevNodesCount[toNodeId][fromNodeId];
|
|
236
|
+
}
|
|
237
|
+
// update next nodes count - unset prev values
|
|
238
|
+
this.nextNodesCount[fromNodeId][toNodeId] -= 1;
|
|
239
|
+
if (this.nextNodesCount[fromNodeId][toNodeId] === 0) {
|
|
240
|
+
delete this.nextNodesCount[fromNodeId][toNodeId];
|
|
241
|
+
}
|
|
242
|
+
// remove prev references
|
|
243
|
+
delete this.inConnectors[toNodeId][id];
|
|
244
|
+
delete this.outConnectors[fromNodeId][id];
|
|
245
|
+
// new references
|
|
246
|
+
fromNodeId = data.fromNodeId ? data.fromNodeId : connector.fromNodeId;
|
|
247
|
+
toNodeId = data.toNodeId ? data.toNodeId : connector.toNodeId;
|
|
248
|
+
connector.fromNodeId = fromNodeId;
|
|
249
|
+
connector.toNodeId = toNodeId;
|
|
250
|
+
// update prev nodes count
|
|
251
|
+
if (this.prevNodesCount[toNodeId][fromNodeId]) {
|
|
252
|
+
this.prevNodesCount[toNodeId][fromNodeId] += 1;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
this.prevNodesCount[toNodeId][fromNodeId] = 1;
|
|
256
|
+
}
|
|
257
|
+
// update next nodes count
|
|
258
|
+
if (this.nextNodesCount[fromNodeId][toNodeId]) {
|
|
259
|
+
this.nextNodesCount[fromNodeId][toNodeId] += 1;
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
this.nextNodesCount[fromNodeId][toNodeId] = 1;
|
|
263
|
+
}
|
|
264
|
+
// update in and out connectors for both the nodes
|
|
265
|
+
this.inConnectors[toNodeId][id] = connector;
|
|
266
|
+
this.outConnectors[fromNodeId][id] = connector;
|
|
267
|
+
return this;
|
|
268
|
+
}
|
|
214
269
|
getInConnectors(toNodeId, fromNodeId) {
|
|
215
270
|
const allInConnectors = this.inConnectors[toNodeId];
|
|
216
271
|
if (allInConnectors) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/Graph.ts"],"names":[],"mappings":"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","sourcesContent":["export interface ConnectorProps<T = unknown> {\n id: string;\n fromNodeId: string;\n toNodeId: string;\n label?: string;\n data?: T;\n}\n\nexport interface Node<T = unknown> {\n id: string;\n data?: T;\n}\n\nexport interface GraphData<T extends Node, U extends ConnectorProps> {\n nodes: T[];\n connectors: U[];\n}\n\nexport class DirectedGraph<\n T extends Node = Node,\n U extends ConnectorProps = ConnectorProps,\n D1 = unknown, // Can be any here.. because nodeData is optional and each node may need to carry its own Data type.\n D2 = unknown // Can be any here.. because connectorData is optional and each connector may need to carry its own Data type.\n> {\n private nodes: Record<string, T> = {};\n private connectors: Record<string, U> = {};\n\n // additional way to maintain related data - for cases where Graph is used for indirect purposes\n private nodeData: Record<string, D1 | unknown> = {};\n private connectorData: Record<string, D2 | unknown> = {};\n\n private inConnectors: Record<string, Record<string, U>> = {}; // we are maintaining connector reference instead of id, to avoid iterations later on.\n private prevNodesCount: Record<string, Record<string, number>> = {};\n\n private outConnectors: Record<string, Record<string, U>> = {}; // we are maintaining connector reference instead of id, to avoid iterations later on\n private nextNodesCount: Record<string, Record<string, number>> = {};\n\n private nodeCount = 0;\n private connectorsCount = 0;\n\n constructor(graphData: GraphData<T, U> = { nodes: [], connectors: [] }) {\n // Not necessary to clone, as this class never modifies any nodes\n graphData.nodes.forEach(item => this.addNode(item));\n // copy/clone, connectors properties 'fromNodeId' and 'toNodeId' values may get modified by this class\n graphData.connectors.forEach(item => this.addConnector(JSON.parse(JSON.stringify(item))));\n }\n\n getGraphData(): GraphData<T, U> {\n return {\n nodes: this.getNodes(),\n connectors: this.getConnectors()\n };\n }\n\n getNodeCount(): number {\n return this.nodeCount;\n }\n\n getNodes() {\n return Object.values(this.nodes);\n }\n\n addNode(node: T, data?: D1): DirectedGraph {\n if (this.nodes[node.id] !== undefined) {\n this.nodes[node.id] = node;\n this.nodeData[node.id] = data;\n } else {\n this.nodes[node.id] = node;\n this.nodeData[node.id] = data;\n\n this.inConnectors[node.id] = {};\n this.prevNodesCount[node.id] = {};\n\n this.outConnectors[node.id] = {};\n this.nextNodesCount[node.id] = {};\n\n this.nodeCount += 1;\n }\n\n return this;\n }\n\n getNode(nodeId: string): T {\n return this.nodes[nodeId];\n }\n\n hasNode(nodeId: string): boolean {\n return this.nodes[nodeId] !== undefined;\n }\n\n deleteNode(nodeId: string, ignoreConnectors = false): DirectedGraph<T, U> {\n if (this.hasNode(nodeId)) {\n delete this.nodes[nodeId];\n delete this.nodeData[nodeId];\n\n if (ignoreConnectors !== true) {\n const removeConnector = (id: string) => this.removeConnector(id);\n\n // IMP NOTE its the responsibility of the callee to make sure that the connectors are cleanly reassigned, or else all attached connectors will be deleted\n\n Object.keys(this.inConnectors[nodeId]).forEach(removeConnector);\n delete this.inConnectors[nodeId];\n delete this.prevNodesCount[nodeId];\n\n Object.keys(this.outConnectors[nodeId]).forEach(removeConnector);\n delete this.outConnectors[nodeId];\n delete this.nextNodesCount[nodeId];\n }\n\n this.nodeCount += 1;\n }\n\n return this;\n }\n\n getPrevNodes(nodeId: string): T[] {\n return this.prevNodesCount[nodeId]\n ? Object.keys(this.prevNodesCount[nodeId]).map(id => this.getNode(id))\n : [];\n }\n\n getNextNodes(nodeId: string): T[] {\n return this.nextNodesCount[nodeId]\n ? Object.keys(this.nextNodesCount[nodeId]).map(id => this.getNode(id))\n : [];\n }\n\n getPrevNodesCount(nodeId: string): number {\n return (this.prevNodesCount[nodeId] ? Object.values(this.prevNodesCount[nodeId]) : []).reduce(\n (prev, current) => prev + current,\n 0\n );\n }\n\n getNextNodesCount(nodeId: string): number {\n return (this.nextNodesCount[nodeId] ? Object.values(this.nextNodesCount[nodeId]) : []).reduce(\n (prev, current) => prev + current,\n 0\n );\n }\n\n isLeaf(nodeId: string): boolean {\n return this.getNextNodes(nodeId).length === 0;\n }\n\n // -- Connectors\n getConnectorsCount(): number {\n return this.connectorsCount;\n }\n\n getConnectors() {\n return Object.values(this.connectors);\n }\n\n addConnector(connector: U, data?: D2): DirectedGraph<T, U> {\n if (this.connectors[connector.id] !== undefined) {\n // update the map\n this.connectors[connector.id] = connector;\n this.connectorData[connector.id] = data;\n\n return this;\n }\n\n const id = connector.id;\n const fromNodeId = connector.fromNodeId;\n const toNodeId = connector.toNodeId;\n\n // check if nodes with given ids exist\n if (this.nodes[fromNodeId] === undefined || this.nodes[toNodeId] === undefined) {\n throw new Error(\n `One or more nodes does not exist, cannot add connector ${fromNodeId}-${toNodeId}`\n );\n }\n\n // add it to the map\n this.connectors[id] = connector;\n this.connectorData[id] = data;\n\n // update prev nodes count\n if (this.prevNodesCount[toNodeId][fromNodeId]) {\n this.prevNodesCount[toNodeId][fromNodeId] += 1;\n } else {\n this.prevNodesCount[toNodeId][fromNodeId] = 1;\n }\n\n // update next nodes count\n if (this.nextNodesCount[fromNodeId][toNodeId]) {\n this.nextNodesCount[fromNodeId][toNodeId] += 1;\n } else {\n this.nextNodesCount[fromNodeId][toNodeId] = 1;\n }\n\n // update in and out connectors for both the nodes\n this.inConnectors[toNodeId][id] = connector;\n this.outConnectors[fromNodeId][id] = connector;\n\n // increment total connectors count\n this.connectorsCount += 1;\n\n return this;\n }\n\n hasConnector(id: string): boolean {\n return this.connectors[id] !== undefined;\n }\n\n getConnector(id: string): U {\n return this.connectors[id];\n }\n\n removeConnector(id: string): DirectedGraph<T, U> {\n const connector = this.connectors[id];\n\n if (connector !== undefined) {\n const fromNodeId = connector.fromNodeId;\n const toNodeId = connector.toNodeId;\n\n delete this.connectors[id];\n delete this.connectorData[id];\n\n // update prev nodes count\n this.prevNodesCount[toNodeId][fromNodeId] -= 1;\n if (this.prevNodesCount[toNodeId][fromNodeId] === 0) {\n delete this.prevNodesCount[toNodeId][fromNodeId];\n }\n\n // update next nodes count\n this.nextNodesCount[fromNodeId][toNodeId] -= 1;\n if (this.nextNodesCount[fromNodeId][toNodeId] === 0) {\n delete this.nextNodesCount[fromNodeId][toNodeId];\n }\n\n delete this.inConnectors[toNodeId][id];\n delete this.outConnectors[fromNodeId][id];\n\n this.connectorsCount -= 1;\n }\n\n return this;\n }\n\n getInConnectors(toNodeId: string, fromNodeId?: string): ConnectorProps[] {\n const allInConnectors = this.inConnectors[toNodeId];\n\n if (allInConnectors) {\n const connectorValues = Object.values(allInConnectors);\n\n if (fromNodeId === undefined) {\n return connectorValues;\n }\n\n return connectorValues.filter(connector => {\n return connector.fromNodeId === fromNodeId;\n });\n }\n\n return [];\n }\n\n getOutConnectors(fromNodeId: string, toNodeId?: string): ConnectorProps[] {\n const allOutConnectors = this.outConnectors[fromNodeId];\n\n if (allOutConnectors) {\n const connectorValues = Object.values(allOutConnectors);\n\n if (toNodeId === undefined) {\n return connectorValues;\n }\n\n return connectorValues.filter(connector => {\n return connector.toNodeId === toNodeId;\n });\n }\n\n return [];\n }\n\n getAllNodeConnectors(nodeId: string) {\n const inConnectors = this.getInConnectors(nodeId);\n\n if (inConnectors) {\n return inConnectors.concat(this.getOutConnectors(nodeId));\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Graph.js","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/Graph.ts"],"names":[],"mappings":"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","sourcesContent":["export interface ConnectorProps<T = unknown> {\n id: string;\n fromNodeId: string;\n toNodeId: string;\n label?: string;\n data?: T;\n}\n\nexport interface Node<T = unknown> {\n id: string;\n data?: T;\n}\n\nexport interface GraphData<T extends Node = Node, U extends ConnectorProps = ConnectorProps> {\n nodes: T[];\n connectors: U[];\n}\n\nexport class DirectedGraph<\n T extends Node = Node,\n U extends ConnectorProps = ConnectorProps,\n D1 = unknown,\n D2 = unknown\n> {\n private nodes: Record<string, T> = {};\n private connectors: Record<string, U> = {};\n\n // additional way to maintain related data - for cases where Graph is used for indirect purposes\n private nodeData: Record<string, D1 | unknown> = {};\n private connectorData: Record<string, D2 | unknown> = {};\n\n private inConnectors: Record<string, Record<string, U>> = {}; // we are maintaining connector reference instead of id, to avoid iterations later on.\n private prevNodesCount: Record<string, Record<string, number>> = {};\n\n private outConnectors: Record<string, Record<string, U>> = {}; // we are maintaining connector reference instead of id, to avoid iterations later on\n private nextNodesCount: Record<string, Record<string, number>> = {};\n\n private nodeCount = 0;\n private connectorsCount = 0;\n\n constructor(graphData: GraphData<T, U> = { nodes: [], connectors: [] }) {\n // Not necessary to clone, as this class never modifies any nodes\n graphData.nodes.forEach(item => this.addNode(item));\n // copy/clone, connectors properties 'fromNodeId' and 'toNodeId' values may get modified by this class\n graphData.connectors.forEach(item => this.addConnector(JSON.parse(JSON.stringify(item))));\n }\n\n getGraphData(): GraphData<T, U> {\n return {\n nodes: this.getNodes(),\n connectors: this.getConnectors()\n };\n }\n\n getNodeCount(): number {\n return this.nodeCount;\n }\n\n getNodes() {\n return Object.values(this.nodes);\n }\n\n addNode(node: T, data?: D1): DirectedGraph {\n if (this.nodes[node.id] !== undefined) {\n this.nodes[node.id] = node;\n this.nodeData[node.id] = data;\n } else {\n this.nodes[node.id] = node;\n this.nodeData[node.id] = data;\n\n this.inConnectors[node.id] = {};\n this.prevNodesCount[node.id] = {};\n\n this.outConnectors[node.id] = {};\n this.nextNodesCount[node.id] = {};\n\n this.nodeCount += 1;\n }\n\n return this;\n }\n\n getNode(nodeId: string): T {\n return this.nodes[nodeId];\n }\n\n hasNode(nodeId: string): boolean {\n return this.nodes[nodeId] !== undefined;\n }\n\n deleteNode(nodeId: string, ignoreConnectors = false): DirectedGraph<T, U> {\n if (this.hasNode(nodeId)) {\n delete this.nodes[nodeId];\n delete this.nodeData[nodeId];\n\n if (ignoreConnectors !== true) {\n const removeConnector = (id: string) => this.removeConnector(id);\n\n // IMP NOTE its the responsibility of the callee to make sure that the connectors are cleanly reassigned, or else all attached connectors will be deleted\n\n Object.keys(this.inConnectors[nodeId]).forEach(removeConnector);\n delete this.inConnectors[nodeId];\n delete this.prevNodesCount[nodeId];\n\n Object.keys(this.outConnectors[nodeId]).forEach(removeConnector);\n delete this.outConnectors[nodeId];\n delete this.nextNodesCount[nodeId];\n }\n\n this.nodeCount += 1;\n }\n\n return this;\n }\n\n getPrevNodes(nodeId: string): T[] {\n return this.prevNodesCount[nodeId]\n ? Object.keys(this.prevNodesCount[nodeId]).map(id => this.getNode(id))\n : [];\n }\n\n getNextNodes(nodeId: string): T[] {\n return this.nextNodesCount[nodeId]\n ? Object.keys(this.nextNodesCount[nodeId]).map(id => this.getNode(id))\n : [];\n }\n\n getPrevNodesCount(nodeId: string): number {\n return (this.prevNodesCount[nodeId] ? Object.values(this.prevNodesCount[nodeId]) : []).reduce(\n (prev, current) => prev + current,\n 0\n );\n }\n\n getNextNodesCount(nodeId: string): number {\n return (this.nextNodesCount[nodeId] ? Object.values(this.nextNodesCount[nodeId]) : []).reduce(\n (prev, current) => prev + current,\n 0\n );\n }\n\n isLeaf(nodeId: string): boolean {\n return this.getNextNodes(nodeId).length === 0;\n }\n\n // -- Connectors\n getConnectorsCount(): number {\n return this.connectorsCount;\n }\n\n getConnectors() {\n return Object.values(this.connectors);\n }\n\n addConnector(connector: U, data?: D2): DirectedGraph<T, U> {\n if (this.connectors[connector.id] !== undefined) {\n // update the map\n this.connectors[connector.id] = connector;\n this.connectorData[connector.id] = data;\n\n return this;\n }\n\n const id = connector.id;\n const fromNodeId = connector.fromNodeId;\n const toNodeId = connector.toNodeId;\n\n // check if nodes with given ids exist\n if (this.nodes[fromNodeId] === undefined || this.nodes[toNodeId] === undefined) {\n throw new Error(\n `One or more nodes does not exist, cannot add connector ${fromNodeId}-${toNodeId}`\n );\n }\n\n // add it to the map\n this.connectors[id] = connector;\n this.connectorData[id] = data;\n\n // update prev nodes count\n if (this.prevNodesCount[toNodeId][fromNodeId]) {\n this.prevNodesCount[toNodeId][fromNodeId] += 1;\n } else {\n this.prevNodesCount[toNodeId][fromNodeId] = 1;\n }\n\n // update next nodes count\n if (this.nextNodesCount[fromNodeId][toNodeId]) {\n this.nextNodesCount[fromNodeId][toNodeId] += 1;\n } else {\n this.nextNodesCount[fromNodeId][toNodeId] = 1;\n }\n\n // update in and out connectors for both the nodes\n this.inConnectors[toNodeId][id] = connector;\n this.outConnectors[fromNodeId][id] = connector;\n\n // increment total connectors count\n this.connectorsCount += 1;\n\n return this;\n }\n\n hasConnector(id: string): boolean {\n return this.connectors[id] !== undefined;\n }\n\n getConnector(id: string): U {\n return this.connectors[id];\n }\n\n removeConnector(id: string): DirectedGraph<T, U> {\n const connector = this.connectors[id];\n\n if (connector !== undefined) {\n const fromNodeId = connector.fromNodeId;\n const toNodeId = connector.toNodeId;\n\n delete this.connectors[id];\n delete this.connectorData[id];\n\n // update prev nodes count\n this.prevNodesCount[toNodeId][fromNodeId] -= 1;\n if (this.prevNodesCount[toNodeId][fromNodeId] === 0) {\n delete this.prevNodesCount[toNodeId][fromNodeId];\n }\n\n // update next nodes count\n this.nextNodesCount[fromNodeId][toNodeId] -= 1;\n if (this.nextNodesCount[fromNodeId][toNodeId] === 0) {\n delete this.nextNodesCount[fromNodeId][toNodeId];\n }\n\n delete this.inConnectors[toNodeId][id];\n delete this.outConnectors[fromNodeId][id];\n\n this.connectorsCount -= 1;\n }\n\n return this;\n }\n\n setConnector(id: string, data: { fromNodeId?: string; toNodeId?: string }): DirectedGraph<T, U> {\n // VALIDATE\n // -connector with given id exists\n // -node with given fromNodeId exists\n // -node with given toNodeId exists\n if (!this.getConnector(id)) {\n throw new Error(`Connector with id '${id}' does not exist.`);\n }\n if (data.fromNodeId && !this.getNode(data.fromNodeId)) {\n throw new Error(`Node with id '${data.fromNodeId}' does not exist, to update fromNodeId.`);\n }\n if (data.toNodeId && !this.getNode(data.toNodeId)) {\n throw new Error(`Node with id '${data.toNodeId}' does not exist, to update toNodeId.`);\n }\n\n const connector = this.getConnector(id);\n\n // current references\n let fromNodeId = connector.fromNodeId;\n let toNodeId = connector.toNodeId;\n\n // update prev nodes count - unset prev values\n this.prevNodesCount[toNodeId][fromNodeId] -= 1;\n if (this.prevNodesCount[toNodeId][fromNodeId] === 0) {\n delete this.prevNodesCount[toNodeId][fromNodeId];\n }\n\n // update next nodes count - unset prev values\n this.nextNodesCount[fromNodeId][toNodeId] -= 1;\n if (this.nextNodesCount[fromNodeId][toNodeId] === 0) {\n delete this.nextNodesCount[fromNodeId][toNodeId];\n }\n\n // remove prev references\n delete this.inConnectors[toNodeId][id];\n delete this.outConnectors[fromNodeId][id];\n\n // new references\n fromNodeId = data.fromNodeId ? data.fromNodeId : connector.fromNodeId;\n toNodeId = data.toNodeId ? data.toNodeId : connector.toNodeId;\n\n connector.fromNodeId = fromNodeId;\n connector.toNodeId = toNodeId;\n\n // update prev nodes count\n if (this.prevNodesCount[toNodeId][fromNodeId]) {\n this.prevNodesCount[toNodeId][fromNodeId] += 1;\n } else {\n this.prevNodesCount[toNodeId][fromNodeId] = 1;\n }\n\n // update next nodes count\n if (this.nextNodesCount[fromNodeId][toNodeId]) {\n this.nextNodesCount[fromNodeId][toNodeId] += 1;\n } else {\n this.nextNodesCount[fromNodeId][toNodeId] = 1;\n }\n\n // update in and out connectors for both the nodes\n this.inConnectors[toNodeId][id] = connector;\n this.outConnectors[fromNodeId][id] = connector;\n\n return this;\n }\n\n getInConnectors(toNodeId: string, fromNodeId?: string): ConnectorProps[] {\n const allInConnectors = this.inConnectors[toNodeId];\n\n if (allInConnectors) {\n const connectorValues = Object.values(allInConnectors);\n\n if (fromNodeId === undefined) {\n return connectorValues;\n }\n\n return connectorValues.filter(connector => {\n return connector.fromNodeId === fromNodeId;\n });\n }\n\n return [];\n }\n\n getOutConnectors(fromNodeId: string, toNodeId?: string): ConnectorProps[] {\n const allOutConnectors = this.outConnectors[fromNodeId];\n\n if (allOutConnectors) {\n const connectorValues = Object.values(allOutConnectors);\n\n if (toNodeId === undefined) {\n return connectorValues;\n }\n\n return connectorValues.filter(connector => {\n return connector.toNodeId === toNodeId;\n });\n }\n\n return [];\n }\n\n getAllNodeConnectors(nodeId: string) {\n const inConnectors = this.getInConnectors(nodeId);\n\n if (inConnectors) {\n return inConnectors.concat(this.getOutConnectors(nodeId));\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphLayout.d.ts","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/GraphLayout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC;IACxD,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE;QACR,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,GAAG,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH;AAED,oBAAY,oBAAoB;IAC9B,WAAW,OAAO;IAClB,WAAW,OAAO;CACnB;AAKD,MAAM,CAAC,OAAO,OAAO,WAAW;IAE9B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,SAAS,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EACtE,SAAS,EAAE,CAAC,EACZ,SAAS,GAAE,oBAAuD;;;;
|
|
1
|
+
{"version":3,"file":"GraphLayout.d.ts","sourceRoot":"","sources":["../../../../../src/components/FlowModeller/Renderer/Utils/GraphLayout.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,IAAI,CAAC,CAAC,CAAC;IACxD,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE;QACR,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnC,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,GAAG,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH;AAED,oBAAY,oBAAoB;IAC9B,WAAW,OAAO;IAClB,WAAW,OAAO;CACnB;AAKD,MAAM,CAAC,OAAO,OAAO,WAAW;IAE9B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,SAAS,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EACtE,SAAS,EAAE,CAAC,EACZ,SAAS,GAAE,oBAAuD;;;;CAsHrE"}
|