UNPKG

@table-library/react-table-library

Version:
3 lines (2 loc) 12.6 kB
import*as e from"react";import{a as c,s as t,b as l,g as n,t as g,c as r,d as I,o as b,T as C,H as i,_ as u,r as a}from"./styles-492c6342.js";import{d}from"./defineProperty-9f9de5d0.js";import s from"clsx";import{jsx as m,css as o}from"@emotion/react";import{t as Z}from"./toConsumableArray-25e5c43c.js";var A=null,G=function(){return A||(A=e.createContext(null))},W=function(){return e.useContext(A)};function X(e,c){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);c&&(l=l.filter((function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable}))),t.push.apply(t,l)}return t}function V(e){for(var c=1;c<arguments.length;c++){var t=null!=arguments[c]?arguments[c]:{};c%2?X(Object(t),!0).forEach((function(c){d(e,c,t[c])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):X(Object(t)).forEach((function(c){Object.defineProperty(e,c,Object.getOwnPropertyDescriptor(t,c))}))}return e}var y=function(b,C){var i=e.useContext(c);if(!i)throw new Error("No Layout Context.");var u=i.tableElementRef,a=i.tableMemoryRef,d=i.layout,s=e.useRef(null),m=e.useRef(null),o=e.useRef(""),A=e.useRef(null),G=e.useRef(!1),W=e.useCallback((function(e){var c;e.preventDefault(),o.current=u.current.style.getPropertyValue("--data-table-library_grid-template-columns"),G.current=!0,A.current=s.current.offsetWidth-e.pageX,null===(c=s.current)||void 0===c||c.querySelector(".resizer-area").classList.add("active")}),[u]),X=e.useCallback((function(e){if(G.current){e.preventDefault();var c=A.current+e.pageX,l=function(e,c,t,l){var b=n(t).map(g).filter((function(e){return!e.isHide})),C=b.findIndex((function(c){return c.index===e})),i=(b=b.map((function(e,c){return V(V({},e),{},{index:c})}))).reduce((function(e,c,t){return e||(t>C&&0!==c.width?c:e)}),null),u=b.reduce((function(e,c){return e+c.width}),0),a=b[C].minWidth,d=l>a&&0!==l?l:a,s=d-b[C].width,m=b.map((function(e,c){if(i&&C===c)return i.width-s>a?d:e.width;if((null==i?void 0:i.index)===c){var t=e.width-s;return t>a?t:e.width}return e.width})),o=u-m.reduce((function(e,c){return e+c}),0);m[C]=m[C]+o;var A=!1,G=b.slice(0).reverse().map((function(e,t){var l=m.slice(0).reverse()[t],n=l/u*100;return e.isStiff||null!=c&&c.horizontalScroll?"".concat(l,"px"):A?"minmax(0, ".concat(n,"%)"):(A=!0,"minmax(0, 1fr)")})).slice(0).reverse().join(" "),W=function(e,c){if(Z(Array.from(e.classList)).includes("pin-left")){var t=m.reduce((function(e,t,l){return l>=c?e:e+t}),0);e.style.left="".concat(t,"px")}if(Z(Array.from(e.classList)).includes("pin-right")){var l=m.reduceRight((function(e,t,l){return l<=c?e:e+t}),0);e.style.right="".concat(l,"px")}};return r(t,W),I(t,W),G}(b,d,u,c);t(l,u,a)}}),[b,d,u,a]),y=e.useCallback((function(){var e;G.current=!1;var c=u.current.style.getPropertyValue("--data-table-library_grid-template-columns");if(o.current!==c){l(c,d);var t=n(u).map(g);a.current.dataColumns=t}null===(e=s.current)||void 0===e||e.querySelector(".resizer-area").classList.remove("active")}),[d,u,a]);return e.useEffect((function(){var e=m.current;return e&&(e.addEventListener("mousedown",W),document.addEventListener("mousemove",X),document.addEventListener("mouseup",y)),function(){e&&(e.removeEventListener("mousedown",W),document.removeEventListener("mousemove",X),document.removeEventListener("mouseup",y))}}),[C,W,X,y]),{cellRef:s,resizeRef:m}},p=["index","className","hide","pinLeft","pinRight","stiff","isFooter","includePreviousColSpan","previousColSpans","gridColumnStart","gridColumnEnd","resize","role","children","style"];function h(e,c){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);c&&(l=l.filter((function(c){return Object.getOwnPropertyDescriptor(e,c).enumerable}))),t.push.apply(t,l)}return t}function x(e){for(var c=1;c<arguments.length;c++){var t=null!=arguments[c]?arguments[c]:{};c%2?h(Object(t),!0).forEach((function(c){d(e,c,t[c])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):h(Object(t)).forEach((function(c){Object.defineProperty(e,c,Object.getOwnPropertyDescriptor(t,c))}))}return e}var R=function(e,c){return c.find((function(c){return c.index===e}))},v=function(r){var I=r.index,d=r.className,Z=r.hide,A=r.pinLeft,G=r.pinRight,W=r.stiff,X=r.isFooter,V=r.includePreviousColSpan,h=r.previousColSpans,v=r.gridColumnStart,J=r.gridColumnEnd,f=r.resize,H=r.role,Y=void 0===H?"columnheader":H,N=r.children,B=r.style,F=b(r,p),z=e.useContext(C);!function(r,I){var b=e.useContext(c);if(!b)throw new Error("No Layout Context.");var C=b.layout,i=b.tableElementRef,u=b.tableMemoryRef;e.useLayoutEffect((function(){var e=u.current.dataColumns,c=n(i).map(g),b=R(r,e),a=(null==b?void 0:b.isHide)===!!I;if(null!=e&&e.length&&!a){var d=c.filter((function(e){return!e.isHide})).map((function(c){if(c.isStiff||null!=C&&C.horizontalScroll){var t=R(c.index,e);return t?"".concat(t.width||2*t.minWidth,"px"):"minmax(0px, 1fr)"}return"minmax(0px, 1fr)"})).join(" ");t(d,i,u),l(d,C);var s=n(i).map(g);u.current.dataColumns=s}}),[r,I,C,i,u])}(I,Z);var S=y(I,Z),Q=S.cellRef,w=S.resizeRef,D=v&&J,k=D?J-v-1:0,L=V?v+h:v,j=V?J+h:J;return m(e.Fragment,null,m(i,u({role:Y,"data-table-library_th":"","data-hide":!!Z,"data-resize-min-width":"boolean"==typeof f||null==(null==f?void 0:f.minWidth)?75:f.minWidth,style:x(x({},D?{gridColumnStart:L,gridColumnEnd:j}:{}),B),css:o(null==z?void 0:z.BaseCell," ",X?null==z?void 0:z.FooterCell:null==z?void 0:z.HeaderCell,";"+("production"===process.env.NODE_ENV?"":";label:HeaderCell;"),"production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkhlYWRlckNlbGwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdFb0IiLCJmaWxlIjoiSGVhZGVyQ2VsbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBjcyBmcm9tICdjbHN4JztcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xyXG5pbXBvcnQgeyBIZWFkZXJDZWxsQ29udGFpbmVyIH0gZnJvbSAnQHRhYmxlLWxpYnJhcnkvcmVhY3QtdGFibGUtbGlicmFyeS9jb21tb24vY29tcG9uZW50cy9DZWxsJztcclxuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnQHRhYmxlLWxpYnJhcnkvcmVhY3QtdGFibGUtbGlicmFyeS9jb21tb24vY29udGV4dC9UaGVtZSc7XHJcbmltcG9ydCB7IExheW91dENvbnRleHQsIHByb3BhZ2F0ZVJlc2l6ZWRMYXlvdXQsIHNldFJlc2l6ZWRMYXlvdXQsIH0gZnJvbSAnQHRhYmxlLWxpYnJhcnkvcmVhY3QtdGFibGUtbGlicmFyeS9jb21tb24vY29udGV4dCc7XHJcbmltcG9ydCB7IHJlc2l6ZXJTdHlsZSB9IGZyb20gJ0B0YWJsZS1saWJyYXJ5L3JlYWN0LXRhYmxlLWxpYnJhcnkvcmVzaXplL3N0eWxlcyc7XHJcbmltcG9ydCB7IHVzZVJlc2l6ZSB9IGZyb20gJ0B0YWJsZS1saWJyYXJ5L3JlYWN0LXRhYmxlLWxpYnJhcnkvcmVzaXplL3VzZVJlc2l6ZSc7XHJcbmltcG9ydCB7IHRvRGF0YUNvbHVtbiwgZ2V0SGVhZGVyQ29sdW1ucywgfSBmcm9tICdAdGFibGUtbGlicmFyeS9yZWFjdC10YWJsZS1saWJyYXJ5L2NvbW1vbi91dGlsL2NvbHVtbnMnO1xyXG5jb25zdCBnZXRQcmVzZXJ2ZWRDb2x1bW4gPSAoaW5kZXgsIHByZXNlcnZlZERhdGFDb2x1bW5zKSA9PiB7XHJcbiAgICBjb25zdCBmaW5kUHJlc2VydmVkRGF0YUNvbHVtbiA9IChkYXRhQ29sdW1uKSA9PiBkYXRhQ29sdW1uLmluZGV4ID09PSBpbmRleDtcclxuICAgIGNvbnN0IHByZXNlcnZlZERhdGFDb2x1bW4gPSBwcmVzZXJ2ZWREYXRhQ29sdW1ucy5maW5kKGZpbmRQcmVzZXJ2ZWREYXRhQ29sdW1uKTtcclxuICAgIHJldHVybiBwcmVzZXJ2ZWREYXRhQ29sdW1uO1xyXG59O1xyXG5jb25zdCB1c2VVcGRhdGVMYXlvdXQgPSAoaW5kZXgsIGhpZGUpID0+IHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KExheW91dENvbnRleHQpO1xyXG4gICAgaWYgKCFjb250ZXh0KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBMYXlvdXQgQ29udGV4dC4nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgbGF5b3V0LCB0YWJsZUVsZW1lbnRSZWYsIHRhYmxlTWVtb3J5UmVmIH0gPSBjb250ZXh0O1xyXG4gICAgUmVhY3QudXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBwcmVzZXJ2ZWREYXRhQ29sdW1ucyA9IHRhYmxlTWVtb3J5UmVmLmN1cnJlbnQuZGF0YUNvbHVtbnM7XHJcbiAgICAgICAgY29uc3QgZGF0YUNvbHVtbnMgPSBnZXRIZWFkZXJDb2x1bW5zKHRhYmxlRWxlbWVudFJlZikubWFwKHRvRGF0YUNvbHVtbik7XHJcbiAgICAgICAgY29uc3QgdGhpc1ByZXNlcnZlZERhdGFDb2x1bW4gPSBnZXRQcmVzZXJ2ZWRDb2x1bW4oaW5kZXgsIHByZXNlcnZlZERhdGFDb2x1bW5zKTtcclxuICAgICAgICBjb25zdCBoaWRlU3RhdHVzRGlkTm90Q2hhbmdlID0gdGhpc1ByZXNlcnZlZERhdGFDb2x1bW4/LmlzSGlkZSA9PT0gISFoaWRlO1xyXG4gICAgICAgIGlmICghcHJlc2VydmVkRGF0YUNvbHVtbnM/Lmxlbmd0aCB8fCBoaWRlU3RhdHVzRGlkTm90Q2hhbmdlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGFDb2x1bW5zID0gZGF0YUNvbHVtbnMuZmlsdGVyKChkYXRhQ29sdW1uKSA9PiAhZGF0YUNvbHVtbi5pc0hpZGUpO1xyXG4gICAgICAgIGNvbnN0IGdldFBhcnRpYWxSZXNpemVkTGF5b3V0ID0gKGRhdGFDb2x1bW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKGRhdGFDb2x1bW4uaXNTdGlmZiB8fCBsYXlvdXQ/Lmhvcml6b250YWxTY3JvbGwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByZXNlcnZlZERhdGFDb2x1bW4gPSBnZXRQcmVzZXJ2ZWRDb2x1bW4oZGF0YUNvbHVtbi5pbmRleCwgcHJlc2VydmVkRGF0YUNvbHVtbnMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmVzZXJ2ZWREYXRhQ29sdW1uKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnbWlubWF4KDBweCwgMWZyKSc7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7cHJlc2VydmVkRGF0YUNvbHVtbi53aWR0aCB8fCBwcmVzZXJ2ZWREYXRhQ29sdW1uLm1pbldpZHRoICogMn1weGA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ21pbm1heCgwcHgsIDFmciknO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCByZXNpemVkTGF5b3V0ID0gdmlzaWJsZURhdGFDb2x1bW5zLm1hcChnZXRQYXJ0aWFsUmVzaXplZExheW91dCkuam9pbignICcpO1xyXG4gICAgICAgIHNldFJlc2l6ZWRMYXlvdXQocmVzaXplZExheW91dCwgdGFibGVFbGVtZW50UmVmLCB0YWJsZU1lbW9yeVJlZik7XHJcbiAgICAgICAgcHJvcGFnYXRlUmVzaXplZExheW91dChyZXNpemVkTGF5b3V0LCBsYXlvdXQpO1xyXG4gICAgICAgIGNvbnN0IG5ld1ByZXNlcnZlZERhdGFDb2x1bW5zID0gZ2V0SGVhZGVyQ29sdW1ucyh0YWJsZUVsZW1lbnRSZWYpLm1hcCh0b0RhdGFDb2x1bW4pO1xyXG4gICAgICAgIHRhYmxlTWVtb3J5UmVmLmN1cnJlbnQuZGF0YUNvbHVtbnMgPSBuZXdQcmVzZXJ2ZWREYXRhQ29sdW1ucztcclxuICAgIH0sIFtpbmRleCwgaGlkZSwgbGF5b3V0LCB0YWJsZUVsZW1lbnRSZWYsIHRhYmxlTWVtb3J5UmVmXSk7XHJcbn07XHJcbmV4cG9ydCBjb25zdCBIZWFkZXJDZWxsID0gKHsgaW5kZXgsIGNsYXNzTmFtZSwgaGlkZSwgcGluTGVmdCwgcGluUmlnaHQsIHN0aWZmLCBpc0Zvb3RlciwgaW5jbHVkZVByZXZpb3VzQ29sU3BhbiwgcHJldmlvdXNDb2xTcGFucywgZ3JpZENvbHVtblN0YXJ0LCBncmlkQ29sdW1uRW5kLCByZXNpemUsIHJvbGUgPSAnY29sdW1uaGVhZGVyJywgY2hpbGRyZW4sIHN0eWxlLCAuLi5yZXN0IH0pID0+IHtcclxuICAgIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xyXG4gICAgdXNlVXBkYXRlTGF5b3V0KGluZGV4LCBoaWRlKTtcclxuICAgIGNvbnN0IHsgY2VsbFJlZiwgcmVzaXplUmVmIH0gPSB1c2VSZXNpemUoaW5kZXgsIGhpZGUpO1xyXG4gICAgY29uc3QgaGFzQ29sU3BhbiA9IGdyaWRDb2x1bW5TdGFydCAmJiBncmlkQ29sdW1uRW5kO1xyXG4gICAgY29uc3QgY29sU3BhbiA9IGhhc0NvbFNwYW4gPyBncmlkQ29sdW1uRW5kIC0gZ3JpZENvbHVtblN0YXJ0IC0gMSA6IDA7XHJcbiAgICBjb25zdCBjb21wdXRlZEdyaWRDb2x1bW5TdGFydCA9IGluY2x1ZGVQcmV2aW91c0NvbFNwYW5cclxuICAgICAgICA/IGdyaWRDb2x1bW5TdGFydCArIHByZXZpb3VzQ29sU3BhbnNcclxuICAgICAgICA6IGdyaWRDb2x1bW5TdGFydDtcclxuICAgIGNvbnN0IGNvbXB1dGVkR3JpZENvbHVtbkVuZCA9IGluY2x1ZGVQcmV2aW91c0NvbFNwYW5cclxuICAgICAgICA/IGdyaWRDb2x1bW5FbmQgKyBwcmV2aW91c0NvbFNwYW5zXHJcbiAgICAgICAgOiBncmlkQ29sdW1uRW5kO1xyXG4gICAgcmV0dXJuICg8PlxuICAgICAgPEhlYWRlckNlbGxDb250YWluZXIgcm9sZT17cm9sZX0gZGF0YS10YWJsZS1saWJyYXJ5X3RoPVwiXCIgZGF0YS1oaWRlPXshIWhpZGV9IGRhdGEtcmVzaXplLW1pbi13aWR0aD17dHlwZW9mIHJlc2l6ZSA9PT0gJ2Jvb2xlYW4nIHx8IHJlc2l6ZT8ubWluV2lkdGggPT0gbnVsbCA/IDc1IDogcmVzaXplLm1pbldpZHRofSBzdHlsZT17e1xyXG4gICAgICAgICAgICAuLi4oaGFzQ29sU3BhblxyXG4gICAgICAgICAgICAgICAgPyB7IGdyaWRDb2x1bW5TdGFydDogY29tcHV0ZWRHcmlkQ29sdW1uU3RhcnQsIGdyaWRDb2x1bW5FbmQ6IGNvbXB1dGVkR3JpZENvbHVtbkVuZCB9XHJcbiAgICAgICAgICAgICAgICA6IHt9KSxcclxuICAgICAgICAgICAgLi4uc3R5bGUsXHJcbiAgICAgICAgfX0gY3NzPXtjc3MgYFxuICAgICAgICAgICR7dGhlbWU/LkJhc2VDZWxsfVxuICAgICAgICAgICR7aXNGb290ZXIgPyB0aGVtZT8uRm9vdGVyQ2VsbCA6IHRoZW1lPy5IZWFkZXJDZWxsfVxuICAgICAgICBgfSBjbGFzc05hbWU9e2NzKCd0aCcsIGNsYXNzTmFtZSwge1xyXG4gICAgICAgICAgICBzdGlmZixcclxuICAgICAgICAgICAgaGlkZSxcclxuICAgICAgICAgICAgcmVzaXplLFxyXG4gICAgICAgICAgICAncGluLWxlZnQnOiBwaW5MZWZ0LFxyXG4gICAgICAgICAgICAncGluLXJpZ2h0JzogcGluUmlnaHQsXHJcbiAgICAgICAgfSl9IHJlZj17Y2VsbFJlZn0gey4uLnJlc3R9PlxuICAgICAgICA8ZGl2PntjaGlsZHJlbn08L2Rpdj5cbiAgICAgICAge3Jlc2l6ZSAmJiAhaGlkZSAmJiAoPGRpdiBjbGFzc05hbWU9XCJyZXNpemVyLWFyZWFcIiByZWY9e3Jlc2l6ZVJlZn0gY3NzPXtyZXNpemVyU3R5bGUocmVzaXplKS5hcmVhfT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJlc2l6ZXItaGFuZGxlXCIgY3NzPXtyZXNpemVyU3R5bGUocmVzaXplKS5oYW5kbGV9Lz5cbiAgICAgICAgICA8L2Rpdj4pfVxuICAgICAgPC9IZWFkZXJDZWxsQ29udGFpbmVyPlxuXG4gICAgICBcbiAgICAgIHtBcnJheS5mcm9tKHsgbGVuZ3RoOiBjb2xTcGFuIH0sICgpID0+ICg8SGVhZGVyQ2VsbENvbnRhaW5lciBjbGFzc05hbWU9e2NzKCd0aCcsICdoaWRlJywgJ2NvbHNwYW4nKX0vPikpfVxuICAgIDwvPik7XHJcbn07XHJcbiJdfQ== */"),className:s("th",d,{stiff:W,hide:Z,resize:f,"pin-left":A,"pin-right":G}),ref:Q},F),m("div",null,N),f&&!Z&&m("div",{className:"resizer-area",ref:w,css:a(f).area},m("span",{className:"resizer-handle",css:a(f).handle}))),Array.from({length:k},(function(){return m(i,{className:s("th","hide","colspan")})})))};export{v as H,G as c,W as u}; //# sourceMappingURL=HeaderCell-1d879c3c.js.map