UNPKG

250 kBSource Map (JSON)View Raw
1{"version":3,"file":"gridjs.development.js","sources":["../node_modules/tslib/tslib.es6.js","../node_modules/preact/dist/preact.mjs","../src/util/id.ts","../src/base.ts","../src/util/getConfig.ts","../src/i18n/en_US.ts","../src/i18n/language.ts","../src/view/base.tsx","../src/view/htmlElement.tsx","../src/util/html.ts","../src/cell.ts","../src/row.ts","../src/util/array.ts","../src/tabular.ts","../src/operator/search.ts","../src/util/eventEmitter.ts","../src/pipeline/processor.ts","../src/pipeline/filter/globalSearch.ts","../src/util/className.ts","../src/view/base/store.ts","../src/view/plugin/search/store.ts","../src/view/base/actions.ts","../src/view/plugin/search/actions.ts","../src/pipeline/filter/serverGlobalSearch.ts","../src/util/debounce.ts","../src/util/log.ts","../src/plugin.ts","../src/view/plugin/search/search.tsx","../src/pipeline/limit/pagination.ts","../src/pipeline/limit/serverPagination.ts","../src/view/plugin/pagination.tsx","../src/util/width.ts","../src/view/table/shadow.tsx","../src/util/string.ts","../src/header.ts","../src/util/dispatcher.ts","../src/storage/storage.ts","../src/storage/memory.ts","../src/storage/server.ts","../src/storage/storageUtils.ts","../src/pipeline/pipeline.ts","../src/pipeline/extractor/storage.ts","../src/pipeline/transformer/arrayToTabular.ts","../src/pipeline/initiator/server.ts","../src/pipeline/transformer/storageResponseToArray.ts","../src/pipeline/pipelineUtils.ts","../src/config.ts","../src/types.ts","../src/view/table/td.tsx","../src/view/table/tr.tsx","../src/view/table/messageRow.tsx","../src/view/table/tbody.tsx","../src/pipeline/sort/native.ts","../src/view/plugin/sort/store.ts","../src/view/plugin/sort/actions.ts","../src/pipeline/sort/server.ts","../src/view/plugin/sort/sort.tsx","../src/view/table/th.tsx","../src/util/table.ts","../src/view/table/thead.tsx","../src/view/table/table.tsx","../src/view/headerContainer.tsx","../src/view/footerContainer.tsx","../src/view/container.tsx","../src/grid.ts","../node_modules/preact/hooks/dist/hooks.mjs"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","var n,l,u,i,t,o,r,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function v(n,l,u){var i,t,o,r=arguments,f={};for(o in l)\"key\"==o?i=l[o]:\"ref\"==o?t=l[o]:f[o]=l[o];if(arguments.length>3)for(u=[u],o=3;o<arguments.length;o++)u.push(r[o]);if(null!=u&&(f.children=u),\"function\"==typeof n&&null!=n.defaultProps)for(o in n.defaultProps)void 0===f[o]&&(f[o]=n.defaultProps[o]);return h(n,f,i,t,null)}function h(l,u,i,t,o){var r={type:l,props:u,key:i,ref:t,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++n.__v:o};return null!=n.vnode&&n.vnode(r),r}function y(){return{current:null}}function p(n){return n.children}function d(n,l){this.props=n,this.context=l}function _(n,l){if(null==l)return n.__?_(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?_(n):null}function w(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return w(n)}}function k(l){(!l.__d&&(l.__d=!0)&&u.push(l)&&!g.__r++||t!==n.debounceRendering)&&((t=n.debounceRendering)||i)(g)}function g(){for(var n;g.__r=u.length;)n=u.sort(function(n,l){return n.__v.__b-l.__v.__b}),u=[],n.some(function(n){var l,u,i,t,o,r;n.__d&&(o=(t=(l=n).__v).__e,(r=l.__P)&&(u=[],(i=s({},t)).__v=t.__v+1,$(r,t,i,l.__n,void 0!==r.ownerSVGElement,null!=t.__h?[o]:null,u,null==o?_(t):o,t.__h),j(u,t),t.__e!=o&&w(t)))})}function m(n,l,u,i,t,o,r,c,s,v){var y,d,w,k,g,m,x,P=i&&i.__k||e,C=P.length;for(s==f&&(s=null!=r?r[0]:C?_(i,0):null),u.__k=[],y=0;y<l.length;y++)if(null!=(k=u.__k[y]=null==(k=l[y])||\"boolean\"==typeof k?null:\"string\"==typeof k||\"number\"==typeof k?h(null,k,null,null,k):Array.isArray(k)?h(p,{children:k},null,null,null):k.__b>0?h(k.type,k.props,k.key,null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(w=P[y])||w&&k.key==w.key&&k.type===w.type)P[y]=void 0;else for(d=0;d<C;d++){if((w=P[d])&&k.key==w.key&&k.type===w.type){P[d]=void 0;break}w=null}$(n,k,w=w||f,t,o,r,c,s,v),g=k.__e,(d=k.ref)&&w.ref!=d&&(x||(x=[]),w.ref&&x.push(w.ref,null,k),x.push(d,k.__c||g,k)),null!=g?(null==m&&(m=g),\"function\"==typeof k.type&&k.__k===w.__k?k.__d=s=b(k,s,n):s=A(n,k,w,P,r,g,s),v||\"option\"!==u.type?\"function\"==typeof u.type&&(u.__d=s):n.value=\"\"):s&&w.__e==s&&s.parentNode!=n&&(s=_(w))}if(u.__e=m,null!=r&&\"function\"!=typeof u.type)for(y=r.length;y--;)null!=r[y]&&a(r[y]);for(y=C;y--;)null!=P[y]&&(\"function\"==typeof u.type&&null!=P[y].__e&&P[y].__e==u.__d&&(u.__d=_(i,y+1)),L(P[y],P[y]));if(x)for(y=0;y<x.length;y++)I(x[y],x[++y],x[++y])}function b(n,l,u){var i,t;for(i=0;i<n.__k.length;i++)(t=n.__k[i])&&(t.__=n,\"function\"==typeof t.type?b(t,l,u):l=A(u,t,t,n.__k,null,t.__e,l));return l}function x(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(Array.isArray(n)?n.some(function(n){x(n,l)}):l.push(n)),l}function A(n,l,u,i,t,o,r){var f,e,c;if(void 0!==l.__d)f=l.__d,l.__d=void 0;else if(t==u||o!=r||null==o.parentNode)n:if(null==r||r.parentNode!==n)n.appendChild(o),f=null;else{for(e=r,c=0;(e=e.nextSibling)&&c<i.length;c+=2)if(e==o)break n;n.insertBefore(o,r),f=r}return void 0!==f?f:o.nextSibling}function P(n,l,u,i,t){var o;for(o in u)\"children\"===o||\"key\"===o||o in l||z(n,o,null,u[o],i);for(o in l)t&&\"function\"!=typeof l[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||u[o]===l[o]||z(n,o,l[o],u[o],i)}function C(n,l,u){\"-\"===l[0]?n.setProperty(l,u):n[l]=null==u?\"\":\"number\"!=typeof u||c.test(l)?u:u+\"px\"}function z(n,l,u,i,t){var o,r,f;if(t&&\"className\"==l&&(l=\"class\"),\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||C(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||C(n.style,l,u[l])}else\"o\"===l[0]&&\"n\"===l[1]?(o=l!==(l=l.replace(/Capture$/,\"\")),(r=l.toLowerCase())in n&&(l=r),l=l.slice(2),n.l||(n.l={}),n.l[l+o]=u,f=o?T:N,u?i||n.addEventListener(l,f,o):n.removeEventListener(l,f,o)):\"list\"!==l&&\"tagName\"!==l&&\"form\"!==l&&\"type\"!==l&&\"size\"!==l&&\"download\"!==l&&\"href\"!==l&&!t&&l in n?n[l]=null==u?\"\":u:\"function\"!=typeof u&&\"dangerouslySetInnerHTML\"!==l&&(l!==(l=l.replace(/xlink:?/,\"\"))?null==u||!1===u?n.removeAttributeNS(\"http://www.w3.org/1999/xlink\",l.toLowerCase()):n.setAttributeNS(\"http://www.w3.org/1999/xlink\",l.toLowerCase(),u):null==u||!1===u&&!/^ar/.test(l)?n.removeAttribute(l):n.setAttribute(l,u))}function N(l){this.l[l.type+!1](n.event?n.event(l):l)}function T(l){this.l[l.type+!0](n.event?n.event(l):l)}function $(l,u,i,t,o,r,f,e,c){var a,v,h,y,_,w,k,g,b,x,A,P=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(a=n.__b)&&a(u);try{n:if(\"function\"==typeof P){if(g=u.props,b=(a=P.contextType)&&t[a.__c],x=a?b?b.props.value:a.__:t,i.__c?k=(v=u.__c=i.__c).__=v.__E:(\"prototype\"in P&&P.prototype.render?u.__c=v=new P(g,x):(u.__c=v=new d(g,x),v.constructor=P,v.render=M),b&&b.sub(v),v.props=g,v.state||(v.state={}),v.context=x,v.__n=t,h=v.__d=!0,v.__h=[]),null==v.__s&&(v.__s=v.state),null!=P.getDerivedStateFromProps&&(v.__s==v.state&&(v.__s=s({},v.__s)),s(v.__s,P.getDerivedStateFromProps(g,v.__s))),y=v.props,_=v.state,h)null==P.getDerivedStateFromProps&&null!=v.componentWillMount&&v.componentWillMount(),null!=v.componentDidMount&&v.__h.push(v.componentDidMount);else{if(null==P.getDerivedStateFromProps&&g!==y&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(g,x),!v.__e&&null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(g,v.__s,x)||u.__v===i.__v){v.props=g,v.state=v.__s,u.__v!==i.__v&&(v.__d=!1),v.__v=u,u.__e=i.__e,u.__k=i.__k,v.__h.length&&f.push(v);break n}null!=v.componentWillUpdate&&v.componentWillUpdate(g,v.__s,x),null!=v.componentDidUpdate&&v.__h.push(function(){v.componentDidUpdate(y,_,w)})}v.context=x,v.props=g,v.state=v.__s,(a=n.__r)&&a(u),v.__d=!1,v.__v=u,v.__P=l,a=v.render(v.props,v.state,v.context),v.state=v.__s,null!=v.getChildContext&&(t=s(s({},t),v.getChildContext())),h||null==v.getSnapshotBeforeUpdate||(w=v.getSnapshotBeforeUpdate(y,_)),A=null!=a&&a.type===p&&null==a.key?a.props.children:a,m(l,Array.isArray(A)?A:[A],u,i,t,o,r,f,e,c),v.base=u.__e,u.__h=null,v.__h.length&&f.push(v),k&&(v.__E=v.__=null),v.__e=!1}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=H(i.__e,u,i,t,o,r,f,c);(a=n.diffed)&&a(u)}catch(l){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),n.__e(l,u,i)}}function j(l,u){n.__c&&n.__c(u,l),l.some(function(u){try{l=u.__h,u.__h=[],l.some(function(n){n.call(u)})}catch(l){n.__e(l,u.__v)}})}function H(n,l,u,i,t,o,r,c){var s,a,v,h,y,p=u.props,d=l.props;if(t=\"svg\"===l.type||t,null!=o)for(s=0;s<o.length;s++)if(null!=(a=o[s])&&((null===l.type?3===a.nodeType:a.localName===l.type)||n==a)){n=a,o[s]=null;break}if(null==n){if(null===l.type)return document.createTextNode(d);n=t?document.createElementNS(\"http://www.w3.org/2000/svg\",l.type):document.createElement(l.type,d.is&&{is:d.is}),o=null,c=!1}if(null===l.type)p===d||c&&n.data===d||(n.data=d);else{if(null!=o&&(o=e.slice.call(n.childNodes)),v=(p=u.props||f).dangerouslySetInnerHTML,h=d.dangerouslySetInnerHTML,!c){if(null!=o)for(p={},y=0;y<n.attributes.length;y++)p[n.attributes[y].name]=n.attributes[y].value;(h||v)&&(h&&(v&&h.__html==v.__html||h.__html===n.innerHTML)||(n.innerHTML=h&&h.__html||\"\"))}P(n,d,p,t,c),h?l.__k=[]:(s=l.props.children,m(n,Array.isArray(s)?s:[s],l,u,i,\"foreignObject\"!==l.type&&t,o,r,f,c)),c||(\"value\"in d&&void 0!==(s=d.value)&&(s!==n.value||\"progress\"===l.type&&!s)&&z(n,\"value\",s,p.value,!1),\"checked\"in d&&void 0!==(s=d.checked)&&s!==n.checked&&z(n,\"checked\",s,p.checked,!1))}return n}function I(l,u,i){try{\"function\"==typeof l?l(u):l.current=u}catch(l){n.__e(l,i)}}function L(l,u,i){var t,o,r;if(n.unmount&&n.unmount(l),(t=l.ref)&&(t.current&&t.current!==l.__e||I(t,null,u)),i||\"function\"==typeof l.type||(i=null!=(o=l.__e)),l.__e=l.__d=void 0,null!=(t=l.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount()}catch(l){n.__e(l,u)}t.base=t.__P=null}if(t=l.__k)for(r=0;r<t.length;r++)t[r]&&L(t[r],u,i);null!=o&&a(o)}function M(n,l,u){return this.constructor(n,u)}function O(l,u,i){var t,r,c;n.__&&n.__(l,u),r=(t=i===o)?null:i&&i.__k||u.__k,l=v(p,null,[l]),c=[],$(u,(t?u:i||u).__k=l,r||f,f,void 0!==u.ownerSVGElement,i&&!t?[i]:r?null:u.childNodes.length?e.slice.call(u.childNodes):null,c,i||f,t),j(c,l)}function S(n,l){O(n,l,o)}function q(n,l,u){var i,t,o,r=arguments,f=s({},n.props);for(o in l)\"key\"==o?i=l[o]:\"ref\"==o?t=l[o]:f[o]=l[o];if(arguments.length>3)for(u=[u],o=3;o<arguments.length;o++)u.push(r[o]);return null!=u&&(f.children=u),h(n.type,f,i||n.key,t||n.ref,null)}function B(n,l){var u={__c:l=\"__cC\"+r++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(k)},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n={__e:function(n,l){for(var u,i,t,o=l.__h;l=l.__;)if((u=l.__c)&&!u.__)try{if((i=u.constructor)&&null!=i.getDerivedStateFromError&&(u.setState(i.getDerivedStateFromError(n)),t=u.__d),null!=u.componentDidCatch&&(u.componentDidCatch(n),t=u.__d),t)return l.__h=o,u.__E=u}catch(l){n=l}throw n},__v:0},l=function(n){return null!=n&&void 0===n.constructor},d.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=s({},this.state),\"function\"==typeof n&&(n=n(s({},u),this.props)),n&&s(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),k(this))},d.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),k(this))},d.prototype.render=p,u=[],i=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g.__r=0,o=f,r=0;export{O as render,S as hydrate,v as createElement,v as h,p as Fragment,y as createRef,l as isValidElement,d as Component,q as cloneElement,B as createContext,x as toChildArray,n as options};\n//# sourceMappingURL=preact.module.js.map\n","export type ID = string;\n\nexport function generateUUID(): ID {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n","import { generateUUID, ID } from './util/id';\n\nclass Base {\n private readonly _id: ID;\n\n constructor(id?: ID) {\n this._id = id || generateUUID();\n }\n\n get id(): ID {\n return this._id;\n }\n}\n\nexport default Base;\n","import { Context } from 'preact';\nimport { Config } from '../config';\n\n/**\n * This is a hack to get the current global config from Preact context.\n * My assumption is that we only need one global context which is the ConfigContext\n *\n * @param context\n */\nexport default function getConfig(context: {\n [key: string]: Context<any>;\n}): Config {\n if (!context) return null;\n\n const keys = Object.keys(context);\n\n if (keys.length) {\n // TODO: can we use a better way to capture and return the Config context?\n const ctx: any = context[keys[0]];\n return ctx.props.value;\n }\n\n return null;\n}\n","export default {\n search: {\n placeholder: 'Type a keyword...',\n },\n sort: {\n sortAsc: 'Sort column ascending',\n sortDesc: 'Sort column descending',\n },\n pagination: {\n previous: 'Previous',\n next: 'Next',\n navigate: (page, pages) => `Page ${page} of ${pages}`,\n page: (page) => `Page ${page}`,\n showing: 'Showing',\n of: 'of',\n to: 'to',\n results: 'results',\n },\n loading: 'Loading...',\n noRecordsFound: 'No matching records found',\n error: 'An error happened while fetching the data',\n};\n","import enUS from './en_US';\ntype MessageFormat = (...args) => string;\ntype Message = string | MessageFormat;\nexport type Language = { [key: string]: Message | Language };\n\nexport class Translator {\n private readonly _language: Language;\n private readonly _defaultLanguage: Language;\n\n constructor(language?: Language) {\n this._language = language;\n this._defaultLanguage = enUS;\n }\n\n /**\n * Tries to split the message with \".\" and find\n * the key in the given language\n *\n * @param message\n * @param lang\n */\n getString(message: string, lang: Language): MessageFormat {\n if (!lang || !message) return null;\n\n const splitted = message.split('.');\n const key = splitted[0];\n\n if (lang[key]) {\n const val = lang[key];\n\n if (typeof val === 'string') {\n return (): string => val;\n } else if (typeof val === 'function') {\n return val;\n } else {\n return this.getString(splitted.slice(1).join('.'), val);\n }\n }\n\n return null;\n }\n\n translate(message: string, ...args): string {\n const translated = this.getString(message, this._language);\n let messageFormat;\n\n if (translated) {\n messageFormat = translated;\n } else {\n messageFormat = this.getString(message, this._defaultLanguage);\n }\n\n if (messageFormat) {\n return messageFormat(...args);\n }\n\n return message;\n }\n}\n\nexport function useTranslator(translator: Translator) {\n return function (message: string, ...args): string {\n return translator.translate(message, ...args);\n };\n}\n","import { Component } from 'preact';\nimport { Config } from '../config';\nimport getConfig from '../util/getConfig';\nimport { useTranslator } from '../i18n/language';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface BaseProps {}\n\nexport abstract class BaseComponent<\n P extends BaseProps = {},\n S = {}\n> extends Component<P, S> {\n protected config: Config;\n protected _: (message: string, ...args) => string;\n\n constructor(props: P, context: any) {\n super(props, context);\n this.config = getConfig(context);\n\n if (this.config) {\n this._ = useTranslator(this.config.translator);\n }\n }\n}\n\nexport interface BaseComponent<P> {\n new (props: P, context?: any): Component<P>;\n}\n","import { h } from 'preact';\n\nimport { BaseComponent, BaseProps } from './base';\n\nexport interface HTMLContentProps extends BaseProps {\n content: string;\n parentElement?: string;\n}\n\nexport class HTMLElement extends BaseComponent<HTMLContentProps, {}> {\n static defaultProps = {\n parentElement: 'span',\n };\n\n render() {\n return h(this.props.parentElement, {\n dangerouslySetInnerHTML: { __html: this.props.content },\n });\n }\n}\n","import { h, VNode } from 'preact';\nimport { HTMLElement } from '../view/htmlElement';\n\nexport function decode(content: string): string {\n const value = new DOMParser().parseFromString(content, 'text/html');\n return value.documentElement.textContent;\n}\n\nexport function html(content: string, parentElement?: string): VNode {\n return h(HTMLElement, { content: content, parentElement: parentElement });\n}\n","import Base from './base';\nimport { TCell } from './types';\nimport { html } from './util/html';\nimport { ComponentChild } from 'preact';\n\nclass Cell extends Base {\n // because a Cell is a subset of TCell type\n public data: number | string | boolean | ComponentChild;\n\n constructor(data: TCell) {\n super();\n\n this.update(data);\n }\n\n private cast(data: TCell): number | string | boolean | ComponentChild {\n if (data instanceof HTMLElement) {\n return html(data.outerHTML);\n }\n\n return data;\n }\n\n /**\n * Updates the Cell's data\n *\n * @param data\n */\n public update(data: TCell): Cell {\n this.data = this.cast(data);\n return this;\n }\n}\n\nexport default Cell;\n","import Cell from './cell';\nimport Base from './base';\nimport { TCell } from './types';\n\nclass Row extends Base {\n private _cells: Cell[];\n\n constructor(cells?: Cell[]) {\n super();\n\n this.cells = cells || [];\n }\n\n public cell(index: number): Cell {\n return this._cells[index];\n }\n\n public get cells(): Cell[] {\n return this._cells;\n }\n\n public set cells(cells: Cell[]) {\n this._cells = cells;\n }\n\n public toArray(): TCell[] {\n return this.cells.map((cell) => cell.data);\n }\n\n /**\n * Creates a new Row from an array of Cell(s)\n * This method generates a new ID for the Row and all nested elements\n *\n * @param cells\n * @returns Row\n */\n static fromCells(cells: Cell[]): Row {\n return new Row(cells.map((cell) => new Cell(cell.data)));\n }\n\n get length(): number {\n return this.cells.length;\n }\n}\n\nexport default Row;\n","import { OneDArray, TwoDArray } from '../types';\n\nexport function oneDtoTwoD<T>(data: OneDArray<T> | TwoDArray<T>): TwoDArray<T> {\n if (data[0] && !(data[0] instanceof Array)) {\n return [data] as TwoDArray<T>;\n }\n\n return data as TwoDArray<T>;\n}\n\nexport function flatten<T>(arrays: TwoDArray<T>): OneDArray<T> {\n return arrays.reduce((prev, x) => prev.concat(x), []);\n}\n","import Base from './base';\nimport Row from './row';\nimport Cell from './cell';\nimport { OneDArray, TCell, TwoDArray } from './types';\nimport { oneDtoTwoD } from './util/array';\n\nclass Tabular extends Base {\n private _rows: Row[];\n private _length: number;\n\n constructor(rows?: Row[] | Row) {\n super();\n\n if (rows instanceof Array) {\n this.rows = rows;\n } else if (rows instanceof Row) {\n this.rows = [rows];\n } else {\n this.rows = [];\n }\n }\n\n get rows(): Row[] {\n return this._rows;\n }\n\n set rows(rows: Row[]) {\n this._rows = rows;\n }\n\n get length(): number {\n return this._length || this.rows.length;\n }\n\n // we want to sent the length when storage is ServerStorage\n set length(len: number) {\n this._length = len;\n }\n\n public toArray(): TCell[][] {\n return this.rows.map((row) => row.toArray());\n }\n\n /**\n * Creates a new Tabular from an array of Row(s)\n * This method generates a new ID for the Tabular and all nested elements\n *\n * @param rows\n * @returns Tabular\n */\n static fromRows(rows: Row[]): Tabular {\n return new Tabular(rows.map((row) => Row.fromCells(row.cells)));\n }\n\n /**\n * Creates a new Tabular from a 2D array\n * This method generates a new ID for the Tabular and all nested elements\n *\n * @param data\n * @returns Tabular\n */\n static fromArray<T extends TCell>(\n data: OneDArray<T> | TwoDArray<T>,\n ): Tabular {\n data = oneDtoTwoD(data);\n\n return new Tabular(\n data.map((row) => new Row(row.map((cell) => new Cell(cell)))),\n );\n }\n}\n\nexport default Tabular;\n","import Tabular from '../tabular';\nimport { VNode } from 'preact';\nimport { HTMLContentProps } from '../view/htmlElement';\nimport { TCell } from '../types';\n\nexport default function (\n keyword: string,\n tabular: Tabular,\n selector?: (cell: TCell, rowIndex: number, cellIndex: number) => string,\n): Tabular {\n // escape special regex chars\n keyword = keyword.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n\n return new Tabular(\n tabular.rows.filter((row, rowIndex) =>\n row.cells.some((cell, cellIndex) => {\n if (!cell) {\n return false;\n }\n\n let data = '';\n\n if (typeof selector === 'function') {\n data = selector(cell.data, rowIndex, cellIndex);\n } else if (typeof cell.data === 'object') {\n // HTMLContent element\n const element = cell.data as VNode<HTMLContentProps>;\n if (element && element.props && element.props.content) {\n // TODO: we should only search in the content of the element. props.content is the entire HTML element\n data = element.props.content;\n }\n } else {\n // primitive types\n data = String(cell.data);\n }\n\n return new RegExp(keyword, 'gi').test(data);\n }),\n ),\n );\n}\n","type EventArgs<T> = [T] extends [(...args: infer U) => any]\n ? U\n : [T] extends [void]\n ? []\n : [T];\n\n/**\n * Example:\n *\n * export interface BaseEvents<P, S> {\n * SET_STATE: (component: BaseComponent<P, S>, state: S) => void;\n * }\n */\n\nexport interface EventEmitter<EventTypes> {\n addListener<EventName extends keyof EventTypes>(\n event: EventName,\n listener: (...args: EventArgs<EventTypes[EventName]>) => void,\n ): EventEmitter<EventTypes>;\n\n on<EventName extends keyof EventTypes>(\n event: EventName,\n listener: (...args: EventArgs<EventTypes[EventName]>) => void,\n ): EventEmitter<EventTypes>;\n\n off<EventName extends keyof EventTypes>(\n event: EventName,\n listener: (...args: EventArgs<EventTypes[EventName]>) => void,\n ): EventEmitter<EventTypes>;\n\n emit<EventName extends keyof EventTypes>(\n event: EventName,\n ...args: EventArgs<EventTypes[EventName]>\n ): boolean;\n}\n\nexport class EventEmitter<EventTypes> {\n private callbacks: { [event: string]: ((...args) => void)[] };\n\n // because we are using EventEmitter as a mixin and the\n // constructor won't be called by the applyMixins function\n // see src/base.ts and src/util/applyMixin.ts\n private init(event?: string): void {\n if (!this.callbacks) {\n this.callbacks = {};\n }\n\n if (event && !this.callbacks[event]) {\n this.callbacks[event] = [];\n }\n }\n\n on<EventName extends keyof EventTypes>(\n event: EventName,\n listener: (...args: EventArgs<EventTypes[EventName]>) => void,\n ): EventEmitter<EventTypes> {\n this.init(event as string);\n this.callbacks[event as string].push(listener);\n return this;\n }\n\n off<EventName extends keyof EventTypes>(\n event: EventName,\n listener: (...args: EventArgs<EventTypes[EventName]>) => void,\n ): EventEmitter<EventTypes> {\n const eventName = event as string;\n\n this.init();\n\n if (!this.callbacks[eventName] || this.callbacks[eventName].length === 0) {\n // there is no callbacks with this key\n return this;\n }\n\n this.callbacks[eventName] = this.callbacks[eventName].filter(\n (value) => value != listener,\n );\n\n return this;\n }\n\n emit<EventName extends keyof EventTypes>(\n event: EventName,\n ...args: EventArgs<EventTypes[EventName]>\n ): boolean {\n const eventName = event as string;\n\n this.init(eventName);\n\n if (this.callbacks[eventName].length > 0) {\n this.callbacks[eventName].forEach((value) => value(...args));\n return true;\n }\n\n return false;\n }\n}\n","// The order of enum items define the processing order of the processor type\n// e.g. Extractor = 0 will be processed before Transformer = 1\nimport { generateUUID, ID } from '../util/id';\nimport { EventEmitter } from '../util/eventEmitter';\n\nexport enum ProcessorType {\n Initiator,\n ServerFilter,\n ServerSort,\n ServerLimit,\n Extractor,\n Transformer,\n Filter,\n Sort,\n Limit,\n}\n\ninterface PipelineProcessorEvents<T, P> {\n propsUpdated: (processor: PipelineProcessor<T, P>) => void;\n beforeProcess: (...args) => void;\n afterProcess: (...args) => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface PipelineProcessorProps {}\n\nexport abstract class PipelineProcessor<\n T,\n P extends Partial<PipelineProcessorProps>\n> extends EventEmitter<PipelineProcessorEvents<T, P>> {\n public readonly id: ID;\n private readonly _props: P;\n\n abstract get type(): ProcessorType;\n protected abstract _process(...args): T | Promise<T>;\n protected validateProps?(...args): void;\n\n constructor(props?: Partial<P>) {\n super();\n\n this._props = {} as P;\n this.id = generateUUID();\n\n if (props) this.setProps(props);\n }\n\n /**\n * process is used to call beforeProcess and afterProcess callbacks\n * This function is just a wrapper that calls _process()\n *\n * @param args\n */\n process(...args): T | Promise<T> {\n if (this.validateProps instanceof Function) {\n this.validateProps(...args);\n }\n\n this.emit('beforeProcess', ...args);\n const result = this._process(...args);\n this.emit('afterProcess', ...args);\n return result;\n }\n\n setProps(props: Partial<P>): this {\n Object.assign(this._props, props);\n this.emit('propsUpdated', this);\n return this;\n }\n\n get props(): P {\n return this._props;\n }\n}\n","import search from '../../operator/search';\nimport Tabular from '../../tabular';\nimport {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\nimport { TCell } from '../../types';\n\ninterface GlobalSearchFilterProps extends PipelineProcessorProps {\n keyword: string;\n selector?: (cell: TCell, rowIndex: number, cellIndex: number) => string;\n}\n\nclass GlobalSearchFilter extends PipelineProcessor<\n Tabular,\n GlobalSearchFilterProps\n> {\n get type(): ProcessorType {\n return ProcessorType.Filter;\n }\n\n _process(data: Tabular): Tabular {\n if (this.props.keyword) {\n return search(\n String(this.props.keyword).trim(),\n data,\n this.props.selector,\n );\n }\n\n return data;\n }\n}\n\nexport default GlobalSearchFilter;\n","export function className(...args: string[]): string {\n const prefix = 'gridjs';\n\n return `${prefix}${args.reduce(\n (prev: string, cur: string) => `${prev}-${cur}`,\n '',\n )}`;\n}\n\nexport function classJoin(...classNames: string[]): string {\n return (\n classNames\n .filter((x) => x)\n .reduce((className, prev) => `${className || ''} ${prev}`, '')\n .trim() || null\n );\n}\n","import { EventEmitter } from '../../util/eventEmitter';\nimport Dispatcher from '../../util/dispatcher';\n\ninterface BaseStoreEvents<STATE> {\n updated: (newState: STATE, prevState?: STATE) => void;\n}\n\nexport default abstract class BaseStore<STATE, ACTIONS> extends EventEmitter<\n BaseStoreEvents<STATE>\n> {\n private _state: STATE;\n protected readonly dispatcher: Dispatcher<any>;\n\n constructor(dispatcher: Dispatcher<any>) {\n super();\n this.dispatcher = dispatcher;\n this._state = this.getInitialState();\n dispatcher.register(this._handle.bind(this));\n }\n\n abstract handle<K extends keyof ACTIONS>(type: K, payload: ACTIONS[K]): void;\n abstract getInitialState(): STATE;\n\n private _handle(action): void {\n this.handle(action.type, action.payload);\n }\n\n setState(newState: STATE): void {\n const prevState = this._state;\n this._state = newState;\n this.emit('updated', newState, prevState);\n }\n\n get state(): STATE {\n return this._state;\n }\n}\n","import BaseStore from '../../base/store';\nimport { SearchActionsType } from './actions';\n\nexport type SearchStoreState = { keyword: string | null };\n\nexport class SearchStore extends BaseStore<\n SearchStoreState,\n SearchActionsType\n> {\n getInitialState(): SearchStoreState {\n return { keyword: null };\n }\n\n handle(type, payload): void {\n if (type === 'SEARCH_KEYWORD') {\n const { keyword } = payload;\n this.search(keyword);\n }\n }\n\n private search(keyword: string): void {\n this.setState({ keyword: keyword });\n }\n}\n","import Dispatcher from '../../util/dispatcher';\n\nexport abstract class BaseActions<ACTIONS> {\n private readonly dispatcher: Dispatcher<any>;\n\n constructor(dispatcher: Dispatcher<any>) {\n this.dispatcher = dispatcher;\n }\n\n protected dispatch<K extends keyof ACTIONS>(\n type: K,\n payload: ACTIONS[K],\n ): void {\n this.dispatcher.dispatch({\n type: type,\n payload: payload,\n });\n }\n}\n","import { BaseActions } from '../../base/actions';\n\nexport interface SearchActionsType {\n SEARCH_KEYWORD: {\n keyword: string;\n };\n}\n\nexport class SearchActions extends BaseActions<SearchActionsType> {\n search(keyword: string): void {\n this.dispatch('SEARCH_KEYWORD', {\n keyword: keyword,\n });\n }\n}\n","import {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\nimport { ServerStorageOptions } from '../../storage/server';\n\ninterface ServerGlobalSearchFilterProps extends PipelineProcessorProps {\n keyword?: string;\n url?: (prevUrl: string, keyword: string) => string;\n body?: (prevBody: BodyInit, keyword: string) => BodyInit;\n}\n\nclass ServerGlobalSearchFilter extends PipelineProcessor<\n ServerStorageOptions,\n ServerGlobalSearchFilterProps\n> {\n get type(): ProcessorType {\n return ProcessorType.ServerFilter;\n }\n\n _process(options?: ServerStorageOptions): ServerStorageOptions {\n if (!this.props.keyword) return options;\n\n const updates = {};\n\n if (this.props.url) {\n updates['url'] = this.props.url(options.url, this.props.keyword);\n }\n\n if (this.props.body) {\n updates['body'] = this.props.body(options.body, this.props.keyword);\n }\n\n return {\n ...options,\n ...updates,\n };\n }\n}\n\nexport default ServerGlobalSearchFilter;\n","export const debounce = <F extends (...args: any[]) => any>(\n func: F,\n waitFor: number,\n) => {\n let timeout;\n\n return (...args: Parameters<F>): Promise<ReturnType<F>> =>\n new Promise((resolve) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(() => resolve(func(...args)), waitFor);\n });\n};\n","/**\n * Centralized logging lib\n *\n * This class needs some improvements but so far it has been used to have a coherent way to log\n */\nclass Logger {\n private format(message: string, type: string): string {\n return `[Grid.js] [${type.toUpperCase()}]: ${message}`;\n }\n\n error(message: string, throwException = false): void {\n const msg = this.format(message, 'error');\n\n if (throwException) {\n throw Error(msg);\n } else {\n console.error(msg);\n }\n }\n\n warn(message: string): void {\n console.warn(this.format(message, 'warn'));\n }\n\n info(message: string): void {\n console.info(this.format(message, 'info'));\n }\n}\n\nexport default new Logger();\n","import { BaseComponent, BaseProps } from './view/base';\nimport { Component, ComponentProps, Fragment, h } from 'preact';\nimport log from './util/log';\n\n/**\n * BaseProps for all plugins\n */\nexport interface PluginBaseProps<T extends PluginBaseComponentCtor> {\n plugin: Plugin<T>;\n}\n\n/**\n * BaseComponent for all plugins\n */\nexport abstract class PluginBaseComponent<\n P extends PluginBaseProps<any> = any,\n S = {}\n> extends BaseComponent<P, S> {}\n\nexport interface PluginBaseComponentCtor<\n P extends PluginBaseProps<any> = any,\n S = {}\n> {\n new (props: P, context?: any): Component<P, S>;\n}\n\nexport enum PluginPosition {\n Header,\n Footer,\n Cell,\n}\n\nexport interface Plugin<T extends PluginBaseComponentCtor> {\n id: string;\n position: PluginPosition;\n component: T;\n props?: Partial<ComponentProps<T>>;\n order?: number;\n}\n\nexport class PluginManager {\n private readonly plugins: Plugin<any>[];\n\n constructor() {\n this.plugins = [];\n }\n\n get<T extends PluginBaseComponentCtor>(id: string): Plugin<T> | null {\n const plugins = this.plugins.filter((p) => p.id === id);\n\n if (plugins.length > 0) {\n return plugins[0];\n }\n\n return null;\n }\n\n add<T extends PluginBaseComponentCtor>(plugin: Plugin<T>): this {\n if (!plugin.id) {\n log.error('Plugin ID cannot be empty');\n return this;\n }\n\n if (this.get(plugin.id) !== null) {\n log.error(`Duplicate plugin ID: ${plugin.id}`);\n return this;\n }\n\n this.plugins.push(plugin);\n return this;\n }\n\n remove(id: string): this {\n this.plugins.splice(this.plugins.indexOf(this.get(id)), 1);\n return this;\n }\n\n list<T extends PluginBaseComponentCtor>(\n position?: PluginPosition,\n ): Plugin<T>[] {\n let plugins: Plugin<T>[];\n\n if (position != null || position != undefined) {\n plugins = this.plugins.filter((p) => p.position === position);\n } else {\n plugins = this.plugins;\n }\n\n return plugins.sort((a, b) => a.order - b.order);\n }\n}\n\nexport interface PluginRendererProps extends BaseProps {\n props?: any;\n // to render a single plugin\n pluginId?: string;\n // to render all plugins in this PluginPosition\n position?: PluginPosition;\n}\n\nexport class PluginRenderer extends BaseComponent<PluginRendererProps> {\n render() {\n if (this.props.pluginId) {\n // render a single plugin\n const plugin = this.config.plugin.get(this.props.pluginId);\n\n if (!plugin) return null;\n\n return h(\n Fragment,\n {},\n h(plugin.component, {\n plugin: plugin,\n ...plugin.props,\n ...this.props.props,\n }),\n );\n } else if (this.props.position !== undefined) {\n // render using a specific plugin position\n return h(\n Fragment,\n {},\n this.config.plugin\n .list(this.props.position)\n .map((p) =>\n h(p.component, { plugin: p, ...p.props, ...this.props.props }),\n ),\n );\n }\n\n return null;\n }\n}\n","import { h } from 'preact';\nimport GlobalSearchFilter from '../../../pipeline/filter/globalSearch';\nimport { classJoin, className } from '../../../util/className';\nimport { SearchStore, SearchStoreState } from './store';\nimport { SearchActions } from './actions';\nimport ServerGlobalSearchFilter from '../../../pipeline/filter/serverGlobalSearch';\nimport { debounce } from '../../../util/debounce';\nimport { TCell } from '../../../types';\nimport { PluginBaseComponent, PluginBaseProps } from '../../../plugin';\n\nexport interface SearchConfig {\n keyword?: string;\n enabled?: boolean;\n debounceTimeout?: number;\n selector?: (cell: TCell, rowIndex: number, cellIndex: number) => string;\n server?: {\n url?: (prevUrl: string, keyword: string) => string;\n body?: (prevBody: BodyInit, keyword: string) => BodyInit;\n };\n}\n\nexport class Search extends PluginBaseComponent<\n SearchConfig & PluginBaseProps<Search>\n> {\n private readonly searchProcessor:\n | GlobalSearchFilter\n | ServerGlobalSearchFilter;\n private readonly actions: SearchActions;\n private readonly store: SearchStore;\n private readonly storeUpdatedFn: (...args) => void;\n\n static defaultProps = {\n debounceTimeout: 250,\n };\n\n constructor(props, context) {\n super(props, context);\n\n this.actions = new SearchActions(this.config.dispatcher);\n this.store = new SearchStore(this.config.dispatcher);\n const { enabled, keyword } = props;\n\n if (enabled) {\n // initial search\n if (keyword) this.actions.search(keyword);\n\n this.storeUpdatedFn = this.storeUpdated.bind(this);\n this.store.on('updated', this.storeUpdatedFn);\n\n let searchProcessor;\n if (props.server) {\n searchProcessor = new ServerGlobalSearchFilter({\n keyword: props.keyword,\n url: props.server.url,\n body: props.server.body,\n });\n } else {\n searchProcessor = new GlobalSearchFilter({\n keyword: props.keyword,\n selector: props.selector,\n });\n }\n\n this.searchProcessor = searchProcessor;\n\n // adds a new processor to the pipeline\n this.config.pipeline.register(searchProcessor);\n }\n }\n\n componentWillUnmount(): void {\n this.config.pipeline.unregister(this.searchProcessor);\n this.store.off('updated', this.storeUpdatedFn);\n }\n\n private storeUpdated(state: SearchStoreState): void {\n // updates the processor state\n this.searchProcessor.setProps({\n keyword: state.keyword,\n });\n }\n\n private onChange(event): void {\n const keyword = event.target.value;\n this.actions.search(keyword);\n }\n\n render() {\n if (!this.props.enabled) return null;\n\n let onInput = this.onChange.bind(this);\n\n // add debounce to input only if it's a server-side search\n if (this.searchProcessor instanceof ServerGlobalSearchFilter) {\n onInput = debounce(onInput, this.props.debounceTimeout);\n }\n\n return (\n <div\n className={className(classJoin('search', this.config.className.search))}\n >\n <input\n type=\"search\"\n placeholder={this._('search.placeholder')}\n aria-label={this._('search.placeholder')}\n onInput={onInput}\n className={classJoin(\n className('input'),\n className('search', 'input'),\n )}\n value={this.store.state.keyword}\n />\n </div>\n );\n }\n}\n","import Tabular from '../../tabular';\nimport {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\n\ninterface PaginationLimitProps extends PipelineProcessorProps {\n page: number;\n limit: number;\n}\n\nclass PaginationLimit extends PipelineProcessor<Tabular, PaginationLimitProps> {\n protected validateProps(): void {\n if (isNaN(Number(this.props.limit)) || isNaN(Number(this.props.page))) {\n throw Error('Invalid parameters passed');\n }\n }\n\n get type(): ProcessorType {\n return ProcessorType.Limit;\n }\n\n protected _process(data: Tabular): Tabular {\n const page = this.props.page;\n const start = page * this.props.limit;\n const end = (page + 1) * this.props.limit;\n\n return new Tabular(data.rows.slice(start, end));\n }\n}\n\nexport default PaginationLimit;\n","import {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\nimport { ServerStorageOptions } from '../../storage/server';\n\ninterface ServerPaginationLimitProps extends PipelineProcessorProps {\n page: number;\n limit: number;\n url?: (prevUrl: string, page: number, limit: number) => string;\n body?: (prevBody: BodyInit, page: number, limit: number) => BodyInit;\n}\n\nclass ServerPaginationLimit extends PipelineProcessor<\n ServerStorageOptions,\n ServerPaginationLimitProps\n> {\n get type(): ProcessorType {\n return ProcessorType.ServerLimit;\n }\n\n _process(options?: ServerStorageOptions): ServerStorageOptions {\n const updates = {};\n\n if (this.props.url) {\n updates['url'] = this.props.url(\n options.url,\n this.props.page,\n this.props.limit,\n );\n }\n\n if (this.props.body) {\n updates['body'] = this.props.body(\n options.body,\n this.props.page,\n this.props.limit,\n );\n }\n\n return {\n ...options,\n ...updates,\n };\n }\n}\n\nexport default ServerPaginationLimit;\n","import { h, Fragment } from 'preact';\nimport PaginationLimit from '../../pipeline/limit/pagination';\nimport { classJoin, className } from '../../util/className';\nimport ServerPaginationLimit from '../../pipeline/limit/serverPagination';\nimport Tabular from '../../tabular';\nimport { PipelineProcessor } from '../../pipeline/processor';\nimport { PluginBaseComponent, PluginBaseProps } from '../../plugin';\n\ninterface PaginationState {\n page: number;\n limit?: number;\n total: number;\n}\n\nexport interface PaginationConfig {\n enabled: boolean;\n limit?: number;\n page?: number;\n summary?: boolean;\n nextButton?: boolean;\n prevButton?: boolean;\n buttonsCount?: number;\n resetPageOnUpdate?: boolean;\n server?: {\n url?: (prevUrl: string, page: number, limit: number) => string;\n body?: (prevBody: BodyInit, page: number, limit: number) => BodyInit;\n };\n}\n\nexport class Pagination extends PluginBaseComponent<\n PluginBaseProps<Pagination> & PaginationConfig,\n PaginationState\n> {\n private processor: PaginationLimit | ServerPaginationLimit;\n private onUpdateFn: (processor: PipelineProcessor<any, any>) => void;\n private setTotalFromTabularFn: (tabular: Tabular) => void;\n\n static defaultProps = {\n summary: true,\n nextButton: true,\n prevButton: true,\n buttonsCount: 3,\n limit: 10,\n resetPageOnUpdate: true,\n };\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n limit: props.limit,\n page: props.page || 0,\n total: 0,\n };\n }\n\n componentWillMount(): void {\n if (this.props.enabled) {\n let processor;\n\n this.setTotalFromTabularFn = this.setTotalFromTabular.bind(this);\n\n if (this.props.server) {\n processor = new ServerPaginationLimit({\n limit: this.state.limit,\n page: this.state.page,\n url: this.props.server.url,\n body: this.props.server.body,\n });\n\n this.config.pipeline.on('afterProcess', this.setTotalFromTabularFn);\n } else {\n processor = new PaginationLimit({\n limit: this.state.limit,\n page: this.state.page,\n });\n\n // Pagination (all Limit processors) is the last step in the pipeline\n // and we assume that at this stage, we have the rows that we care about.\n // Let's grab the rows before processing Pagination and set total number of rows\n processor.on('beforeProcess', this.setTotalFromTabularFn);\n }\n\n this.processor = processor;\n this.config.pipeline.register(processor);\n\n // we need to make sure that the state is set\n // to the default props when an error happens\n this.config.pipeline.on('error', () => {\n this.setState({\n total: 0,\n page: 0,\n });\n });\n }\n }\n\n private setTotalFromTabular(tabular: Tabular): void {\n this.setTotal(tabular.length);\n }\n\n private onUpdate(processor): void {\n // this is to ensure that the current page is set to 0\n // when a processor is updated for some reason\n if (this.props.resetPageOnUpdate && processor !== this.processor) {\n this.setPage(0);\n }\n }\n\n componentDidMount(): void {\n this.onUpdateFn = this.onUpdate.bind(this);\n this.config.pipeline.on('updated', this.onUpdateFn);\n }\n\n componentWillUnmount() {\n this.config.pipeline.unregister(this.processor);\n this.config.pipeline.off('updated', this.onUpdateFn);\n }\n\n private get pages(): number {\n return Math.ceil(this.state.total / this.state.limit);\n }\n\n private setPage(page: number): void {\n if (page >= this.pages || page < 0 || page === this.state.page) {\n return null;\n }\n\n this.setState({\n page: page,\n });\n\n this.processor.setProps({\n page: page,\n });\n }\n\n private setTotal(totalRows: number): void {\n // to set the correct total number of rows\n // when running in-memory operations\n this.setState({\n total: totalRows,\n });\n }\n\n renderPages() {\n if (this.props.buttonsCount <= 0) {\n return null;\n }\n\n // how many pagination buttons to render?\n const maxCount: number = Math.min(this.pages, this.props.buttonsCount);\n\n let pagePivot = Math.min(this.state.page, Math.floor(maxCount / 2));\n if (this.state.page + Math.floor(maxCount / 2) >= this.pages) {\n pagePivot = maxCount - (this.pages - this.state.page);\n }\n\n return (\n <Fragment>\n {this.pages > maxCount && this.state.page - pagePivot > 0 && (\n <Fragment>\n <button\n tabIndex={0}\n role=\"button\"\n onClick={this.setPage.bind(this, 0)}\n title={this._('pagination.firstPage')}\n aria-label={this._('pagination.firstPage')}\n className={this.config.className.paginationButton}\n >\n {this._('1')}\n </button>\n <button\n tabIndex={-1}\n className={classJoin(\n className('spread'),\n this.config.className.paginationButton,\n )}\n >\n ...\n </button>\n </Fragment>\n )}\n\n {Array.from(Array(maxCount).keys())\n .map((i) => this.state.page + (i - pagePivot))\n .map((i) => (\n <button\n tabIndex={0}\n role=\"button\"\n onClick={this.setPage.bind(this, i)}\n className={classJoin(\n this.state.page === i\n ? classJoin(\n className('currentPage'),\n this.config.className.paginationButtonCurrent,\n )\n : null,\n this.config.className.paginationButton,\n )}\n title={this._('pagination.page', i + 1)}\n aria-label={this._('pagination.page', i + 1)}\n >\n {this._(`${i + 1}`)}\n </button>\n ))}\n\n {this.pages > maxCount && this.pages > this.state.page + pagePivot + 1 && (\n <Fragment>\n <button\n tabIndex={-1}\n className={classJoin(\n className('spread'),\n this.config.className.paginationButton,\n )}\n >\n ...\n </button>\n <button\n tabIndex={0}\n role=\"button\"\n onClick={this.setPage.bind(this, this.pages - 1)}\n title={this._('pagination.page', this.pages)}\n aria-label={this._('pagination.page', this.pages)}\n className={this.config.className.paginationButton}\n >\n {this._(`${this.pages}`)}\n </button>\n </Fragment>\n )}\n </Fragment>\n );\n }\n\n renderSummary() {\n return (\n <Fragment>\n {this.props.summary && this.state.total > 0 && (\n <div\n role=\"status\"\n aria-live=\"polite\"\n className={classJoin(\n className('summary'),\n this.config.className.paginationSummary,\n )}\n title={this._(\n 'pagination.navigate',\n this.state.page + 1,\n this.pages,\n )}\n >\n {this._('pagination.showing')}{' '}\n <b>{this._(`${this.state.page * this.state.limit + 1}`)}</b>{' '}\n {this._('pagination.to')}{' '}\n <b>\n {this._(\n `${Math.min(\n (this.state.page + 1) * this.state.limit,\n this.state.total,\n )}`,\n )}\n </b>{' '}\n {this._('pagination.of')} <b>{this._(`${this.state.total}`)}</b>{' '}\n {this._('pagination.results')}\n </div>\n )}\n </Fragment>\n );\n }\n\n render() {\n if (!this.props.enabled) return null;\n\n return (\n <div\n className={classJoin(\n className('pagination'),\n this.config.className.pagination,\n )}\n >\n {this.renderSummary()}\n\n <div className={className('pages')}>\n {this.props.prevButton && (\n <button\n tabIndex={0}\n role=\"button\"\n disabled={this.state.page === 0}\n onClick={this.setPage.bind(this, this.state.page - 1)}\n title={this._('pagination.previous')}\n aria-label={this._('pagination.previous')}\n className={classJoin(\n this.config.className.paginationButton,\n this.config.className.paginationButtonPrev,\n )}\n >\n {this._('pagination.previous')}\n </button>\n )}\n\n {this.renderPages()}\n\n {this.props.nextButton && (\n <button\n tabIndex={0}\n role=\"button\"\n disabled={this.pages === this.state.page + 1 || this.pages === 0}\n onClick={this.setPage.bind(this, this.state.page + 1)}\n title={this._('pagination.next')}\n aria-label={this._('pagination.next')}\n className={classJoin(\n this.config.className.paginationButton,\n this.config.className.paginationButtonNext,\n )}\n >\n {this._('pagination.next')}\n </button>\n )}\n </div>\n </div>\n );\n }\n}\n","export function width(width: string | number, containerWidth?: number): number {\n if (typeof width == 'string') {\n if (width.indexOf('%') > -1) {\n return (containerWidth / 100) * parseInt(width, 10);\n } else {\n return parseInt(width, 10);\n }\n }\n\n return width;\n}\n\nexport function px(width: number): string {\n if (!width) return '';\n return `${Math.floor(width)}px`;\n}\n\n/**\n * Accepts a ShadowTable and tries to find the clientWidth\n * that is already rendered on the web browser\n *\n * @param shadowTable\n * @param columnId\n */\nexport function getWidth(shadowTable: Element, columnId: string): number {\n if (!shadowTable) {\n return null;\n }\n\n const td = shadowTable.querySelector(\n `thead th[data-column-id=\"${columnId}\"]`,\n );\n\n if (td) {\n return td.clientWidth;\n }\n\n return null;\n}\n","import { Component, h, RefObject } from 'preact';\nimport { BaseComponent, BaseProps } from '../base';\nimport { className } from '../../util/className';\n\ninterface ShadowTableProps extends BaseProps {\n tableRef?: RefObject<Component>;\n}\n\n/**\n * ShadowTable renders a hidden table and is used to calculate the column's width\n * when autoWidth option is enabled\n */\nexport class ShadowTable extends BaseComponent<ShadowTableProps, {}> {\n render() {\n if (this.props.tableRef.current) {\n const tableRef = this.props.tableRef;\n const tableElement = tableRef.current.base.cloneNode(\n true,\n ) as HTMLTableElement;\n\n tableElement.className += ` ${className('shadowTable')}`;\n\n tableElement.style.position = 'absolute';\n tableElement.style.zIndex = '-2147483640';\n tableElement.style.visibility = 'hidden';\n tableElement.style.tableLayout = 'auto';\n tableElement.style.width = 'auto';\n tableElement.style.padding = '0';\n tableElement.style.margin = '0';\n tableElement.style.border = 'none';\n tableElement.style.outline = 'none';\n\n return (\n <div\n ref={(nodeElement) => {\n nodeElement && nodeElement.appendChild(tableElement);\n }}\n />\n );\n }\n\n return null;\n }\n}\n","export function camelCase(str: string): string {\n if (!str) return '';\n\n const words = str.split(' ');\n\n // do not convert strings that are already in camelCase format\n if (words.length === 1 && /([a-z][A-Z])+/g.test(str)) {\n return str;\n }\n\n return words\n .map(function (word, index) {\n // if it is the first word, lowercase all the chars\n if (index == 0) {\n return word.toLowerCase();\n }\n\n // if it is not the first word only upper case the first char and lowercase the rest\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n })\n .join('');\n}\n","import { OneDArray, TColumn, TwoDArray } from './types';\nimport Base from './base';\nimport { UserConfig } from './config';\nimport { getWidth, px, width } from './util/width';\nimport { ShadowTable } from './view/table/shadow';\nimport {\n Component,\n ComponentChild,\n createRef,\n h,\n isValidElement,\n RefObject,\n render,\n} from 'preact';\nimport { camelCase } from './util/string';\nimport { flatten } from './util/array';\nimport logger from './util/log';\nimport { PluginPosition } from './plugin';\n\nclass Header extends Base {\n private _columns: OneDArray<TColumn>;\n\n constructor() {\n super();\n\n this._columns = [];\n }\n\n get columns(): OneDArray<TColumn> {\n return this._columns;\n }\n\n set columns(columns) {\n this._columns = columns;\n }\n\n /**\n * Tries to automatically adjust the width of columns based on:\n * - Header cell content\n * - Cell content of the first row\n * - Cell content of the last row\n *\n * @param container\n * @param tableRef\n * @param tempRef\n * @param autoWidth\n */\n adjustWidth(\n container: Element,\n tableRef: RefObject<Component>,\n tempRef: RefObject<HTMLDivElement>,\n autoWidth = true,\n ): this {\n if (!container) {\n // we can't calculate the width because the container\n // is unknown at this stage\n return this;\n }\n\n // pixels\n const containerWidth = container.clientWidth;\n\n // let's create a shadow table with the first 10 rows of the data\n // and let the browser to render the table with table-layout: auto\n // no padding, margin or border to get the minimum space required\n // to render columns. One the table is rendered and widths are known,\n // we unmount the shadow table from the DOM and set the correct width\n const shadowTable = createRef();\n if (tableRef.current && autoWidth) {\n // render a ShadowTable with the first 10 rows\n const el = h(ShadowTable, {\n tableRef: tableRef,\n });\n el.ref = shadowTable;\n render(el, tempRef.current);\n }\n\n for (const column of flatten(Header.tabularFormat(this.columns))) {\n // because we don't want to set the width of parent THs\n if (column.columns && column.columns.length > 0) {\n continue;\n }\n\n if (!column.width && autoWidth) {\n // tries to find the corresponding cell\n // from the ShadowTable and set the correct width\n column.width = px(getWidth(shadowTable.current.base, column.id));\n } else {\n // column with is already defined\n // sets the column with based on the width of its container\n column.width = px(width(column.width, containerWidth));\n }\n }\n\n if (tableRef.current && autoWidth) {\n // unmount the shadow table from temp\n render(null, tempRef.current);\n }\n\n return this;\n }\n\n private setSort(userConfig: UserConfig, columns?: OneDArray<TColumn>): void {\n const cols = columns || this.columns || [];\n\n for (const column of cols) {\n // sorting can only be enabled for columns without any children\n if (column.columns && column.columns.length > 0) {\n column.sort = {\n enabled: false,\n };\n }\n\n // implicit userConfig.sort flag\n if (column.sort === undefined && userConfig.sort) {\n column.sort = {\n enabled: true,\n };\n }\n\n // false, null, etc.\n if (!column.sort) {\n column.sort = {\n enabled: false,\n };\n } else if (typeof column.sort === 'object') {\n column.sort = {\n enabled: true,\n ...column.sort,\n };\n }\n\n if (column.columns) {\n this.setSort(userConfig, column.columns);\n }\n }\n }\n\n private setFixedHeader(\n userConfig: UserConfig,\n columns?: OneDArray<TColumn>,\n ): void {\n const cols = columns || this.columns || [];\n\n for (const column of cols) {\n if (column.fixedHeader === undefined) {\n column.fixedHeader = userConfig.fixedHeader;\n }\n\n if (column.columns) {\n this.setFixedHeader(userConfig, column.columns);\n }\n }\n }\n\n private setID(columns?: OneDArray<TColumn>): void {\n const cols = columns || this.columns || [];\n\n for (const column of cols) {\n if (!column.id && typeof column.name === 'string') {\n // let's guess the column ID if it's undefined\n column.id = camelCase(column.name);\n }\n\n if (!column.id) {\n logger.error(\n `Could not find a valid ID for one of the columns. Make sure a valid \"id\" is set for all columns.`,\n );\n }\n\n // nested columns\n if (column.columns) {\n this.setID(column.columns);\n }\n }\n }\n\n private populatePlugins(\n userConfig: UserConfig,\n columns: OneDArray<TColumn>,\n ): void {\n // populate the cell columns\n for (const column of columns) {\n if (column.plugin !== undefined) {\n userConfig.plugin.add({\n id: column.id,\n props: {},\n ...column.plugin,\n position: PluginPosition.Cell,\n });\n }\n }\n }\n\n static fromColumns(\n columns: OneDArray<TColumn | string | ComponentChild>,\n ): Header {\n const header = new Header();\n\n for (const column of columns) {\n if (typeof column === 'string' || isValidElement(column)) {\n header.columns.push({\n name: column,\n });\n } else if (typeof column === 'object') {\n const typedColumn = column as TColumn;\n\n if (typedColumn.columns) {\n typedColumn.columns = Header.fromColumns(typedColumn.columns).columns;\n }\n\n // because the data for that cell is null\n // if we are trying to render a plugin\n if (typeof typedColumn.plugin === 'object') {\n if (typedColumn.data === undefined) {\n typedColumn.data = null;\n }\n }\n\n // TColumn type\n header.columns.push(column as TColumn);\n }\n }\n\n return header;\n }\n\n static fromUserConfig(userConfig: UserConfig): Header | null {\n const header = new Header();\n\n // TODO: this part needs some refactoring\n if (userConfig.from) {\n header.columns = Header.fromHTMLTable(userConfig.from).columns;\n } else if (userConfig.columns) {\n header.columns = Header.fromColumns(userConfig.columns).columns;\n } else if (\n userConfig.data &&\n typeof userConfig.data[0] === 'object' &&\n !(userConfig.data[0] instanceof Array)\n ) {\n // if data[0] is an object but not an Array\n // used for when a JSON payload is provided\n header.columns = Object.keys(userConfig.data[0]).map((name) => {\n return { name: name };\n });\n }\n\n if (header.columns.length) {\n header.setID();\n header.setSort(userConfig);\n header.setFixedHeader(userConfig);\n header.populatePlugins(userConfig, header.columns);\n return header;\n }\n\n return null;\n }\n\n static fromHTMLTable(element: HTMLElement): Header {\n const header = new Header();\n const thead = element.querySelector('thead');\n const ths = thead.querySelectorAll('th');\n\n for (const th of ths as any) {\n header.columns.push({\n name: th.innerHTML,\n width: th.width,\n });\n }\n\n return header;\n }\n\n /**\n * Converts the tree-like format of Header to a tabular format\n *\n * Example:\n *\n * H1\n * H1-H1\n * H1-H2\n * H2\n * H2-H1\n *\n * becomes:\n * [\n * [H1, H2],\n * [H1-H1, H1-H2, H2-H1]\n * ]\n *\n * @param columns\n */\n static tabularFormat(columns: OneDArray<TColumn>): TwoDArray<TColumn> {\n let result: TwoDArray<TColumn> = [];\n const cols = columns || [];\n let nextRow = [];\n\n if (cols && cols.length) {\n result.push(cols);\n\n for (const col of cols) {\n if (col.columns && col.columns.length) {\n nextRow = nextRow.concat(col.columns);\n }\n }\n\n if (nextRow.length) {\n result = result.concat(this.tabularFormat(nextRow));\n }\n }\n\n return result;\n }\n\n /**\n * Returns an array of leaf columns (last columns in the tree)\n *\n * @param columns\n */\n static leafColumns(columns: OneDArray<TColumn>): OneDArray<TColumn> {\n let result: OneDArray<TColumn> = [];\n const cols = columns || [];\n\n if (cols && cols.length) {\n for (const col of cols) {\n if (!col.columns || col.columns.length === 0) {\n result.push(col);\n }\n\n if (col.columns) {\n result = result.concat(this.leafColumns(col.columns));\n }\n }\n }\n\n return result;\n }\n\n /**\n * Returns the maximum depth of a column tree\n * @param column\n */\n static maximumDepth(column: TColumn): number {\n return this.tabularFormat([column]).length - 1;\n }\n}\n\nexport default Header;\n","const _prefix = 'ID_';\n\n/**\n * This class is mostly based on Flux's Dispatcher by Facebook\n * https://github.com/facebook/flux/blob/master/src/Dispatcher.js\n */\nexport default class Dispatcher<TPayload> {\n _callbacks: { [key: string]: (payload: TPayload) => void };\n _isDispatching: boolean;\n _isHandled: { [key: string]: boolean };\n _isPending: { [key: string]: boolean };\n _lastID: number;\n _pendingPayload: TPayload;\n\n constructor() {\n this._callbacks = {};\n this._isDispatching = false;\n this._isHandled = {};\n this._isPending = {};\n this._lastID = 1;\n }\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n */\n register(callback: (payload: TPayload) => void): string {\n const id = _prefix + this._lastID++;\n this._callbacks[id] = callback;\n return id;\n }\n /**\n * Removes a callback based on its token.\n */\n unregister(id: string): void {\n if (!this._callbacks[id]) {\n throw Error(\n `Dispatcher.unregister(...): ${id} does not map to a registered callback.`,\n );\n }\n\n delete this._callbacks[id];\n }\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n */\n waitFor(ids: Array<string>): void {\n if (!this._isDispatching) {\n throw Error(\n 'Dispatcher.waitFor(...): Must be invoked while dispatching.',\n );\n }\n\n for (let ii = 0; ii < ids.length; ii++) {\n const id = ids[ii];\n if (this._isPending[id]) {\n if (!this._isHandled[id]) {\n throw Error(`Dispatcher.waitFor(...): Circular dependency detected while ' +\n 'waiting for ${id}.`);\n }\n continue;\n }\n if (!this._callbacks[id]) {\n throw Error(\n `Dispatcher.waitFor(...): ${id} does not map to a registered callback.`,\n );\n }\n\n this._invokeCallback(id);\n }\n }\n /**\n * Dispatches a payload to all registered callbacks.\n */\n dispatch(payload: TPayload): void {\n if (this._isDispatching) {\n throw Error(\n 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.',\n );\n }\n\n this._startDispatching(payload);\n try {\n for (const id in this._callbacks) {\n if (this._isPending[id]) {\n continue;\n }\n this._invokeCallback(id);\n }\n } finally {\n this._stopDispatching();\n }\n }\n /**\n * Is this Dispatcher currently dispatching.\n */\n isDispatching(): boolean {\n return this._isDispatching;\n }\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @internal\n */\n private _invokeCallback(id: string): void {\n this._isPending[id] = true;\n this._callbacks[id](this._pendingPayload);\n this._isHandled[id] = true;\n }\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @internal\n */\n private _startDispatching(payload: TPayload): void {\n for (const id in this._callbacks) {\n this._isPending[id] = false;\n this._isHandled[id] = false;\n }\n this._pendingPayload = payload;\n this._isDispatching = true;\n }\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n private _stopDispatching(): void {\n delete this._pendingPayload;\n this._isDispatching = false;\n }\n}\n","/**\n * Base Storage class. All storage implementation must inherit this class\n */\nimport { TData } from '../types';\n\nabstract class Storage<I> {\n /**\n * Returns all rows based on ...args\n * @param args\n */\n abstract async get(...args): Promise<StorageResponse>;\n\n /**\n * To set all rows\n *\n * @param data\n */\n set?(data: I | Function): this;\n}\n\nexport interface StorageResponse {\n data: TData;\n total: number;\n}\n\nexport default Storage;\n","import Storage, { StorageResponse } from './storage';\nimport { TData } from '../types';\n\nclass MemoryStorage extends Storage<TData> {\n private data: (() => TData) | (() => Promise<TData>);\n\n constructor(data: TData | (() => TData) | (() => Promise<TData>)) {\n super();\n this.set(data);\n }\n\n public async get(): Promise<StorageResponse> {\n const data = await this.data();\n\n return {\n data: data,\n total: data.length,\n };\n }\n\n public set(data: TData | (() => TData) | (() => Promise<TData>)): this {\n if (data instanceof Array) {\n this.data = (): TData => data;\n } else if (data instanceof Function) {\n this.data = data;\n }\n\n return this;\n }\n}\n\nexport default MemoryStorage;\n","import Storage, { StorageResponse } from './storage';\nimport log from '../util/log';\n\nexport interface ServerStorageOptions extends RequestInit {\n url: string;\n // to format the data and columns\n then?: (data: any) => any[][];\n // to handle the response from the server. `handle` will\n // be called first and then `then` callback will be invoked\n // The purpose of this function is to handle the behaviour\n // of server and either reject and resolve the initial response\n // before calling the `then` function\n handle?: (response: Response) => Promise<any>;\n total?: (data: any) => number;\n // to bypass the current implementation of ServerStorage and process the\n // request manually (e.g. when user wants to connect their own SDK/HTTP Client)\n data?: (opts: ServerStorageOptions) => Promise<StorageResponse>;\n}\n\nclass ServerStorage extends Storage<ServerStorageOptions> {\n private readonly options: ServerStorageOptions;\n\n constructor(options: ServerStorageOptions) {\n super();\n this.options = options;\n }\n\n private handler(response: Response): Promise<any> {\n if (typeof this.options.handle === 'function') {\n return this.options.handle(response);\n }\n\n if (response.ok) {\n return response.json();\n } else {\n log.error(\n `Could not fetch data: ${response.status} - ${response.statusText}`,\n true,\n );\n return null;\n }\n }\n\n public get(options?: ServerStorageOptions): Promise<StorageResponse> {\n // this.options is the initial config object\n // options is the runtime config passed by the pipeline (e.g. search component)\n const opts = {\n ...this.options,\n ...options,\n };\n\n // if `options.data` is provided, the current ServerStorage\n // implementation will be ignored and we let options.data to\n // handle the request. Useful when HTTP client needs to be\n // replaced with something else\n if (typeof opts.data === 'function') {\n return opts.data(opts);\n }\n\n return fetch(opts.url, opts)\n .then(this.handler.bind(this))\n .then((res) => {\n return {\n data: opts.then(res),\n total: typeof opts.total === 'function' ? opts.total(res) : undefined,\n };\n });\n }\n}\n\nexport default ServerStorage;\n","import { UserConfig } from '../config';\nimport MemoryStorage from './memory';\nimport Storage from './storage';\nimport ServerStorage from './server';\nimport log from '../util/log';\nimport { decode, html } from '../util/html';\n\nclass StorageUtils {\n /**\n * Accepts the userConfig dict and tries to guess and return a Storage type\n *\n * @param userConfig\n */\n public static createFromUserConfig(userConfig: UserConfig): Storage<any> {\n let storage = null;\n // `data` array is provided\n if (userConfig.data) {\n storage = new MemoryStorage(userConfig.data);\n }\n\n if (userConfig.from) {\n storage = new MemoryStorage(this.tableElementToArray(userConfig.from));\n // remove the source table element from the DOM\n userConfig.from.style.display = 'none';\n }\n\n if (userConfig.server) {\n storage = new ServerStorage(userConfig.server);\n }\n\n if (!storage) {\n log.error('Could not determine the storage type', true);\n }\n\n return storage;\n }\n\n /**\n * Accepts a HTML table element and converts it into a 2D array of data\n *\n * TODO: This function can be a step in the pipeline: Convert Table -> Load into a memory storage -> ...\n *\n * @param element\n */\n static tableElementToArray(element: HTMLElement): any[][] {\n const arr = [];\n const tbody = element.querySelector('tbody');\n const rows = tbody.querySelectorAll('tr');\n\n for (const row of rows as any) {\n const cells: HTMLElement[] = row.querySelectorAll('td');\n const parsedRow = [];\n\n for (const cell of cells) {\n // try to capture a TD with single text element first\n if (\n cell.childNodes.length === 1 &&\n cell.childNodes[0].nodeType === Node.TEXT_NODE\n ) {\n parsedRow.push(decode(cell.innerHTML));\n } else {\n parsedRow.push(html(cell.innerHTML));\n }\n }\n\n arr.push(parsedRow);\n }\n\n return arr;\n }\n}\n\nexport default StorageUtils;\n","import { PipelineProcessor, ProcessorType } from './processor';\nimport { ID } from '../util/id';\nimport log from '../util/log';\nimport { EventEmitter } from '../util/eventEmitter';\n\ninterface PipelineEvents<T> {\n /**\n * Generic updated event. Triggers the callback function when the pipeline\n * is updated, including when a new processor is registered, a processor's props\n * get updated, etc.\n */\n updated: (processor: PipelineProcessor<any, any>) => void;\n /**\n * Triggers the callback function when a new\n * processor is registered successfully\n */\n afterRegister: () => void;\n /**\n * Triggers the callback when a registered\n * processor's property is updated\n */\n propsUpdated: () => void;\n /**\n * Triggers the callback function when the pipeline\n * is fully processed, before returning the results\n *\n * afterProcess will not be called if there is an\n * error in the pipeline (i.e a step throw an Error)\n */\n afterProcess: (prev: T) => void;\n /**\n * Triggers the callback function when the pipeline\n * fails to process all steps or at least one step\n * throws an Error\n */\n error: (prev: T) => void;\n}\n\nclass Pipeline<T, P = {}> extends EventEmitter<PipelineEvents<T>> {\n // available steps for this pipeline\n private readonly _steps: Map<\n ProcessorType,\n PipelineProcessor<T, P>[]\n > = new Map<ProcessorType, PipelineProcessor<T, P>[]>();\n // used to cache the results of processors using their id field\n private cache: Map<string, any> = new Map<string, any>();\n // keeps the index of the last updated processor in the registered\n // processors list and will be used to invalidate the cache\n // -1 means all new processors should be processed\n private lastProcessorIndexUpdated = -1;\n\n constructor(steps?: PipelineProcessor<any, any>[]) {\n super();\n\n if (steps) {\n steps.forEach((step) => this.register(step));\n }\n }\n\n /**\n * Clears the `cache` array\n */\n clearCache(): void {\n this.cache = new Map<string, any>();\n this.lastProcessorIndexUpdated = -1;\n }\n\n /**\n * Registers a new processor\n *\n * @param processor\n * @param priority\n */\n register(\n processor: PipelineProcessor<any, any>,\n priority: number = null,\n ): void {\n if (processor.type === null) {\n throw Error('Processor type is not defined');\n }\n\n // binding the propsUpdated callback to the Pipeline\n processor.on('propsUpdated', this.processorPropsUpdated.bind(this));\n\n this.addProcessorByPriority(processor, priority);\n this.afterRegistered(processor);\n }\n\n /**\n * Removes a processor from the list\n *\n * @param processor\n */\n unregister(processor: PipelineProcessor<any, any>): void {\n if (!processor) return;\n\n const subSteps = this._steps.get(processor.type);\n\n if (subSteps && subSteps.length) {\n this._steps.set(\n processor.type,\n subSteps.filter((proc) => proc != processor),\n );\n this.emit('updated', processor);\n }\n }\n\n /**\n * Registers a new processor\n *\n * @param processor\n * @param priority\n */\n private addProcessorByPriority(\n processor: PipelineProcessor<T, P>,\n priority: number,\n ): void {\n let subSteps = this._steps.get(processor.type);\n\n if (!subSteps) {\n const newSubStep = [];\n this._steps.set(processor.type, newSubStep);\n subSteps = newSubStep;\n }\n\n if (priority === null || priority < 0) {\n subSteps.push(processor);\n } else {\n if (!subSteps[priority]) {\n // slot is empty\n subSteps[priority] = processor;\n } else {\n // slot is NOT empty\n const first = subSteps.slice(0, priority - 1);\n const second = subSteps.slice(priority + 1);\n\n this._steps.set(processor.type, first.concat(processor).concat(second));\n }\n }\n }\n\n /**\n * Flattens the _steps Map and returns a list of steps with their correct priorities\n */\n get steps(): PipelineProcessor<T, P>[] {\n let steps: PipelineProcessor<T, P>[] = [];\n\n for (const type of this.getSortedProcessorTypes()) {\n const subSteps = this._steps.get(type);\n\n if (subSteps && subSteps.length) {\n steps = steps.concat(subSteps);\n }\n }\n\n // to remove any undefined elements\n return steps.filter((s) => s);\n }\n\n /**\n * Accepts ProcessType and returns an array of the registered processes\n * with the give type\n *\n * @param type\n */\n getStepsByType(type: ProcessorType): PipelineProcessor<T, P>[] {\n return this.steps.filter((process) => process.type === type);\n }\n\n /**\n * Returns a list of ProcessorType according to their priority\n */\n private getSortedProcessorTypes(): ProcessorType[] {\n return Object.keys(ProcessorType)\n .filter((key) => !isNaN(Number(key)))\n .map((key) => Number(key));\n }\n\n /**\n * Runs all registered processors based on their correct priority\n * and returns the final output after running all steps\n *\n * @param data\n */\n async process(data?: T): Promise<T> {\n const lastProcessorIndexUpdated = this.lastProcessorIndexUpdated;\n const steps = this.steps;\n\n let prev = data;\n\n try {\n for (const processor of steps) {\n const processorIndex = this.findProcessorIndexByID(processor.id);\n\n if (processorIndex >= lastProcessorIndexUpdated) {\n // we should execute process() here since the last\n // updated processor was before \"processor\".\n // This is to ensure that we always have correct and up to date\n // data from processors and also to skip them when necessary\n prev = await processor.process(prev);\n this.cache.set(processor.id, prev);\n } else {\n // cached results already exist\n prev = this.cache.get(processor.id);\n }\n }\n } catch (e) {\n log.error(e);\n // trigger the onError callback\n this.emit('error', prev);\n\n // rethrow\n throw e;\n }\n\n // means the pipeline is up to date\n this.lastProcessorIndexUpdated = steps.length;\n\n // triggers the afterProcess callbacks with the results\n this.emit('afterProcess', prev);\n\n return prev;\n }\n\n /**\n * Returns the registered processor's index in _steps array\n *\n * @param processorID\n */\n private findProcessorIndexByID(processorID: ID): number {\n return this.steps.findIndex((p) => p.id == processorID);\n }\n\n /**\n * Sets the last updates processors index locally\n * This is used to invalid or skip a processor in\n * the process() method\n */\n private setLastProcessorIndex(processor: PipelineProcessor<T, P>): void {\n const processorIndex = this.findProcessorIndexByID(processor.id);\n\n if (this.lastProcessorIndexUpdated > processorIndex) {\n this.lastProcessorIndexUpdated = processorIndex;\n }\n }\n\n private processorPropsUpdated(processor): void {\n this.setLastProcessorIndex(processor);\n this.emit('propsUpdated');\n this.emit('updated', processor);\n }\n\n private afterRegistered(processor): void {\n this.setLastProcessorIndex(processor);\n this.emit('afterRegister');\n this.emit('updated', processor);\n }\n}\n\nexport default Pipeline;\n","import Storage, { StorageResponse } from '../../storage/storage';\nimport {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\n\ninterface StorageExtractorProps extends PipelineProcessorProps {\n storage: Storage<any>;\n}\n\nclass StorageExtractor extends PipelineProcessor<\n Promise<StorageResponse>,\n StorageExtractorProps\n> {\n get type(): ProcessorType {\n return ProcessorType.Extractor;\n }\n\n async _process(opts: any): Promise<StorageResponse> {\n return await this.props.storage.get(opts);\n }\n}\n\nexport default StorageExtractor;\n","import { PipelineProcessor, ProcessorType } from '../processor';\nimport Tabular from '../../tabular';\nimport { ArrayResponse } from './storageResponseToArray';\n\nclass ArrayToTabularTransformer extends PipelineProcessor<Tabular, {}> {\n get type(): ProcessorType {\n return ProcessorType.Transformer;\n }\n\n _process(arrayResponse: ArrayResponse): Tabular {\n const tabular = Tabular.fromArray(arrayResponse.data);\n\n // for server-side storage\n tabular.length = arrayResponse.total;\n\n return tabular;\n }\n}\n\nexport default ArrayToTabularTransformer;\n","import {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\nimport { ServerStorageOptions } from '../../storage/server';\n\ninterface ServerInitiatorProps extends PipelineProcessorProps {\n serverStorageOptions: ServerStorageOptions;\n}\n\nclass ServerInitiator extends PipelineProcessor<\n ServerStorageOptions,\n ServerInitiatorProps\n> {\n get type(): ProcessorType {\n return ProcessorType.Initiator;\n }\n\n _process(): ServerStorageOptions {\n return Object.entries(this.props.serverStorageOptions)\n .filter(([_, val]) => typeof val !== 'function')\n .reduce(\n (acc, [k, v]) => ({ ...acc, [k]: v }),\n {},\n ) as ServerStorageOptions;\n }\n}\n\nexport default ServerInitiator;\n","import {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\nimport { StorageResponse } from '../../storage/storage';\nimport { TCell, TData, TDataArray, TDataObject, TwoDArray } from '../../types';\nimport Header from '../../header';\nimport logger from '../../util/log';\n\nexport interface ArrayResponse {\n data: TwoDArray<TCell>;\n total: number;\n}\n\ninterface StorageResponseToArrayTransformerProps\n extends PipelineProcessorProps {\n header: Header;\n}\n\nclass StorageResponseToArrayTransformer extends PipelineProcessor<\n ArrayResponse,\n StorageResponseToArrayTransformerProps\n> {\n get type(): ProcessorType {\n return ProcessorType.Transformer;\n }\n\n private castData(data: TData): TwoDArray<TCell> {\n if (!data || !data.length) {\n return [];\n }\n\n if (!this.props.header || !this.props.header.columns) {\n return data as TwoDArray<TCell>;\n }\n\n const columns = Header.leafColumns(this.props.header.columns);\n\n // if it's a 2d array already\n if (data[0] instanceof Array) {\n return (data as TDataArray).map((row) => {\n let pad = 0;\n\n return columns.map((column, i) => {\n // default `data` is provided for this column\n if (column.data !== undefined) {\n pad++;\n\n if (typeof column.data === 'function') {\n return column.data(row);\n } else {\n return column.data;\n }\n }\n\n return row[i - pad];\n });\n });\n }\n\n // if it's an array of objects (but not array of arrays, i.e JSON payload)\n if (typeof data[0] === 'object' && !(data[0] instanceof Array)) {\n return (data as TDataObject).map((row) =>\n columns.map((column, i) => {\n if (column.data !== undefined) {\n if (typeof column.data === 'function') {\n return column.data(row);\n } else {\n return column.data;\n }\n } else if (column.id) {\n return row[column.id];\n } else {\n logger.error(`Could not find the correct cell for column at position ${i}.\n Make sure either 'id' or 'selector' is defined for all columns.`);\n return null;\n }\n }),\n );\n }\n\n return [];\n }\n\n _process(storageResponse: StorageResponse): ArrayResponse {\n return {\n data: this.castData(storageResponse.data),\n total: storageResponse.total,\n };\n }\n}\n\nexport default StorageResponseToArrayTransformer;\n","import { Config } from '../config';\nimport Pipeline from './pipeline';\nimport Tabular from '../tabular';\nimport StorageExtractor from './extractor/storage';\nimport ArrayToTabularTransformer from './transformer/arrayToTabular';\nimport ServerStorage from '../storage/server';\nimport ServerInitiator from './initiator/server';\nimport StorageResponseToArrayTransformer from './transformer/storageResponseToArray';\n\nclass PipelineUtils {\n static createFromConfig(config: Config): Pipeline<Tabular> {\n const pipeline = new Pipeline<Tabular>();\n\n if (config.storage instanceof ServerStorage) {\n pipeline.register(\n new ServerInitiator({\n serverStorageOptions: config.server,\n }),\n );\n }\n\n pipeline.register(new StorageExtractor({ storage: config.storage }));\n pipeline.register(\n new StorageResponseToArrayTransformer({ header: config.header }),\n );\n pipeline.register(new ArrayToTabularTransformer());\n\n return pipeline;\n }\n}\n\nexport default PipelineUtils;\n","import {\n CSSDeclaration,\n OneDArray,\n ProtoExtends,\n TColumn,\n TData,\n} from './types';\nimport Storage from './storage/storage';\nimport Pipeline from './pipeline/pipeline';\nimport Tabular from './tabular';\nimport { Search, SearchConfig } from './view/plugin/search/search';\nimport { Pagination, PaginationConfig } from './view/plugin/pagination';\nimport Header from './header';\nimport { ServerStorageOptions } from './storage/server';\nimport Dispatcher from './util/dispatcher';\nimport { GenericSortConfig } from './view/plugin/sort/sort';\nimport { Language, Translator } from './i18n/language';\nimport { Component, ComponentChild, createRef, RefObject } from 'preact';\nimport StorageUtils from './storage/storageUtils';\nimport PipelineUtils from './pipeline/pipelineUtils';\nimport { EventEmitter } from './util/eventEmitter';\nimport { GridEvents } from './events';\nimport { PluginManager, PluginPosition, Plugin } from './plugin';\nimport Grid from './grid';\n\n// Config type used internally\nexport interface Config {\n // a reference to the current Grid.js instance\n instance: Grid;\n eventEmitter: EventEmitter<GridEvents>;\n dispatcher: Dispatcher<any>;\n plugin: PluginManager;\n /** container element that is used to mount the Grid.js to */\n // TODO: change this to an element reference\n container?: Element;\n /** pointer to the main table element */\n tableRef?: RefObject<Component>;\n /** gridjs-temp div which is used internally */\n tempRef?: RefObject<HTMLDivElement>;\n data?: TData | (() => TData) | (() => Promise<TData>);\n server?: ServerStorageOptions;\n header?: Header;\n /** to parse a HTML table and load the data */\n from: HTMLElement;\n storage: Storage<any>;\n pipeline: Pipeline<Tabular>;\n /** to automatically calculate the columns width */\n autoWidth: boolean;\n /** sets the width of the container and table */\n width: string;\n /** sets the height of the table */\n height: string;\n pagination: PaginationConfig;\n sort: GenericSortConfig;\n translator: Translator;\n style?: Partial<{\n table: CSSDeclaration;\n td: CSSDeclaration;\n th: CSSDeclaration;\n container: CSSDeclaration;\n header: CSSDeclaration;\n footer: CSSDeclaration;\n }>;\n className?: Partial<{\n table: string;\n th: string;\n thead: string;\n tbody: string;\n td: string;\n container: string;\n footer: string;\n header: string;\n search: string;\n sort: string;\n pagination: string;\n paginationSummary: string;\n paginationButton: string;\n paginationButtonNext: string;\n paginationButtonCurrent: string;\n paginationButtonPrev: string;\n loading: string;\n notfound: string;\n error: string;\n }>;\n}\n\n// Config type used by the consumers\ninterface UserConfigExtend {\n /** fixes the table header to the top of the table */\n fixedHeader: boolean;\n columns: OneDArray<TColumn | string | ComponentChild>;\n search: SearchConfig | boolean;\n pagination: PaginationConfig | boolean;\n // implicit option to enable the sort plugin globally\n sort: GenericSortConfig | boolean;\n language: Language;\n plugins?: Plugin<any>[];\n}\n\nexport type UserConfig = ProtoExtends<\n Partial<Config>,\n Partial<UserConfigExtend>\n>;\n\nexport class Config {\n // this is the config file passed by the user\n // we need this for Config.update()\n private _userConfig: UserConfig;\n\n constructor(config?: Partial<Config>) {\n Object.assign(this, {\n ...Config.defaultConfig(),\n ...config,\n });\n\n this._userConfig = {};\n }\n\n /**\n * Assigns `updatedConfig` keys to the current config file\n *\n * @param updatedConfig\n */\n assign(updatedConfig: Partial<Config>): Config {\n for (const key of Object.keys(updatedConfig)) {\n // because we don't want to update the _userConfig cache\n if (key === '_userConfig') continue;\n\n this[key] = updatedConfig[key];\n }\n\n return this;\n }\n\n /**\n * Updates the config from a UserConfig\n *\n * @param userConfig\n */\n update(userConfig: Partial<UserConfig>): Config {\n if (!userConfig) return this;\n\n this._userConfig = {\n ...this._userConfig,\n ...userConfig,\n };\n\n this.assign(Config.fromUserConfig(this._userConfig));\n\n return this;\n }\n\n static defaultConfig(): Config {\n return {\n plugin: new PluginManager(),\n dispatcher: new Dispatcher<any>(),\n tableRef: createRef(),\n tempRef: createRef(),\n width: '100%',\n height: 'auto',\n autoWidth: true,\n style: {},\n className: {},\n } as Config;\n }\n\n static fromUserConfig(userConfig: UserConfig): Config {\n const config = new Config(userConfig as Config);\n\n // to set the initial _userConfig object\n config._userConfig = userConfig;\n\n // Sort\n if (typeof userConfig.sort === 'boolean' && userConfig.sort) {\n config.assign({\n sort: {\n multiColumn: true,\n },\n });\n }\n\n // Header\n config.assign({\n header: Header.fromUserConfig(config),\n });\n\n config.assign({\n storage: StorageUtils.createFromUserConfig(userConfig),\n });\n\n config.assign({\n pipeline: PipelineUtils.createFromConfig(config),\n });\n\n // Translator\n config.assign({\n translator: new Translator(userConfig.language),\n });\n\n // Search\n config.plugin.add({\n id: 'search',\n position: PluginPosition.Header,\n component: Search,\n props: {\n enabled:\n userConfig.search === true || userConfig.search instanceof Object,\n ...(userConfig.search as SearchConfig),\n },\n });\n\n // Pagination\n config.plugin.add({\n id: 'pagination',\n position: PluginPosition.Footer,\n component: Pagination,\n props: {\n enabled:\n userConfig.pagination === true ||\n userConfig.pagination instanceof Object,\n ...(userConfig.pagination as PaginationConfig),\n },\n });\n\n // Additional plugins\n if (userConfig.plugins) {\n userConfig.plugins.forEach((p) => config.plugin.add(p));\n }\n\n return config;\n }\n}\n","import { ComponentChild } from 'preact';\nimport Row from './row';\nimport { SortConfig } from './view/plugin/sort/sort';\nimport { JSXInternal } from 'preact/src/jsx';\nimport { Plugin } from './plugin';\n\nexport type ProtoExtends<T, U> = U & Omit<T, keyof U>;\n\nexport type OneDArray<T> = T[];\nexport type TwoDArray<T> = T[][];\n\n/**\n * Table cell types\n */\nexport type TCell = number | string | boolean | ComponentChild | HTMLElement;\n// Array of Arrays\nexport type TDataArrayRow = OneDArray<TCell>;\nexport type TDataArray = OneDArray<TDataArrayRow>;\n// Array of Objects\nexport type TDataObjectRow = { [key: string]: TCell };\nexport type TDataObject = OneDArray<TDataObjectRow>;\n// (Array of Arrays) and (Array of Objects)\nexport type TData = TDataArray | TDataObject;\n\n// Table header cell type\nexport interface TColumn {\n id?: string;\n // default data for all columns\n data?: ((row: TDataArrayRow | TDataObjectRow) => TCell) | TCell;\n // column label\n name?: string | ComponentChild;\n plugin?: Plugin<any>;\n // column width\n width?: string;\n sort?: SortConfig;\n columns?: OneDArray<TColumn>;\n fixedHeader?: boolean;\n hidden?: boolean;\n formatter?: (cell: TCell, row: Row, column: TColumn) => ComponentChild;\n // HTML attributes to be added to all cells of this column\n attributes?:\n | ((\n cell: TCell,\n row: Row,\n column: TColumn,\n ) => JSXInternal.HTMLAttributes<HTMLTableCellElement>)\n | JSXInternal.HTMLAttributes<HTMLTableCellElement>;\n}\n\n// Comparator function for the sorting plugin\nexport type Comparator<T> = (a: T, b: T) => number;\n\nexport interface TColumnSort {\n index: number;\n // 1 ascending, -1 descending\n direction?: 1 | -1;\n}\n\n// container status\nexport enum Status {\n Init,\n Loading,\n Loaded,\n Rendered,\n Error,\n}\n\nexport type CSSDeclaration = {\n [key: string]: string | number;\n};\n","import { ComponentChild, h, JSX } from 'preact';\n\nimport Cell from '../../cell';\nimport { BaseComponent, BaseProps } from '../base';\nimport { classJoin, className } from '../../util/className';\nimport { CSSDeclaration, TColumn } from '../../types';\nimport Row from '../../row';\nimport { JSXInternal } from 'preact/src/jsx';\nimport { PluginRenderer } from '../../plugin';\n\nexport interface TDProps\n extends BaseProps,\n JSX.HTMLAttributes<HTMLTableCellElement> {\n cell: Cell;\n row?: Row;\n column?: TColumn;\n style?: CSSDeclaration;\n messageCell?: boolean;\n}\n\nexport class TD extends BaseComponent<TDProps> {\n private content(): ComponentChild {\n if (\n this.props.column &&\n typeof this.props.column.formatter === 'function'\n ) {\n return this.props.column.formatter(\n this.props.cell.data,\n this.props.row,\n this.props.column,\n );\n }\n\n if (this.props.column && this.props.column.plugin) {\n return (\n <PluginRenderer\n pluginId={this.props.column.id}\n props={{\n column: this.props.column,\n cell: this.props.cell,\n row: this.props.row,\n }}\n />\n );\n }\n\n return this.props.cell.data;\n }\n\n private handleClick(e: JSX.TargetedMouseEvent<HTMLTableCellElement>): void {\n if (this.props.messageCell) return;\n this.config.eventEmitter.emit(\n 'cellClick',\n e,\n this.props.cell,\n this.props.column,\n this.props.row,\n );\n }\n\n private getCustomAttributes(\n column: TColumn | null,\n ): JSXInternal.HTMLAttributes<HTMLTableCellElement> {\n if (column) {\n if (typeof column.attributes === 'function') {\n return column.attributes(\n this.props.cell.data,\n this.props.row,\n this.props.column,\n );\n } else {\n return column.attributes;\n }\n }\n\n return {};\n }\n\n render() {\n return (\n <td\n role={this.props.role}\n colSpan={this.props.colSpan}\n data-column-id={this.props.column && this.props.column.id}\n className={classJoin(\n className('td'),\n this.props.className,\n this.config.className.td,\n )}\n style={{\n ...this.props.style,\n ...this.config.style.td,\n }}\n onClick={this.handleClick.bind(this)}\n {...this.getCustomAttributes(this.props.column)}\n >\n {this.content()}\n </td>\n );\n }\n}\n","import { h, JSX, Fragment, ComponentChildren } from 'preact';\n\nimport Row from '../../row';\nimport Cell from '../../cell';\nimport { BaseComponent, BaseProps } from '../base';\nimport { className } from '../../util/className';\nimport { TColumn } from '../../types';\nimport { TD } from './td';\nimport Header from '../../header';\n\nexport interface TRProps extends BaseProps {\n row?: Row;\n header?: Header;\n messageRow?: boolean;\n}\n\nexport class TR extends BaseComponent<TRProps, {}> {\n private getColumn(cellIndex: number): TColumn {\n if (this.props.header) {\n const cols = Header.leafColumns(this.props.header.columns);\n\n if (cols) {\n return cols[cellIndex];\n }\n }\n\n return null;\n }\n\n private handleClick(e: JSX.TargetedMouseEvent<HTMLTableRowElement>): void {\n if (this.props.messageRow) return;\n this.config.eventEmitter.emit('rowClick', e, this.props.row);\n }\n\n private getChildren(): ComponentChildren {\n if (this.props.children) {\n return this.props.children;\n } else {\n return (\n <Fragment>\n {this.props.row.cells.map((cell: Cell, i) => {\n const column = this.getColumn(i);\n\n if (column && column.hidden) return null;\n\n return (\n <TD\n key={cell.id}\n cell={cell}\n row={this.props.row}\n column={column}\n />\n );\n })}\n </Fragment>\n );\n }\n }\n\n render() {\n return (\n <tr className={className('tr')} onClick={this.handleClick.bind(this)}>\n {this.getChildren()}\n </tr>\n );\n }\n}\n","import { h } from 'preact';\n\nimport Cell from '../../cell';\nimport { BaseComponent, BaseProps } from '../base';\nimport { classJoin, className } from '../../util/className';\nimport { TR } from './tr';\nimport { TD } from './td';\n\nexport interface MessageRowProps extends BaseProps {\n message: string;\n colSpan?: number;\n className?: string;\n}\n\nexport class MessageRow extends BaseComponent<MessageRowProps, {}> {\n render() {\n return (\n <TR messageRow={true}>\n <TD\n role=\"alert\"\n colSpan={this.props.colSpan}\n messageCell={true}\n cell={new Cell(this.props.message)}\n className={classJoin(\n className('message'),\n this.props.className ? this.props.className : null,\n )}\n />\n </TR>\n );\n }\n}\n","import { h } from 'preact';\n\nimport Row from '../../row';\nimport { TR } from './tr';\nimport Tabular from '../../tabular';\nimport { BaseComponent, BaseProps } from '../base';\nimport { classJoin, className } from '../../util/className';\nimport { Status } from '../../types';\nimport Header from '../../header';\nimport { MessageRow } from './messageRow';\n\ninterface TBodyProps extends BaseProps {\n data: Tabular;\n status: Status;\n header?: Header;\n}\n\nexport class TBody extends BaseComponent<TBodyProps, {}> {\n private headerLength(): number {\n if (this.props.header) {\n return this.props.header.columns.length;\n }\n return 0;\n }\n\n render() {\n return (\n <tbody\n className={classJoin(className('tbody'), this.config.className.tbody)}\n >\n {this.props.data &&\n this.props.data.rows.map((row: Row) => {\n return <TR key={row.id} row={row} header={this.props.header} />;\n })}\n\n {this.props.status === Status.Loading &&\n (!this.props.data || this.props.data.length === 0) && (\n <MessageRow\n message={this._('loading')}\n colSpan={this.headerLength()}\n className={classJoin(\n className('loading'),\n this.config.className.loading,\n )}\n />\n )}\n\n {this.props.status === Status.Rendered &&\n this.props.data &&\n this.props.data.length === 0 && (\n <MessageRow\n message={this._('noRecordsFound')}\n colSpan={this.headerLength()}\n className={classJoin(\n className('notfound'),\n this.config.className.notfound,\n )}\n />\n )}\n\n {this.props.status === Status.Error && (\n <MessageRow\n message={this._('error')}\n colSpan={this.headerLength()}\n className={classJoin(\n className('error'),\n this.config.className.error,\n )}\n />\n )}\n </tbody>\n );\n }\n}\n","import { Comparator, TCell } from '../../types';\nimport Tabular from '../../tabular';\nimport {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\nimport Row from '../../row';\nimport log from '../../util/log';\n\ninterface NativeSortProps extends PipelineProcessorProps {\n columns: {\n index: number;\n // 1 ascending, -1 descending\n direction?: 1 | -1;\n compare?: Comparator<TCell>;\n }[];\n}\n\nclass NativeSort extends PipelineProcessor<Tabular, NativeSortProps> {\n protected validateProps(): void {\n for (const condition of this.props.columns) {\n if (condition.direction === undefined) {\n condition.direction = 1;\n }\n\n if (condition.direction !== 1 && condition.direction !== -1) {\n log.error(`Invalid sort direction ${condition.direction}`);\n }\n }\n }\n\n get type(): ProcessorType {\n return ProcessorType.Sort;\n }\n\n private compare(cellA: TCell, cellB: TCell): number {\n if (cellA > cellB) {\n return 1;\n } else if (cellA < cellB) {\n return -1;\n }\n\n return 0;\n }\n\n private compareWrapper(a: Row, b: Row): number {\n let cmp = 0;\n\n for (const column of this.props.columns) {\n if (cmp === 0) {\n const cellA = a.cells[column.index].data;\n const cellB = b.cells[column.index].data;\n\n if (typeof column.compare === 'function') {\n cmp |= column.compare(cellA, cellB) * column.direction;\n } else {\n cmp |= this.compare(cellA, cellB) * column.direction;\n }\n } else {\n break;\n }\n }\n\n return cmp;\n }\n\n protected _process(data: Tabular): Tabular {\n const sortedRows = [...data.rows];\n sortedRows.sort(this.compareWrapper.bind(this));\n\n const sorted = new Tabular(sortedRows);\n // we have to set the tabular length manually\n // because of the server-side storage\n sorted.length = data.length;\n\n return sorted;\n }\n}\n\nexport default NativeSort;\n","import BaseStore from '../../base/store';\nimport { SortActionsType } from './actions';\nimport { Comparator, TCell } from '../../../types';\n\nexport type SortStoreState = {\n index: number;\n direction: 1 | -1;\n compare?: Comparator<TCell>;\n}[];\n\nexport class SortStore extends BaseStore<SortStoreState, SortActionsType> {\n getInitialState(): SortStoreState {\n return [];\n }\n\n handle(type, payload): void {\n if (type === 'SORT_COLUMN') {\n const { index, direction, multi, compare } = payload;\n this.sortColumn(index, direction, multi, compare);\n } else if (type === 'SORT_COLUMN_TOGGLE') {\n const { index, multi, compare } = payload;\n this.sortToggle(index, multi, compare);\n }\n }\n\n private sortToggle(\n index: number,\n multi: boolean,\n compare: Comparator<TCell>,\n ): void {\n const columns = [...this.state];\n const column = columns.find((x) => x.index === index);\n\n if (!column) {\n this.sortColumn(index, 1, multi, compare);\n } else {\n this.sortColumn(index, column.direction === 1 ? -1 : 1, multi, compare);\n }\n }\n\n private sortColumn(\n index: number,\n direction: 1 | -1,\n multi: boolean,\n compare: Comparator<TCell>,\n ): void {\n let columns = [...this.state];\n const count = columns.length;\n const column = columns.find((x) => x.index === index);\n const exists = column !== undefined;\n\n let add = false;\n let reset = false;\n let remove = false;\n let update = false;\n\n if (!exists) {\n // the column has not been sorted\n if (count === 0) {\n // the first column to be sorted\n add = true;\n } else if (count > 0 && !multi) {\n // remove the previously sorted column\n // and sort the current column\n add = true;\n reset = true;\n } else if (count > 0 && multi) {\n // multi-sorting\n // sort this column as well\n add = true;\n }\n } else {\n // the column has been sorted before\n if (!multi) {\n // single column sorting\n if (count === 1) {\n update = true;\n } else if (count > 1) {\n // this situation happens when we have already entered\n // multi-sorting mode but then user tries to sort a single column\n reset = true;\n add = true;\n }\n } else {\n // multi sorting\n if (column.direction === -1) {\n // remove the current column from the\n // sorted columns array\n remove = true;\n } else {\n update = true;\n }\n }\n }\n\n if (reset) {\n // resetting the sorted columns\n columns = [];\n }\n\n if (add) {\n columns.push({\n index: index,\n direction: direction,\n compare: compare,\n });\n } else if (update) {\n const index = columns.indexOf(column);\n columns[index].direction = direction;\n } else if (remove) {\n const index = columns.indexOf(column);\n columns.splice(index, 1);\n }\n\n this.setState(columns);\n }\n}\n","import { BaseActions } from '../../base/actions';\nimport { Comparator, TCell } from '../../../types';\n\nexport interface SortActionsType {\n SORT_COLUMN: {\n index: number;\n direction: 1 | -1;\n multi?: boolean;\n compare?: Comparator<TCell>;\n };\n\n SORT_COLUMN_TOGGLE: {\n index: number;\n multi?: boolean;\n compare?: Comparator<TCell>;\n };\n}\n\nexport class SortActions extends BaseActions<SortActionsType> {\n sortColumn(\n index: number,\n direction: 1 | -1,\n multi?: boolean,\n compare?: Comparator<TCell>,\n ): void {\n this.dispatch('SORT_COLUMN', {\n index: index,\n direction: direction,\n multi: multi,\n compare: compare,\n });\n }\n\n sortToggle(\n index: number,\n multi?: boolean,\n compare?: Comparator<TCell>,\n ): void {\n this.dispatch('SORT_COLUMN_TOGGLE', {\n index: index,\n multi: multi,\n compare: compare,\n });\n }\n}\n","import {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\nimport { ServerStorageOptions } from '../../storage/server';\nimport { TColumnSort } from '../../types';\n\ninterface ServerSortProps extends PipelineProcessorProps {\n columns: TColumnSort[];\n url?: (prevUrl: string, columns: TColumnSort[]) => string;\n body?: (prevBody: BodyInit, columns: TColumnSort[]) => BodyInit;\n}\n\nclass ServerSort extends PipelineProcessor<\n ServerStorageOptions,\n ServerSortProps\n> {\n get type(): ProcessorType {\n return ProcessorType.ServerSort;\n }\n\n _process(options?: ServerStorageOptions): ServerStorageOptions {\n const updates = {};\n\n if (this.props.url) {\n updates['url'] = this.props.url(options.url, this.props.columns);\n }\n\n if (this.props.body) {\n updates['body'] = this.props.body(options.body, this.props.columns);\n }\n\n return {\n ...options,\n ...updates,\n };\n }\n}\n\nexport default ServerSort;\n","import { h, JSX } from 'preact';\n\nimport { BaseComponent, BaseProps } from '../../base';\nimport { classJoin, className } from '../../../util/className';\nimport { ProcessorType } from '../../../pipeline/processor';\nimport NativeSort from '../../../pipeline/sort/native';\nimport { SortStore, SortStoreState } from './store';\nimport { Comparator, TCell, TColumnSort } from '../../../types';\nimport { SortActions } from './actions';\nimport ServerSort from '../../../pipeline/sort/server';\n\n// column specific config\nexport interface SortConfig {\n enabled?: boolean;\n compare?: Comparator<TCell>;\n}\n\n// generic sort config:\n//\n// Config {\n// sort: GenericSortConfig\n// }\n//\nexport interface GenericSortConfig {\n multiColumn?: boolean;\n server?: {\n url?: (prevUrl: string, columns: TColumnSort[]) => string;\n body?: (prevBody: BodyInit, columns: TColumnSort[]) => BodyInit;\n };\n}\n\nexport interface SortProps extends BaseProps {\n // column index\n index: number;\n}\n\ninterface SortState {\n direction: 1 | -1 | 0;\n}\n\nexport class Sort extends BaseComponent<SortProps & SortConfig, SortState> {\n private readonly sortProcessor: NativeSort | ServerSort;\n private readonly actions: SortActions;\n private readonly store: SortStore;\n private readonly updateStateFn: (...args) => void;\n private updateSortProcessorFn: (sortedColumns: SortStoreState) => void;\n\n constructor(props: SortProps & SortConfig, context) {\n super(props, context);\n\n this.actions = new SortActions(this.config.dispatcher);\n this.store = new SortStore(this.config.dispatcher);\n\n if (props.enabled) {\n this.sortProcessor = this.getOrCreateSortProcessor();\n this.updateStateFn = this.updateState.bind(this);\n this.store.on('updated', this.updateStateFn);\n this.state = { direction: 0 };\n }\n }\n\n componentWillUnmount(): void {\n this.config.pipeline.unregister(this.sortProcessor);\n\n this.store.off('updated', this.updateStateFn);\n if (this.updateSortProcessorFn)\n this.store.off('updated', this.updateSortProcessorFn);\n }\n\n /**\n * Sets the internal state of component\n */\n private updateState(): void {\n const currentColumn = this.store.state.find(\n (x) => x.index === this.props.index,\n );\n\n if (!currentColumn) {\n this.setState({\n direction: 0,\n });\n } else {\n this.setState({\n direction: currentColumn.direction,\n });\n }\n }\n\n private updateSortProcessor(sortedColumns: SortStoreState) {\n // updates the Sorting processor\n this.sortProcessor.setProps({\n columns: sortedColumns,\n });\n }\n\n private getOrCreateSortProcessor(): NativeSort {\n let processorType = ProcessorType.Sort;\n\n if (this.config.sort && typeof this.config.sort.server === 'object') {\n processorType = ProcessorType.ServerSort;\n }\n\n const processors = this.config.pipeline.getStepsByType(processorType);\n\n // my assumption is that we only have ONE sorting processor in the\n // entire pipeline and that's why I'm displaying a warning here\n let processor;\n\n // A sort process is already registered\n if (processors.length > 0) {\n processor = processors[0];\n } else {\n // let's create a new sort processor\n\n // this event listener is here because\n // we want to subscribe to the sort store only once\n this.updateSortProcessorFn = this.updateSortProcessor.bind(this);\n this.store.on('updated', this.updateSortProcessorFn);\n\n if (processorType === ProcessorType.ServerSort) {\n processor = new ServerSort({\n columns: this.store.state,\n ...this.config.sort.server,\n });\n } else {\n processor = new NativeSort({\n columns: this.store.state,\n });\n }\n\n this.config.pipeline.register(processor);\n }\n\n return processor;\n }\n\n changeDirection(e: JSX.TargetedMouseEvent<HTMLButtonElement>): void {\n e.preventDefault();\n e.stopPropagation();\n\n // to sort two or more columns at the same time\n this.actions.sortToggle(\n this.props.index,\n e.shiftKey === true && this.config.sort.multiColumn,\n this.props.compare,\n );\n }\n\n render() {\n if (!this.props.enabled) {\n return null;\n }\n\n const direction = this.state.direction;\n let sortClassName = 'neutral';\n\n if (direction === 1) {\n sortClassName = 'asc';\n } else if (direction === -1) {\n sortClassName = 'desc';\n }\n\n return (\n <button\n // because the corresponding <th> has tabIndex=0\n tabIndex={-1}\n aria-label={this._(`sort.sort${direction === 1 ? 'Desc' : 'Asc'}`)}\n title={this._(`sort.sort${direction === 1 ? 'Desc' : 'Asc'}`)}\n className={classJoin(\n className('sort'),\n className('sort', sortClassName),\n this.config.className.sort,\n )}\n onClick={this.changeDirection.bind(this)}\n />\n );\n }\n}\n","import { ComponentChild, createRef, h, JSX } from 'preact';\n\nimport { BaseComponent, BaseProps } from '../base';\nimport { classJoin, className } from '../../util/className';\nimport { CSSDeclaration, TColumn } from '../../types';\nimport { Sort } from '../plugin/sort/sort';\nimport { PluginRenderer } from '../../plugin';\n\nexport interface THProps\n extends BaseProps,\n JSX.HTMLAttributes<HTMLTableCellElement> {\n index: number;\n column: TColumn;\n style?: CSSDeclaration;\n}\n\nexport interface THState {\n style: CSSDeclaration;\n}\n\nexport class TH extends BaseComponent<THProps, THState> {\n private sortRef = createRef();\n private thRef = createRef();\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n style: {},\n };\n }\n\n private isSortable(): boolean {\n return this.props.column.sort.enabled;\n }\n\n private onClick(e: JSX.TargetedMouseEvent<HTMLInputElement>): void {\n e.stopPropagation();\n\n if (this.isSortable()) {\n this.sortRef.current.changeDirection(e);\n }\n }\n\n private keyDown(e: JSX.TargetedMouseEvent<HTMLInputElement>): void {\n if (this.isSortable() && e.which === 13) {\n this.onClick(e);\n }\n }\n\n componentDidMount(): void {\n setTimeout(() => {\n // sets the `top` style if the current TH is fixed\n if (this.props.column.fixedHeader && this.thRef.current) {\n const offsetTop = this.thRef.current.offsetTop;\n\n if (typeof offsetTop === 'number') {\n this.setState({\n style: {\n top: offsetTop,\n },\n });\n }\n }\n }, 0);\n }\n\n private content(): ComponentChild {\n if (this.props.column.name !== undefined) {\n return this.props.column.name;\n }\n\n if (this.props.column.plugin !== undefined) {\n return (\n <PluginRenderer\n pluginId={this.props.column.plugin.id}\n props={{\n column: this.props.column,\n }}\n />\n );\n }\n\n return null;\n }\n\n render() {\n const props = {};\n\n if (this.isSortable()) {\n props['tabIndex'] = 0;\n }\n\n return (\n <th\n ref={this.thRef}\n data-column-id={this.props.column && this.props.column.id}\n className={classJoin(\n className('th'),\n this.isSortable() ? className('th', 'sort') : null,\n this.props.column.fixedHeader ? className('th', 'fixed') : null,\n this.config.className.th,\n )}\n onClick={this.onClick.bind(this)}\n style={{\n ...this.config.style.th,\n ...{ width: this.props.column.width },\n ...this.state.style,\n ...this.props.style,\n }}\n onKeyDown={this.keyDown.bind(this)}\n rowSpan={this.props.rowSpan > 1 ? this.props.rowSpan : undefined}\n colSpan={this.props.colSpan > 1 ? this.props.colSpan : undefined}\n {...props}\n >\n {this.content()}\n {this.isSortable() && (\n <Sort\n ref={this.sortRef}\n index={this.props.index}\n {...this.props.column.sort}\n />\n )}\n </th>\n );\n }\n}\n","import { TColumn } from '../types';\nimport Header from '../header';\n\nexport function calculateRowColSpans(\n column: TColumn,\n rowIndex: number,\n totalRows: number,\n): { rowSpan: number; colSpan: number } {\n const depth = Header.maximumDepth(column);\n const remainingRows = totalRows - rowIndex;\n const rowSpan = Math.floor(remainingRows - depth - depth / remainingRows);\n const colSpan = (column.columns && column.columns.length) || 1;\n\n return {\n rowSpan: rowSpan,\n colSpan: colSpan,\n };\n}\n","import { ComponentChild, h } from 'preact';\n\nimport { TR } from './tr';\nimport { BaseComponent, BaseProps } from '../base';\nimport { TH } from './th';\nimport { classJoin, className } from '../../util/className';\nimport Header from '../../header';\nimport { TColumn } from '../../types';\nimport { calculateRowColSpans } from '../../util/table';\n\ninterface THeadProps extends BaseProps {\n header: Header;\n}\n\nexport class THead extends BaseComponent<THeadProps> {\n private renderColumn(\n column: TColumn,\n rowIndex: number,\n columnIndex: number,\n totalRows: number,\n ): ComponentChild {\n const { rowSpan, colSpan } = calculateRowColSpans(\n column,\n rowIndex,\n totalRows,\n );\n\n return (\n <TH\n column={column}\n index={columnIndex}\n colSpan={colSpan}\n rowSpan={rowSpan}\n />\n );\n }\n\n private renderRow(\n row: TColumn[],\n rowIndex: number,\n totalRows: number,\n ): ComponentChild {\n // because the only sortable columns are leaf columns (not parents)\n const leafColumns = Header.leafColumns(this.props.header.columns);\n\n return (\n <TR>\n {row.map((col) => {\n if (col.hidden) return null;\n\n return this.renderColumn(\n col,\n rowIndex,\n leafColumns.indexOf(col),\n totalRows,\n );\n })}\n </TR>\n );\n }\n\n private renderRows(): ComponentChild {\n const rows = Header.tabularFormat(this.props.header.columns);\n\n return rows.map((row, rowIndex) =>\n this.renderRow(row, rowIndex, rows.length),\n );\n }\n\n render() {\n if (this.props.header) {\n return (\n <thead\n key={this.props.header.id}\n className={classJoin(className('thead'), this.config.className.thead)}\n >\n {this.renderRows()}\n </thead>\n );\n }\n\n return null;\n }\n}\n","import { h } from 'preact';\n\nimport Tabular from '../../tabular';\nimport { TBody } from './tbody';\nimport { THead } from './thead';\nimport { BaseComponent, BaseProps } from '../base';\nimport Header from '../../header';\nimport { classJoin, className } from '../../util/className';\nimport { Status } from '../../types';\n\ninterface TableProps extends BaseProps {\n data: Tabular;\n status: Status;\n header?: Header;\n width: string;\n height: string;\n}\n\nexport class Table extends BaseComponent<TableProps, {}> {\n render() {\n return (\n <table\n role=\"grid\"\n className={classJoin(className('table'), this.config.className.table)}\n style={{\n ...this.config.style.table,\n ...{\n width: this.props.width,\n height: this.props.height,\n },\n }}\n >\n <THead header={this.props.header} />\n <TBody\n data={this.props.data}\n status={this.props.status}\n header={this.props.header}\n />\n </table>\n );\n }\n}\n","import { createRef, h } from 'preact';\n\nimport { BaseComponent } from './base';\nimport { classJoin, className } from '../util/className';\nimport { PluginPosition, PluginRenderer } from '../plugin';\n\ninterface HeaderContainerState {\n isActive: boolean;\n}\n\nexport class HeaderContainer extends BaseComponent<{}, HeaderContainerState> {\n private headerRef = createRef();\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n isActive: true,\n };\n }\n\n componentDidMount() {\n if (this.headerRef.current.children.length === 0) {\n this.setState({\n isActive: false,\n });\n }\n }\n\n render() {\n if (this.state.isActive) {\n return (\n <div\n ref={this.headerRef}\n className={classJoin(className('head'), this.config.className.header)}\n style={{ ...this.config.style.header }}\n >\n <PluginRenderer position={PluginPosition.Header} />\n </div>\n );\n }\n\n return null;\n }\n}\n","import { createRef, h } from 'preact';\n\nimport { BaseComponent } from './base';\nimport { classJoin, className } from '../util/className';\nimport { PluginPosition, PluginRenderer } from '../plugin';\n\ninterface FooterContainerState {\n isActive: boolean;\n}\n\nexport class FooterContainer extends BaseComponent<{}, FooterContainerState> {\n private footerRef = createRef();\n\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n isActive: true,\n };\n }\n\n componentDidMount() {\n if (this.footerRef.current.children.length === 0) {\n this.setState({\n isActive: false,\n });\n }\n }\n\n render() {\n if (this.state.isActive) {\n return (\n <div\n ref={this.footerRef}\n className={classJoin(\n className('footer'),\n this.config.className.footer,\n )}\n style={{ ...this.config.style.footer }}\n >\n <PluginRenderer position={PluginPosition.Footer} />\n </div>\n );\n }\n\n return null;\n }\n}\n","import { h, createContext, Context } from 'preact';\n\nimport Tabular from '../tabular';\nimport { BaseComponent, BaseProps } from './base';\nimport { classJoin, className } from '../util/className';\nimport { Status } from '../types';\nimport { Table } from './table/table';\nimport { HeaderContainer } from './headerContainer';\nimport { FooterContainer } from './footerContainer';\nimport Pipeline from '../pipeline/pipeline';\nimport Header from '../header';\nimport { Config } from '../config';\nimport log from '../util/log';\nimport { PipelineProcessor } from '../pipeline/processor';\n\ninterface ContainerProps extends BaseProps {\n config: Config;\n pipeline: Pipeline<Tabular>;\n header?: Header;\n width: string;\n height: string;\n}\n\ninterface ContainerState {\n status: Status;\n header?: Header;\n data?: Tabular;\n}\n\nexport class Container extends BaseComponent<ContainerProps, ContainerState> {\n private readonly configContext: Context<Config>;\n private processPipelineFn: (processor: PipelineProcessor<any, any>) => void;\n\n constructor(props, context) {\n super(props, context);\n\n // global Config context which is passed to all components\n this.configContext = createContext(null);\n\n this.state = {\n status: Status.Loading,\n header: props.header,\n data: null,\n };\n }\n\n private async processPipeline() {\n this.props.config.eventEmitter.emit('beforeLoad');\n\n this.setState({\n status: Status.Loading,\n });\n\n try {\n const data = await this.props.pipeline.process();\n this.setState({\n data: data,\n status: Status.Loaded,\n });\n\n this.props.config.eventEmitter.emit('load', data);\n } catch (e) {\n log.error(e);\n\n this.setState({\n status: Status.Error,\n data: null,\n });\n }\n }\n\n async componentDidMount() {\n const config = this.props.config;\n\n // for the initial load\n await this.processPipeline();\n\n if (config.header && this.state.data && this.state.data.length) {\n // now that we have the data, let's adjust columns width\n // NOTE: that we only calculate the columns width once\n this.setState({\n header: config.header.adjustWidth(\n config.container,\n config.tableRef,\n config.tempRef,\n config.autoWidth,\n ),\n });\n }\n\n this.processPipelineFn = this.processPipeline.bind(this);\n this.props.pipeline.on('updated', this.processPipelineFn);\n }\n\n componentWillUnmount(): void {\n this.props.pipeline.off('updated', this.processPipelineFn);\n }\n\n componentDidUpdate(\n _: Readonly<ContainerProps>,\n previousState: Readonly<ContainerState>,\n ): void {\n // we can't jump to the Status.Rendered if previous status is not Status.Loaded\n if (\n previousState.status != Status.Rendered &&\n this.state.status == Status.Loaded\n ) {\n this.setState({\n status: Status.Rendered,\n });\n\n this.props.config.eventEmitter.emit('ready');\n }\n }\n\n render() {\n const configContext = this.configContext;\n\n return (\n <configContext.Provider value={this.props.config}>\n <div\n role=\"complementary\"\n className={classJoin(\n 'gridjs',\n className('container'),\n this.state.status === Status.Loading ? className('loading') : null,\n this.props.config.className.container,\n )}\n style={{\n ...this.props.config.style.container,\n ...{\n width: this.props.width,\n },\n }}\n >\n {this.state.status === Status.Loading && (\n <div className={className('loading-bar')} />\n )}\n\n <HeaderContainer />\n\n <div\n className={className('wrapper')}\n style={{ width: this.props.width, height: this.props.height }}\n >\n <Table\n ref={this.props.config.tableRef}\n data={this.state.data}\n header={this.state.header}\n width={this.props.width}\n height={this.props.height}\n status={this.state.status}\n />\n </div>\n\n <FooterContainer />\n </div>\n\n <div\n ref={this.props.config.tempRef}\n id=\"gridjs-temp\"\n className={className('temp')}\n />\n </configContext.Provider>\n );\n }\n}\n","import { Config, UserConfig } from './config';\nimport { h, render, VNode } from 'preact';\nimport { Container } from './view/container';\nimport log from './util/log';\nimport { EventEmitter } from './util/eventEmitter';\nimport { GridEvents } from './events';\nimport { PluginManager } from './plugin';\n\nclass Grid extends EventEmitter<GridEvents> {\n public config: Config;\n public plugin: PluginManager;\n\n constructor(userConfig?: UserConfig) {\n super();\n this.config = new Config({ instance: this, eventEmitter: this }).update(\n userConfig,\n );\n this.plugin = this.config.plugin;\n }\n\n public updateConfig(userConfig: Partial<UserConfig>): this {\n this.config.update(userConfig);\n return this;\n }\n\n createElement(): VNode {\n return h(Container, {\n config: this.config,\n pipeline: this.config.pipeline,\n header: this.config.header,\n width: this.config.width,\n height: this.config.height,\n });\n }\n\n /**\n * Uses the existing container and tries to clear the cache\n * and re-render the existing Grid.js instance again. This is\n * useful when a new config is set/updated.\n *\n */\n forceRender(): this {\n if (!this.config || !this.config.container) {\n log.error(\n 'Container is empty. Make sure you call render() before forceRender()',\n true,\n );\n }\n\n // clear the pipeline cache\n this.config.pipeline.clearCache();\n\n // TODO: not sure if it's a good idea to render a null element but I couldn't find a better way\n render(null, this.config.container);\n render(this.createElement(), this.config.container);\n\n return this;\n }\n\n /**\n * Mounts the Grid.js instance to the container\n * and renders the instance\n *\n * @param container\n */\n render(container: Element): this {\n if (!container) {\n log.error('Container element cannot be null', true);\n }\n\n if (container.childNodes.length > 0) {\n log.error(\n `The container element ${container} is not empty. Make sure the container is empty and call render() again`,\n );\n return this;\n }\n\n this.config.container = container;\n render(this.createElement(), container);\n\n return this;\n }\n}\n\nexport default Grid;\n","import{options as n}from\"preact\";var t,u,r,o=0,i=[],c=n.__b,f=n.__r,e=n.diffed,a=n.__c,v=n.unmount;function m(t,r){n.__h&&n.__h(u,t,o||r),o=0;var i=u.__H||(u.__H={__:[],__h:[]});return t>=i.__.length&&i.__.push({}),i.__[t]}function l(n){return o=1,p(w,n)}function p(n,r,o){var i=m(t++,2);return i.t=n,i.__c||(i.__=[o?o(r):w(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}))}],i.__c=u),i.__}function y(r,o){var i=m(t++,3);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i))}function h(r,o){var i=m(t++,4);!n.__s&&k(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i))}function s(n){return o=5,d(function(){return{current:n}},[])}function _(n,t,u){o=6,h(function(){\"function\"==typeof n?n(t()):n&&(n.current=t())},null==u?u:u.concat(n))}function d(n,u){var r=m(t++,7);return k(r.__H,u)&&(r.__=n(),r.__H=u,r.__h=n),r.__}function A(n,t){return o=8,d(function(){return n},t)}function F(n){var r=u.context[n.__c],o=m(t++,9);return o.__c=n,r?(null==o.__&&(o.__=!0,r.sub(u)),r.props.value):n.__}function T(t,u){n.useDebugValue&&n.useDebugValue(u?u(t):t)}function q(n){var r=m(t++,10),o=l();return r.__=n,u.componentDidCatch||(u.componentDidCatch=function(n){r.__&&r.__(n),o[1](n)}),[o[0],function(){o[1](void 0)}]}function x(){i.forEach(function(t){if(t.__P)try{t.__H.__h.forEach(g),t.__H.__h.forEach(j),t.__H.__h=[]}catch(u){t.__H.__h=[],n.__e(u,t.__v)}}),i=[]}n.__b=function(n){u=null,c&&c(n)},n.__r=function(n){f&&f(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(g),r.__h.forEach(j),r.__h=[])},n.diffed=function(t){e&&e(t);var o=t.__c;o&&o.__H&&o.__H.__h.length&&(1!==i.push(o)&&r===n.requestAnimationFrame||((r=n.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),b&&cancelAnimationFrame(t),setTimeout(n)},r=setTimeout(u,100);b&&(t=requestAnimationFrame(u))})(x)),u=void 0},n.__c=function(t,u){u.some(function(t){try{t.__h.forEach(g),t.__h=t.__h.filter(function(n){return!n.__||j(n)})}catch(r){u.some(function(n){n.__h&&(n.__h=[])}),u=[],n.__e(r,t.__v)}}),a&&a(t,u)},n.unmount=function(t){v&&v(t);var u=t.__c;if(u&&u.__H)try{u.__H.__.forEach(g)}catch(t){n.__e(t,u.__v)}};var b=\"function\"==typeof requestAnimationFrame;function g(n){var t=u;\"function\"==typeof n.__c&&n.__c(),u=t}function j(n){var t=u;n.__c=n.__(),u=t}function k(n,t){return!n||n.length!==t.length||t.some(function(t,u){return t!==n[u]})}function w(n,t){return\"function\"==typeof t?t(n):t}export{l as useState,p as useReducer,y as useEffect,h as useLayoutEffect,s as useRef,_ as useImperativeHandle,d as useMemo,A as useCallback,F as useContext,T as useDebugValue,q as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n"],"names":["Component","h","HTMLElement","PluginPosition","Fragment","createRef","render","logger","isValidElement","createContext","t","u","r","o","i","c","f","e","a","v","m","y","k","s","d","g","j","b"],"mappings":"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C,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAA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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI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"}
\No newline at end of file