@primereact/headless 11.0.0-alpha.8 → 11.0.0-alpha.9
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/breadcrumb/index.d.ts +2 -0
- package/breadcrumb/index.mjs +2 -0
- package/breadcrumb/index.mjs.map +1 -0
- package/breadcrumb/useBreadcrumb.d.ts +3 -0
- package/breadcrumb/useBreadcrumb.props.d.ts +2 -0
- package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
- package/carousel/index.mjs +1 -1
- package/carousel/index.mjs.map +1 -1
- package/carousel/useCarousel.d.ts +18 -18
- package/commandmenu/index.d.ts +2 -0
- package/commandmenu/index.mjs +2 -0
- package/commandmenu/index.mjs.map +1 -0
- package/commandmenu/useCommandMenu.d.ts +11 -0
- package/commandmenu/useCommandMenu.props.d.ts +2 -0
- package/commandmenu/useCommandMenu.test.d.ts +0 -0
- package/contextmenu/index.d.ts +2 -0
- package/contextmenu/index.mjs +2 -0
- package/contextmenu/index.mjs.map +1 -0
- package/contextmenu/useContextMenu.d.ts +1 -0
- package/contextmenu/useContextMenu.props.d.ts +2 -0
- package/contextmenu/useContextMenu.test.d.ts +0 -0
- package/gallery/item/index.mjs +1 -1
- package/gallery/item/index.mjs.map +1 -1
- package/inputtags/index.d.ts +2 -0
- package/inputtags/index.mjs +2 -0
- package/inputtags/index.mjs.map +1 -0
- package/inputtags/useInputTags.d.ts +20 -0
- package/inputtags/useInputTags.props.d.ts +2 -0
- package/inputtags/useInputTags.test.d.ts +0 -0
- package/menu/index.d.ts +2 -0
- package/menu/index.mjs +2 -0
- package/menu/index.mjs.map +1 -0
- package/menu/sub/index.d.ts +2 -0
- package/menu/sub/index.mjs +2 -0
- package/menu/sub/index.mjs.map +1 -0
- package/menu/sub/useMenuSub.d.ts +19 -0
- package/menu/sub/useMenuSub.props.d.ts +2 -0
- package/menu/useMenu.d.ts +34 -0
- package/menu/useMenu.props.d.ts +2 -0
- package/menu/useMenu.test.d.ts +0 -0
- package/overlay/index.mjs +1 -1
- package/overlay/index.mjs.map +1 -1
- package/package.json +3 -3
- package/placer/index.mjs +1 -1
- package/placer/index.mjs.map +1 -1
- package/toast/index.mjs +1 -1
- package/toast/index.mjs.map +1 -1
- package/toast/item/index.css +1 -1
- package/toast/item/index.css.map +1 -1
- package/toast/item/index.mjs +1 -1
- package/toast/item/index.mjs.map +1 -1
- package/toast/item/useToastItem.d.ts +1 -1
- package/toast/toastStore.d.ts +3 -2
- package/tree/TreeDragDropService.d.ts +24 -0
- package/tree/index.d.ts +3 -0
- package/tree/index.mjs +2 -0
- package/tree/index.mjs.map +1 -0
- package/tree/useTree.d.ts +27 -0
- package/tree/useTree.props.d.ts +2 -0
- package/tree/useTree.test.d.ts +0 -0
package/tree/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var ve=Object.defineProperty,Ce=Object.defineProperties;var Me=Object.getOwnPropertyDescriptors;var Q=Object.getOwnPropertySymbols;var Re=Object.prototype.hasOwnProperty,Le=Object.prototype.propertyIsEnumerable;var Z=(r,o,c)=>o in r?ve(r,o,{enumerable:!0,configurable:!0,writable:!0,value:c}):r[o]=c,b=(r,o)=>{for(var c in o||(o={}))Re.call(o,c)&&Z(r,c,o[c]);if(Q)for(var c of Q(o))Le.call(o,c)&&Z(r,c,o[c]);return r},I=(r,o)=>Ce(r,Me(o));import{withHeadless as He}from"@primereact/core/headless";import{useControlledState as ee}from"@primereact/hooks/use-controlled-state";import{find as U,findSingle as Ie,focus as te,getAttribute as we,isPrintableCharacter as Ae}from"@primeuix/utils";import*as m from"react";var u={isDragging:!1,dragNode:null,dragScope:null,dragNodeSubNodes:null,dragNodeIndex:null,sourceTreeId:null},w=new Set,A=new Set,E={getDragState(){return u},startDrag(r){var o,c,S,D;u.isDragging=!0,u.dragNode=r.node,u.dragScope=(o=r.scope)!=null?o:null,u.dragNodeSubNodes=(c=r.subNodes)!=null?c:null,u.dragNodeIndex=(S=r.index)!=null?S:null,u.sourceTreeId=(D=r.sourceTreeId)!=null?D:null,w.forEach(C=>C(r))},stopDrag(r){u.isDragging=!1,u.dragNode=null,u.dragScope=null,u.dragNodeSubNodes=null,u.dragNodeIndex=null,u.sourceTreeId=null,A.forEach(o=>o(r))},onDragStart(r){return w.add(r),()=>w.delete(r)},onDragStop(r){return A.add(r),()=>A.delete(r)}};var $={value:[],expandedKeys:void 0,defaultExpandedKeys:void 0,selectionKeys:void 0,defaultSelectionKeys:void 0,selectionMode:void 0,metaKeySelection:!1,highlightOnSelect:!1,scrollHeight:void 0,draggableNodes:void 0,droppableNodes:void 0,draggableScope:void 0,droppableScope:void 0,validateDrop:!1,onExpandedChange:void 0,onSelectionChange:void 0,onToggle:void 0,onExpand:void 0,onCollapse:void 0,onClick:void 0,onSelect:void 0,onUnselect:void 0,onNodeDrop:void 0,onDragEnter:void 0,onDragLeave:void 0,onValueChange:void 0};var Ye=He({name:"useTree",defaultProps:$,setup({props:r,elementRef:o}){var q,G;let c=m.useRef((q=r.defaultExpandedKeys)!=null?q:{}),[S,D]=ee({value:r.expandedKeys,defaultValue:c.current,onChange:r.onExpandedChange}),C=m.useRef((G=r.defaultSelectionKeys)!=null?G:{}),[y,V]=ee({value:r.selectionKeys,defaultValue:C.current,onChange:r.onSelectionChange}),x=m.useRef(null),h=m.useRef(""),[ne,N]=m.useState(!1);m.useEffect(()=>{if(r.droppableNodes){let e=E.onDragStop(()=>{N(!1)});return()=>{e()}}},[r.droppableNodes]);let re={expandedKey:S,selectedKey:y,dragHover:ne},K=()=>r.value||[],le=(e,t,n,l,a)=>{if(!ye(e))return;let i=e.metaKey||e.ctrlKey;switch(e.code){case"Tab":se();break;case"ArrowDown":p(e);break;case"ArrowUp":ae(e);break;case"ArrowRight":oe(e,t,l,a);break;case"ArrowLeft":ie(e,t,n,l,a);break;case"Enter":case"NumpadEnter":case"Space":ce(e,t,l);break;default:!i&&Ae(e.key)&&be(e.key,t);break}},p=e=>{let t=e.target,n=t.getAttribute("data-pc-section")==="treetoggle"?t.closest('[role="treeitem"]'):t;if(!n)return;let l=n.children[1];if(l)T(n,l.children[0]);else if(n.nextElementSibling)T(n,n.nextElementSibling);else{let a=O(n);a&&T(n,a)}e.preventDefault()},ae=e=>{let t=e.target;if(t.previousElementSibling)T(t,t.previousElementSibling,W(t.previousElementSibling));else{let n=B(t);n&&T(t,n)}e.preventDefault()},oe=(e,t,n,l)=>{l||n||(e.currentTarget.tabIndex=-1,M(e,t),setTimeout(()=>{p(e)},0))},ie=(e,t,n,l,a)=>{if(n===0&&!l)return!1;if(l&&!a)return M(e,t),!1;let i=P(e.currentTarget);i&&T(e.currentTarget,i)},ce=(e,t,n)=>{ue(e,n),Y(e,t,!0),e.preventDefault()},se=()=>{de()},de=()=>{if(!o.current)return;let e=U(o.current,'[role="treeitem"]'),t=[...e].some(n=>n.getAttribute("aria-selected")==="true"||n.getAttribute("aria-checked")==="true");if([...e].forEach(n=>{n.tabIndex=-1}),t){let n=[...e].filter(l=>l.getAttribute("aria-selected")==="true"||l.getAttribute("aria-checked")==="true");n[0].tabIndex=0;return}[...e][0].tabIndex=0},ue=(e,t)=>{if(r.selectionMode!==null){let n=e.currentTarget.parentElement;if(!n)return;let l=[...U(n,'[role="treeitem"]')];e.currentTarget.tabIndex=t?-1:0,l.every(a=>a.tabIndex===-1)&&(l[0].tabIndex=0)}},T=(e,t,n)=>{e.tabIndex=-1,t.tabIndex=0,te(n||t)},P=e=>{let t=e.closest("ul");if(!t)return null;let n=t.closest("li");if(n){let l=Ie(n,"button");if(l&&l.style.visibility!=="hidden")return n;if(e.previousElementSibling)return P(e.previousElementSibling)}return null},O=e=>{let t=B(e);return t?t.nextElementSibling?t.nextElementSibling:O(t):null},W=e=>{let t=e.children[1];if(t){let n=t.children[t.children.length-1];return W(n)}else return e},B=e=>{let t=e.parentElement;if(!t)return null;let n=t.parentElement;return n&&we(n,"role")==="treeitem"?n:null},M=(e,t)=>{let n=S||{},l=t.key,a;n[l]?(a=b({},n),delete a[l],r.onCollapse&&r.onCollapse({originalEvent:e,node:t}),r.onToggle&&r.onToggle({originalEvent:e,node:t})):(a=I(b({},n),{[l]:!0}),r.onExpand&&r.onExpand({originalEvent:e,node:t}),r.onToggle&&r.onToggle({originalEvent:e,node:t})),D([a,{originalEvent:e,value:a}])},_=(e,t,n=!1)=>{if(r.selectionMode!=null){let a=(n?!1:r.metaKeySelection)?fe(e,t):ge(e,t);V([a,{originalEvent:e,value:a}]),r.onClick&&r.onClick({originalEvent:e,node:t})}},fe=(e,t)=>{let n=e.metaKey||e.ctrlKey,l=L(t),a={},i=y||{};return l&&n?(R()?a={}:(a=b({},i),delete a[t.key]),r.onUnselect&&r.onUnselect({originalEvent:e,node:t})):(R()?a={}:Ee()&&(a=n?b({},i):{}),a[t.key]=!0,r.onSelect&&r.onSelect({originalEvent:e,node:t})),a},ge=(e,t)=>{let n=L(t),l={},a=y||{},i=t.key;return R()?n?(l={},r.onUnselect&&r.onUnselect({originalEvent:e,node:t})):(l={[i]:!0},r.onSelect&&r.onSelect({originalEvent:e,node:t})):n?(l=b({},a),delete l[i],r.onUnselect&&r.onUnselect({originalEvent:e,node:t})):(l=I(b({},a),{[i]:!0}),r.onSelect&&r.onSelect({originalEvent:e,node:t})),l},R=()=>r.selectionMode==="single",Ee=()=>r.selectionMode==="multiple",X=()=>r.selectionMode==="checkbox",L=e=>{var n;return!r.selectionMode||!y?!1:X()?((n=y[e.key])==null?void 0:n.checked)===!0:y[e.key]===!0},Y=(e,t,n=!1)=>{X()?z(e,t):_(e,t,n)},z=(e,t)=>{var s;let l=b({},y||{}),a=t.key;if(!t)return;let f=!(((s=l[a])==null?void 0:s.checked)===!0);f?r.onUnselect&&r.onUnselect({originalEvent:e,node:t}):r.onSelect&&r.onSelect({originalEvent:e,node:t}),F(t,f,l);let g=H(K(),a);for(;g;)me(g,l),g=H(K(),g.key);V([l,{originalEvent:e,value:l}])},F=(e,t,n)=>{if(t&&e.selectable!==!1?n[e.key]={checked:!0,partialChecked:!1}:delete n[e.key],e.children&&e.children.length)for(let l of e.children)F(l,t,n)},me=(e,t)=>{var a,i;if(!e.children||e.children.length===0)return t;let n=0,l=!1;for(let f of e.children)(a=t[f.key])!=null&&a.checked?n++:(i=t[f.key])!=null&&i.partialChecked&&(l=!0);return n===e.children.length?t[e.key]={checked:!0,partialChecked:!1}:(delete t[e.key],(l||n>0&&n!==e.children.length)&&(t[e.key]={checked:!1,partialChecked:!0})),t},H=(e,t,n=null)=>{for(let l of e){if(l.key===t)return n;if(l.children){let a=H(l.children,t,l);if(a!==null)return a}}return null},be=(e,t)=>{var n,l;if(h.current=(h.current||"")+e,x.current&&clearTimeout(x.current),h.current){if(!o.current)return;let a=[...U(o.current,'[role="treeitem"]')],i=a.find(d=>d.getAttribute("data-node-key")===t.key);if(!i)return;let f=a.indexOf(i),g=h.current.toLowerCase(),s=null;for(let d=f+1;d<a.length;d++){let k=a[d];if((((n=k.textContent)==null?void 0:n.trim().toLowerCase())||"").startsWith(g)){s=k;break}}if(!s)for(let d=0;d<=f;d++){let k=a[d];if((((l=k.textContent)==null?void 0:l.trim().toLowerCase())||"").startsWith(g)){s=k;break}}s&&s!==i&&(a.forEach(d=>{d.tabIndex=-1}),s.tabIndex=0,te(s))}x.current=setTimeout(()=>{h.current="",x.current=null},500)},ye=e=>{let t=e.target,n=e.currentTarget;return n&&(n.isSameNode(t)||n.isSameNode(t.closest('[role="treeitem"]')))},Te=e=>{(e.code==="Enter"||e.code==="NumpadEnter")&&e.preventDefault()},Se=e=>{r.droppableNodes&&v()?e.dataTransfer.dropEffect="copy":e.dataTransfer.dropEffect="none",e.preventDefault()},he=e=>{let{dragNode:t,dragScope:n}=E.getDragState();r.droppableNodes&&v()&&(N(!0),r.onDragEnter&&r.onDragEnter({originalEvent:e,value:r.value||[],dragNode:t,dragNodeScope:n}))},Ne=e=>{if(r.droppableNodes){let t=e.currentTarget.getBoundingClientRect();if((e.clientX>=t.right||e.clientX<=t.left||e.clientY>=t.bottom||e.clientY<=t.top)&&(N(!1),r.onDragLeave)){let{dragNode:n,dragScope:l}=E.getDragState();r.onDragLeave({originalEvent:e,value:r.value||[],dragNode:n,dragNodeScope:l})}}},J=(e,t)=>{let{dragNodeSubNodes:n}=E.getDragState();n&&n.splice(t,1);let l=[...r.value||[],e];r.onValueChange&&r.onValueChange({value:l}),E.stopDrag({node:e})},ke=e=>{if(r.droppableNodes){e.preventDefault();let{dragNode:t,dragScope:n,dragNodeIndex:l}=E.getDragState();if(t&&v()){if(xe(n)){E.stopDrag({node:t}),N(!1);return}l!==null&&(r.validateDrop?r.onNodeDrop&&r.onNodeDrop({originalEvent:e,value:r.value||[],dragNode:t,dropNode:null,index:l,accept:()=>{J(t,l)}}):(r.onNodeDrop&&r.onNodeDrop({originalEvent:e,value:r.value||[],dragNode:t,dropNode:null,index:l}),J(t,l)))}}N(!1)},v=e=>{let{dragNode:t,dragScope:n}=E.getDragState();if(t)if(De(n)){let l=!0;return e&&t===e&&(l=!1),l}else return!1;else return!1},j=(e,t)=>{if(e===void 0&&t===void 0)return!0;if(e===void 0||t===void 0)return!1;if(typeof t=="string"){if(typeof e=="string")return e===t;if(Array.isArray(e))return e.indexOf(t)!==-1}else if(Array.isArray(t)){if(typeof e=="string")return t.indexOf(e)!==-1;if(Array.isArray(e)){for(let n of e)if(t.indexOf(n)!==-1)return!0;return!1}}return!1},De=e=>r.droppableScope===void 0?!0:j(e,r.droppableScope),xe=e=>j(e,r.draggableScope);return{state:re,getNodes:K,onKeyDown:le,onNodeToggle:M,onNodeClick:_,onClick:Y,onCheckboxChange:z,isNodeSelected:L,onFilterKeyUp:Te,onDragOver:Se,onDragEnter:he,onDragLeave:Ne,onDrop:ke,allowDrop:v,findNodeInfo:e=>{let t=1,n=0,l=0,a=(f,g)=>{for(let s=0;s<f.length;s++){let d=f[s];if(d.key===e)return t=g,n=s+1,l=f.length,!0;if(d.children&&a(d.children,g+1))return!0}return!1},i=K();return a(i,1),{level:t,posInSet:n,setSize:l}}}}});export{E as TreeDragDropService,$ as defaultProps,Ye as useTree};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tree/useTree.ts","../../src/tree/TreeDragDropService.ts","../../src/tree/useTree.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport type { TreeCheckboxSelectionKeys, TreeExpandedKeys, TreeNode, TreeSelectionKeys } from '@primereact/types/shared/tree';\nimport { find, findSingle, focus, getAttribute, isPrintableCharacter } from '@primeuix/utils';\nimport * as React from 'react';\nimport { TreeDragDropService } from './TreeDragDropService';\nimport { defaultProps } from './useTree.props';\n\nexport const useTree = withHeadless({\n name: 'useTree',\n defaultProps,\n setup({ props, elementRef }) {\n const defaultExpandedKeyRef = React.useRef(props.defaultExpandedKeys ?? {});\n const [expandedKeyState, setExpandedKeyState] = useControlledState({\n value: props.expandedKeys,\n defaultValue: defaultExpandedKeyRef.current,\n onChange: props.onExpandedChange\n });\n\n const defaultSelectedKeyRef = React.useRef(props.defaultSelectionKeys ?? {});\n const [selectedKeyState, setSelectedKeyState] = useControlledState({\n value: props.selectionKeys,\n defaultValue: defaultSelectedKeyRef.current,\n onChange: props.onSelectionChange\n });\n\n const searchTimeout = React.useRef<NodeJS.Timeout | null>(null);\n const searchValue = React.useRef<string>('');\n\n const [dragHoverState, setDragHoverState] = React.useState(false);\n\n React.useEffect(() => {\n if (props.droppableNodes) {\n const dragStopCleanup = TreeDragDropService.onDragStop(() => {\n setDragHoverState(false);\n });\n\n return () => {\n dragStopCleanup();\n };\n }\n }, [props.droppableNodes]);\n\n const state = {\n expandedKey: expandedKeyState,\n selectedKey: selectedKeyState,\n dragHover: dragHoverState\n };\n\n const getNodes = () => {\n return props.value || [];\n };\n\n const onKeyDown = (event: React.KeyboardEvent, node: TreeNode, level: number, expanded: boolean, leaf: boolean) => {\n if (!isSameNode(event)) return;\n\n const metaKey = event.metaKey || event.ctrlKey;\n\n switch (event.code) {\n case 'Tab':\n onTabKey();\n\n break;\n\n case 'ArrowDown':\n onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n onArrowRight(event, node, expanded, leaf);\n\n break;\n\n case 'ArrowLeft':\n onArrowLeft(event, node, level, expanded, leaf);\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n onEnterKey(event, node, expanded);\n\n break;\n\n default:\n if (!metaKey && isPrintableCharacter(event.key)) {\n searchNodes(event.key, node);\n }\n\n break;\n }\n };\n\n const onArrowDown = (event: React.KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const nodeElement = target.getAttribute('data-pc-section') === 'treetoggle' ? target.closest('[role=\"treeitem\"]') : target;\n\n if (!nodeElement) return;\n\n const listElement = nodeElement.children[1];\n\n if (listElement) {\n focusRowChange(nodeElement, listElement.children[0]);\n } else {\n if (nodeElement.nextElementSibling) {\n focusRowChange(nodeElement, nodeElement.nextElementSibling);\n } else {\n const nextSiblingAncestor = findNextSiblingOfAncestor(nodeElement);\n\n if (nextSiblingAncestor) {\n focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n };\n\n const onArrowUp = (event: React.KeyboardEvent) => {\n const nodeElement = event.target as HTMLElement;\n\n if (nodeElement.previousElementSibling) {\n focusRowChange(nodeElement, nodeElement.previousElementSibling, findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n const parentNodeElement = getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n focusRowChange(nodeElement, parentNodeElement);\n }\n }\n\n event.preventDefault();\n };\n\n const onArrowRight = (event: React.KeyboardEvent, node: TreeNode, expanded: boolean, leaf: boolean) => {\n if (leaf || expanded) return;\n\n (event.currentTarget as HTMLElement).tabIndex = -1;\n\n onNodeToggle(event, node);\n\n setTimeout(() => {\n onArrowDown(event);\n }, 0);\n };\n\n const onArrowLeft = (event: React.KeyboardEvent, node: TreeNode, level: number, expanded: boolean, leaf: boolean) => {\n if (level === 0 && !expanded) {\n return false;\n }\n\n if (expanded && !leaf) {\n onNodeToggle(event, node);\n\n return false;\n }\n\n const target = findBeforeClickableNode(event.currentTarget as HTMLElement);\n\n if (target) {\n focusRowChange(event.currentTarget as HTMLElement, target);\n }\n };\n\n const onEnterKey = (event: React.KeyboardEvent, node: TreeNode, expanded: boolean) => {\n setTabIndexForSelectionMode(event, expanded);\n onClick(event, node, true);\n\n event.preventDefault();\n };\n\n const onTabKey = () => {\n setAllNodesTabIndexes();\n };\n\n const setAllNodesTabIndexes = () => {\n if (!elementRef.current) return;\n\n const nodes = find(elementRef.current as HTMLElement, '[role=\"treeitem\"]');\n\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n [...nodes].forEach((node) => {\n (node as HTMLElement).tabIndex = -1;\n });\n\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n (selectedNodes[0] as HTMLElement).tabIndex = 0;\n\n return;\n }\n\n ([...nodes][0] as HTMLElement).tabIndex = 0;\n };\n\n const setTabIndexForSelectionMode = (event: React.KeyboardEvent, expanded: boolean) => {\n if (props.selectionMode !== null) {\n const parentElement = (event.currentTarget as HTMLElement).parentElement;\n\n if (!parentElement) return;\n\n const elements = [...find(parentElement, '[role=\"treeitem\"]')];\n\n (event.currentTarget as HTMLElement).tabIndex = expanded ? -1 : 0;\n\n if (elements.every((element) => (element as HTMLElement).tabIndex === -1)) {\n (elements[0] as HTMLElement).tabIndex = 0;\n }\n }\n };\n\n const focusRowChange = (firstFocusableRow: Element, currentFocusedRow: Element, lastVisibleDescendant?: Element) => {\n (firstFocusableRow as HTMLElement).tabIndex = -1;\n (currentFocusedRow as HTMLElement).tabIndex = 0;\n\n focus((lastVisibleDescendant || currentFocusedRow) as HTMLElement);\n };\n\n const findBeforeClickableNode = (node: HTMLElement): Element | null => {\n const ulElement = node.closest('ul');\n\n if (!ulElement) return null;\n\n const parentListElement = ulElement.closest('li');\n\n if (parentListElement) {\n const prevNodeButton = findSingle(parentListElement, 'button');\n\n if (prevNodeButton && (prevNodeButton as HTMLElement).style.visibility !== 'hidden') {\n return parentListElement;\n }\n\n if (node.previousElementSibling) {\n return findBeforeClickableNode(node.previousElementSibling as HTMLElement);\n }\n }\n\n return null;\n };\n\n const findNextSiblingOfAncestor = (nodeElement: Element): Element | null => {\n const parentNodeElement = getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n };\n\n const findLastVisibleDescendant = (nodeElement: Element): Element => {\n const childrenListElement = nodeElement.children[1];\n\n if (childrenListElement) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n };\n\n const getParentNodeElement = (nodeElement: Element): Element | null => {\n const parentElement = nodeElement.parentElement;\n\n if (!parentElement) return null;\n\n const parentNodeElement = parentElement.parentElement;\n\n if (!parentNodeElement) return null;\n\n return getAttribute(parentNodeElement, 'role') === 'treeitem' ? parentNodeElement : null;\n };\n\n const onNodeToggle = (event: React.SyntheticEvent, node: TreeNode) => {\n const currentKeys = (expandedKeyState || {}) as TreeExpandedKeys;\n const nodeKey = node.key;\n let newValue: TreeExpandedKeys;\n\n if (currentKeys[nodeKey]) {\n newValue = { ...currentKeys };\n delete newValue[nodeKey];\n\n if (props.onCollapse) {\n props.onCollapse({\n originalEvent: event,\n node\n });\n }\n\n if (props.onToggle) {\n props.onToggle({\n originalEvent: event,\n node\n });\n }\n } else {\n newValue = { ...currentKeys, [nodeKey]: true };\n\n if (props.onExpand) {\n props.onExpand({\n originalEvent: event,\n node\n });\n }\n\n if (props.onToggle) {\n props.onToggle({\n originalEvent: event,\n node\n });\n }\n }\n\n setExpandedKeyState([\n newValue,\n {\n originalEvent: event,\n value: newValue\n }\n ]);\n };\n\n const onNodeClick = (event: React.MouseEvent | React.KeyboardEvent, node: TreeNode, nodeTouched = false) => {\n if (props.selectionMode != null) {\n const metaSelection = nodeTouched ? false : props.metaKeySelection;\n const newValue = metaSelection ? handleSelectionWithMetaKey(event, node) : handleSelectionWithoutMetaKey(event, node);\n\n setSelectedKeyState([\n newValue,\n {\n originalEvent: event,\n value: newValue\n }\n ]);\n\n if (props.onClick) {\n props.onClick({\n originalEvent: event,\n node\n });\n }\n }\n };\n\n const handleSelectionWithMetaKey = (event: React.MouseEvent | React.KeyboardEvent, node: TreeNode) => {\n const metaKey = (event as React.MouseEvent).metaKey || (event as React.KeyboardEvent).ctrlKey;\n const selected = isNodeSelected(node);\n let _selectionKeys: TreeSelectionKeys = {};\n const currentSelection = (selectedKeyState || {}) as TreeSelectionKeys;\n\n if (selected && metaKey) {\n if (isSingleSelectionMode()) {\n _selectionKeys = {};\n } else {\n _selectionKeys = { ...currentSelection };\n delete _selectionKeys[node.key];\n }\n\n if (props.onUnselect) {\n props.onUnselect({\n originalEvent: event,\n node\n });\n }\n } else {\n if (isSingleSelectionMode()) {\n _selectionKeys = {};\n } else if (isMultipleSelectionMode()) {\n _selectionKeys = !metaKey ? {} : { ...currentSelection };\n }\n\n _selectionKeys[node.key] = true;\n\n if (props.onSelect) {\n props.onSelect({\n originalEvent: event,\n node\n });\n }\n }\n\n return _selectionKeys;\n };\n\n const handleSelectionWithoutMetaKey = (event: React.MouseEvent | React.KeyboardEvent, node: TreeNode) => {\n const selected = isNodeSelected(node);\n let _selectionKeys: TreeSelectionKeys = {};\n const currentSelection = (selectedKeyState || {}) as TreeSelectionKeys;\n const nodeKey = node.key;\n\n if (isSingleSelectionMode()) {\n if (selected) {\n _selectionKeys = {};\n\n if (props.onUnselect) {\n props.onUnselect({\n originalEvent: event,\n node\n });\n }\n } else {\n _selectionKeys = { [nodeKey]: true };\n\n if (props.onSelect) {\n props.onSelect({\n originalEvent: event,\n node\n });\n }\n }\n } else {\n if (selected) {\n _selectionKeys = { ...currentSelection };\n delete _selectionKeys[nodeKey];\n\n if (props.onUnselect) {\n props.onUnselect({\n originalEvent: event,\n node\n });\n }\n } else {\n _selectionKeys = { ...currentSelection, [nodeKey]: true };\n\n if (props.onSelect) {\n props.onSelect({\n originalEvent: event,\n node\n });\n }\n }\n }\n\n return _selectionKeys;\n };\n\n const isSingleSelectionMode = () => {\n return props.selectionMode === 'single';\n };\n\n const isMultipleSelectionMode = () => {\n return props.selectionMode === 'multiple';\n };\n\n const isCheckboxSelectionMode = () => {\n return props.selectionMode === 'checkbox';\n };\n\n const isNodeSelected = (node: TreeNode) => {\n if (!props.selectionMode || !selectedKeyState) return false;\n\n if (isCheckboxSelectionMode()) {\n const checkboxKeys = selectedKeyState as TreeCheckboxSelectionKeys;\n\n return checkboxKeys[node.key]?.checked === true;\n }\n\n const keys = selectedKeyState as TreeSelectionKeys;\n\n return keys[node.key] === true;\n };\n\n const onClick = (event: React.MouseEvent | React.KeyboardEvent, node: TreeNode, nodeTouched = false) => {\n if (isCheckboxSelectionMode()) {\n onCheckboxChange(event, node);\n } else {\n onNodeClick(event, node, nodeTouched);\n }\n };\n\n const onCheckboxChange = (event: React.SyntheticEvent, node: TreeNode) => {\n const currentKeys = (selectedKeyState || {}) as TreeCheckboxSelectionKeys;\n const _selectionKeys = { ...currentKeys };\n const nodeKey = node.key;\n\n if (!node) return;\n\n const isChecked = _selectionKeys[nodeKey]?.checked === true;\n const newCheckState = !isChecked;\n\n if (newCheckState) {\n if (props.onUnselect) {\n props.onUnselect({\n originalEvent: event,\n node\n });\n }\n } else {\n if (props.onSelect) {\n props.onSelect({\n originalEvent: event,\n node\n });\n }\n }\n\n propagateDown(node, newCheckState, _selectionKeys);\n\n let parentNode = findParentNode(getNodes(), nodeKey);\n\n while (parentNode) {\n propagateUp(parentNode, _selectionKeys);\n parentNode = findParentNode(getNodes(), parentNode.key);\n }\n\n setSelectedKeyState([\n _selectionKeys,\n {\n originalEvent: event,\n value: _selectionKeys\n }\n ]);\n };\n\n const propagateDown = (node: TreeNode, check: boolean, selectionKeys: TreeCheckboxSelectionKeys) => {\n if (check && node.selectable !== false) {\n selectionKeys[node.key] = { checked: true, partialChecked: false };\n } else {\n delete selectionKeys[node.key];\n }\n\n if (node.children && node.children.length) {\n for (const child of node.children) {\n propagateDown(child, check, selectionKeys);\n }\n }\n };\n\n const propagateUp = (node: TreeNode, selectionKeys: TreeCheckboxSelectionKeys): TreeCheckboxSelectionKeys => {\n if (!node.children || node.children.length === 0) {\n return selectionKeys;\n }\n\n let checkedChildCount = 0;\n let childPartialSelected = false;\n\n for (const child of node.children) {\n if (selectionKeys[child.key]?.checked) {\n checkedChildCount++;\n } else if (selectionKeys[child.key]?.partialChecked) {\n childPartialSelected = true;\n }\n }\n\n if (checkedChildCount === node.children.length) {\n selectionKeys[node.key] = { checked: true, partialChecked: false };\n } else {\n delete selectionKeys[node.key];\n\n if (childPartialSelected || (checkedChildCount > 0 && checkedChildCount !== node.children.length)) {\n selectionKeys[node.key] = { checked: false, partialChecked: true };\n }\n }\n\n return selectionKeys;\n };\n\n const findParentNode = (nodes: TreeNode[], childKey: string, parent: TreeNode | null = null): TreeNode | null => {\n for (const node of nodes) {\n if (node.key === childKey) {\n return parent;\n }\n\n if (node.children) {\n const found = findParentNode(node.children, childKey, node);\n\n if (found !== null) return found;\n }\n }\n\n return null;\n };\n\n const searchNodes = (char: string, currentNode: TreeNode) => {\n searchValue.current = (searchValue.current || '') + char;\n\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n }\n\n if (searchValue.current) {\n if (!elementRef.current) return;\n\n const allTreeItems = [...find(elementRef.current as HTMLElement, '[role=\"treeitem\"]')] as HTMLElement[];\n const currentNodeElement = allTreeItems.find((item) => item.getAttribute('data-node-key') === currentNode.key);\n\n if (!currentNodeElement) return;\n\n const currentIndex = allTreeItems.indexOf(currentNodeElement);\n const searchLower = searchValue.current.toLowerCase();\n let matchedElement: HTMLElement | null = null;\n\n for (let i = currentIndex + 1; i < allTreeItems.length; i++) {\n const item = allTreeItems[i];\n const label = item.textContent?.trim().toLowerCase() || '';\n\n if (label.startsWith(searchLower)) {\n matchedElement = item;\n break;\n }\n }\n\n if (!matchedElement) {\n for (let i = 0; i <= currentIndex; i++) {\n const item = allTreeItems[i];\n const label = item.textContent?.trim().toLowerCase() || '';\n\n if (label.startsWith(searchLower)) {\n matchedElement = item;\n break;\n }\n }\n }\n\n if (matchedElement && matchedElement !== currentNodeElement) {\n allTreeItems.forEach((item) => {\n item.tabIndex = -1;\n });\n\n matchedElement.tabIndex = 0;\n focus(matchedElement);\n }\n }\n\n searchTimeout.current = setTimeout(() => {\n searchValue.current = '';\n searchTimeout.current = null;\n }, 500);\n };\n\n const isSameNode = (event: React.KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const currentTarget = event.currentTarget as HTMLElement;\n\n return currentTarget && (currentTarget.isSameNode(target as Node) || currentTarget.isSameNode(target.closest('[role=\"treeitem\"]') as Node));\n };\n\n const onFilterKeyUp = (event: React.KeyboardEvent) => {\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n event.preventDefault();\n }\n };\n\n const onDragOver = (event: React.DragEvent) => {\n if (props.droppableNodes && allowDrop()) {\n event.dataTransfer.dropEffect = 'copy';\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n event.preventDefault();\n };\n\n const onDragEnter = (event: React.DragEvent) => {\n const { dragNode, dragScope } = TreeDragDropService.getDragState();\n\n if (props.droppableNodes && allowDrop()) {\n setDragHoverState(true);\n\n if (props.onDragEnter) {\n props.onDragEnter({\n originalEvent: event,\n value: props.value || [],\n dragNode,\n dragNodeScope: dragScope\n });\n }\n }\n };\n\n const onDragLeave = (event: React.DragEvent) => {\n if (props.droppableNodes) {\n const rect = event.currentTarget.getBoundingClientRect();\n\n if (event.clientX >= rect.right || event.clientX <= rect.left || event.clientY >= rect.bottom || event.clientY <= rect.top) {\n setDragHoverState(false);\n\n if (props.onDragLeave) {\n const { dragNode, dragScope } = TreeDragDropService.getDragState();\n\n props.onDragLeave({\n originalEvent: event,\n value: props.value || [],\n dragNode,\n dragNodeScope: dragScope\n });\n }\n }\n }\n };\n\n const processTreeDrop = (dragNode: TreeNode, dragNodeIndex: number) => {\n const { dragNodeSubNodes } = TreeDragDropService.getDragState();\n\n if (dragNodeSubNodes) {\n dragNodeSubNodes.splice(dragNodeIndex, 1);\n }\n\n const newValue = [...(props.value || []), dragNode];\n\n if (props.onValueChange) {\n props.onValueChange({\n value: newValue\n });\n }\n\n TreeDragDropService.stopDrag({\n node: dragNode\n });\n };\n\n const onDrop = (event: React.DragEvent) => {\n if (props.droppableNodes) {\n event.preventDefault();\n const { dragNode, dragScope, dragNodeIndex } = TreeDragDropService.getDragState();\n\n if (dragNode && allowDrop()) {\n if (isSameTreeScope(dragScope as string | string[])) {\n TreeDragDropService.stopDrag({\n node: dragNode\n });\n setDragHoverState(false);\n\n return;\n }\n\n if (dragNodeIndex !== null) {\n if (props.validateDrop) {\n if (props.onNodeDrop) {\n props.onNodeDrop({\n originalEvent: event,\n value: props.value || [],\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n }\n } else {\n if (props.onNodeDrop) {\n props.onNodeDrop({\n originalEvent: event,\n value: props.value || [],\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n }\n\n processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n\n setDragHoverState(false);\n };\n\n const allowDrop = (dropNode?: TreeNode) => {\n const { dragNode, dragScope } = TreeDragDropService.getDragState();\n\n if (!dragNode) {\n return false;\n } else if (isValidDragScope(dragScope as string | string[])) {\n let allow = true;\n\n if (dropNode && dragNode === dropNode) {\n allow = false;\n }\n\n return allow;\n } else {\n return false;\n }\n };\n\n const hasCommonScope = (dragScope: string | string[] | undefined, dropScope: string | string[] | undefined) => {\n if (dragScope === undefined && dropScope === undefined) {\n return true;\n } else if (dragScope === undefined || dropScope === undefined) {\n return false;\n }\n\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') {\n return dragScope === dropScope;\n } else if (Array.isArray(dragScope)) {\n return dragScope.indexOf(dropScope) !== -1;\n }\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return dropScope.indexOf(dragScope) !== -1;\n } else if (Array.isArray(dragScope)) {\n for (const ds of dragScope) {\n if (dropScope.indexOf(ds) !== -1) {\n return true;\n }\n }\n\n return false;\n }\n }\n\n return false;\n };\n\n const isValidDragScope = (dragScope: string | string[] | undefined) => {\n if (props.droppableScope === undefined) {\n return true;\n }\n\n return hasCommonScope(dragScope, props.droppableScope);\n };\n\n const isSameTreeScope = (dragScope: string | string[] | undefined) => {\n return hasCommonScope(dragScope, props.draggableScope);\n };\n\n const findNodeInfo = (nodeKey: string) => {\n let level = 1;\n let posInSet = 0;\n let setSize = 0;\n\n const findInNodes = (nodes: unknown[], currentLevel: number): boolean => {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i] as { key: string; children?: unknown[] };\n\n if (node.key === nodeKey) {\n level = currentLevel;\n posInSet = i + 1;\n setSize = nodes.length;\n\n return true;\n }\n\n if (node.children) {\n if (findInNodes(node.children, currentLevel + 1)) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n const nodes = getNodes();\n\n findInNodes(nodes, 1);\n\n return { level, posInSet, setSize };\n };\n\n return {\n state,\n //methods\n getNodes,\n onKeyDown,\n onNodeToggle,\n onNodeClick,\n onClick,\n onCheckboxChange,\n isNodeSelected,\n onFilterKeyUp,\n onDragOver,\n onDragEnter,\n onDragLeave,\n onDrop,\n allowDrop,\n findNodeInfo\n };\n }\n});\n","import type { TreeNode } from '@primereact/types/shared/tree';\n\ntype DragState = {\n isDragging: boolean;\n dragNode: TreeNode | null;\n dragScope: string | string[] | null;\n dragNodeSubNodes: TreeNode[] | null;\n dragNodeIndex: number | null;\n sourceTreeId: string | null;\n};\n\ntype DragEvent = {\n node: TreeNode;\n scope?: string | string[] | null;\n subNodes?: TreeNode[];\n index?: number;\n sourceTreeId?: string;\n};\n\nconst dragState: DragState = {\n isDragging: false,\n dragNode: null,\n dragScope: null,\n dragNodeSubNodes: null,\n dragNodeIndex: null,\n sourceTreeId: null\n};\n\nconst dragStartHandlers = new Set<(event: DragEvent) => void>();\nconst dragStopHandlers = new Set<(event: DragEvent) => void>();\n\nexport const TreeDragDropService = {\n getDragState() {\n return dragState;\n },\n\n startDrag(event: DragEvent) {\n dragState.isDragging = true;\n dragState.dragNode = event.node;\n dragState.dragScope = event.scope ?? null;\n dragState.dragNodeSubNodes = event.subNodes ?? null;\n dragState.dragNodeIndex = event.index ?? null;\n dragState.sourceTreeId = event.sourceTreeId ?? null;\n\n dragStartHandlers.forEach((handler) => handler(event));\n },\n\n stopDrag(event: DragEvent) {\n dragState.isDragging = false;\n dragState.dragNode = null;\n dragState.dragScope = null;\n dragState.dragNodeSubNodes = null;\n dragState.dragNodeIndex = null;\n dragState.sourceTreeId = null;\n\n dragStopHandlers.forEach((handler) => handler(event));\n },\n\n onDragStart(handler: (event: DragEvent) => void) {\n dragStartHandlers.add(handler);\n\n return () => dragStartHandlers.delete(handler);\n },\n\n onDragStop(handler: (event: DragEvent) => void) {\n dragStopHandlers.add(handler);\n\n return () => dragStopHandlers.delete(handler);\n }\n};\n","import type { useTreeProps } from '@primereact/types/shared/tree';\n\nexport const defaultProps: useTreeProps = {\n value: [],\n expandedKeys: undefined,\n defaultExpandedKeys: undefined,\n selectionKeys: undefined,\n defaultSelectionKeys: undefined,\n selectionMode: undefined,\n metaKeySelection: false,\n highlightOnSelect: false,\n scrollHeight: undefined,\n draggableNodes: undefined,\n droppableNodes: undefined,\n draggableScope: undefined,\n droppableScope: undefined,\n validateDrop: false,\n onExpandedChange: undefined,\n onSelectionChange: undefined,\n onToggle: undefined,\n onExpand: undefined,\n onCollapse: undefined,\n onClick: undefined,\n onSelect: undefined,\n onUnselect: undefined,\n onNodeDrop: undefined,\n onDragEnter: undefined,\n onDragLeave: undefined,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","find","findSingle","focus","getAttribute","isPrintableCharacter","React","dragState","dragStartHandlers","dragStopHandlers","TreeDragDropService","event","_a","_b","_c","_d","handler","defaultProps","useTree","withHeadless","defaultProps","props","elementRef","_a","_b","defaultExpandedKeyRef","expandedKeyState","setExpandedKeyState","useControlledState","defaultSelectedKeyRef","selectedKeyState","setSelectedKeyState","searchTimeout","searchValue","dragHoverState","setDragHoverState","dragStopCleanup","TreeDragDropService","state","getNodes","onKeyDown","event","node","level","expanded","leaf","isSameNode","metaKey","onTabKey","onArrowDown","onArrowUp","onArrowRight","onArrowLeft","onEnterKey","isPrintableCharacter","searchNodes","target","nodeElement","listElement","focusRowChange","nextSiblingAncestor","findNextSiblingOfAncestor","findLastVisibleDescendant","parentNodeElement","getParentNodeElement","onNodeToggle","findBeforeClickableNode","setTabIndexForSelectionMode","onClick","setAllNodesTabIndexes","nodes","find","hasSelectedNode","selectedNodes","parentElement","elements","element","firstFocusableRow","currentFocusedRow","lastVisibleDescendant","focus","ulElement","parentListElement","prevNodeButton","findSingle","childrenListElement","lastChildElement","getAttribute","currentKeys","nodeKey","newValue","__spreadValues","__spreadProps","onNodeClick","nodeTouched","handleSelectionWithMetaKey","handleSelectionWithoutMetaKey","selected","isNodeSelected","_selectionKeys","currentSelection","isSingleSelectionMode","isMultipleSelectionMode","isCheckboxSelectionMode","onCheckboxChange","newCheckState","propagateDown","parentNode","findParentNode","propagateUp","check","selectionKeys","child","checkedChildCount","childPartialSelected","childKey","parent","found","char","currentNode","allTreeItems","currentNodeElement","item","currentIndex","searchLower","matchedElement","i","currentTarget","onFilterKeyUp","onDragOver","allowDrop","onDragEnter","dragNode","dragScope","onDragLeave","rect","processTreeDrop","dragNodeIndex","dragNodeSubNodes","onDrop","isSameTreeScope","dropNode","isValidDragScope","allow","hasCommonScope","dropScope","ds","posInSet","setSize","findInNodes","currentLevel"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { TreeCheckboxSelectionKeys, TreeExpandedKeys, TreeNode, TreeSelectionKeys } from '@primereact/types/shared/tree';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare const useTree: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/tree").useTreeProps, unknown, {
|
|
4
|
+
state: {
|
|
5
|
+
expandedKey: TreeExpandedKeys | undefined;
|
|
6
|
+
selectedKey: TreeSelectionKeys | TreeCheckboxSelectionKeys | undefined;
|
|
7
|
+
dragHover: boolean;
|
|
8
|
+
};
|
|
9
|
+
getNodes: () => TreeNode[];
|
|
10
|
+
onKeyDown: (event: React.KeyboardEvent, node: TreeNode, level: number, expanded: boolean, leaf: boolean) => void;
|
|
11
|
+
onNodeToggle: (event: React.SyntheticEvent, node: TreeNode) => void;
|
|
12
|
+
onNodeClick: (event: React.MouseEvent | React.KeyboardEvent, node: TreeNode, nodeTouched?: boolean) => void;
|
|
13
|
+
onClick: (event: React.MouseEvent | React.KeyboardEvent, node: TreeNode, nodeTouched?: boolean) => void;
|
|
14
|
+
onCheckboxChange: (event: React.SyntheticEvent, node: TreeNode) => void;
|
|
15
|
+
isNodeSelected: (node: TreeNode) => boolean;
|
|
16
|
+
onFilterKeyUp: (event: React.KeyboardEvent) => void;
|
|
17
|
+
onDragOver: (event: React.DragEvent) => void;
|
|
18
|
+
onDragEnter: (event: React.DragEvent) => void;
|
|
19
|
+
onDragLeave: (event: React.DragEvent) => void;
|
|
20
|
+
onDrop: (event: React.DragEvent) => void;
|
|
21
|
+
allowDrop: (dropNode?: TreeNode) => boolean;
|
|
22
|
+
findNodeInfo: (nodeKey: string) => {
|
|
23
|
+
level: number;
|
|
24
|
+
posInSet: number;
|
|
25
|
+
setSize: number;
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
File without changes
|