UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 2.42 kB
{"version":3,"file":"get-all-checked-nodes.mjs","names":[],"sources":["../../../../src/components/Tree/get-all-checked-nodes/get-all-checked-nodes.ts"],"sourcesContent":["import type { TreeNodeData } from '../Tree';\n\nexport interface CheckedNodeStatus {\n checked: boolean;\n indeterminate: boolean;\n hasChildren: boolean;\n value: string;\n}\n\nexport function getAllCheckedNodes(\n data: TreeNodeData[],\n checkedState: string[],\n acc: CheckedNodeStatus[] = []\n) {\n const currentTreeChecked: CheckedNodeStatus[] = [];\n\n for (const node of data) {\n if (Array.isArray(node.children) && node.children.length > 0) {\n const innerChecked = getAllCheckedNodes(node.children, checkedState, acc);\n if (innerChecked.currentTreeChecked.length === node.children.length) {\n const isChecked = innerChecked.currentTreeChecked.every((item) => item.checked);\n const item = {\n checked: isChecked,\n indeterminate: !isChecked,\n value: node.value,\n hasChildren: true,\n };\n currentTreeChecked.push(item);\n acc.push(item);\n } else if (innerChecked.currentTreeChecked.length > 0) {\n const item = { checked: false, indeterminate: true, value: node.value, hasChildren: true };\n currentTreeChecked.push(item);\n acc.push(item);\n }\n } else if (checkedState.includes(node.value)) {\n const item: CheckedNodeStatus = {\n checked: true,\n indeterminate: false,\n value: node.value,\n hasChildren: false,\n };\n currentTreeChecked.push(item);\n acc.push(item);\n }\n }\n\n return { result: acc, currentTreeChecked };\n}\n"],"mappings":";;AASA,SAAgB,mBACd,MACA,cACA,MAA2B,EAAE,EAC7B;CACA,MAAM,qBAA0C,EAAE;AAElD,MAAK,MAAM,QAAQ,KACjB,KAAI,MAAM,QAAQ,KAAK,SAAS,IAAI,KAAK,SAAS,SAAS,GAAG;EAC5D,MAAM,eAAe,mBAAmB,KAAK,UAAU,cAAc,IAAI;AACzE,MAAI,aAAa,mBAAmB,WAAW,KAAK,SAAS,QAAQ;GACnE,MAAM,YAAY,aAAa,mBAAmB,OAAO,SAAS,KAAK,QAAQ;GAC/E,MAAM,OAAO;IACX,SAAS;IACT,eAAe,CAAC;IAChB,OAAO,KAAK;IACZ,aAAa;IACd;AACD,sBAAmB,KAAK,KAAK;AAC7B,OAAI,KAAK,KAAK;aACL,aAAa,mBAAmB,SAAS,GAAG;GACrD,MAAM,OAAO;IAAE,SAAS;IAAO,eAAe;IAAM,OAAO,KAAK;IAAO,aAAa;IAAM;AAC1F,sBAAmB,KAAK,KAAK;AAC7B,OAAI,KAAK,KAAK;;YAEP,aAAa,SAAS,KAAK,MAAM,EAAE;EAC5C,MAAM,OAA0B;GAC9B,SAAS;GACT,eAAe;GACf,OAAO,KAAK;GACZ,aAAa;GACd;AACD,qBAAmB,KAAK,KAAK;AAC7B,MAAI,KAAK,KAAK;;AAIlB,QAAO;EAAE,QAAQ;EAAK;EAAoB"}