UNPKG

carbon-react

Version:

A library of reusable React components for easily building user interfaces.

2 lines (1 loc) 2.77 kB
import{jsx as r}from"react/jsx-runtime";import e,{useState as t,useRef as n,useEffect as o}from"react";import a from"../../icon/icon.style.js";import i from"./flat-table-body-draggable.style.js";import{FlatTableCell as l}from"../flat-table-cell/flat-table-cell.component.js";import p from"invariant";import d from"../../../__internal__/utils/helpers/array-move/index.js";import{DragDropProvider as c}from"../__internal__/sortable/drag-drop-provider.js";import"@atlaskit/pragmatic-drag-and-drop/element/adapter";import"@atlaskit/pragmatic-drag-and-drop/combine";function s(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function b(r){return e.isValidElement(r)&&"FlatTableRow"===r.type.displayName}const f=f=>{var{children:g,getOrder:y}=f,m=function(r,e){if(null==r)return{};var t,n,o=function(r,e){if(null==r)return{};var t,n,o={},a=Object.keys(r);for(n=0;n<a.length;n++)t=a[n],e.indexOf(t)>=0||(o[t]=r[t]);return o}(r,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(r);for(n=0;n<a.length;n++)t=a[n],e.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(r,t)&&(o[t]=r[t])}return o}(f,["children","getOrder"]);const[u,O]=t(e.Children.toArray(g)),j=n(!0);o((()=>{j.current?j.current=!1:O(e.Children.toArray(g))}),[g]);const h=u.every(b);return p(h,"FlatTableBodyDraggable only accepts children of type FlatTableRow."),r(i,(v=function(r){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})))),n.forEach((function(e){s(r,e,t[e])}))}return r}({"data-component":"flat-table-body-draggable","data-role":"flat-table-body-draggable"},m),x={children:r(c,{onDrop:({dragged:r,target:e})=>{if(e){const r=u.map((r=>r.props.id));null==y||y(r)}else O(d({array:u,startIndex:u.findIndex((e=>String(e.props.id)===r.id)),endIndex:r.initialIndex}))},onDropTargetChange:({dragged:r,target:e})=>{e&&O(d({array:u,startIndex:u.findIndex((e=>String(e.props.id)===r.id)),endIndex:u.findIndex((r=>String(r.props.id)===e.id))}))},children:u.map(((t,n)=>e.cloneElement(t,{id:`${t.props.id}`,draggableProps:{index:n}},[r(l,{children:r(a,{type:"drag"})},t.props.id),t.props.children])))})},x=null!=x?x:{},Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(x)):function(r){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e.push.apply(e,t)}return e}(Object(x)).forEach((function(r){Object.defineProperty(v,r,Object.getOwnPropertyDescriptor(x,r))})),v));var v,x};export{f as FlatTableBodyDraggable,f as default};