@pega/cosmos-react-build 9.0.0-build.27.9 → 9.0.0-build.28.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.
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionItem.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAiB/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;;;;AA2HrE,wBAAsE"}
1
+ {"version":3,"file":"ExpressionItem.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAgB/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;;;;AA+HrE,wBAAsE"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useContext, useMemo } from 'react';
3
- import { Button, ExpandCollapse, Flex, Icon, Mark, registerIcon, replaceMatchWithElement, StyledLabel, Text, useDirection, useI18n, useTestIds, withTestIds } from '@pega/cosmos-react-core';
2
+ import { useContext, useMemo, useRef } from 'react';
3
+ import { Button, ExpandCollapse, Flex, Icon, registerIcon, StyledLabel, Text, useDirection, useHighlight, useI18n, useTestIds, withTestIds } from '@pega/cosmos-react-core';
4
4
  import * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';
5
5
  import * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';
6
6
  import { StyledPrimaryText, StyledExpandCollapseContent, StyledExpressionExplanation, StyledExpressionItem } from './ExpressionBuilder.styles';
@@ -13,19 +13,23 @@ const ExpressionItem = ({ id, testId, primary, type, onAdd, onExpand, onCollapse
13
13
  const t = useI18n();
14
14
  const testIds = useTestIds(testId, getExpressionItemsTestIds);
15
15
  const { accent } = useContext(ExpressionBuilderContext);
16
- const accentedText = (text) => {
17
- if (accent) {
18
- const accentRegex = typeof accent === 'function' ? accent(text) : accent;
19
- return replaceMatchWithElement(text, accentRegex, str => {
20
- return _jsx(Mark, { children: str });
21
- });
22
- }
23
- return text;
24
- };
16
+ const primaryRef = useRef(null);
17
+ const metaRef = useRef(null);
18
+ const primaryPattern = useMemo(() => {
19
+ if (!accent || matchedField)
20
+ return undefined;
21
+ return typeof accent === 'function' ? accent(primary) : accent;
22
+ }, [accent, matchedField, primary]);
23
+ const metaPattern = useMemo(() => {
24
+ if (!accent || !matchedField || expanded)
25
+ return undefined;
26
+ return typeof accent === 'function' ? accent(matchedField.value) : accent;
27
+ }, [accent, matchedField, expanded]);
28
+ useHighlight(primaryRef, primaryPattern);
29
+ useHighlight(metaRef, metaPattern);
25
30
  const caretIcon = useMemo(() => {
26
31
  return expanded ? 'caret-down' : `caret-${caretDirection}`;
27
32
  }, [expanded, caretDirection]);
28
- const accentedMeta = matchedField && !expanded ? accentedText(matchedField.value) : undefined;
29
33
  return (_jsxs(StyledExpressionItem, { expanded: expanded, children: [_jsxs(Flex, { "data-testid": testIds.root, ...restProps, as: StyledExpressionExplanation, id: id, container: { gap: 1, alignItems: 'start' }, children: [_jsx(Button, { "data-testid": testIds.collapseItemButton, icon: true, variant: 'simple', onClick: onCollapse || onExpand
30
34
  ? () => {
31
35
  if (expanded) {
@@ -35,7 +39,7 @@ const ExpressionItem = ({ id, testId, primary, type, onAdd, onExpand, onCollapse
35
39
  onExpand?.(id);
36
40
  }
37
41
  }
38
- : undefined, "aria-label": `${type}: ${primary}`, "aria-expanded": expanded, label: expanded ? t('collapse') : t('expand'), children: _jsx(Icon, { name: caretIcon }) }), _jsxs(Flex, { container: { alignItems: 'start', direction: 'column' }, item: { grow: 1 }, children: [_jsx(StyledPrimaryText, { variant: 'primary', children: !matchedField ? accentedText(primary) : primary }), accentedMeta ? (_jsxs("div", { children: [_jsxs(StyledLabel, { as: 'span', children: [matchedField?.name, ":"] }), accentedMeta] })) : (_jsx(Text, { variant: 'secondary', children: type }))] }), !expanded && (_jsx(Button, { "data-testid": testIds.addItemButton, icon: true, variant: 'simple', onClick: () => onAdd(id), "aria-label": t('add_noun', [`${type}: ${primary}`]), label: t('add'), children: _jsx(Icon, { name: 'plus' }) }))] }), _jsx(ExpandCollapse, { collapsed: !expanded, children: _jsxs(Flex, { as: StyledExpandCollapseContent, container: { direction: 'column' }, children: [details && _jsx(ExpressionDetails, { testId: testIds.root, ...details }), _jsx(Button, { "data-testid": testIds.addItem, variant: 'primary', onClick: () => onAdd(id), "aria-label": t('add_noun', [`${type}: ${primary}`]), children: t('add') })] }) })] }));
42
+ : undefined, "aria-label": `${type}: ${primary}`, "aria-expanded": expanded, label: expanded ? t('collapse') : t('expand'), children: _jsx(Icon, { name: caretIcon }) }), _jsxs(Flex, { container: { alignItems: 'start', direction: 'column' }, item: { grow: 1 }, children: [_jsx(StyledPrimaryText, { variant: 'primary', children: _jsx("span", { ref: primaryRef, children: primary }) }), matchedField && !expanded ? (_jsxs("div", { children: [_jsxs(StyledLabel, { as: 'span', children: [matchedField?.name, ":"] }), _jsx("span", { ref: metaRef, children: matchedField.value })] })) : (_jsx(Text, { variant: 'secondary', children: type }))] }), !expanded && (_jsx(Button, { "data-testid": testIds.addItemButton, icon: true, variant: 'simple', onClick: () => onAdd(id), "aria-label": t('add_noun', [`${type}: ${primary}`]), label: t('add'), children: _jsx(Icon, { name: 'plus' }) }))] }), _jsx(ExpandCollapse, { collapsed: !expanded, children: _jsxs(Flex, { as: StyledExpandCollapseContent, container: { direction: 'column' }, children: [details && _jsx(ExpressionDetails, { testId: testIds.root, ...details }), _jsx(Button, { "data-testid": testIds.addItem, variant: 'primary', onClick: () => onAdd(id), "aria-label": t('add_noun', [`${type}: ${primary}`]), children: t('add') })] }) })] }));
39
43
  };
40
44
  export default withTestIds(ExpressionItem, getExpressionItemsTestIds);
41
45
  //# sourceMappingURL=ExpressionItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionItem.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo } from 'react';\nimport type { FunctionComponent } from 'react';\n\nimport {\n Button,\n ExpandCollapse,\n Flex,\n Icon,\n Mark,\n registerIcon,\n replaceMatchWithElement,\n StyledLabel,\n Text,\n useDirection,\n useI18n,\n useTestIds,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';\nimport * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';\n\nimport type { ExpressionItemProps } from './ExpressionBuilder.types';\nimport {\n StyledPrimaryText,\n StyledExpandCollapseContent,\n StyledExpressionExplanation,\n StyledExpressionItem\n} from './ExpressionBuilder.styles';\nimport ExpressionDetails from './ExpressionDetails';\nimport ExpressionBuilderContext from './ExpressionBuilderContext';\nimport { getExpressionItemsTestIds } from './ExpressionBuilder.test-ids';\n\nregisterIcon(caretLeftIcon, caretRightIcon);\n\nconst ExpressionItem: FunctionComponent<ExpressionItemProps & ForwardProps> = ({\n id,\n testId,\n primary,\n type,\n onAdd,\n onExpand,\n onCollapse,\n details,\n matchedField,\n expanded = false,\n ...restProps\n}) => {\n const { end: caretDirection } = useDirection();\n const t = useI18n();\n const testIds = useTestIds(testId, getExpressionItemsTestIds);\n\n const { accent } = useContext(ExpressionBuilderContext);\n\n const accentedText = (text: string) => {\n if (accent) {\n const accentRegex = typeof accent === 'function' ? accent(text) : accent;\n return replaceMatchWithElement(text, accentRegex, str => {\n return <Mark>{str}</Mark>;\n });\n }\n return text;\n };\n\n const caretIcon = useMemo(() => {\n return expanded ? 'caret-down' : `caret-${caretDirection}`;\n }, [expanded, caretDirection]);\n\n const accentedMeta = matchedField && !expanded ? accentedText(matchedField.value) : undefined;\n\n return (\n <StyledExpressionItem expanded={expanded}>\n <Flex\n data-testid={testIds.root}\n {...restProps}\n as={StyledExpressionExplanation}\n id={id}\n container={{ gap: 1, alignItems: 'start' }}\n >\n <Button\n data-testid={testIds.collapseItemButton}\n icon\n variant='simple'\n onClick={\n onCollapse || onExpand\n ? () => {\n if (expanded) {\n onCollapse?.(id);\n } else {\n onExpand?.(id);\n }\n }\n : undefined\n }\n aria-label={`${type}: ${primary}`}\n aria-expanded={expanded}\n label={expanded ? t('collapse') : t('expand')}\n >\n <Icon name={caretIcon} />\n </Button>\n\n <Flex container={{ alignItems: 'start', direction: 'column' }} item={{ grow: 1 }}>\n <StyledPrimaryText variant='primary'>\n {!matchedField ? accentedText(primary) : primary}\n </StyledPrimaryText>\n {accentedMeta ? (\n <div>\n <StyledLabel as='span'>{matchedField?.name}:</StyledLabel>\n {accentedMeta}\n </div>\n ) : (\n <Text variant='secondary'>{type}</Text>\n )}\n </Flex>\n\n {!expanded && (\n <Button\n data-testid={testIds.addItemButton}\n icon\n variant='simple'\n onClick={() => onAdd(id)}\n aria-label={t('add_noun', [`${type}: ${primary}`])}\n label={t('add')}\n >\n <Icon name='plus' />\n </Button>\n )}\n </Flex>\n <ExpandCollapse collapsed={!expanded}>\n <Flex as={StyledExpandCollapseContent} container={{ direction: 'column' }}>\n {details && <ExpressionDetails testId={testIds.root} {...details} />}\n <Button\n data-testid={testIds.addItem}\n variant='primary'\n onClick={() => onAdd(id)}\n aria-label={t('add_noun', [`${type}: ${primary}`])}\n >\n {t('add')}\n </Button>\n </Flex>\n </ExpandCollapse>\n </StyledExpressionItem>\n );\n};\n\nexport default withTestIds(ExpressionItem, getExpressionItemsTestIds);\n"]}
1
+ {"version":3,"file":"ExpressionItem.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo, useRef } from 'react';\nimport type { FunctionComponent } from 'react';\n\nimport {\n Button,\n ExpandCollapse,\n Flex,\n Icon,\n registerIcon,\n StyledLabel,\n Text,\n useDirection,\n useHighlight,\n useI18n,\n useTestIds,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';\nimport * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';\n\nimport type { ExpressionItemProps } from './ExpressionBuilder.types';\nimport {\n StyledPrimaryText,\n StyledExpandCollapseContent,\n StyledExpressionExplanation,\n StyledExpressionItem\n} from './ExpressionBuilder.styles';\nimport ExpressionDetails from './ExpressionDetails';\nimport ExpressionBuilderContext from './ExpressionBuilderContext';\nimport { getExpressionItemsTestIds } from './ExpressionBuilder.test-ids';\n\nregisterIcon(caretLeftIcon, caretRightIcon);\n\nconst ExpressionItem: FunctionComponent<ExpressionItemProps & ForwardProps> = ({\n id,\n testId,\n primary,\n type,\n onAdd,\n onExpand,\n onCollapse,\n details,\n matchedField,\n expanded = false,\n ...restProps\n}) => {\n const { end: caretDirection } = useDirection();\n const t = useI18n();\n const testIds = useTestIds(testId, getExpressionItemsTestIds);\n\n const { accent } = useContext(ExpressionBuilderContext);\n\n const primaryRef = useRef<HTMLSpanElement>(null);\n const metaRef = useRef<HTMLSpanElement>(null);\n\n const primaryPattern = useMemo(() => {\n if (!accent || matchedField) return undefined;\n return typeof accent === 'function' ? accent(primary) : accent;\n }, [accent, matchedField, primary]);\n\n const metaPattern = useMemo(() => {\n if (!accent || !matchedField || expanded) return undefined;\n return typeof accent === 'function' ? accent(matchedField.value) : accent;\n }, [accent, matchedField, expanded]);\n\n useHighlight(primaryRef, primaryPattern);\n useHighlight(metaRef, metaPattern);\n\n const caretIcon = useMemo(() => {\n return expanded ? 'caret-down' : `caret-${caretDirection}`;\n }, [expanded, caretDirection]);\n\n return (\n <StyledExpressionItem expanded={expanded}>\n <Flex\n data-testid={testIds.root}\n {...restProps}\n as={StyledExpressionExplanation}\n id={id}\n container={{ gap: 1, alignItems: 'start' }}\n >\n <Button\n data-testid={testIds.collapseItemButton}\n icon\n variant='simple'\n onClick={\n onCollapse || onExpand\n ? () => {\n if (expanded) {\n onCollapse?.(id);\n } else {\n onExpand?.(id);\n }\n }\n : undefined\n }\n aria-label={`${type}: ${primary}`}\n aria-expanded={expanded}\n label={expanded ? t('collapse') : t('expand')}\n >\n <Icon name={caretIcon} />\n </Button>\n\n <Flex container={{ alignItems: 'start', direction: 'column' }} item={{ grow: 1 }}>\n <StyledPrimaryText variant='primary'>\n <span ref={primaryRef}>{primary}</span>\n </StyledPrimaryText>\n {matchedField && !expanded ? (\n <div>\n <StyledLabel as='span'>{matchedField?.name}:</StyledLabel>\n <span ref={metaRef}>{matchedField.value}</span>\n </div>\n ) : (\n <Text variant='secondary'>{type}</Text>\n )}\n </Flex>\n\n {!expanded && (\n <Button\n data-testid={testIds.addItemButton}\n icon\n variant='simple'\n onClick={() => onAdd(id)}\n aria-label={t('add_noun', [`${type}: ${primary}`])}\n label={t('add')}\n >\n <Icon name='plus' />\n </Button>\n )}\n </Flex>\n <ExpandCollapse collapsed={!expanded}>\n <Flex as={StyledExpandCollapseContent} container={{ direction: 'column' }}>\n {details && <ExpressionDetails testId={testIds.root} {...details} />}\n <Button\n data-testid={testIds.addItem}\n variant='primary'\n onClick={() => onAdd(id)}\n aria-label={t('add_noun', [`${type}: ${primary}`])}\n >\n {t('add')}\n </Button>\n </Flex>\n </ExpandCollapse>\n </StyledExpressionItem>\n );\n};\n\nexport default withTestIds(ExpressionItem, getExpressionItemsTestIds);\n"]}
@@ -10,7 +10,7 @@ export interface AddHelperParams {
10
10
  connectorsCount?: number;
11
11
  getNewNode?: () => NodeProps;
12
12
  isBranchNode: boolean;
13
- getNewConnector?: (fromNodeId: string, toNodeId: string) => ConnectorProps;
13
+ getNewConnector?: (fromNodeId: string, toNodeId: string, connectorIndex?: number) => ConnectorProps;
14
14
  }
15
15
  export interface NodeInfo<T extends NodeProps = NodeProps, U extends ConnectorProps = ConnectorProps> {
16
16
  node: T;
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,SAAS,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,cAAc,CAAC;CAC5E;AAED,MAAM,WAAW,QAAQ,CACvB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,SAAS,cAAc,GAAG,cAAc;IAEzC,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,IAAI,EAAE,EAAE,OAAO,aAAa,KAAG,MAAM,EAezE,CAAC;AAuCF,QAAA,MAAM,OAAO;4BAEE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UACvC,MAAM,UACN,MAAM,oBACI,eAAe,CAAC,iBAAiB,CAAC;;;;;;;iCA+BzB,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,aAAa,cAAc;6GAwDzF,eAAe;;;;0BA8DL,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UACvC,MAAM,GACb,iBAAiB,GAAG,KAAK;0BAmDN,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UAAU,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ;6CAYjF,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,kBAC/B,cAAc,kBACd,MAAM,GAAG,SAAS,GACjC,cAAc;CAelB,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,SAAS,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,KACpB,cAAc,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ,CACvB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,SAAS,cAAc,GAAG,cAAc;IAEzC,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,IAAI,EAAE,EAAE,OAAO,aAAa,KAAG,MAAM,EAezE,CAAC;AAuCF,QAAA,MAAM,OAAO;4BAEE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UACvC,MAAM,UACN,MAAM,oBACI,eAAe,CAAC,iBAAiB,CAAC;;;;;;;iCA+BzB,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,aAAa,cAAc;6GAwDzF,eAAe;;;;0BA8DL,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UACvC,MAAM,GACb,iBAAiB,GAAG,KAAK;0BAmDN,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UAAU,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ;6CAYjF,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,kBAC/B,cAAc,kBACd,MAAM,GAAG,SAAS,GACjC,cAAc;CAelB,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -147,7 +147,7 @@ const helpers = {
147
147
  }
148
148
  for (let i = 0; i < minConnectors; i += 1) {
149
149
  const newConnector = getNewConnector
150
- ? getNewConnector(newNode.id, toNodeId)
150
+ ? getNewConnector(newNode.id, toNodeId, i)
151
151
  : {
152
152
  id: createUID(),
153
153
  fromNodeId: newNode.id,
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { createUID } from '@pega/cosmos-react-core';\n\nimport type { GraphData, ConnectorProps, Node } from './Renderer/Utils/Graph';\nimport { DirectedGraph } from './Renderer/Utils/Graph';\nimport type { AddNodeHandlerParams } from './Renderer/Renderer.types';\nimport type { NodeProps, NodeType } from './Node/Node.types';\nimport GraphTraversal from './Renderer/Utils/GraphTraversal';\nimport type {\n DeleteNodeModalOption,\n DeleteNodeOutcome,\n GraphDataAsMap\n} from './Utils/deleteNodeUtils';\nimport deleteNodeUtils from './Utils/deleteNodeUtils';\n\nexport interface AddHelperParams {\n nodeType: NodeType;\n graphData: GraphData<NodeProps, ConnectorProps>;\n metaData: AddNodeHandlerParams;\n connectorsCount?: number;\n getNewNode?: () => NodeProps;\n isBranchNode: boolean;\n getNewConnector?: (fromNodeId: string, toNodeId: string) => ConnectorProps;\n}\n\nexport interface NodeInfo<\n T extends NodeProps = NodeProps,\n U extends ConnectorProps = ConnectorProps\n> {\n node: T;\n inConnectors: U[];\n outConnectors: U[];\n}\n\nexport const getReferences = (nodes: Node[], graph: DirectedGraph): string[] => {\n const references: string[] = [];\n const restGraphNodes = graph\n .getNodes()\n .filter(node => !nodes.some(i => i.id === node.id))\n .filter(\n (node): node is NodeProps =>\n typeof node === 'object' && node !== null && 'id' in node && 'type' in node\n );\n for (const node of restGraphNodes) {\n if (node.type?.minConnectors === 0 && nodes.find(i => i.id === node.reference)) {\n references.push(node.label);\n }\n }\n return references;\n};\n\nconst checkForConnectorContinuity = (\n graph: DirectedGraph,\n targetNodeId: string,\n targetBranch: DeleteNodeModalOption\n): boolean => {\n let visibleInConnectors = graph.getInConnectors(targetNodeId);\n const restConnectors = targetBranch.restItems.connectors;\n let flowConnectorExists = false;\n for (const connectorData of Object.values(restConnectors)) {\n if (\n connectorData &&\n connectorData.toNodeId === targetNodeId &&\n graph.getNode(connectorData.fromNodeId).type?.minConnectors !== 0\n ) {\n flowConnectorExists = true;\n break;\n }\n if (\n connectorData &&\n graph.getNode(connectorData.fromNodeId).type?.minConnectors === 0 &&\n connectorData.toNodeId === targetNodeId\n ) {\n visibleInConnectors = visibleInConnectors.filter(\n con =>\n graph.getNode(con.fromNodeId).type?.minConnectors !== 0 &&\n con.id !== connectorData.id &&\n !targetBranch.pathItems.connectors[con.id]\n );\n }\n }\n\n if (!flowConnectorExists && visibleInConnectors.length >= 1) {\n flowConnectorExists = true;\n }\n return flowConnectorExists;\n};\n\nconst helpers = {\n addConnector(\n graphData: GraphData<NodeProps, ConnectorProps>,\n nodeId: string,\n label?: string,\n getNewConnector?: AddHelperParams['getNewConnector']\n ) {\n const graph = new DirectedGraph<NodeProps, ConnectorProps>(graphData);\n const convergenceData = GraphTraversal.getConvergenceData(graphData, nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n const convergenceNodeId = convergenceData ? convergenceData.nodeId : undefined;\n const targetNodeId =\n outConnectors.length > 0 && outConnectors.length < 2\n ? outConnectors[0].toNodeId\n : convergenceNodeId;\n\n if (targetNodeId) {\n const newConnector = getNewConnector\n ? getNewConnector(nodeId, targetNodeId)\n : {\n id: createUID(),\n fromNodeId: nodeId,\n toNodeId: targetNodeId,\n label: label || ''\n };\n\n graph.addConnector(newConnector);\n\n return {\n graphData: graph.getGraphData(),\n connector: newConnector\n };\n }\n return { graphData, connector: {} };\n },\n\n deleteConnector: (graphData: GraphData<NodeProps, ConnectorProps>, connector: ConnectorProps) => {\n const nodeId = connector.fromNodeId;\n const graph = new DirectedGraph(graphData);\n const deleteOptionsResult = deleteNodeUtils.getDeleteNodeOptions(graph, nodeId);\n const deleteOptions = deleteOptionsResult.options;\n let itemsToDelete: GraphDataAsMap = deleteOptionsResult.allItems;\n const targetNodeId = deleteOptionsResult?.destinationNodeId\n ? deleteOptionsResult.destinationNodeId\n : '';\n\n const targetBranch = deleteOptions.find(\n deleteOption => connector.id === deleteOption.connector.id\n );\n\n let flowConnectorExists = false;\n let nodeReferences: string[] = [];\n\n if (targetBranch) {\n itemsToDelete = targetBranch.pathItems;\n /** From the rest of the connectors check if any connector originating from a shape other than go to and\n * is having the toNode as destination node ensuring the flow to continue\n */\n flowConnectorExists = checkForConnectorContinuity(graph, targetNodeId, targetBranch);\n /** Check for go to References for nodes to be deleted */\n const nodesToDelete = Object.values(targetBranch.pathItems.nodes).filter(\n (node): node is NodeProps =>\n typeof node === 'object' && node !== null && 'id' in node && 'type' in node\n );\n nodeReferences = getReferences(nodesToDelete, graph);\n }\n\n // filter the highlighted nodes, including the selected node\n const nodes = graphData.nodes.filter(item => !itemsToDelete.nodes[item.id]);\n // filter the highlighted connectors\n const connectors = graphData.connectors.filter(item => !itemsToDelete.connectors[item.id]);\n\n const outcome: DeleteNodeOutcome = {\n graphData: {\n nodes,\n connectors\n },\n deletes: itemsToDelete,\n error: !flowConnectorExists || nodeReferences.length > 0,\n references: nodeReferences\n };\n return outcome;\n },\n\n addNode: ({\n graphData,\n nodeType,\n isBranchNode,\n metaData,\n getNewNode,\n getNewConnector,\n connectorsCount\n }: AddHelperParams) => {\n const graph = new DirectedGraph(graphData);\n const newNode = getNewNode\n ? getNewNode()\n : {\n ...nodeType.defaults.node,\n id: createUID(),\n type: nodeType\n };\n // add new node\n graph.addNode(newNode);\n\n let toNodeId = '';\n if (metaData.refType === 'connector') {\n if (!Array.isArray(metaData.refId)) {\n metaData.refId = [metaData.refId];\n }\n metaData.refId.forEach(conId => {\n const refConnector = graph.getConnector(conId);\n // backup current connectors toNodeId\n toNodeId = refConnector.toNodeId;\n // update the actual connector\n graph.setConnector(conId, {\n toNodeId: newNode.id\n });\n });\n } else if (metaData.refType === 'node' && typeof metaData.refId === 'string') {\n toNodeId = metaData.refId;\n // iterate and update all in-connectors to point to the new node\n graph.getInConnectors(metaData.refId).forEach(con => {\n graph.setConnector(con.id, {\n toNodeId: newNode.id\n });\n });\n }\n\n let minConnectors = 1;\n if (connectorsCount !== undefined) {\n minConnectors = connectorsCount;\n } else {\n minConnectors =\n nodeType.minConnectors !== undefined && !isBranchNode ? nodeType.minConnectors : 1;\n }\n for (let i = 0; i < minConnectors; i += 1) {\n const newConnector = getNewConnector\n ? getNewConnector(newNode.id, toNodeId)\n : {\n id: createUID(),\n fromNodeId: newNode.id,\n toNodeId,\n label: !isBranchNode ? nodeType.defaults?.connector[i].label : ''\n };\n graph.addConnector(newConnector);\n }\n\n return {\n graphData: graph.getGraphData(),\n node: newNode\n };\n },\n\n deleteNode(\n graphData: GraphData<NodeProps, ConnectorProps>,\n nodeId: string\n ): DeleteNodeOutcome | false {\n const graph = new DirectedGraph<NodeProps, ConnectorProps>(graphData);\n const node = graph.getNode(nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n\n const outcome: DeleteNodeOutcome = {\n graphData: graph.getGraphData(),\n deletes: {\n nodes: {\n [nodeId]: node\n },\n connectors: {}\n },\n error: false\n };\n\n outcome.references = getReferences([node], graph);\n\n if (outcome.references.length > 0) {\n outcome.error = true;\n return outcome;\n }\n\n if (outConnectors.length > 1) {\n return false;\n }\n\n const inConnectors = graph.getInConnectors(nodeId);\n\n const connectorUpdates: ConnectorProps[] = [];\n if (outConnectors[0]) {\n inConnectors.forEach(con => {\n graph.setConnector(con.id, {\n toNodeId: outConnectors[0].toNodeId\n });\n\n connectorUpdates.push(con);\n });\n\n graph.removeConnector(outConnectors[0].id);\n }\n\n graph.deleteNode(nodeId, true);\n\n outcome.graphData = graph.getGraphData();\n outcome.updates = {\n connectors: connectorUpdates\n };\n return outcome;\n },\n\n selectNode(graphData: GraphData<NodeProps, ConnectorProps>, nodeId: NodeProps['id']): NodeInfo {\n const graph = new DirectedGraph(graphData);\n const selectedNode = graph.getNode(nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n const inConnectors = graph.getInConnectors(nodeId);\n return {\n node: selectedNode,\n inConnectors,\n outConnectors\n };\n },\n getHighlightsWithPlaceholders(\n graphData: GraphData<NodeProps, ConnectorProps>,\n highlightsData: GraphDataAsMap,\n selectedNodeId: string | undefined\n ): GraphDataAsMap {\n let selectedConnector: ConnectorProps | undefined;\n for (const connector of Object.keys(highlightsData.connectors)) {\n if (highlightsData.connectors[connector].fromNodeId === selectedNodeId) {\n selectedConnector = highlightsData.connectors[connector];\n break;\n }\n }\n\n if (!selectedConnector) {\n return { nodes: {}, connectors: {} };\n }\n\n return this.deleteConnector(graphData, selectedConnector).deletes;\n }\n};\n\nexport default helpers;\n"]}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { createUID } from '@pega/cosmos-react-core';\n\nimport type { GraphData, ConnectorProps, Node } from './Renderer/Utils/Graph';\nimport { DirectedGraph } from './Renderer/Utils/Graph';\nimport type { AddNodeHandlerParams } from './Renderer/Renderer.types';\nimport type { NodeProps, NodeType } from './Node/Node.types';\nimport GraphTraversal from './Renderer/Utils/GraphTraversal';\nimport type {\n DeleteNodeModalOption,\n DeleteNodeOutcome,\n GraphDataAsMap\n} from './Utils/deleteNodeUtils';\nimport deleteNodeUtils from './Utils/deleteNodeUtils';\n\nexport interface AddHelperParams {\n nodeType: NodeType;\n graphData: GraphData<NodeProps, ConnectorProps>;\n metaData: AddNodeHandlerParams;\n connectorsCount?: number;\n getNewNode?: () => NodeProps;\n isBranchNode: boolean;\n getNewConnector?: (\n fromNodeId: string,\n toNodeId: string,\n connectorIndex?: number\n ) => ConnectorProps;\n}\n\nexport interface NodeInfo<\n T extends NodeProps = NodeProps,\n U extends ConnectorProps = ConnectorProps\n> {\n node: T;\n inConnectors: U[];\n outConnectors: U[];\n}\n\nexport const getReferences = (nodes: Node[], graph: DirectedGraph): string[] => {\n const references: string[] = [];\n const restGraphNodes = graph\n .getNodes()\n .filter(node => !nodes.some(i => i.id === node.id))\n .filter(\n (node): node is NodeProps =>\n typeof node === 'object' && node !== null && 'id' in node && 'type' in node\n );\n for (const node of restGraphNodes) {\n if (node.type?.minConnectors === 0 && nodes.find(i => i.id === node.reference)) {\n references.push(node.label);\n }\n }\n return references;\n};\n\nconst checkForConnectorContinuity = (\n graph: DirectedGraph,\n targetNodeId: string,\n targetBranch: DeleteNodeModalOption\n): boolean => {\n let visibleInConnectors = graph.getInConnectors(targetNodeId);\n const restConnectors = targetBranch.restItems.connectors;\n let flowConnectorExists = false;\n for (const connectorData of Object.values(restConnectors)) {\n if (\n connectorData &&\n connectorData.toNodeId === targetNodeId &&\n graph.getNode(connectorData.fromNodeId).type?.minConnectors !== 0\n ) {\n flowConnectorExists = true;\n break;\n }\n if (\n connectorData &&\n graph.getNode(connectorData.fromNodeId).type?.minConnectors === 0 &&\n connectorData.toNodeId === targetNodeId\n ) {\n visibleInConnectors = visibleInConnectors.filter(\n con =>\n graph.getNode(con.fromNodeId).type?.minConnectors !== 0 &&\n con.id !== connectorData.id &&\n !targetBranch.pathItems.connectors[con.id]\n );\n }\n }\n\n if (!flowConnectorExists && visibleInConnectors.length >= 1) {\n flowConnectorExists = true;\n }\n return flowConnectorExists;\n};\n\nconst helpers = {\n addConnector(\n graphData: GraphData<NodeProps, ConnectorProps>,\n nodeId: string,\n label?: string,\n getNewConnector?: AddHelperParams['getNewConnector']\n ) {\n const graph = new DirectedGraph<NodeProps, ConnectorProps>(graphData);\n const convergenceData = GraphTraversal.getConvergenceData(graphData, nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n const convergenceNodeId = convergenceData ? convergenceData.nodeId : undefined;\n const targetNodeId =\n outConnectors.length > 0 && outConnectors.length < 2\n ? outConnectors[0].toNodeId\n : convergenceNodeId;\n\n if (targetNodeId) {\n const newConnector = getNewConnector\n ? getNewConnector(nodeId, targetNodeId)\n : {\n id: createUID(),\n fromNodeId: nodeId,\n toNodeId: targetNodeId,\n label: label || ''\n };\n\n graph.addConnector(newConnector);\n\n return {\n graphData: graph.getGraphData(),\n connector: newConnector\n };\n }\n return { graphData, connector: {} };\n },\n\n deleteConnector: (graphData: GraphData<NodeProps, ConnectorProps>, connector: ConnectorProps) => {\n const nodeId = connector.fromNodeId;\n const graph = new DirectedGraph(graphData);\n const deleteOptionsResult = deleteNodeUtils.getDeleteNodeOptions(graph, nodeId);\n const deleteOptions = deleteOptionsResult.options;\n let itemsToDelete: GraphDataAsMap = deleteOptionsResult.allItems;\n const targetNodeId = deleteOptionsResult?.destinationNodeId\n ? deleteOptionsResult.destinationNodeId\n : '';\n\n const targetBranch = deleteOptions.find(\n deleteOption => connector.id === deleteOption.connector.id\n );\n\n let flowConnectorExists = false;\n let nodeReferences: string[] = [];\n\n if (targetBranch) {\n itemsToDelete = targetBranch.pathItems;\n /** From the rest of the connectors check if any connector originating from a shape other than go to and\n * is having the toNode as destination node ensuring the flow to continue\n */\n flowConnectorExists = checkForConnectorContinuity(graph, targetNodeId, targetBranch);\n /** Check for go to References for nodes to be deleted */\n const nodesToDelete = Object.values(targetBranch.pathItems.nodes).filter(\n (node): node is NodeProps =>\n typeof node === 'object' && node !== null && 'id' in node && 'type' in node\n );\n nodeReferences = getReferences(nodesToDelete, graph);\n }\n\n // filter the highlighted nodes, including the selected node\n const nodes = graphData.nodes.filter(item => !itemsToDelete.nodes[item.id]);\n // filter the highlighted connectors\n const connectors = graphData.connectors.filter(item => !itemsToDelete.connectors[item.id]);\n\n const outcome: DeleteNodeOutcome = {\n graphData: {\n nodes,\n connectors\n },\n deletes: itemsToDelete,\n error: !flowConnectorExists || nodeReferences.length > 0,\n references: nodeReferences\n };\n return outcome;\n },\n\n addNode: ({\n graphData,\n nodeType,\n isBranchNode,\n metaData,\n getNewNode,\n getNewConnector,\n connectorsCount\n }: AddHelperParams) => {\n const graph = new DirectedGraph(graphData);\n const newNode = getNewNode\n ? getNewNode()\n : {\n ...nodeType.defaults.node,\n id: createUID(),\n type: nodeType\n };\n // add new node\n graph.addNode(newNode);\n\n let toNodeId = '';\n if (metaData.refType === 'connector') {\n if (!Array.isArray(metaData.refId)) {\n metaData.refId = [metaData.refId];\n }\n metaData.refId.forEach(conId => {\n const refConnector = graph.getConnector(conId);\n // backup current connectors toNodeId\n toNodeId = refConnector.toNodeId;\n // update the actual connector\n graph.setConnector(conId, {\n toNodeId: newNode.id\n });\n });\n } else if (metaData.refType === 'node' && typeof metaData.refId === 'string') {\n toNodeId = metaData.refId;\n // iterate and update all in-connectors to point to the new node\n graph.getInConnectors(metaData.refId).forEach(con => {\n graph.setConnector(con.id, {\n toNodeId: newNode.id\n });\n });\n }\n\n let minConnectors = 1;\n if (connectorsCount !== undefined) {\n minConnectors = connectorsCount;\n } else {\n minConnectors =\n nodeType.minConnectors !== undefined && !isBranchNode ? nodeType.minConnectors : 1;\n }\n for (let i = 0; i < minConnectors; i += 1) {\n const newConnector = getNewConnector\n ? getNewConnector(newNode.id, toNodeId, i)\n : {\n id: createUID(),\n fromNodeId: newNode.id,\n toNodeId,\n label: !isBranchNode ? nodeType.defaults?.connector[i].label : ''\n };\n graph.addConnector(newConnector);\n }\n\n return {\n graphData: graph.getGraphData(),\n node: newNode\n };\n },\n\n deleteNode(\n graphData: GraphData<NodeProps, ConnectorProps>,\n nodeId: string\n ): DeleteNodeOutcome | false {\n const graph = new DirectedGraph<NodeProps, ConnectorProps>(graphData);\n const node = graph.getNode(nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n\n const outcome: DeleteNodeOutcome = {\n graphData: graph.getGraphData(),\n deletes: {\n nodes: {\n [nodeId]: node\n },\n connectors: {}\n },\n error: false\n };\n\n outcome.references = getReferences([node], graph);\n\n if (outcome.references.length > 0) {\n outcome.error = true;\n return outcome;\n }\n\n if (outConnectors.length > 1) {\n return false;\n }\n\n const inConnectors = graph.getInConnectors(nodeId);\n\n const connectorUpdates: ConnectorProps[] = [];\n if (outConnectors[0]) {\n inConnectors.forEach(con => {\n graph.setConnector(con.id, {\n toNodeId: outConnectors[0].toNodeId\n });\n\n connectorUpdates.push(con);\n });\n\n graph.removeConnector(outConnectors[0].id);\n }\n\n graph.deleteNode(nodeId, true);\n\n outcome.graphData = graph.getGraphData();\n outcome.updates = {\n connectors: connectorUpdates\n };\n return outcome;\n },\n\n selectNode(graphData: GraphData<NodeProps, ConnectorProps>, nodeId: NodeProps['id']): NodeInfo {\n const graph = new DirectedGraph(graphData);\n const selectedNode = graph.getNode(nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n const inConnectors = graph.getInConnectors(nodeId);\n return {\n node: selectedNode,\n inConnectors,\n outConnectors\n };\n },\n getHighlightsWithPlaceholders(\n graphData: GraphData<NodeProps, ConnectorProps>,\n highlightsData: GraphDataAsMap,\n selectedNodeId: string | undefined\n ): GraphDataAsMap {\n let selectedConnector: ConnectorProps | undefined;\n for (const connector of Object.keys(highlightsData.connectors)) {\n if (highlightsData.connectors[connector].fromNodeId === selectedNodeId) {\n selectedConnector = highlightsData.connectors[connector];\n break;\n }\n }\n\n if (!selectedConnector) {\n return { nodes: {}, connectors: {} };\n }\n\n return this.deleteConnector(graphData, selectedConnector).deletes;\n }\n};\n\nexport default helpers;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-build",
3
- "version": "9.0.0-build.27.9",
3
+ "version": "9.0.0-build.28.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "author": "Pegasystems",
6
6
  "sideEffects": false,
@@ -15,9 +15,9 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@dagrejs/dagre": "^3.0.0",
18
- "@pega/cosmos-react-core": "9.0.0-build.27.9",
19
- "@pega/cosmos-react-dnd": "9.0.0-build.27.9",
20
- "@pega/cosmos-react-rte": "9.0.0-build.27.9",
18
+ "@pega/cosmos-react-core": "9.0.0-build.28.0",
19
+ "@pega/cosmos-react-dnd": "9.0.0-build.28.0",
20
+ "@pega/cosmos-react-rte": "9.0.0-build.28.0",
21
21
  "@types/codemirror": "^5.60.15",
22
22
  "@types/react": "^17.0.62 || ^18.3.3",
23
23
  "@types/react-dom": "^17.0.20 || ^18.3.0",