UNPKG

215 kBSource Map (JSON)View Raw
1{"version":3,"file":"gridjs.development.js","sources":["../node_modules/tslib/tslib.es6.js","../src/util/id.ts","../src/base.ts","../node_modules/preact/dist/preact.module.js","../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/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/util/log.ts","../src/storage/server.ts","../src/storage/storageUtils.ts","../src/util/eventEmitter.ts","../src/pipeline/processor.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/util/className.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/base/store.ts","../src/view/plugin/sort/store.ts","../src/view/base/actions.ts","../src/view/plugin/sort/actions.ts","../src/pipeline/sort/server.ts","../src/view/plugin/sort/sort.tsx","../src/view/table/th.tsx","../src/view/table/thead.tsx","../src/view/table/table.tsx","../src/operator/search.ts","../src/pipeline/filter/globalSearch.ts","../src/view/plugin/search/store.ts","../src/view/plugin/search/actions.ts","../src/pipeline/filter/serverGlobalSearch.ts","../src/util/debounce.ts","../src/view/plugin/search/search.tsx","../node_modules/preact/hooks/dist/hooks.module.js","../src/view/headerContainer.tsx","../src/pipeline/limit/pagination.ts","../src/pipeline/limit/serverPagination.ts","../src/view/plugin/pagination.tsx","../src/view/footerContainer.tsx","../src/view/container.tsx","../src/grid.ts"],"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 (b.hasOwnProperty(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, 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 (Object.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","export type ID = string;\n\nexport function generateID(): 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 { generateID, ID } from './util/id';\n\nclass Base {\n private readonly _id: ID;\n\n constructor(id?: ID) {\n this._id = id || generateID();\n }\n\n get id(): ID {\n return this._id;\n }\n}\n\nexport default Base;\n","var n,l,u,i,t,r,o,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=arguments,r={};for(i in l)\"key\"!==i&&\"ref\"!==i&&(r[i]=l[i]);if(arguments.length>3)for(u=[u],i=3;i<arguments.length;i++)u.push(t[i]);if(null!=u&&(r.children=u),\"function\"==typeof n&&null!=n.defaultProps)for(i in n.defaultProps)void 0===r[i]&&(r[i]=n.defaultProps[i]);return h(n,r,l&&l.key,l&&l.ref,null)}function h(l,u,i,t,r){var o={type:l,props:u,key:i,ref:t,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:r};return null==r&&(o.__v=o),n.vnode&&n.vnode(o),o}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 k(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 k(n)}}function w(l){(!l.__d&&(l.__d=!0)&&u.push(l)&&!m.__r++||t!==n.debounceRendering)&&((t=n.debounceRendering)||i)(m)}function m(){for(var n;m.__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,r,o,f;n.__d&&(o=(r=(l=n).__v).__e,(f=l.__P)&&(u=[],(i=s({},r)).__v=i,t=T(f,r,i,l.__n,void 0!==f.ownerSVGElement,null,u,null==o?_(r):o),$(u,r),t!=o&&k(r)))})}function g(n,l,u,i,t,r,o,c,s,v){var y,d,k,w,m,g,b,A=i&&i.__k||e,P=A.length;for(s==f&&(s=null!=o?o[0]:P?_(i,0):null),u.__k=[],y=0;y<l.length;y++)if(null!=(w=u.__k[y]=null==(w=l[y])||\"boolean\"==typeof w?null:\"string\"==typeof w||\"number\"==typeof w?h(null,w,null,null,w):Array.isArray(w)?h(p,{children:w},null,null,null):null!=w.__e||null!=w.__c?h(w.type,w.props,w.key,null,w.__v):w)){if(w.__=u,w.__b=u.__b+1,null===(k=A[y])||k&&w.key==k.key&&w.type===k.type)A[y]=void 0;else for(d=0;d<P;d++){if((k=A[d])&&w.key==k.key&&w.type===k.type){A[d]=void 0;break}k=null}m=T(n,w,k=k||f,t,r,o,c,s,v),(d=w.ref)&&k.ref!=d&&(b||(b=[]),k.ref&&b.push(k.ref,null,w),b.push(d,w.__c||m,w)),null!=m?(null==g&&(g=m),s=x(n,w,k,A,o,m,s),\"option\"==u.type?n.value=\"\":\"function\"==typeof u.type&&(u.__d=s)):s&&k.__e==s&&s.parentNode!=n&&(s=_(k))}if(u.__e=g,null!=o&&\"function\"!=typeof u.type)for(y=o.length;y--;)null!=o[y]&&a(o[y]);for(y=P;y--;)null!=A[y]&&I(A[y],A[y]);if(b)for(y=0;y<b.length;y++)H(b[y],b[++y],b[++y])}function b(n){return null==n||\"boolean\"==typeof n?[]:Array.isArray(n)?e.concat.apply([],n.map(b)):[n]}function x(n,l,u,i,t,r,o){var f,e,c;if(void 0!==l.__d)f=l.__d,l.__d=void 0;else if(t==u||r!=o||null==r.parentNode)n:if(null==o||o.parentNode!==n)n.appendChild(r),f=null;else{for(e=o,c=0;(e=e.nextSibling)&&c<i.length;c+=2)if(e==r)break n;n.insertBefore(r,o),f=o}return void 0!==f?f:r.nextSibling}function A(n,l,u,i,t){var r;for(r in u)\"children\"===r||\"key\"===r||r in l||C(n,r,null,u[r],i);for(r in l)t&&\"function\"!=typeof l[r]||\"children\"===r||\"key\"===r||\"value\"===r||\"checked\"===r||u[r]===l[r]||C(n,r,l[r],u[r],i)}function P(n,l,u){\"-\"===l[0]?n.setProperty(l,u):n[l]=\"number\"==typeof u&&!1===c.test(l)?u+\"px\":null==u?\"\":u}function C(n,l,u,i,t){var r,o,f,e,c;if(t?\"className\"===l&&(l=\"class\"):\"class\"===l&&(l=\"className\"),\"style\"===l)if(r=n.style,\"string\"==typeof u)r.cssText=u;else{if(\"string\"==typeof i&&(r.cssText=\"\",i=null),i)for(e in i)u&&e in u||P(r,e,\"\");if(u)for(c in u)i&&u[c]===i[c]||P(r,c,u[c])}else\"o\"===l[0]&&\"n\"===l[1]?(o=l!==(l=l.replace(/Capture$/,\"\")),f=l.toLowerCase(),l=(f in n?f:l).slice(2),u?(i||n.addEventListener(l,N,o),(n.l||(n.l={}))[l]=u):n.removeEventListener(l,N,o)):\"list\"!==l&&\"tagName\"!==l&&\"form\"!==l&&\"type\"!==l&&\"size\"!==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](n.event?n.event(l):l)}function z(n,l,u){var i,t;for(i=0;i<n.__k.length;i++)(t=n.__k[i])&&(t.__=n,t.__e&&(\"function\"==typeof t.type&&t.__k.length>1&&z(t,l,u),l=x(u,t,t,n.__k,null,t.__e,l),\"function\"==typeof n.type&&(n.__d=l)))}function T(l,u,i,t,r,o,f,e,c){var a,v,h,y,_,k,w,m,b,x,A,P=u.type;if(void 0!==u.constructor)return null;(a=n.__b)&&a(u);try{n:if(\"function\"==typeof P){if(m=u.props,b=(a=P.contextType)&&t[a.__c],x=a?b?b.props.value:a.__:t,i.__c?w=(v=u.__c=i.__c).__=v.__E:(\"prototype\"in P&&P.prototype.render?u.__c=v=new P(m,x):(u.__c=v=new d(m,x),v.constructor=P,v.render=L),b&&b.sub(v),v.props=m,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(m,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&&m!==y&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(m,x),!v.__e&&null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(m,v.__s,x)||u.__v===i.__v){v.props=m,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),z(u,e,l);break n}null!=v.componentWillUpdate&&v.componentWillUpdate(m,v.__s,x),null!=v.componentDidUpdate&&v.__h.push(function(){v.componentDidUpdate(y,_,k)})}v.context=x,v.props=m,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||(k=v.getSnapshotBeforeUpdate(y,_)),A=null!=a&&a.type==p&&null==a.key?a.props.children:a,g(l,Array.isArray(A)?A:[A],u,i,t,r,o,f,e,c),v.base=u.__e,v.__h.length&&f.push(v),w&&(v.__E=v.__=null),v.__e=!1}else null==o&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=j(i.__e,u,i,t,r,o,f,c);(a=n.diffed)&&a(u)}catch(l){u.__v=null,n.__e(l,u,i)}return u.__e}function $(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 j(n,l,u,i,t,r,o,c){var s,a,v,h,y,p=u.props,d=l.props;if(t=\"svg\"===l.type||t,null!=r)for(s=0;s<r.length;s++)if(null!=(a=r[s])&&((null===l.type?3===a.nodeType:a.localName===l.type)||n==a)){n=a,r[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}),r=null,c=!1}if(null===l.type)p!==d&&n.data!=d&&(n.data=d);else{if(null!=r&&(r=e.slice.call(n.childNodes)),v=(p=u.props||f).dangerouslySetInnerHTML,h=d.dangerouslySetInnerHTML,!c){if(null!=r)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||(n.innerHTML=h&&h.__html||\"\"))}A(n,d,p,t,c),h?l.__k=[]:(s=l.props.children,g(n,Array.isArray(s)?s:[s],l,u,i,\"foreignObject\"!==l.type&&t,r,o,f,c)),c||(\"value\"in d&&void 0!==(s=d.value)&&s!==n.value&&C(n,\"value\",s,p.value,!1),\"checked\"in d&&void 0!==(s=d.checked)&&s!==n.checked&&C(n,\"checked\",s,p.checked,!1))}return n}function H(l,u,i){try{\"function\"==typeof l?l(u):l.current=u}catch(l){n.__e(l,i)}}function I(l,u,i){var t,r,o;if(n.unmount&&n.unmount(l),(t=l.ref)&&(t.current&&t.current!==l.__e||H(t,null,u)),i||\"function\"==typeof l.type||(i=null!=(r=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(o=0;o<t.length;o++)t[o]&&I(t[o],u,i);null!=r&&a(r)}function L(n,l,u){return this.constructor(n,u)}function M(l,u,i){var t,o,c;n.__&&n.__(l,u),o=(t=i===r)?null:i&&i.__k||u.__k,l=v(p,null,[l]),c=[],T(u,(t?u:i||u).__k=l,o||f,f,void 0!==u.ownerSVGElement,i&&!t?[i]:o?null:u.childNodes.length?e.slice.call(u.childNodes):null,c,i||f,t),$(c,l)}function O(n,l){M(n,l,r)}function S(n,l){var u,i;for(i in l=s(s({},n.props),l),arguments.length>2&&(l.children=e.slice.call(arguments,2)),u={},l)\"key\"!==i&&\"ref\"!==i&&(u[i]=l[i]);return h(n.type,u,l.key||n.key,l.ref||n.ref,null)}function q(n){var l={},u={__c:\"__cC\"+o++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var i,t=this;return this.getChildContext||(i=[],this.getChildContext=function(){return l[u.__c]=t,l},this.shouldComponentUpdate=function(n){t.props.value!==n.value&&i.some(function(l){l.context=n.value,w(l)})},this.sub=function(n){i.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){i.splice(i.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Consumer.contextType=u,u.Provider.__=u,u}n={__e:function(n,l){for(var u,i;l=l.__;)if((u=l.__c)&&!u.__)try{if(u.constructor&&null!=u.constructor.getDerivedStateFromError&&(i=!0,u.setState(u.constructor.getDerivedStateFromError(n))),null!=u.componentDidCatch&&(i=!0,u.componentDidCatch(n)),i)return w(u.__E=u)}catch(l){n=l}throw n}},l=function(n){return null!=n&&void 0===n.constructor},d.prototype.setState=function(n,l){var u;u=this.__s!==this.state?this.__s:this.__s=s({},this.state),\"function\"==typeof n&&(n=n(u,this.props)),n&&s(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),w(this))},d.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),w(this))},d.prototype.render=p,u=[],i=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,m.__r=0,r=f,o=0;export{M as render,O as hydrate,v as createElement,v as h,p as Fragment,y as createRef,l as isValidElement,d as Component,S as cloneElement,q as createContext,b as toChildArray,I as __u,n as options};\n//# sourceMappingURL=preact.module.js.map\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\nexport interface BaseProps {\n classNamePrefix?: string;\n}\n\nexport abstract class BaseComponent<P extends BaseProps, S> extends Component<\n P,\n S\n> {\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","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 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.setData(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 public setData(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';\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 get cells(): Cell[] {\n return this._cells;\n }\n\n public set cells(cells: Cell[]) {\n this._cells = cells;\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","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 /**\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","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 columnIndex\n */\nexport function getWidth(shadowTable: Element, columnIndex): number {\n if (!shadowTable) {\n return null;\n }\n\n const tds = shadowTable.querySelectorAll('tr:first-child > td');\n\n if (tds && tds[columnIndex]) {\n return tds[columnIndex].clientWidth;\n }\n\n return null;\n}\n","import { h } from 'preact';\n\nimport Tabular from '../../tabular';\nimport { BaseComponent, BaseProps } from '../base';\nimport Header from '../../header';\nimport Row from '../../row';\nimport Cell from '../../cell';\n\ninterface ShadowTableProps extends BaseProps {\n data: Tabular;\n header?: Header;\n}\n\nexport class ShadowTable extends BaseComponent<ShadowTableProps, {}> {\n resetStyle(): { [key: string]: string | number } {\n return { padding: 0, margin: 0, border: 'none', outline: 'none' };\n }\n\n head() {\n return (\n <thead style={this.resetStyle()}>\n <tr>\n {this.props.header.columns.map((col) => {\n return (\n <th\n style={{\n ...this.resetStyle(),\n whiteSpace: 'nowrap',\n // pagination buttons\n paddingRight: col.sort ? '18px' : '0',\n }}\n >\n {col.name}\n </th>\n );\n })}\n </tr>\n </thead>\n );\n }\n\n td(cell: Cell) {\n return <td style={this.resetStyle()}>{cell.data}</td>;\n }\n\n tr(row: Row) {\n return (\n <tr style={this.resetStyle()}>\n {row.cells.map((cell: Cell) => {\n return this.td(cell);\n })}\n </tr>\n );\n }\n\n body() {\n return (\n <tbody style={this.resetStyle()}>\n {this.props.data &&\n this.props.data.rows.map((row: Row) => {\n return this.tr(row);\n })}\n </tbody>\n );\n }\n\n render() {\n return (\n <table\n style={{\n position: 'absolute',\n zIndex: '-2147483640',\n visibility: 'hidden',\n tableLayout: 'auto',\n width: 'auto',\n ...this.resetStyle(),\n }}\n >\n {this.head()}\n {this.body()}\n </table>\n );\n }\n}\n","export function camelCase(str: string): string {\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w|\\s+)/g, function (match, index) {\n if (+match === 0) return ''; // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase();\n });\n}\n","import { OneDArray, TColumn } from './types';\nimport Base from './base';\nimport { UserConfig } from './config';\nimport Tabular from './tabular';\nimport { width, px, getWidth } from './util/width';\nimport { ShadowTable } from './view/table/shadow';\nimport { createRef, h, isValidElement, RefObject, render } from 'preact';\nimport { camelCase } from './util/string';\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 tempRef\n * @param data\n * @param autoWidth\n */\n adjustWidth(\n container: Element,\n tempRef: RefObject<HTMLDivElement>,\n data: Tabular,\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 (data && data.length && autoWidth) {\n // render a ShadowTable with the first 10 rows\n const el = h(ShadowTable, {\n data: Tabular.fromRows(data.rows.slice(0, 10)),\n header: this,\n });\n el.ref = shadowTable;\n\n // TODO: we should NOT query the container here. use Refs instead\n render(el, tempRef.current);\n }\n\n for (const column of this.columns) {\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(\n getWidth(shadowTable.current.base, this.columns.indexOf(column)),\n );\n } else {\n column.width = px(width(column.width, containerWidth));\n }\n }\n\n if (data && data.length && 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): void {\n for (const column of this.columns) {\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 }\n\n private setID(): void {\n for (const column of this.columns) {\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 }\n\n static fromUserConfig(userConfig: UserConfig): Header | null {\n const header = new Header();\n\n if (userConfig.from) {\n header.columns = Header.fromHTMLTable(userConfig.from).columns;\n } else if (userConfig.columns) {\n for (const column of userConfig.columns) {\n if (typeof column === 'string' || isValidElement(column)) {\n header.columns.push({\n name: column,\n });\n } else if (typeof column === 'object') {\n header.columns.push(column as TColumn);\n }\n }\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 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 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.innerText,\n width: th.width,\n });\n }\n\n return header;\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","/**\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 Storage, { StorageResponse } from './storage';\nimport log from '../util/log';\n\nexport interface ServerStorageOptions {\n url: string;\n method?: string;\n headers?: HeadersInit;\n body?: BodyInit;\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}\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 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 { 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(cell.innerText);\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","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 { generateID, 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 = generateID();\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 { 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 {\n url: this.props.serverStorageOptions.url,\n method: this.props.serverStorageOptions.method,\n };\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';\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 it's a 2d array already\n if (data[0] instanceof Array) {\n return data as TDataArray;\n }\n\n // if it's an array of objects (but not array of arrays)\n if (typeof data[0] === 'object' && !(data[0] instanceof Array)) {\n return (data as TDataObject).map((row) =>\n this.props.header.columns.map((column) => row[column.id]),\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 { SearchConfig } from './view/plugin/search/search';\nimport { 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 { ComponentChild, createRef, RefObject } from 'preact';\nimport StorageUtils from './storage/storageUtils';\nimport PipelineUtils from './pipeline/pipelineUtils';\nimport { EventEmitter } from './util/eventEmitter';\nimport { GridEvents } from './events';\n\n// Config type used internally\nexport interface Config {\n eventEmitter: EventEmitter<GridEvents>;\n dispatcher: Dispatcher<any>;\n /** container element that is used to mount the Grid.js to */\n container?: Element;\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 search: SearchConfig;\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 td: string;\n container: string;\n footer: string;\n header: string;\n }>;\n}\n\n// Config type used by the consumers\ninterface UserConfigExtend {\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}\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 dispatcher: new Dispatcher<any>(),\n tempRef: createRef(),\n width: '100%',\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 // Pagination\n config.assign({\n pagination: {\n enabled:\n userConfig.pagination === true ||\n userConfig.pagination instanceof Object,\n ...(userConfig.pagination as PaginationConfig),\n },\n });\n\n // Search\n config.assign({\n search: {\n enabled:\n userConfig.search === true || userConfig.search instanceof Object,\n ...(userConfig.search as SearchConfig),\n },\n });\n\n // Translator\n config.assign({\n translator: new Translator(userConfig.language),\n });\n\n return config;\n }\n}\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 classNames\n .filter((x) => x)\n .reduce((className, prev) => `${className || ''} ${prev}`, '')\n .trim();\n}\n","import { ComponentChild } from 'preact';\nimport Row from './row';\nimport { SortConfig } from './view/plugin/sort/sort';\n\nexport type ProtoExtends<T, U> = U & Omit<T, keyof U>;\n\nexport type OneDArray<T> = T[];\nexport type TwoDArray<T> = T[][];\n\n// Table cell types\nexport type TCell = number | string | boolean | ComponentChild | HTMLElement;\nexport type TDataArray = TwoDArray<TCell>;\nexport type TDataObject = OneDArray<{ [key: string]: TCell }>;\nexport type TData = TDataArray | TDataObject;\n\n// Table header cell type\nexport interface TColumn {\n id?: string;\n name: string | ComponentChild;\n width?: string;\n sort?: SortConfig;\n children?: OneDArray<TColumn>;\n formatter?: (cell: TCell, row: Row, column: TColumn) => ComponentChild;\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;\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 { TColumn } from '../../types';\nimport Row from '../../row';\n\nexport interface TDProps extends BaseProps {\n cell: Cell;\n row?: Row;\n column?: TColumn;\n colSpan?: number;\n className?: string;\n role?: string;\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 return this.props.cell.data;\n }\n\n private handleClick(e: JSX.TargetedMouseEvent<HTMLTableCellElement>): void {\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 render() {\n return (\n <td\n role={this.props.role}\n colSpan={this.props.colSpan}\n className={classJoin(\n className('td'),\n this.props.className,\n this.config.className.td,\n )}\n style={{\n ...this.config.style.td,\n }}\n onClick={this.handleClick.bind(this)}\n >\n {this.content()}\n </td>\n );\n }\n}\n","import { h, JSX } 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}\n\nexport class TR extends BaseComponent<TRProps, {}> {\n private getColumn(cellIndex: number): TColumn {\n if (this.props.header) {\n return this.props.header.columns[cellIndex];\n }\n\n return null;\n }\n\n private handleClick(e: JSX.TargetedMouseEvent<HTMLTableRowElement>): void {\n this.config.eventEmitter.emit('rowClick', e, this.props.row);\n }\n\n render() {\n if (this.props.children) {\n return <tr className={className('tr')}>{this.props.children}</tr>;\n } else {\n return (\n <tr className={className('tr')} onClick={this.handleClick.bind(this)}>\n {this.props.row.cells.map((cell: Cell, i) => {\n return (\n <TD\n key={cell.id}\n cell={cell}\n row={this.props.row}\n column={this.getColumn(i)}\n />\n );\n })}\n </tr>\n );\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>\n <TD\n role=\"alert\"\n colSpan={this.props.colSpan}\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 { 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 className={className('tbody')}>\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={className('loading')}\n />\n )}\n\n {this.props.status === Status.Loaded &&\n this.props.data &&\n this.props.data.length === 0 && (\n <MessageRow\n message={this._('noRecordsFound')}\n colSpan={this.headerLength()}\n className={className('notfound')}\n />\n )}\n\n {this.props.status === Status.Error && (\n <MessageRow\n message={this._('error')}\n colSpan={this.headerLength()}\n className={className('error')}\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 { 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 { 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 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';\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 )}\n onClick={this.changeDirection.bind(this)}\n />\n );\n }\n}\n","import { createRef, h, JSX } from 'preact';\n\nimport { BaseComponent, BaseProps } from '../base';\nimport { classJoin, className } from '../../util/className';\nimport { TColumn } from '../../types';\nimport { Sort } from '../plugin/sort/sort';\n\nexport interface THProps extends BaseProps {\n index: number;\n column: TColumn;\n}\n\nexport class TH extends BaseComponent<THProps, {}> {\n private sortRef = createRef();\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 render() {\n const props = {};\n\n if (this.isSortable()) {\n props['tabIndex'] = 0;\n }\n\n return (\n <th\n className={classJoin(\n className('th'),\n this.isSortable() ? className('th', 'sort') : 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 }}\n onKeyDown={this.keyDown.bind(this)}\n {...props}\n >\n {this.props.column.name}\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 { h } from 'preact';\n\nimport { TR } from './tr';\nimport { BaseComponent, BaseProps } from '../base';\nimport { TH } from './th';\nimport { className } from '../../util/className';\nimport Header from '../../header';\n\ninterface THeadProps extends BaseProps {\n header: Header;\n}\n\nexport class THead extends BaseComponent<THeadProps, {}> {\n render() {\n if (this.props.header) {\n return (\n <thead key={this.props.header.id} className={className('thead')}>\n <TR>\n {this.props.header.columns.map((col, i) => {\n return <TH column={col} index={i} />;\n })}\n </TR>\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}\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 },\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 Tabular from '../tabular';\nimport { VNode } from 'preact';\nimport { HTMLContentProps } from '../view/htmlElement';\n\nexport default function (keyword: string, tabular: Tabular): Tabular {\n // escape special regex chars\n keyword = keyword.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n\n return new Tabular(\n tabular.rows.filter((row) =>\n row.cells.some((cell) => {\n if (!cell || !cell.data) {\n return false;\n }\n\n let data = '';\n\n if (typeof cell.data === 'object') {\n // HTMLContent element\n const element = cell.data as VNode<HTMLContentProps>;\n if (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","import search from '../../operator/search';\nimport Tabular from '../../tabular';\nimport {\n PipelineProcessor,\n PipelineProcessorProps,\n ProcessorType,\n} from '../processor';\n\ninterface GlobalSearchFilterProps extends PipelineProcessorProps {\n keyword: 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(String(this.props.keyword).trim(), data);\n }\n\n return data;\n }\n}\n\nexport default GlobalSearchFilter;\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 { 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","import { h } from 'preact';\nimport { BaseComponent, BaseProps } from '../../base';\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';\n\nexport interface SearchConfig {\n keyword?: string;\n enabled?: boolean;\n debounceTimeout?: number;\n server?: {\n url?: (prevUrl: string, keyword: string) => string;\n body?: (prevBody: BodyInit, keyword: string) => BodyInit;\n };\n}\n\nexport class Search extends BaseComponent<SearchConfig & BaseProps, {}> {\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: SearchConfig, 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 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 });\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 className={className('search')}>\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{options as n}from\"preact\";var t,u,r,o=0,i=[],c=n.__r,f=n.diffed,e=n.__c,a=n.unmount;function v(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 m(n){return o=1,p(k,n)}function p(n,r,o){var i=v(t++,2);return i.t=n,i.__c||(i.__c=u,i.__=[o?o(r):k(void 0,r),function(n){var t=i.t(i.__[0],n);i.__[0]!==t&&(i.__=[t,i.__[1]],i.__c.setState({}))}]),i.__}function y(r,o){var i=v(t++,3);!n.__s&&j(i.__H,o)&&(i.__=r,i.__H=o,u.__H.__h.push(i))}function l(r,o){var i=v(t++,4);!n.__s&&j(i.__H,o)&&(i.__=r,i.__H=o,u.__h.push(i))}function h(n){return o=5,_(function(){return{current:n}},[])}function s(n,t,u){o=6,l(function(){\"function\"==typeof n?n(t()):n&&(n.current=t())},null==u?u:u.concat(n))}function _(n,u){var r=v(t++,7);return j(r.__H,u)?(r.__H=u,r.__h=n,r.__=n()):r.__}function A(n,t){return o=8,_(function(){return n},t)}function F(n){var r=u.context[n.__c],o=v(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 d(n){var r=v(t++,10),o=m();return r.__=n,u.componentDidCatch||(u.componentDidCatch=function(n){r.__&&r.__(n),o[1](n)}),[o[0],function(){o[1](void 0)}]}function q(){i.some(function(t){if(t.__P)try{t.__H.__h.forEach(b),t.__H.__h.forEach(g),t.__H.__h=[]}catch(u){return t.__H.__h=[],n.__e(u,t.__v),!0}}),i=[]}n.__r=function(n){c&&c(n),t=0;var r=(u=n.__c).__H;r&&(r.__h.forEach(b),r.__h.forEach(g),r.__h=[])},n.diffed=function(t){f&&f(t);var u=t.__c;u&&u.__H&&u.__H.__h.length&&(1!==i.push(u)&&r===n.requestAnimationFrame||((r=n.requestAnimationFrame)||function(n){var t,u=function(){clearTimeout(r),x&&cancelAnimationFrame(t),setTimeout(n)},r=setTimeout(u,100);x&&(t=requestAnimationFrame(u))})(q))},n.__c=function(t,u){u.some(function(t){try{t.__h.forEach(b),t.__h=t.__h.filter(function(n){return!n.__||g(n)})}catch(r){u.some(function(n){n.__h&&(n.__h=[])}),u=[],n.__e(r,t.__v)}}),e&&e(t,u)},n.unmount=function(t){a&&a(t);var u=t.__c;if(u&&u.__H)try{u.__H.__.forEach(b)}catch(t){n.__e(t,u.__v)}};var x=\"function\"==typeof requestAnimationFrame;function b(n){\"function\"==typeof n.u&&n.u()}function g(n){n.u=n.__()}function j(n,t){return!n||t.some(function(t,u){return t!==n[u]})}function k(n,t){return\"function\"==typeof t?t(n):t}export{m as useState,p as useReducer,y as useEffect,l as useLayoutEffect,h as useRef,s as useImperativeHandle,_ as useMemo,A as useCallback,F as useContext,T as useDebugValue,d as useErrorBoundary};\n//# sourceMappingURL=hooks.module.js.map\n","import { h } from 'preact';\n\nimport { BaseComponent } from './base';\nimport { classJoin, className } from '../util/className';\nimport { Search } from './plugin/search/search';\nimport { useRef } from 'preact/hooks';\n\ninterface HeaderContainerState {\n isActive: boolean;\n}\n\nexport class HeaderContainer extends BaseComponent<{}, HeaderContainerState> {\n private headerRef = useRef(null);\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 <Search {...this.config.search} />\n </div>\n );\n }\n\n return null;\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 { BaseComponent, BaseProps } from '../base';\nimport PaginationLimit from '../../pipeline/limit/pagination';\nimport { className } from '../../util/className';\nimport ServerPaginationLimit from '../../pipeline/limit/serverPagination';\nimport Tabular from '../../tabular';\nimport { PipelineProcessor } from '../../pipeline/processor';\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 BaseComponent<\n BaseProps & 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 onClick={this.setPage.bind(this, 0)}\n title={this._('pagination.firstPage')}\n >\n {this._('1')}\n </button>\n <button tabIndex={-1} className={className('spread')}>\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 onClick={this.setPage.bind(this, i)}\n className={\n this.state.page === i ? className('currentPage') : null\n }\n title={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 tabIndex={-1} className={className('spread')}>\n ...\n </button>\n <button\n tabIndex={0}\n onClick={this.setPage.bind(this, this.pages - 1)}\n title={this._('pagination.page', this.pages)}\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 className={className('summary')}\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 className={className('pagination')}>\n {this.renderSummary()}\n\n <div className={className('pages')}>\n {this.props.prevButton && (\n <button\n tabIndex={0}\n disabled={this.state.page === 0}\n onClick={this.setPage.bind(this, this.state.page - 1)}\n >\n {this._('pagination.previous')}\n </button>\n )}\n\n {this.renderPages()}\n\n {this.props.nextButton && (\n <button\n tabIndex={0}\n disabled={this.pages === this.state.page + 1 || this.pages === 0}\n onClick={this.setPage.bind(this, this.state.page + 1)}\n >\n {this._('pagination.next')}\n </button>\n )}\n </div>\n </div>\n );\n }\n}\n","import { h } from 'preact';\n\nimport { BaseComponent } from './base';\nimport { classJoin, className } from '../util/className';\nimport { Pagination } from './plugin/pagination';\nimport { useRef } from 'preact/hooks';\n\ninterface FooterContainerState {\n isActive: boolean;\n}\n\nexport class FooterContainer extends BaseComponent<{}, FooterContainerState> {\n private footerRef = useRef(null);\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 <Pagination {...this.config.pagination} />\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}\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.tempRef,\n this.state.data,\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() {\n this.props.pipeline.off('updated', this.processPipelineFn);\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 }}\n >\n <Table\n data={this.state.data}\n header={this.state.header}\n width={this.props.width}\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';\n\nclass Grid extends EventEmitter<GridEvents> {\n public config: Config;\n\n constructor(userConfig?: UserConfig) {\n super();\n this.config = new Config({ eventEmitter: this }).update(userConfig);\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 });\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"],"names":["Component","h","HTMLElement","createRef","render","isValidElement","t","u","r","o","i","c","f","e","a","v","y","j","_","q","g","x","useRef","Fragment","createContext"],"mappings":"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,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,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,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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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,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,GAAG,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,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,SAAS,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,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,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"}
\No newline at end of file