@toolbox-web/grid 3.5.0 → 3.5.2
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/all.js +1 -1
- package/all.js.map +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/lib/features/registry.js +1 -1
- package/lib/plugins/clipboard/index.js +1 -1
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/column-virtualization/index.js +1 -1
- package/lib/plugins/context-menu/index.js +1 -1
- package/lib/plugins/editing/index.js +1 -1
- package/lib/plugins/export/index.js +1 -1
- package/lib/plugins/filtering/index.js +1 -1
- package/lib/plugins/grouping-columns/index.js +1 -1
- package/lib/plugins/grouping-rows/index.js +1 -1
- package/lib/plugins/master-detail/index.js +1 -1
- package/lib/plugins/multi-sort/index.js +1 -1
- package/lib/plugins/pinned-columns/index.js +1 -1
- package/lib/plugins/pinned-rows/index.js +1 -1
- package/lib/plugins/pivot/index.js +1 -1
- package/lib/plugins/print/index.js +1 -1
- package/lib/plugins/reorder-columns/index.js +1 -1
- package/lib/plugins/responsive/index.js +1 -1
- package/lib/plugins/row-drag-drop/index.js +1 -1
- package/lib/plugins/selection/index.js +1 -1
- package/lib/plugins/server-side/index.js +1 -1
- package/lib/plugins/shell/index.js +1 -1
- package/lib/plugins/sticky-rows/index.js +1 -1
- package/lib/plugins/tooltip/index.js +1 -1
- package/lib/plugins/tree/index.js +1 -1
- package/lib/plugins/undo-redo/index.js +1 -1
- package/lib/plugins/visibility/index.js +1 -1
- package/package.json +1 -1
- package/umd/grid.all.umd.js +1 -1
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +1 -1
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/clipboard.umd.js +1 -1
- package/umd/plugins/clipboard.umd.js.map +1 -1
package/lib/features/registry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{setFeatureResolver as o}from"@toolbox-web/grid";function e(o,e,t,n){console.warn(function(o,e,t,n){return`${function(o,e){return`[tbw-grid${o?`#${o}`:""}${e?`:${e}`:""}]`}(t,n)} ${o}: ${e}\n\n → More info: ${function(o){return`https://toolboxjs.com/grid/errors#${o.toLowerCase()}`}(o)}`}(o,e,t,n))}var t="3.5.
|
|
1
|
+
import{setFeatureResolver as o}from"@toolbox-web/grid";function e(o,e,t,n){console.warn(function(o,e,t,n){return`${function(o,e){return`[tbw-grid${o?`#${o}`:""}${e?`:${e}`:""}]`}(t,n)} ${o}: ${e}\n\n → More info: ${function(o){return`https://toolboxjs.com/grid/errors#${o.toLowerCase()}`}(o)}`}(o,e,t,n))}var t="3.5.2",n=Symbol.for(`@toolbox-web/grid:feature-registry@${t}/v1`),r=Symbol.for(`@toolbox-web/grid:feature-registry-warned@${t}/v1`);function i(o,e){let t=Reflect.get(globalThis,o);return void 0===t&&(t=e(),Reflect.set(globalThis,o,t)),t}var s=i(n,()=>/* @__PURE__ */new Map),c=i(r,()=>/* @__PURE__ */new Set),f=()=>"undefined"!=typeof window&&("localhost"===window.location?.hostname||"127.0.0.1"===window.location?.hostname);function a(o,t,n){f()&&s.has(o)&&!n?.override&&e("TBW030",`Feature "${o}" was re-registered. Previous registration overwritten.`),s.set(o,{factory:t,name:o})}function u(o){return s.has(o)}function d(o){return s.get(o)?.factory}function l(){return Array.from(s.keys())}var w={undoRedo:["editing"],clipboard:["selection"]};function g(o,t){const n=s.get(o);if(n)return n.factory(t);f()&&!c.has(o)&&(c.add(o),e("TBW031",`Feature "${o}" is configured but not registered.\nAdd this import to enable it:\n\n import '@toolbox-web/grid/features/${o.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}';\n`))}function b(o){const t=[];for(const[e,r]of Object.entries(o))void 0!==r&&!1!==r&&t.push(e);!function(o){const t=new Set(o);for(const n of o){const o=w[n];if(o)for(const r of o)t.has(r)||f()&&e("TBW032",`Feature "${n}" requires "${r}" to be enabled. Add "${r}" to your features configuration.`)}}(t);const n=[];for(const e of t){const t=g(e,o[e]);t&&n.push(t)}return function(o){if(o.length<2)return o;const e=/* @__PURE__ */new Map;for(const s of o)e.set(s.name,s);const t=[],n=/* @__PURE__ */new Set,r=/* @__PURE__ */new Set,i=o=>{if(n.has(o)||r.has(o))return;r.add(o);const s=o.constructor.dependencies??[];for(const t of s){const o=e.get(t.name);o&&i(o)}r.delete(o),n.add(o),t.push(o)};for(const s of o)i(s);return t}(n)}function $(){s.clear(),c.clear()}o(b);export{$ as clearFeatureRegistry,g as createPluginFromFeature,b as createPluginsFromFeatures,d as getFeatureFactory,l as getRegisteredFeatures,u as isFeatureRegistered,a as registerFeature};
|
|
2
2
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=/* @__PURE__ */new WeakMap;function t(e){return"__proto__"===e||"constructor"===e||"prototype"===e}var n=/* @__PURE__ */new Map;function r(e){if(-1===e.indexOf("."))return null;let t=n.get(e);return void 0===t&&(t=Object.freeze(e.split(".")),n.set(e,t)),t}function o(e,n){if(null==e)return;const o=r(n),i=e;return null===o?t(n)?void 0:i[n]:Object.prototype.hasOwnProperty.call(i,n)?i[n]:function(e,n){let r=e;for(let o=0;o<n.length;o++){if(null==r||"object"!=typeof r)return;const e=n[o];if(t(e))return;r=r[e]}return r}(i,o)}function i(e,n,o){if(null==e||"object"!=typeof e)return!1;const i=r(n),s=e;return null===i?!t(n)&&(s[n]=o,!0):Object.prototype.hasOwnProperty.call(s,n)?(s[n]=o,!0):function(e,n,r){if(null==e||"object"!=typeof e)return!1;let o=e;for(let s=0;s<n.length-1;s++){const e=n[s];if(t(e))return!1;const r=o[e];if(null==r||"object"!=typeof r)return!1;o=r}const i=n[n.length-1];return!t(i)&&(o[i]=r,!0)}(s,i,o)}function s(t,n,r=-1){if(!n.valueAccessor)return o(t,n.field);if("object"!=typeof t||null===t)return n.valueAccessor({row:t,column:n,rowIndex:r});const i=t,s=n.field;let l=e.get(i);if(l){const e=l.get(s);if(void 0!==e)return e.v}else l=/* @__PURE__ */new Map,e.set(i,l);const a=n.valueAccessor({row:t,column:n,rowIndex:r});return l.set(s,{v:a}),a}function l(t,n){t&&(n?e.get(t)?.delete(n):e.delete(t))}function a(e,t){return`[tbw-grid${e?`#${e}`:""}${t?`:${t}`:""}]`}function c(e,t,n,r){return`${a(n,r)} ${e}: ${t}\n\n → More info: ${function(e){return`https://toolboxjs.com/grid/errors#${e.toLowerCase()}`}(e)}`}var u="__otorp__|__retteGenifed__|__retteSenifed__|rotcurtsnoc|wodniw|sihTlabolg|labolg|ssecorp|noitcnuF|tropmi|lave|tcelfeR|yxorP|rorrE|stnemugra|tnemucod|noitacol|eikooc|egarotSlacol|egarotSnoisses|BDdexedni|hctef|tseuqeRpttHLMX|tekcoSbeW|rekroW|rekroWderahS|rekroWecivreS|renepo|tnerap|pot|semarf|fles".split("|").map(e=>e.split("").reverse().join(""));new RegExp(`__(proto|defineGetter|defineSetter)|${u.slice(3).join("|")}|this\\b`);function d(e){return e&&"string"==typeof e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}var f=new Set("script|iframe|object|embed|form|input|button|textarea|select|link|meta|base|style|template|slot|portal|frame|frameset|applet|noscript|noembed|plaintext|xmp|listing|math".split("|")),h=/^on\w+$/i,g=new Set("href|src|action|formaction|data|srcdoc|xlink:href|poster|srcset".split("|")),p=/^\s*(javascript|vbscript|data|blob):/i;function m(e){const t=document.createElement("template");return e&&"string"==typeof e&&(t.innerHTML=e,function(e){const t=[],n=e.querySelectorAll("*");for(const r of n){const e=r.tagName.toLowerCase();if(f.has(e)){t.push(r);continue}if(("svg"===e||"http://www.w3.org/2000/svg"===r.namespaceURI)&&Array.from(r.attributes).some(e=>h.test(e.name)||"href"===e.name||"xlink:href"===e.name)){t.push(r);continue}const n=[];for(const t of r.attributes){const e=t.name.toLowerCase();h.test(e)?n.push(t.name):"is"!==e?(g.has(e)&&p.test(t.value)||"style"===e&&/expression\s*\(|javascript:|behavior\s*:/i.test(t.value))&&n.push(t.name):n.push(t.name)}n.forEach(e=>r.removeAttribute(e))}t.forEach(e=>e.remove())}(t.content)),t.content}var w={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:"",filterActive:"",print:"🖨️"};var b=class{static dependencies;static manifest;aliases;version="3.5.0";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#e;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}get resolvedConfig(){return this.#e?this.config:{...this.defaultConfig,...this.userConfig}}mergeConfigsFrom(e){if(0===e.length)return;const t={...this.userConfig},n={};for(const r of Object.keys(t))n[r]=this;for(const r of e){const e=r.userConfig;for(const[o,i]of Object.entries(e)){if(void 0===i)continue;if(!(o in t)){t[o]=i,n[o]=r;continue}if(t[o]===i)continue;const e=n[o]?.constructor.name??this.constructor.name,s=r.constructor.name,l=c("TBW025",`Cannot merge plugin configs for "${this.name}": conflicting value for "${o}" supplied by both ${e} and ${s}. Pass the option on a single instance, or remove the duplicate.`,void 0,this.name);throw new Error(l)}}Object.assign(this.userConfig,t)}refreshUserConfigFrom(e){const t=this.userConfig,n={...e.userConfig};for(const r of Object.keys(t))delete t[r];Object.assign(t,n)}attach(e){this.#e?.abort(),this.#e=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#e?.abort(),this.#e=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,t){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:t,bubbles:!0}))}emitCancelable(e,t){const n=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(n),n.defaultPrevented}on(e,t){this.grid?._pluginManager?.subscribe(this,e,t)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,t){this.grid?._pluginManager?.emitPluginEvent(e,t)}broadcast(e,t){this.emitPluginEvent(e,t),this.emit(e,t)}queryBoolean(e,t=null){const n=this.grid?.query?.(e,t);return Array.isArray(n)?n.some(Boolean):!!n}requestRender(){this.grid?.requestRender?.()}requestColumnsRender(){this.grid?.requestColumnsRender?.()}requestRenderWithFocus(){this.grid?.requestRenderWithFocus?.()}requestAfterRender(){this.grid?.requestAfterRender?.()}requestVirtualRefresh(){this.grid?.requestVirtualRefresh?.()}get rows(){return this.grid?.rows??[]}get sourceRows(){return this.grid?.sourceRows??[]}get columns(){return this.grid?.columns??[]}get visibleColumns(){return this.grid?._visibleColumns??[]}get gridElement(){return this.grid?._hostElement}get disconnectSignal(){return this.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...w,...e}}t(e,t){return this.grid?.effectiveConfig?.locale?.[e]??t}get translate(){return(e,t)=>this.t(e,t)}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===e||"off"===e)return!1;if(!0===e||"on"===e)return!0;const t=this.gridElement;return!t||"0"!==getComputedStyle(t).getPropertyValue("--tbw-animation-enabled").trim()}get animationDuration(){const e=this.gridElement;if(e){const t=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),n=parseInt(t,10);if(!isNaN(n))return n}return 200}setIcon(e,t,n){e.dataset.icon=t.replace(/([A-Z])/g,"-$1").toLowerCase(),"collapse"===t?e.dataset.expanded="":"expand"===t&&delete e.dataset.expanded;const r=this.#t(t,n);var o,i;void 0!==r?"string"==typeof r?(o=e,(i=r)&&"string"==typeof i?-1!==i.indexOf("<")||-1!==i.indexOf("&")?o.replaceChildren(m(i)):o.textContent=i:o.replaceChildren()):r instanceof HTMLElement&&e.replaceChildren(r.cloneNode(!0)):e.innerHTML=""}#t(e,t){return void 0!==t?t:this.grid?.gridConfig?.icons?.[e]}updateSortIndicator(e,t){e.querySelector('[part~="sort-indicator"], .sort-indicator')?.remove();const n=document.createElement("span");n.setAttribute("part","sort-indicator"),n.className="sort-indicator",t?(e.setAttribute("aria-sort","asc"===t?"ascending":"descending"),e.setAttribute("data-sort",t),this.setIcon(n,"asc"===t?"sortAsc":"sortDesc")):(e.setAttribute("aria-sort","none"),e.removeAttribute("data-sort"),this.setIcon(n,"sortNone"));const r=e.querySelector(".tbw-filter-btn")??e.querySelector(".resize-handle");return r?e.insertBefore(n,r):e.appendChild(n),n}warn(e,t){void 0!==t?console.warn(c(e,t,this.gridElement.id,this.name)):console.warn(`${a(this.gridElement.id,this.name)} ${e}`)}throwDiagnostic(e,t){throw new Error(c(e,t,this.gridElement.id,this.name))}};function y(e,t,n=!0){let r=e;if(n&&(r=r.filter(e=>!e.hidden&&!e.field.startsWith("__")&&!0!==e.utility)),t?.length){const e=new Set(t);r=r.filter(t=>e.has(t.field))}return r}var v="data-tbw-clip";function C(e,t,n){const r=e?`<thead><tr>${e.map(e=>`<th>${d(e)}</th>`).join("")}</tr></thead>`:"",o=`<tbody>${t.map(e=>`<tr>${e.map(e=>`<td>${d(e)}</td>`).join("")}</tr>`).join("")}</tbody>`;return`<table ${v}="${function(e){return btoa(encodeURIComponent(JSON.stringify(e)))}(n)}">${r}${o}</table>`}async function x(e,t){if(t&&"undefined"!=typeof ClipboardItem&&navigator.clipboard?.write)try{return await navigator.clipboard.write([new ClipboardItem({"text/plain":new Blob([e],{type:"text/plain"}),"text/html":new Blob([t],{type:"text/html"})})]),!0}catch{}try{return await navigator.clipboard.writeText(e),!0}catch(s){n="TBW100",r=`Clipboard API failed: ${s}`,console.warn(c(n,r,o,i));const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",t.style.pointerEvents="none",document.body.appendChild(t),t.select();const l=document.execCommand("copy");return document.body.removeChild(t),l}var n,r,o,i}function E(e,t){const n=t.delimiter??"\t",r=t.newline??"\n",o=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),i=o.length,s=[];let l=[],a=0,c=!1,u=!1;const d=e=>{const t=o.slice(a,e);return u?function(e){let t="",n=!1;for(let r=0;r<e.length;r++){const o=e[r];'"'===o?n?'"'===e[r+1]?(t+='"',r++):n=!1:n=!0:t+=o}return t}(t):t},f=()=>{(l.length>1||l.some(e=>""!==e.trim()))&&s.push(l),l=[]};for(let h=0;h<i;h++){const e=o[h];'"'===e?(u=!0,c?'"'===o[h+1]?h++:c=!1:c=!0):e!==n||c?e!==r||c||(l.push(d(h)),a=h+1,u=!1,f()):(l.push(d(h)),a=h+1,u=!1)}return l.push(d(i)),f(),s}function S(e,t){if(!1===e)return{accepted:!1,reason:"column"};if("function"==typeof e){const n=e(t);if(!1===n)return{accepted:!1,reason:"cell"};if(n&&"object"==typeof n&&"value"in n)return{accepted:!0,value:n.value}}return{accepted:!0,value:t.value}}function R(e,t){0!==t.length&&e.dispatchEvent?.(new CustomEvent("paste-rejected",{detail:{rejected:t},bubbles:!0}))}function j(e,t){const{rows:n,rawRows:r,target:s,fields:a,fillSelection:c,sourceFields:u}=e;if(!s||0===n.length)return;const d=r??n,f=t.rows,h=t.effectiveConfig.columns??[],g=h.map(e=>e.field),p=new Map(h.map(e=>[e.field,e])),[m=()=>!1]=t.query("getCellEditableResolver"),w=/* @__PURE__ */new Map;let b=f.length;const y=[],v=(e,t,n,r,i)=>{if(!t||!m(t,r))return;const s=S(p.get(t)?.onPaste,{value:n,field:t,row:r,rowIndex:e,oldValue:o(r,t),sourceField:i});if(!s.accepted)return void y.push({field:t,rowIndex:e,row:r,value:n,reason:s.reason});let l=w.get(e);l||(l={},w.set(e,l)),l[t]=A(s.value)};if(c&&s.bounds){const e=d.length;for(let t=s.row;t<=s.bounds.endRow&&!(t>=f.length);t++){const n=d[(t-s.row)%e],r=n.length;if(0===r)continue;const o=f[t];a.forEach((e,i)=>v(t,e,n[i%r],o,u?.[i%r]))}}else{const e=s.bounds?s.bounds.endRow:1/0;d.forEach((t,n)=>{const r=s.row+n;if(r>e)return;if(s.bounds&&r>=f.length)return;!s.bounds&&r>=b&&(b=r+1);const o=f[r]??{};t.forEach((e,t)=>v(r,a[t],e,o,u?.[t]))})}if(0===w.size&&b===f.length)return void R(t,y);if(b>f.length){const e=[...f];for(;e.length<b;){const t={};g.forEach(e=>t[e]=""),e.push(t)}t.rows=e}const C=t.rows,x=[];let E=!1;for(const[o,S]of w){const e=C[o];if(!e)continue;let n;try{n=t.getRowId(e)}catch{n=void 0}if(null==n){for(const[t,n]of Object.entries(S))i(e,t,n),l(e,t);E=!0}else x.push({id:n,changes:S})}x.length>0?t.updateRows(x,"paste"):E&&b===f.length&&(t.rows=[...C]),R(t,y)}function A(e){if(null===e||"object"!=typeof e)return e;try{return structuredClone(e)}catch{return e}}var $=class extends b{static manifest={queries:[{type:"clipboard:copy",description:"Triggers a copy operation and returns the copied text"}]};static dependencies=[{name:"selection",required:!1,reason:"Enables copy/paste of selected cells instead of entire grid"}];name="clipboard";get defaultConfig(){return{includeHeaders:!1,delimiter:"\t",newline:"\n",quoteStrings:!1}}lastCopied=null;#n=null;attach(e){super.attach(e),e.addEventListener("paste",e=>this.#r(e),{signal:this.disconnectSignal})}detach(){this.lastCopied=null,this.#n=null}handleQuery(e){if("clipboard:copy"===e.type)return this.copy(),!0}onKeyDown(e){return!(!e.ctrlKey&&!e.metaKey||"c"!==e.key)&&(e.preventDefault(),this.#o(e.target),!0)}#o(e){const t=this.#i();if(t&&0===t.ranges.length){let n,r;if(t.anchor)n=t.anchor.row,r=this.visibleColumns[t.anchor.col]?.field;else{const t=this.#s(e);t&&(n=t.row,r=this.columns[t.col]?.field)}if(null==n||null==r)return;return void this.copy({rowIndices:[n],columns:[r]})}this.copy()}#r(e){if(this.#l(e.target))return;const t=e.clipboardData?.getData("text/plain");if(!t)return;e.preventDefault();const n=E(t,this.config),r=this.#i(),o=r?.ranges??[],i=o[0];let s=1/0,l=1/0,a=-1/0,c=-1/0;for(const v of o)s=Math.min(s,v.from.row,v.to.row),a=Math.max(a,v.from.row,v.to.row),l=Math.min(l,v.from.col,v.to.col),c=Math.max(c,v.from.col,v.to.col);const u=r?.anchor??null,d=i?s:u?.row??0,f=i?l:u?.col??0,h=!i||"range"!==r?.mode&&"row"!==r?.mode||s===a&&l===c?null:{endRow:a,endCol:c},g=h?.endCol??this.visibleColumns.length-1;let p,m;if(this.#a(n),this.#n&&this.#n.text===t&&this.#n.rawRows.length===n.length)p=this.#n.rawRows,m=this.#n.fields;else{const t=function(e){if(!e||-1===e.indexOf("data-tbw-clip"))return null;try{const t=e.match(new RegExp(`${v}="([A-Za-z0-9+/=]*)"`))?.[1];if(!t)return null;const n=JSON.parse(decodeURIComponent(atob(t)));return n&&Array.isArray(n.rows)&&Array.isArray(n.fields)?n:null}catch{return null}}(e.clipboardData?.getData("text/html"));t&&t.rows.length===n.length&&(p=t.rows,m=t.fields)}const w=this.visibleColumns[f],b=w?{row:d,col:f,field:w.field,bounds:h}:null,y=!0===this.config.fillSelection&&null!==h,C=[],x=n[0]?.length??0,S=y?g-f+1:x;for(let v=0;v<S&&f+v<=g;v++){const e=this.visibleColumns[f+v];e&&C.push(e.field)}const R={rows:n,text:t,target:b,fields:C,fillSelection:y,rawRows:p,sourceFields:m};this.emit("paste",R),this.#c(R)}#c(e){if(!this.grid)return;const{pasteHandler:t}=this.config;null!==t&&(t??j)(e,this.grid)}#a(e){if(!this.config.includeHeaders)return;if(e.length<=1)return;const t=e[0];if(0===t.length)return;const n=this.#u();for(const r of t)if(!n.has(r))return;e.shift()}#u(){const e=/* @__PURE__ */new Set;for(const t of this.columns){const n=t.header||t.field;n&&e.add(n)}return e}#l(e){return e instanceof Element&&!!e.closest('input, textarea, select, [contenteditable=""], [contenteditable="true"]')}#i(){return(this.grid?.query("getSelection"))?.[0]}#d(e){const t=this.#i();let n,r;if(e?.columns)n=y(this.columns,e.columns);else if(t?.ranges.length&&"row"!==t.mode){const e=t.ranges[t.ranges.length-1],r=Math.min(e.from.col,e.to.col),o=Math.max(e.from.col,e.to.col);n=y(this.visibleColumns.slice(r,o+1))}else n=y(this.columns);if(e?.rowIndices)r=function(e,t){return t?.length?[...t].sort((e,t)=>e-t).map(t=>e[t]).filter(e=>null!=e):e}(this.rows,e.rowIndices);else if(t?.ranges.length){const e=t.ranges[t.ranges.length-1],n=Math.min(e.from.row,e.to.row),o=Math.max(e.from.row,e.to.row);r=[];for(let t=n;t<=o;t++){const e=this.rows[t];e&&r.push(e)}}else r=this.rows;return{columns:n,rows:r}}#f(e,t,n){return this.#h(this.#g(e,t,n),n)}#g(e,t,n){const r=n?.includeHeaders??this.config.includeHeaders??!1,o=n?.processCell??this.config.processCell;return{header:r?e.map(e=>e.header||e.field):null,rows:t.map(t=>e.map(e=>{const n=s(t,e);return o?o(n,e.field,t):this.#p(e,n,t)}))}}#h(e,t){const n=t?.delimiter??this.config.delimiter??"\t",r=t?.newline??this.config.newline??"\n",o=[];e.header&&o.push(e.header.join(n));for(const i of e.rows)o.push(i.join(n));return o.join(r)}#p(e,t,n){if(e.format)try{const r=e.format(t,n);return null==r?"":String(r)}catch{}if(e.renderer||e.viewRenderer){const t=this.#m(e.field,n);if(null!=t)return t}return function(e){return null==e?"":e instanceof Date?e.toISOString():"object"==typeof e?JSON.stringify(e):String(e)}(t)}#m(e,t){const n=this.gridElement;if(!n)return null;const r=this.rows.indexOf(t);if(-1===r)return null;const o=n.querySelector(`.cell[data-row="${r}"][data-field="${e}"]`);return o?o.textContent?.trim()??null:null}#s(e){const t=e.closest(".cell[data-field]");if(!t)return null;const n=t.dataset.field,r=t.dataset.row;if(!n||!r)return null;const o=parseInt(r,10);if(isNaN(o))return null;const i=this.columns.findIndex(e=>e.field===n);return-1===i?null:{row:o,col:i}}getSelectionAsText(e){const{columns:t,rows:n}=this.#d(e);return 0===t.length||0===n.length?"":this.#f(t,n,e)}async copy(e){const{columns:t,rows:n}=this.#d(e);if(0===t.length||0===n.length)return"";const r=this.#g(t,n,e),o=this.#h(r,e),i=n.map(e=>t.map(t=>A(s(e,t)))),l=t.map(e=>e.field);return await x(o,C(r.header,r.rows,{v:1,fields:l,rows:i})),this.lastCopied={text:o,timestamp:Date.now()},this.#n={text:o,rawRows:i,fields:l},this.emit("copy",{text:o,rowCount:n.length,columnCount:t.length}),o}async copyRows(e,t){return 0===e.length?"":this.copy({...t,rowIndices:e})}async paste(){const e=await async function(){try{return await navigator.clipboard.readText()}catch{return""}}();return e?E(e,this.config):null}getLastCopied(){return this.lastCopied}};export{$ as ClipboardPlugin,j as defaultPasteHandler,R as emitPasteRejected,S as resolveColumnPaste};
|
|
1
|
+
var e=/* @__PURE__ */new WeakMap;function t(e){return"__proto__"===e||"constructor"===e||"prototype"===e}var n=/* @__PURE__ */new Map;function r(e){if(-1===e.indexOf("."))return null;let t=n.get(e);return void 0===t&&(t=Object.freeze(e.split(".")),n.set(e,t)),t}function o(e,n){if(null==e)return;const o=r(n),i=e;return null===o?t(n)?void 0:i[n]:Object.prototype.hasOwnProperty.call(i,n)?i[n]:function(e,n){let r=e;for(let o=0;o<n.length;o++){if(null==r||"object"!=typeof r)return;const e=n[o];if(t(e))return;r=r[e]}return r}(i,o)}function i(e,n,o){if(null==e||"object"!=typeof e)return!1;const i=r(n),s=e;return null===i?!t(n)&&(s[n]=o,!0):Object.prototype.hasOwnProperty.call(s,n)?(s[n]=o,!0):function(e,n,r){if(null==e||"object"!=typeof e)return!1;let o=e;for(let s=0;s<n.length-1;s++){const e=n[s];if(t(e))return!1;const r=o[e];if(null==r||"object"!=typeof r)return!1;o=r}const i=n[n.length-1];return!t(i)&&(o[i]=r,!0)}(s,i,o)}function s(t,n,r=-1){if(!n.valueAccessor)return o(t,n.field);if("object"!=typeof t||null===t)return n.valueAccessor({row:t,column:n,rowIndex:r});const i=t,s=n.field;let l=e.get(i);if(l){const e=l.get(s);if(void 0!==e)return e.v}else l=/* @__PURE__ */new Map,e.set(i,l);const a=n.valueAccessor({row:t,column:n,rowIndex:r});return l.set(s,{v:a}),a}function l(t,n){t&&(n?e.get(t)?.delete(n):e.delete(t))}function a(e,t){return`[tbw-grid${e?`#${e}`:""}${t?`:${t}`:""}]`}function c(e,t,n,r){return`${a(n,r)} ${e}: ${t}\n\n → More info: ${function(e){return`https://toolboxjs.com/grid/errors#${e.toLowerCase()}`}(e)}`}var u="__otorp__|__retteGenifed__|__retteSenifed__|rotcurtsnoc|wodniw|sihTlabolg|labolg|ssecorp|noitcnuF|tropmi|lave|tcelfeR|yxorP|rorrE|stnemugra|tnemucod|noitacol|eikooc|egarotSlacol|egarotSnoisses|BDdexedni|hctef|tseuqeRpttHLMX|tekcoSbeW|rekroW|rekroWderahS|rekroWecivreS|renepo|tnerap|pot|semarf|fles".split("|").map(e=>e.split("").reverse().join(""));new RegExp(`__(proto|defineGetter|defineSetter)|${u.slice(3).join("|")}|this\\b`);function d(e){return e&&"string"==typeof e?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):""}var f=new Set("script|iframe|object|embed|form|input|button|textarea|select|link|meta|base|style|template|slot|portal|frame|frameset|applet|noscript|noembed|plaintext|xmp|listing|math".split("|")),h=/^on\w+$/i,p=new Set("href|src|action|formaction|data|srcdoc|xlink:href|poster|srcset".split("|")),g=/^\s*(javascript|vbscript|data|blob):/i;function m(e){const t=document.createElement("template");return e&&"string"==typeof e&&(t.innerHTML=e,function(e){const t=[],n=e.querySelectorAll("*");for(const r of n){const e=r.tagName.toLowerCase();if(f.has(e)){t.push(r);continue}if(("svg"===e||"http://www.w3.org/2000/svg"===r.namespaceURI)&&Array.from(r.attributes).some(e=>h.test(e.name)||"href"===e.name||"xlink:href"===e.name)){t.push(r);continue}const n=[];for(const t of r.attributes){const e=t.name.toLowerCase();h.test(e)?n.push(t.name):"is"!==e?(p.has(e)&&g.test(t.value)||"style"===e&&/expression\s*\(|javascript:|behavior\s*:/i.test(t.value))&&n.push(t.name):n.push(t.name)}n.forEach(e=>r.removeAttribute(e))}t.forEach(e=>e.remove())}(t.content)),t.content}var w={expand:"▶",collapse:"▼",sortAsc:"▲",sortDesc:"▼",sortNone:"⇅",submenuArrow:"▶",dragHandle:"⋮⋮",toolPanel:"☰",filter:"",filterActive:"",print:"🖨️"};var b=class{static dependencies;static manifest;aliases;version="3.5.2";styles;cellRenderers;headerRenderers;cellEditors;grid;config;userConfig;#e;get defaultConfig(){return{}}constructor(e={}){this.userConfig=e}get resolvedConfig(){return this.#e?this.config:{...this.defaultConfig,...this.userConfig}}mergeConfigsFrom(e){if(0===e.length)return;const t={...this.userConfig},n={};for(const r of Object.keys(t))n[r]=this;for(const r of e){const e=r.userConfig;for(const[o,i]of Object.entries(e)){if(void 0===i)continue;if(!(o in t)){t[o]=i,n[o]=r;continue}if(t[o]===i)continue;const e=n[o]?.constructor.name??this.constructor.name,s=r.constructor.name,l=c("TBW025",`Cannot merge plugin configs for "${this.name}": conflicting value for "${o}" supplied by both ${e} and ${s}. Pass the option on a single instance, or remove the duplicate.`,void 0,this.name);throw new Error(l)}}Object.assign(this.userConfig,t)}refreshUserConfigFrom(e){const t=this.userConfig,n={...e.userConfig};for(const r of Object.keys(t))delete t[r];Object.assign(t,n)}attach(e){this.#e?.abort(),this.#e=new AbortController,this.grid=e,this.config={...this.defaultConfig,...this.userConfig}}detach(){this.#e?.abort(),this.#e=void 0}getPlugin(e){return this.grid?.getPlugin(e)}emit(e,t){this.grid?.dispatchEvent?.(new CustomEvent(e,{detail:t,bubbles:!0}))}emitCancelable(e,t){const n=new CustomEvent(e,{detail:t,bubbles:!0,cancelable:!0});return this.grid?.dispatchEvent?.(n),n.defaultPrevented}on(e,t){this.grid?._pluginManager?.subscribe(this,e,t)}off(e){this.grid?._pluginManager?.unsubscribe(this,e)}emitPluginEvent(e,t){this.grid?._pluginManager?.emitPluginEvent(e,t)}broadcast(e,t){this.emitPluginEvent(e,t),this.emit(e,t)}queryBoolean(e,t=null){const n=this.grid?.query?.(e,t);return Array.isArray(n)?n.some(Boolean):!!n}requestRender(){this.grid?.requestRender?.()}requestColumnsRender(){this.grid?.requestColumnsRender?.()}requestRenderWithFocus(){this.grid?.requestRenderWithFocus?.()}requestAfterRender(){this.grid?.requestAfterRender?.()}requestVirtualRefresh(){this.grid?.requestVirtualRefresh?.()}get rows(){return this.grid?.rows??[]}get sourceRows(){return this.grid?.sourceRows??[]}get columns(){return this.grid?.columns??[]}get visibleColumns(){return this.grid?._visibleColumns??[]}get gridElement(){return this.grid?._hostElement}get disconnectSignal(){return this.#e?.signal??this.grid?.disconnectSignal}get gridIcons(){const e=this.grid?.gridConfig?.icons??{};return{...w,...e}}t(e,t){return this.grid?.effectiveConfig?.locale?.[e]??t}get translate(){return(e,t)=>this.t(e,t)}get isAnimationEnabled(){const e=this.grid?.effectiveConfig?.animation?.mode??"reduced-motion";if(!1===e||"off"===e)return!1;if(!0===e||"on"===e)return!0;const t=this.gridElement;return!t||"0"!==getComputedStyle(t).getPropertyValue("--tbw-animation-enabled").trim()}get animationDuration(){const e=this.gridElement;if(e){const t=getComputedStyle(e).getPropertyValue("--tbw-animation-duration").trim(),n=parseInt(t,10);if(!isNaN(n))return n}return 200}setIcon(e,t,n){e.dataset.icon=t.replace(/([A-Z])/g,"-$1").toLowerCase(),"collapse"===t?e.dataset.expanded="":"expand"===t&&delete e.dataset.expanded;const r=this.#t(t,n);var o,i;void 0!==r?"string"==typeof r?(o=e,(i=r)&&"string"==typeof i?-1!==i.indexOf("<")||-1!==i.indexOf("&")?o.replaceChildren(m(i)):o.textContent=i:o.replaceChildren()):r instanceof HTMLElement&&e.replaceChildren(r.cloneNode(!0)):e.innerHTML=""}#t(e,t){return void 0!==t?t:this.grid?.gridConfig?.icons?.[e]}updateSortIndicator(e,t){e.querySelector('[part~="sort-indicator"], .sort-indicator')?.remove();const n=document.createElement("span");n.setAttribute("part","sort-indicator"),n.className="sort-indicator",t?(e.setAttribute("aria-sort","asc"===t?"ascending":"descending"),e.setAttribute("data-sort",t),this.setIcon(n,"asc"===t?"sortAsc":"sortDesc")):(e.setAttribute("aria-sort","none"),e.removeAttribute("data-sort"),this.setIcon(n,"sortNone"));const r=e.querySelector(".tbw-filter-btn")??e.querySelector(".resize-handle");return r?e.insertBefore(n,r):e.appendChild(n),n}warn(e,t){void 0!==t?console.warn(c(e,t,this.gridElement.id,this.name)):console.warn(`${a(this.gridElement.id,this.name)} ${e}`)}throwDiagnostic(e,t){throw new Error(c(e,t,this.gridElement.id,this.name))}};function y(e,t,n=!0){let r=e;if(n&&(r=r.filter(e=>!e.hidden&&!e.field.startsWith("__")&&!0!==e.utility)),t?.length){const e=new Set(t);r=r.filter(t=>e.has(t.field))}return r}var v="data-tbw-clip";function C(e,t,n){const r=e?`<thead><tr>${e.map(e=>`<th>${d(e)}</th>`).join("")}</tr></thead>`:"",o=`<tbody>${t.map(e=>`<tr>${e.map(e=>`<td>${d(e)}</td>`).join("")}</tr>`).join("")}</tbody>`;return`<table ${v}="${function(e){return btoa(encodeURIComponent(JSON.stringify(e)))}(n)}">${r}${o}</table>`}async function x(e,t){if(t&&"undefined"!=typeof ClipboardItem&&navigator.clipboard?.write)try{return await navigator.clipboard.write([new ClipboardItem({"text/plain":new Blob([e],{type:"text/plain"}),"text/html":new Blob([t],{type:"text/html"})})]),!0}catch{}try{return await navigator.clipboard.writeText(e),!0}catch(s){n="TBW100",r=`Clipboard API failed: ${s}`,console.warn(c(n,r,o,i));const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",t.style.pointerEvents="none",document.body.appendChild(t),t.select();const l=document.execCommand("copy");return document.body.removeChild(t),l}var n,r,o,i}function E(e,t){const n=t.delimiter??"\t",r=t.newline??"\n",o=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),i=o.length,s=[];let l=[],a=0,c=!1,u=!1;const d=e=>{const t=o.slice(a,e);return u?function(e){let t="",n=!1;for(let r=0;r<e.length;r++){const o=e[r];'"'===o?n?'"'===e[r+1]?(t+='"',r++):n=!1:n=!0:t+=o}return t}(t):t},f=()=>{(l.length>1||l.some(e=>""!==e.trim()))&&s.push(l),l=[]};for(let h=0;h<i;h++){const e=o[h];'"'===e?(u=!0,c?'"'===o[h+1]?h++:c=!1:c=!0):e!==n||c?e!==r||c||(l.push(d(h)),a=h+1,u=!1,f()):(l.push(d(h)),a=h+1,u=!1)}return l.push(d(i)),f(),s}function S(e,t){if(!1===e)return{accepted:!1,reason:"column"};if("function"==typeof e){const n=e(t);if(!1===n)return{accepted:!1,reason:"cell"};if(n&&"object"==typeof n&&"value"in n)return{accepted:!0,value:n.value}}return{accepted:!0,value:t.value}}function R(e,t){0!==t.length&&e.dispatchEvent?.(new CustomEvent("paste-rejected",{detail:{rejected:t},bubbles:!0}))}function j(e,t){const{rows:n,rawRows:r,target:s,fields:a,fillSelection:c,sourceFields:u}=e;if(!s||0===n.length)return;const d=r??n,f=t.rows,h=t.effectiveConfig.columns??[],p=h.map(e=>e.field),g=new Map(h.map(e=>[e.field,e])),[m=()=>!1]=t.query("getCellEditableResolver"),w=/* @__PURE__ */new Map;let b=f.length;const y=[],v=(e,t,n,r,i)=>{if(!t||!m(t,r))return;const s=S(g.get(t)?.onPaste,{value:n,field:t,row:r,rowIndex:e,oldValue:o(r,t),sourceField:i});if(!s.accepted)return void y.push({field:t,rowIndex:e,row:r,value:n,reason:s.reason});let l=w.get(e);l||(l={},w.set(e,l)),l[t]=A(s.value)};if(c&&s.bounds){const e=d.length;for(let t=s.row;t<=s.bounds.endRow&&!(t>=f.length);t++){const n=d[(t-s.row)%e],r=n.length;if(0===r)continue;const o=f[t];a.forEach((e,i)=>v(t,e,n[i%r],o,u?.[i%r]))}}else{const e=s.bounds?s.bounds.endRow:1/0;d.forEach((t,n)=>{const r=s.row+n;if(r>e)return;if(s.bounds&&r>=f.length)return;!s.bounds&&r>=b&&(b=r+1);const o=f[r]??{};t.forEach((e,t)=>v(r,a[t],e,o,u?.[t]))})}if(0===w.size&&b===f.length)return void R(t,y);if(b>f.length){const e=[...f];for(;e.length<b;){const t={};p.forEach(e=>t[e]=""),e.push(t)}t.rows=e}const C=t.rows,x=[];let E=!1;for(const[o,S]of w){const e=C[o];if(!e)continue;let n;try{n=t.getRowId(e)}catch{n=void 0}if(null==n){for(const[t,n]of Object.entries(S))i(e,t,n),l(e,t);E=!0}else x.push({id:n,changes:S})}x.length>0?t.updateRows(x,"paste"):E&&b===f.length&&(t.rows=[...C]),R(t,y)}function A(e){if(null===e||"object"!=typeof e)return e;try{return structuredClone(e)}catch{return e}}var M=class extends b{static manifest={queries:[{type:"clipboard:copy",description:"Triggers a copy operation and returns the copied text"}]};static dependencies=[{name:"selection",required:!1,reason:"Enables copy/paste of selected cells instead of entire grid"}];name="clipboard";get defaultConfig(){return{includeHeaders:!1,delimiter:"\t",newline:"\n",quoteStrings:!1}}lastCopied=null;#n=null;attach(e){super.attach(e),e.addEventListener("paste",e=>this.#r(e),{signal:this.disconnectSignal})}detach(){this.lastCopied=null,this.#n=null}handleQuery(e){if("clipboard:copy"===e.type)return this.copy(),!0}onKeyDown(e){return!(!e.ctrlKey&&!e.metaKey||"c"!==e.key)&&(e.preventDefault(),this.#o(e.target),!0)}#o(e){const t=this.#i();if(t&&0===t.ranges.length){let n,r;if(t.anchor)n=t.anchor.row,r=this.visibleColumns[t.anchor.col]?.field;else{const t=this.#s(e);t&&(n=t.row,r=this.columns[t.col]?.field)}if(null==n||null==r)return;return void this.copy({rowIndices:[n],columns:[r]})}this.copy()}#r(e){if(this.#l(e.target))return;const t=e.clipboardData?.getData("text/plain");if(!t)return;e.preventDefault();const n=E(t,this.config),r=this.#i(),o=r?.ranges??[],i=o[0];let s=1/0,l=1/0,a=-1/0,c=-1/0;for(const v of o)s=Math.min(s,v.from.row,v.to.row),a=Math.max(a,v.from.row,v.to.row),l=Math.min(l,v.from.col,v.to.col),c=Math.max(c,v.from.col,v.to.col);const u=r?.anchor??null,d=i?s:u?.row??0,f=i?l:u?.col??0,h=!i||"range"!==r?.mode&&"row"!==r?.mode||s===a&&l===c?null:{endRow:a,endCol:c},p=h?.endCol??this.visibleColumns.length-1;let g,m;if(this.#a(n),this.#n&&this.#n.text===t&&this.#n.rawRows.length===n.length)g=this.#n.rawRows,m=this.#n.fields;else{const t=function(e){if(!e||-1===e.indexOf("data-tbw-clip"))return null;try{const t=e.match(new RegExp(`${v}="([A-Za-z0-9+/=]*)"`))?.[1];if(!t)return null;const n=JSON.parse(decodeURIComponent(atob(t)));return n&&Array.isArray(n.rows)&&Array.isArray(n.fields)?n:null}catch{return null}}(e.clipboardData?.getData("text/html"));t&&t.rows.length===n.length&&(g=t.rows,m=t.fields)}const w=this.visibleColumns[f],b=w?{row:d,col:f,field:w.field,bounds:h}:null,y=!0===this.config.fillSelection&&null!==h,C=[],x=n[0]?.length??0,S=y?p-f+1:x;for(let v=0;v<S&&f+v<=p;v++){const e=this.visibleColumns[f+v];e&&C.push(e.field)}const R={rows:n,text:t,target:b,fields:C,fillSelection:y,rawRows:g,sourceFields:m};this.emit("paste",R),this.#c(R)}#c(e){if(!this.grid)return;const{pasteHandler:t}=this.config;null!==t&&(t??j)(e,this.grid)}#a(e){if(!this.config.includeHeaders)return;if(e.length<=1)return;const t=e[0];if(0===t.length)return;const n=this.#u();for(const r of t)if(!n.has(r))return;e.shift()}#u(){const e=/* @__PURE__ */new Set;for(const t of this.columns){const n=t.header||t.field;n&&e.add(n)}return e}#l(e){return e instanceof Element&&!!e.closest('input, textarea, select, [contenteditable=""], [contenteditable="true"]')}#i(){return(this.grid?.query("getSelection"))?.[0]}#d(e){const t=this.#i(),n=t?.ranges??[];let r,o=1/0,i=-1/0,s=1/0,l=-1/0;for(const h of n)o=Math.min(o,h.from.row,h.to.row),i=Math.max(i,h.from.row,h.to.row),s=Math.min(s,h.from.col,h.to.col),l=Math.max(l,h.from.col,h.to.col);let a,c=null;e?.columns?r=y(this.columns,e.columns):n.length&&"row"!==t?.mode?(r=y(this.visibleColumns.slice(s,l+1)),c=r.map(e=>this.visibleColumns.indexOf(e))):r=y(this.columns);let u=null;if(e?.rowIndices)a=function(e,t){return t?.length?[...t].sort((e,t)=>e-t).map(t=>e[t]).filter(e=>null!=e):e}(this.rows,e.rowIndices);else if(n.length){const e="row"===t?.mode,r=e=>n.some(t=>e>=Math.min(t.from.row,t.to.row)&&e<=Math.max(t.from.row,t.to.row));a=[],u=[];for(let t=o;t<=i;t++){const n=this.rows[t];n&&(e&&!r(t)||(a.push(n),u.push(t)))}}else a=this.rows;const d=u,f=c;return{columns:r,rows:a,contains:d&&f?(e,t)=>{const r=d[e],o=f[t];return n.some(e=>r>=Math.min(e.from.row,e.to.row)&&r<=Math.max(e.from.row,e.to.row)&&o>=Math.min(e.from.col,e.to.col)&&o<=Math.max(e.from.col,e.to.col))}:null}}#f(e,t,n,r){return this.#h(this.#p(e,t,n,r),n)}#p(e,t,n,r){const o=n?.includeHeaders??this.config.includeHeaders??!1,i=n?.processCell??this.config.processCell;return{header:o?e.map(e=>e.header||e.field):null,rows:t.map((t,n)=>e.map((e,o)=>{if(r&&!r(n,o))return"";const l=s(t,e);return i?i(l,e.field,t):this.#g(e,l,t)}))}}#h(e,t){const n=t?.delimiter??this.config.delimiter??"\t",r=t?.newline??this.config.newline??"\n",o=[];e.header&&o.push(e.header.join(n));for(const i of e.rows)o.push(i.join(n));return o.join(r)}#g(e,t,n){if(e.format)try{const r=e.format(t,n);return null==r?"":String(r)}catch{}if(e.renderer||e.viewRenderer){const t=this.#m(e.field,n);if(null!=t)return t}return function(e){return null==e?"":e instanceof Date?e.toISOString():"object"==typeof e?JSON.stringify(e):String(e)}(t)}#m(e,t){const n=this.gridElement;if(!n)return null;const r=this.rows.indexOf(t);if(-1===r)return null;const o=n.querySelector(`.cell[data-row="${r}"][data-field="${e}"]`);return o?o.textContent?.trim()??null:null}#s(e){const t=e.closest(".cell[data-field]");if(!t)return null;const n=t.dataset.field,r=t.dataset.row;if(!n||!r)return null;const o=parseInt(r,10);if(isNaN(o))return null;const i=this.columns.findIndex(e=>e.field===n);return-1===i?null:{row:o,col:i}}getSelectionAsText(e){const{columns:t,rows:n,contains:r}=this.#d(e);return 0===t.length||0===n.length?"":this.#f(t,n,e,r)}async copy(e){const{columns:t,rows:n,contains:r}=this.#d(e);if(0===t.length||0===n.length)return"";const o=this.#p(t,n,e,r),i=this.#h(o,e),l=n.map((e,n)=>t.map((t,o)=>r&&!r(n,o)?"":A(s(e,t)))),a=t.map(e=>e.field);return await x(i,C(o.header,o.rows,{v:1,fields:a,rows:l})),this.lastCopied={text:i,timestamp:Date.now()},this.#n={text:i,rawRows:l,fields:a},this.emit("copy",{text:i,rowCount:n.length,columnCount:t.length}),i}async copyRows(e,t){return 0===e.length?"":this.copy({...t,rowIndices:e})}async paste(){const e=await async function(){try{return await navigator.clipboard.readText()}catch{return""}}();return e?E(e,this.config):null}getLastCopied(){return this.lastCopied}};export{M as ClipboardPlugin,j as defaultPasteHandler,R as emitPasteRejected,S as resolveColumnPaste};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|