@base-framework/organisms 1.0.64 → 1.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/organisms.js CHANGED
@@ -1,2 +1,2 @@
1
- import{Div as B}from"@base-framework/atoms";import{Data as I,Jot as S}from"@base-framework/base";import{Builder as g,Html as D}from"@base-framework/base";var o=class{static first(t){return this.get(t,0)}static last(t){let e=t.childNodes.length-1;return this.get(t,e)}static get(t,e){return t?.childNodes[e]??null}static next(t){return t?.nextSibling??null}static previous(t){return t?.previousSibling??null}static index(t){if(!t||!t.parentNode)return-1;let e=t.parentNode.children;return Array.from(e).indexOf(t)}static getPreviousIndex(t){let e=this.index(t);return e>0?e-1:0}static replace(t,e,i){if(!e)return;D.removeElementData(e);let r=g.build(t,null,i);e.replaceWith(r)}static remove(t){t&&D.removeChild(t)}static append(t,e,i){!t||g.build(t,e,i)}static prepend(t,e,i){if(!t)return;let r=g.build(t,null,i);e.insertBefore(r,e.firstChild)}};var y=(s,t,e)=>({index:s,item:t,status:e}),u=class{static diff(t,e,i){let r=this.arrayToMap(t,i),a=[],h=[];return e.forEach((n,c)=>{let l=n[i];if(!r.has(l)){a.push(y(c,n,"added"));return}let{item:A}=r.get(l);if(!this.deepEqual(A,n)){a.push(y(c,n,"updated"));return}a.push(y(c,n,"unchanged")),r.delete(l)}),r.forEach(({item:n})=>{h.push(n)}),{changes:a,deletedItems:h}}static arrayToMap(t,e){let i=new Map;return t.forEach((r,a)=>{i.set(r[e],{item:r,index:a})}),i}static deepEqual(t,e){if(t===e)return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;let i=Object.keys(t),r=Object.keys(e);if(i.length!==r.length)return!1;for(let a of i)if(!r.includes(a)||!this.deepEqual(t[a],e[a]))return!1;return!0}};var f=class{constructor({layout:t,itemProperty:e,customCompare:i}){this.layout=t,this.itemProperty=e,this.customCompare=i,this.lastAppend=null,this.lastPrepend=null}reset(){this.lastAppend=null,this.lastPrepend=null}setFirstValues(t){let e=this.lastAppend;return e||(this.lastAppend=t,this.lastPrepend=t),!e}append(t,e){let i=this.getValue(t);this.setFirstValues(i)&&this.addDivider(i,e),this.compare(this.lastAppend,i)&&(this.addDivider(i,e),this.lastAppend=i)}getValue(t){return t[this.itemProperty]??null}prepend(t,e){let i=this.getValue(t);this.setFirstValues(i)&&this.addDivider(i,e),this.compare(this.lastPrepend,i)&&(this.addDivider(i,e),this.lastPrepend=i)}compare(t,e){return this.customCompare?this.customCompare(t,e):t!==e}addDivider(t,e){if(!this.layout||!e)return;let i=this.layout(t);e.push(i)}};var m=s=>JSON.parse(JSON.stringify(s)),x=S({onCreated(){this.divider&&(this.rowDivider=new f({...this.divider}))},setData(){let s=this.items?m(this.items):[];return new I({items:s})},render(){let s=this.row.bind(this);return B({class:`list ${this.class||""}`,for:["items",s]})},row(s,t,e,i){return typeof this.rowItem!="function"?null:(this.rowDivider&&this.rowDivider.append(s,i),this.rowItem(s))},delete(s){let t=this.findIndexByKey(s);if(t===-1)return;this.data.delete(`items[${t}]`);let e=o.get(this.panel,t);o.remove(e)},replace(s){if(s.status==="unchanged")return;let t=s.item;if(s.status==="added"){this.append(t);return}let e=t[this.key],i=this.findIndexByKey(e);if(i===-1)return;this.data.set(`items[${i}]`,t);let r=o.get(this.panel,i),a=this.row(t,i);o.replace(a,r,this)},remove(s){s.forEach(t=>{this.delete(t[this.key])})},setRows(s){this.data.set("items",s)},getRows(){return this.data.get("items")},reset(){this.data.set("items",[]),this.rowDivider&&this.rowDivider.reset()},append(s){Array.isArray(s)||(s=[s]),s=m(s);let t=[],e=this.data.items.length-1;s.forEach(i=>{t.push(this.row(i)),this.rowDivider.append(i,t),this.data.set(`items[${++e}]`,i)}),o.append(t,this.panel,this)},mingle(s,t=!1){s=m(s);let e=this.data.get("items"),i=u.diff(e,s,this.key);t&&i.deletedItems.length>0&&this.remove(i.deletedItems),i.changes.forEach(r=>{this.replace(r)})},prepend(s){Array.isArray(s)||(s=[s]),s=m(s);let t=[],e=s.reverse();e.forEach(r=>{this.rowDivider.prepend(r,t),t.push(this.row(r))});let i=e.concat(this.data.get("items"));this.data.attributes.items=i,this.data.stage.items=i,o.prepend(t,this.panel,this)},findIndexByKey(s){return this.data.items.findIndex(e=>e[this.key]===s)}});import{A as C}from"@base-framework/atoms";import{Component as b,router as N}from"@base-framework/base";var T=(s,t)=>({attr:s,value:t}),P=(s,t)=>new RegExp("^"+s+"($|#|/|\\.).*").test(t),v=class extends b{beforeSetup(){this.selectedClass=this.activeClass||"active"}render(){let t=this.href,e=this.text,i=this.setupWatchers(t,e);return C({cache:"link",class:this.class||this.className||null,onState:["selected",{[this.selectedClass]:!0}],href:this.getString(t),text:this.getString(e),nest:this.nest||this.children,watch:i})}getLinkPath(){return this?.link?.pathname||null}getString(t){let e=typeof t;return e!=="object"&&e!=="undefined"?t:null}setupWatchers(t,e){let i=this.exact!==!1,r=N.data,a=[];return t&&typeof t=="object"&&a.push(T("href",t)),e&&typeof e=="object"&&a.push(T("text",e)),a.push({value:["[[path]]",r],callBack:(h,n)=>{let c=n.pathname+n.hash,l=i?h===c:P(n.pathname,h);this.update(l)}}),a}setupStates(){return{selected:!1}}update(t){this.state.selected=t}};import{Tbody as V}from"@base-framework/atoms";var w=class extends x{render(){let t=this.row.bind(this);return V({class:`tbody ${this.class||""}`,for:["items",t]})}};import{Span as $}from"@base-framework/atoms";import{Component as M,SimpleData as O}from"@base-framework/base";var d=class{constructor(t,e){this.timer=null,this.callBack=e,this.duration=t||1e3}createTimer(t){this.timer=window.setTimeout(t,this.duration)}start(){this.stop();let t=this.returnCallBack.bind(this);this.createTimer(t)}stop(){window.clearTimeout(this.timer)}returnCallBack(){let t=this.callBack;typeof t=="function"&&t.call()}};var p=class extends d{createTimer(t){this.timer=window.setInterval(t,this.duration)}stop(){window.clearInterval(this.timer)}};var E=new O({date:0}),R=6e4,W=new p(R,()=>{E.increment("date")});W.start();var k=class extends M{setData(){return E}render(){return $({class:this.class,text:this.getTime(),onSet:["date",()=>this.getTime()]})}getTime(){let t=this.dateTime;return this.filter?this.filter(t):t}};export{k as DynamicTime,p as IntervalTimer,x as List,v as NavLink,w as TableBody,d as Timer};
1
+ import{Div as B}from"@base-framework/atoms";import{Data as I,Jot as S}from"@base-framework/base";import{Builder as g,Html as D}from"@base-framework/base";var o=class{static first(t){return this.get(t,0)}static last(t){let e=t.childNodes.length-1;return this.get(t,e)}static get(t,e){return t?.childNodes[e]??null}static next(t){return t?.nextSibling??null}static previous(t){return t?.previousSibling??null}static index(t){if(!t||!t.parentNode)return-1;let e=t.parentNode.children;return Array.from(e).indexOf(t)}static getPreviousIndex(t){let e=this.index(t);return e>0?e-1:0}static replace(t,e,i){if(!e)return;D.removeElementData(e);let r=g.build(t,null,i);e.replaceWith(r)}static remove(t){t&&D.removeChild(t)}static append(t,e,i){!t||g.build(t,e,i)}static prepend(t,e,i){if(!t)return;let r=g.build(t,null,i);e.insertBefore(r,e.firstChild)}};var y=(s,t,e)=>({index:s,item:t,status:e}),u=class{static diff(t,e,i){let r=this.arrayToMap(t,i),a=[],h=[];return e.forEach((n,c)=>{let l=n[i];if(!r.has(l)){a.push(y(c,n,"added"));return}let{item:A}=r.get(l);if(!this.deepEqual(A,n)){a.push(y(c,n,"updated"));return}a.push(y(c,n,"unchanged")),r.delete(l)}),r.forEach(({item:n})=>{h.push(n)}),{changes:a,deletedItems:h}}static arrayToMap(t,e){let i=new Map;return t.forEach((r,a)=>{i.set(r[e],{item:r,index:a})}),i}static deepEqual(t,e){if(t===e)return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;let i=Object.keys(t),r=Object.keys(e);if(i.length!==r.length)return!1;for(let a of i)if(!r.includes(a)||!this.deepEqual(t[a],e[a]))return!1;return!0}};var f=class{constructor({layout:t,itemProperty:e,customCompare:i}){this.layout=t,this.itemProperty=e,this.customCompare=i,this.lastAppend=null,this.lastPrepend=null}reset(){this.lastAppend=null,this.lastPrepend=null}setFirstValues(t){let e=this.lastAppend;return e||(this.lastAppend=t,this.lastPrepend=t),!e}append(t,e){let i=this.getValue(t);this.setFirstValues(i)&&this.addDivider(i,e),this.compare(this.lastAppend,i)&&(this.addDivider(i,e),this.lastAppend=i)}getValue(t){return t[this.itemProperty]??null}prepend(t,e){let i=this.getValue(t);this.setFirstValues(i)&&this.addDivider(i,e),this.compare(this.lastPrepend,i)&&(this.addDivider(i,e),this.lastPrepend=i)}compare(t,e){return this.customCompare?this.customCompare(t,e):t!==e}addDivider(t,e){if(!this.layout||!e)return;let i=this.layout(t);e.push(i)}};var m=s=>JSON.parse(JSON.stringify(s)),x=S({onCreated(){this.divider&&(this.rowDivider=new f({...this.divider}))},setData(){let s=this.items?m(this.items):[];return new I({items:s})},render(){let s=this.row.bind(this);return B({class:`list ${this.class||""}`,for:["items",s]})},row(s,t,e,i){return typeof this.rowItem!="function"?null:(this.rowDivider&&this.rowDivider.append(s,i),this.rowItem(s))},delete(s){let t=this.findIndexByKey(s);if(t===-1)return;this.data.delete(`items[${t}]`);let e=o.get(this.panel,t);o.remove(e)},replace(s){if(s.status==="unchanged")return;let t=s.item;if(s.status==="added"){this.append(t);return}let e=t[this.key],i=this.findIndexByKey(e);if(i===-1)return;this.data.set(`items[${i}]`,t);let r=o.get(this.panel,i),a=this.row(t,i);o.replace(a,r,this)},remove(s){s.forEach(t=>{this.delete(t[this.key])})},setRows(s){this.data.set("items",s)},getRows(){return this.data.get("items")},reset(){this.data.set("items",[]),this.rowDivider&&this.rowDivider.reset()},append(s){Array.isArray(s)||(s=[s]),s=m(s);let t=[],e=this.data.items.length-1;s.forEach(i=>{this.rowDivider.append(i,t),t.push(this.row(i)),this.data.set(`items[${++e}]`,i)}),o.append(t,this.panel,this)},mingle(s,t=!1){s=m(s);let e=this.data.get("items"),i=u.diff(e,s,this.key);t&&i.deletedItems.length>0&&this.remove(i.deletedItems),i.changes.forEach(r=>{this.replace(r)})},prepend(s){Array.isArray(s)||(s=[s]),s=m(s);let t=[],e=s.reverse();e.forEach(r=>{this.rowDivider.prepend(r,t),t.push(this.row(r))});let i=e.concat(this.data.get("items"));this.data.attributes.items=i,this.data.stage.items=i,o.prepend(t,this.panel,this)},findIndexByKey(s){return this.data.items.findIndex(e=>e[this.key]===s)}});import{A as C}from"@base-framework/atoms";import{Component as b,router as N}from"@base-framework/base";var T=(s,t)=>({attr:s,value:t}),P=(s,t)=>new RegExp("^"+s+"($|#|/|\\.).*").test(t),v=class extends b{beforeSetup(){this.selectedClass=this.activeClass||"active"}render(){let t=this.href,e=this.text,i=this.setupWatchers(t,e);return C({cache:"link",class:this.class||this.className||null,onState:["selected",{[this.selectedClass]:!0}],href:this.getString(t),text:this.getString(e),nest:this.nest||this.children,watch:i})}getLinkPath(){return this?.link?.pathname||null}getString(t){let e=typeof t;return e!=="object"&&e!=="undefined"?t:null}setupWatchers(t,e){let i=this.exact!==!1,r=N.data,a=[];return t&&typeof t=="object"&&a.push(T("href",t)),e&&typeof e=="object"&&a.push(T("text",e)),a.push({value:["[[path]]",r],callBack:(h,n)=>{let c=n.pathname+n.hash,l=i?h===c:P(n.pathname,h);this.update(l)}}),a}setupStates(){return{selected:!1}}update(t){this.state.selected=t}};import{Tbody as V}from"@base-framework/atoms";var w=class extends x{render(){let t=this.row.bind(this);return V({class:`tbody ${this.class||""}`,for:["items",t]})}};import{Span as $}from"@base-framework/atoms";import{Component as M,SimpleData as O}from"@base-framework/base";var d=class{constructor(t,e){this.timer=null,this.callBack=e,this.duration=t||1e3}createTimer(t){this.timer=window.setTimeout(t,this.duration)}start(){this.stop();let t=this.returnCallBack.bind(this);this.createTimer(t)}stop(){window.clearTimeout(this.timer)}returnCallBack(){let t=this.callBack;typeof t=="function"&&t.call()}};var p=class extends d{createTimer(t){this.timer=window.setInterval(t,this.duration)}stop(){window.clearInterval(this.timer)}};var E=new O({date:0}),R=6e4,W=new p(R,()=>{E.increment("date")});W.start();var k=class extends M{setData(){return E}render(){return $({class:this.class,text:this.getTime(),onSet:["date",()=>this.getTime()]})}getTime(){let t=this.dateTime;return this.filter?this.filter(t):t}};export{k as DynamicTime,p as IntervalTimer,x as List,v as NavLink,w as TableBody,d as Timer};
2
2
  //# sourceMappingURL=organisms.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/lists/list.js", "../src/utils/child-helper.js", "../src/utils/data-helper.js", "../src/lists/row-divider.js", "../src/router/nav-link.js", "../src/tables/table-body.js", "../src/time/dynamic-time.js", "../src/utils/timer/timer.js", "../src/utils/timer/interval-timer.js"],
4
- "sourcesContent": ["import { Div } from '@base-framework/atoms';\r\nimport { Data, Jot } from '@base-framework/base';\r\nimport { ChildHelper } from 'src/utils/child-helper.js';\r\nimport { DataHelper } from 'src/utils/data-helper.js';\r\nimport { RowDivider } from './row-divider.js';\r\n\r\n/**\r\n * This will clone the data.\r\n *\r\n * @param {*} data\r\n * @returns {*}\r\n */\r\nconst clone = (data) => JSON.parse(JSON.stringify(data));\r\n\r\n/**\r\n * List\r\n *\r\n * This will create a list component.\r\n *\r\n * @param {object} props\r\n * @property {string} class - The class to add to the list\r\n * @property {string} key - The key to use to identify the items\r\n * @property {array} [items] - The items\r\n *\r\n * @returns {ComponentConstructor}\r\n */\r\nexport const List = Jot(\r\n{\r\n /**\r\n * This will check to set upt he row divider.\r\n *\r\n * @returns {void}\r\n */\r\n onCreated()\r\n {\r\n // @ts-ignore\r\n if (this.divider)\r\n {\r\n // @ts-ignore\r\n this.rowDivider = new RowDivider({ ...this.divider });\r\n }\r\n },\r\n\r\n /**\r\n * This will set the default data.\r\n *\r\n * @returns {object}\r\n */\r\n\tsetData()\r\n {\r\n // @ts-ignore\r\n const items = (this.items)? clone(this.items) : [];\r\n return new Data({ items })\r\n },\r\n\r\n /**\r\n * This will render the list.\r\n *\r\n * @returns {object}\r\n */\r\n\trender()\r\n {\r\n // @ts-ignore\r\n const rowCallBack = this.row.bind(this);\r\n\r\n return Div({\r\n // @ts-ignore\r\n class: `list ${this.class || ''}`,\r\n for: ['items', rowCallBack]\r\n });\r\n },\r\n\r\n /**\r\n * This will create a row for each item.\r\n *\r\n * @param {*} item\r\n * @returns {object|null}\r\n */\r\n row(item, index, scope, children)\r\n {\r\n // @ts-ignore\r\n if (typeof this.rowItem !== 'function')\r\n {\r\n return null;\r\n }\r\n\r\n // @ts-ignore\r\n if (this.rowDivider)\r\n {\r\n // @ts-ignore\r\n this.rowDivider.append(item, children);\r\n }\r\n\r\n // @ts-ignore\r\n return this.rowItem(item);\r\n },\r\n\r\n /**\r\n * This will delete an item from the list.\r\n *\r\n * @public\r\n * @param {*} keyValue\r\n * @returns {void}\r\n */\r\n delete(keyValue)\r\n {\r\n // @ts-ignore\r\n const index = this.findIndexByKey(keyValue);\r\n if (index === -1)\r\n {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n this.data.delete(`items[${index}]`);\r\n // @ts-ignore\r\n const rowElement = ChildHelper.get(this.panel, index);\r\n ChildHelper.remove(rowElement);\r\n },\r\n\r\n /**\r\n * This will replace an item in the list.\r\n *\r\n * @protected\r\n * @param {object} row\r\n * @returns {void}\r\n */\r\n replace(row)\r\n {\r\n if (row.status === 'unchanged')\r\n {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n const item = row.item;\r\n if (row.status === 'added')\r\n {\r\n // @ts-ignore\r\n this.append(item);\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n const keyValue = item[this.key];\r\n // @ts-ignore\r\n const index = this.findIndexByKey(keyValue);\r\n if (index === -1)\r\n {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n this.data.set(`items[${index}]`, item);\r\n // @ts-ignore\r\n const oldRow = ChildHelper.get(this.panel, index);\r\n // @ts-ignore\r\n const layout = this.row(item, index);\r\n ChildHelper.replace(layout, oldRow, this);\r\n },\r\n\r\n /**\r\n * This will remove items from the list.\r\n *\r\n * @public\r\n * @param {array} items\r\n * @returns {void}\r\n */\r\n remove(items)\r\n {\r\n /**\r\n * This will get the deleted rows.\r\n */\r\n items.forEach((item) =>\r\n {\r\n // @ts-ignore\r\n this.delete(item[this.key]);\r\n });\r\n },\r\n\r\n /**\r\n * This will set the items in the list.\r\n *\r\n * @public\r\n * @param {array} rows\r\n * @returns {void}\r\n */\r\n setRows(rows)\r\n {\r\n // @ts-ignore\r\n this.data.set('items', rows);\r\n },\r\n\r\n /**\r\n * This will get the items in the list.\r\n *\r\n * @public\r\n * @returns {array}\r\n */\r\n getRows()\r\n {\r\n // @ts-ignore\r\n return this.data.get('items');\r\n },\r\n\r\n /**\r\n * This will reset the list.\r\n *\r\n * @public\r\n * @returns {void}\r\n */\r\n reset()\r\n {\r\n // @ts-ignore\r\n this.data.set('items', []);\r\n\r\n // @ts-ignore\r\n if (this.rowDivider)\r\n {\r\n // @ts-ignore\r\n this.rowDivider.reset();\r\n }\r\n },\r\n\r\n /**\r\n * This will append items to the list.\r\n *\r\n * @public\r\n * @param {array|object} items\r\n * @returns {void}\r\n */\r\n append(items)\r\n {\r\n if (!Array.isArray(items))\r\n {\r\n items = [items];\r\n }\r\n\r\n items = clone(items);\r\n\r\n /**\r\n * This will get all the new rows to be batched later.\r\n */\r\n const rows = [];\r\n // @ts-ignore\r\n let lastIndex = this.data.items.length - 1;\r\n items.forEach((item) =>\r\n {\r\n /**\r\n * This will build the new rows that will be appended.\r\n */\r\n // @ts-ignore\r\n rows.push(this.row(item));\r\n\r\n // @ts-ignore\r\n this.rowDivider.append(item, rows);\r\n\r\n /**\r\n * This will silently add the new rows without re-rendering the entire list.\r\n */\r\n // @ts-ignore\r\n this.data.set(`items[${++lastIndex}]`, item);\r\n });\r\n\r\n // This will batch push all the rows.\r\n // @ts-ignore\r\n ChildHelper.append(rows, this.panel, this);\r\n },\r\n\r\n /**\r\n * This will mingle the new items with the old items.\r\n *\r\n * @public\r\n * @param {Array<Object>} newItems\r\n * @param {boolean} withDelete\r\n * @returns {void}\r\n */\r\n mingle(newItems, withDelete = false)\r\n {\r\n newItems = clone(newItems);\r\n\r\n // @ts-ignore\r\n const oldItems = this.data.get('items');\r\n\r\n /**\r\n * This will diff the old and new items to determine what has\r\n * been added, updated, or deleted.\r\n */\r\n // @ts-ignore\r\n const changes = DataHelper.diff(oldItems, newItems, this.key);\r\n\r\n /**\r\n * We want to delete the items before adding and updating the\r\n * new items.\r\n */\r\n if (withDelete && changes.deletedItems.length > 0)\r\n {\r\n // @ts-ignore\r\n this.remove(changes.deletedItems);\r\n }\r\n\r\n /**\r\n * This will add or update the new rows.\r\n */\r\n changes.changes.forEach((row) =>\r\n {\r\n // @ts-ignore\r\n this.replace(row);\r\n });\r\n },\r\n\r\n /**\r\n * This will prepend items to the list.\r\n *\r\n * @public\r\n * @param {array|object} items\r\n * @returns {void}\r\n */\r\n prepend(items)\r\n {\r\n if (!Array.isArray(items))\r\n {\r\n items = [items];\r\n }\r\n\r\n items = clone(items);\r\n\r\n /**\r\n * This will get all the new rows to be batched later.\r\n */\r\n const rows = [];\r\n const reverseItems = items.reverse();\r\n reverseItems.forEach((item) =>\r\n {\r\n // @ts-ignore\r\n this.rowDivider.prepend(item, rows);\r\n\r\n /**\r\n * This will build the new rows that will be appended.\r\n */\r\n // @ts-ignore\r\n rows.push(this.row(item));\r\n });\r\n\r\n // This will use the get method to get the items as a raw array.\r\n // @ts-ignore\r\n const newItems = reverseItems.concat(this.data.get('items'));\r\n\r\n /**\r\n * This will silently add the new rows without re-rendering the entire\r\n * list. This will bypass the data object and directly add the items\r\n * to the stage.\r\n */\r\n // @ts-ignore\r\n this.data.attributes.items = newItems;\r\n // @ts-ignore\r\n this.data.stage.items = newItems;\r\n\r\n // @ts-ignore\r\n ChildHelper.prepend(rows, this.panel, this);\r\n },\r\n\r\n /**\r\n * Finds the index of an item in the data array by its key.\r\n *\r\n * @private\r\n * @param {*} keyValue\r\n * @returns {number} Index of the item, or -1 if not found\r\n */\r\n findIndexByKey(keyValue)\r\n {\r\n //@ts-ignore\r\n const items = this.data.items;\r\n //@ts-ignore\r\n return items.findIndex((item) => item[this.key] === keyValue);\r\n }\r\n});", "import { Builder, Html } from \"@base-framework/base\";\r\n\r\n/**\r\n * ChildHelper\r\n *\r\n * This class will help with getting children of a node.\r\n *\r\n * @class\r\n */\r\nexport class ChildHelper\r\n{\r\n /**\r\n * This will get the first child.\r\n *\r\n * @param {object} parent\r\n * @returns {object|null}\r\n */\r\n\tstatic first(parent)\r\n {\r\n return this.get(parent, 0);\r\n }\r\n\r\n /**\r\n * This will get the last child.\r\n *\r\n * @param {object} parent\r\n * @returns {object|null}\r\n */\r\n static last(parent)\r\n {\r\n const index = parent.childNodes.length - 1;\r\n return this.get(parent, index);\r\n }\r\n\r\n /**\r\n * This will get the child at the specified index.\r\n *\r\n * @param {object} parent\r\n * @param {number} index\r\n * @returns {object|null}\r\n */\r\n static get(parent, index)\r\n {\r\n return parent?.childNodes[index] ?? null;\r\n }\r\n\r\n /**\r\n * This will get the parent of the node.\r\n *\r\n * @param {object} node\r\n * @returns {object|null}\r\n */\r\n static next(node)\r\n {\r\n return node?.nextSibling ?? null;\r\n }\r\n\r\n /**\r\n * This will get the previous sibling.\r\n *\r\n * @param {object} node\r\n * @returns {object|null}\r\n */\r\n static previous(node)\r\n {\r\n return node?.previousSibling ?? null;\r\n }\r\n\r\n /**\r\n * This will get the index of the node.\r\n *\r\n * @param {object} node\r\n * @returns {number}\r\n */\r\n static index(node)\r\n {\r\n if (!node || !node.parentNode)\r\n\t\t{\r\n return -1; // Return -1 if node or its parent doesn't exist\r\n }\r\n\r\n const children = node.parentNode.children;\r\n return Array.from(children).indexOf(node);\r\n }\r\n\r\n /**\r\n * This will get the previous index of the node.\r\n *\r\n * @param {object} node\r\n * @returns {number}\r\n */\r\n static getPreviousIndex(node)\r\n {\r\n const index = this.index(node);\r\n return (index > 0)? index - 1 : 0;\r\n }\r\n\r\n /**\r\n * This will replace a child layout.\r\n *\r\n * @param {object} layout\r\n * @param {object} oldChild\r\n * @param {object} parent\r\n * @returns {void}\r\n */\r\n static replace(layout, oldChild, parent)\r\n {\r\n if (!oldChild)\r\n {\r\n return;\r\n }\r\n\r\n /**\r\n * Remove the data from the old child before\r\n * replacing it with the new child.\r\n */\r\n Html.removeElementData(oldChild);\r\n\r\n const frag = Builder.build(layout, null, parent);\r\n oldChild.replaceWith(frag);\r\n }\r\n\r\n /**\r\n * This will remove a child.\r\n *\r\n * @param {object} node\r\n * @returns {void}\r\n */\r\n static remove(node)\r\n {\r\n if (node)\r\n {\r\n Html.removeChild(node);\r\n }\r\n }\r\n\r\n /**\r\n * This will append a child layout.\r\n *\r\n * @param {object} childrenLayout\r\n * @param {object} container\r\n * @param {object} parent\r\n * @returns {void}\r\n */\r\n static append(childrenLayout, container, parent)\r\n {\r\n if (!childrenLayout)\r\n {\r\n return;\r\n }\r\n\r\n Builder.build(childrenLayout, container, parent);\r\n }\r\n\r\n /**\r\n * This will prepend a child layout.\r\n *\r\n * @param {object} childrenLayout\r\n * @param {object} container\r\n * @param {object} parent\r\n * @returns {void}\r\n */\r\n static prepend(childrenLayout, container, parent)\r\n {\r\n if (!childrenLayout)\r\n {\r\n return;\r\n }\r\n\r\n const frag = Builder.build(childrenLayout, null, parent);\r\n container.insertBefore(frag, container.firstChild);\r\n }\r\n}", "/**\r\n * This will create a new item.\r\n *\r\n * @param {number} index\r\n * @param {*} item\r\n * @param {string} status\r\n * @returns {object}\r\n */\r\nconst Item = (index, item, status) =>\r\n{\r\n\treturn {\r\n\t\tindex,\r\n\t\titem,\r\n\t\tstatus\r\n\t};\r\n};\r\n\r\n/**\r\n * DataHelper\r\n *\r\n * This will help with data manipulation.\r\n *\r\n * @class\r\n */\r\nexport class DataHelper\r\n{\r\n\t/**\r\n * Compares two arrays of objects and returns the differences based on a specified key.\r\n *\r\n * @param {Array<Object>} oldArray - The original array of objects.\r\n * @param {Array<Object>} newArray - The updated array of objects.\r\n * @param {string} key - The key used to compare objects in the arrays.\r\n * @returns {Object} An object containing arrays of added, updated, and deleted items.\r\n */\r\n\tstatic diff(oldArray, newArray, key)\r\n\t{\r\n\t\tconst oldItemsMap = this.arrayToMap(oldArray, key);\r\n\t\tconst changes = [];\r\n\t\tconst deletedItems = [];\r\n\r\n\t\t// Process new array to determine status of each item\r\n\t\tnewArray.forEach((newItem, newIndex) =>\r\n\t\t{\r\n\t\t\tconst keyValue = newItem[key];\r\n\t\t\tif (!oldItemsMap.has(keyValue))\r\n\t\t\t{\r\n\t\t\t\t// Item is added\r\n\t\t\t\tchanges.push(Item(newIndex, newItem, 'added'));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst { item: oldItem } = oldItemsMap.get(keyValue);\r\n\t\t\tif (!this.deepEqual(oldItem, newItem))\r\n\t\t\t{\r\n\t\t\t\t// Item is updated\r\n\t\t\t\tchanges.push(Item(newIndex, newItem, 'updated'));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Item is unchanged\r\n\t\t\tchanges.push(Item(newIndex, newItem, 'unchanged'));\r\n\r\n\t\t\t// Remove from oldItemsMap to identify deletions later\r\n\t\t\toldItemsMap.delete(keyValue);\r\n\t\t});\r\n\r\n\t\t// Remaining items in oldItemsMap are deleted\r\n\t\toldItemsMap.forEach(({ item: oldItem }) =>\r\n\t\t{\r\n\t\t\tdeletedItems.push(oldItem);\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tchanges,\r\n\t\t\tdeletedItems\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Converts an array of objects into a Map keyed by the specified property.\r\n * Each value in the Map is an object containing the item and its index in the array.\r\n\t *\r\n\t * @param {Array<Object>} array - The array to convert.\r\n\t * @param {string} key - The key used to map the objects.\r\n\t * @returns {Map} A Map with keys as specified property and values as objects.\r\n\t * @private\r\n\t */\r\n\tstatic arrayToMap(array, key)\r\n\t{\r\n\t\tconst map = new Map();\r\n\t\tarray.forEach((item, index) =>\r\n\t\t{\r\n\t\t\tmap.set(item[key], { item, index });\r\n\t\t});\r\n\t\treturn map;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a deep comparison between two objects.\r\n\t *\r\n\t * @param {Object} obj1 - The first object to compare.\r\n\t * @param {Object} obj2 - The second object to compare.\r\n\t * @returns {boolean} True if objects are equal, else false.\r\n\t * @private\r\n\t */\r\n\tstatic deepEqual(obj1, obj2)\r\n\t{\r\n\t\tif (obj1 === obj2) return true;\r\n\r\n\t\tif (\r\n\t\t\ttypeof obj1 !== 'object' ||\r\n\t\t\tobj1 === null ||\r\n\t\t\ttypeof obj2 !== 'object' ||\r\n\t\t\tobj2 === null\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst keys1 = Object.keys(obj1);\r\n\t\tconst keys2 = Object.keys(obj2);\r\n\r\n\t\t// Different number of properties\r\n\t\tif (keys1.length !== keys2.length)\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\tfor (const key of keys1)\r\n\t\t{\r\n\t\t\tif (!keys2.includes(key))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.deepEqual(obj1[key], obj2[key]))\r\n\t\t\t{\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}", "\r\n/**\r\n * RowDivider\r\n *\r\n * This will check to add divider rows to a list based on a divider.\r\n *\r\n * @class\r\n */\r\nexport class RowDivider\r\n{\r\n /**\r\n * This will create a row divider.\r\n *\r\n * @param {object} options\r\n * @param {function} options.layout\r\n * @param {string} options.itemProperty\r\n * @param {function} [options.customCompare]\r\n */\r\n constructor({ layout, itemProperty, customCompare })\r\n {\r\n this.layout = layout;\r\n this.itemProperty = itemProperty\r\n this.customCompare = customCompare;\r\n\r\n this.lastAppend = null;\r\n this.lastPrepend = null;\r\n }\r\n\r\n /**\r\n * This will reset the divider.\r\n *\r\n * @returns {void}\r\n */\r\n reset()\r\n {\r\n this.lastAppend = null;\r\n this.lastPrepend = null;\r\n }\r\n\r\n /**\r\n * This will set the first values.\r\n *\r\n * @param {*} value\r\n * @returns {boolean}\r\n */\r\n setFirstValues(value)\r\n {\r\n let last = this.lastAppend;\r\n if (!last)\r\n {\r\n this.lastAppend = value;\r\n this.lastPrepend = value;\r\n }\r\n return (!last);\r\n }\r\n\r\n /**\r\n * This will append a value.\r\n *\r\n * @param {object} item\r\n * @param {Array<object>} children\r\n * @returns {void}\r\n */\r\n append(item, children)\r\n {\r\n const value = this.getValue(item);\r\n const first = this.setFirstValues(value);\r\n if (first)\r\n {\r\n this.addDivider(value, children);\r\n }\r\n\r\n if (this.compare(this.lastAppend, value))\r\n {\r\n this.addDivider(value, children);\r\n this.lastAppend = value;\r\n }\r\n }\r\n\r\n /**\r\n * This will get the value of the item.\r\n *\r\n * @param {object} item\r\n * @returns {*}\r\n */\r\n getValue(item)\r\n {\r\n return item[this.itemProperty] ?? null;\r\n }\r\n\r\n /**\r\n * This will prepend a value.\r\n *\r\n * @param {object} item\r\n * @param {Array<object>} children\r\n * @returns {void}\r\n */\r\n prepend(item, children)\r\n {\r\n const value = this.getValue(item);\r\n const first = this.setFirstValues(value);\r\n if (first)\r\n {\r\n this.addDivider(value, children);\r\n }\r\n\r\n if (this.compare(this.lastPrepend, value))\r\n {\r\n this.addDivider(value, children);\r\n this.lastPrepend = value;\r\n }\r\n }\r\n\r\n /**\r\n * This will compare the values.\r\n *\r\n * @param {*} lastValue\r\n * @param {*} value\r\n * @returns {boolean}\r\n */\r\n compare(lastValue, value)\r\n {\r\n if (this.customCompare)\r\n {\r\n return this.customCompare(lastValue, value);\r\n }\r\n\r\n return (lastValue !== value);\r\n }\r\n\r\n /**\r\n * This will add a divider layout.\r\n *\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n addDivider(value, children)\r\n {\r\n if (!this.layout || !children)\r\n {\r\n return;\r\n }\r\n\r\n const layout = this.layout(value);\r\n children.push(layout);\r\n }\r\n}", "import { A } from '@base-framework/atoms';\r\nimport { Component, router } from '@base-framework/base';\r\n\r\n/**\r\n * Watcher\r\n *\r\n * This will create a watcher object.\r\n *\r\n * @param {string} attr\r\n * @param {string} value\r\n * @returns {object}\r\n */\r\nconst Watcher = (attr, value) => ({\r\n attr,\r\n value\r\n});\r\n\r\n/**\r\n * This will check if the path is active.\r\n *\r\n * @param {string} path\r\n * @param {string} url\r\n * @returns {boolean}\r\n */\r\nconst iSActive = (path, url) => new RegExp('^' + path + '($|#|/|\\\\.).*').test(url);\r\n\r\n/**\r\n * NavLink\r\n *\r\n * This will create a nav link that will add an active\r\n * class when the browser route path matches the link\r\n * href.\r\n *\r\n * @property {string} activeClass - The active class to add.\r\n * @property {string} class - The class\r\n * @property {string} exact - The exact match\r\n * @property {string|object} href - The href or watcher object\r\n * @property {string|object} text - The text or watcher object\r\n * @property {array|string} nest - The nested elements\r\n *\r\n * @class\r\n * @extends Component\r\n */\r\nexport class NavLink extends Component\r\n{\r\n /**\r\n * This will configure the link active class.\r\n *\r\n * @protected\r\n * @returns {void}\r\n */\r\n beforeSetup()\r\n {\r\n // @ts-ignore\r\n this.selectedClass = this.activeClass || 'active';\r\n }\r\n\r\n /**\r\n * This will render the component.\r\n *\r\n * @returns {object}\r\n */\r\n render()\r\n {\r\n // @ts-ignore\r\n const href = this.href,\r\n // @ts-ignore\r\n text = this.text,\r\n watchers = this.setupWatchers(href, text);\r\n\r\n return A({\r\n cache: 'link',\r\n // @ts-ignore\r\n class: this.class || this.className || null,\r\n onState: ['selected', {\r\n [this.selectedClass]: true\r\n }],\r\n href: this.getString(href),\r\n text: this.getString(text),\r\n nest: this.nest || this.children,\r\n watch: watchers\r\n });\r\n }\r\n\r\n /**\r\n * This will get the link path.\r\n *\r\n * @returns {string|null}\r\n */\r\n getLinkPath()\r\n {\r\n // @ts-ignore\r\n return this?.link?.pathname || null;\r\n }\r\n\r\n /**\r\n * This will get string.\r\n *\r\n * @param {string} string\r\n * @returns {(string|null)}\r\n */\r\n getString(string)\r\n {\r\n const type = typeof string;\r\n return (type !== 'object' && type !== 'undefined')? string : null;\r\n }\r\n\r\n /**\r\n * This will setup the watchers.\r\n *\r\n * @protected\r\n * @param {string} href\r\n * @param {string} text\r\n * @returns {array}\r\n */\r\n setupWatchers(href, text)\r\n {\r\n // @ts-ignore\r\n const exact = (this.exact !== false),\r\n data = router.data;\r\n\r\n const watchers = [];\r\n\r\n if (href && typeof href === 'object')\r\n {\r\n watchers.push(Watcher('href', href));\r\n }\r\n\r\n if (text && typeof text === 'object')\r\n {\r\n watchers.push(Watcher('text', text));\r\n }\r\n\r\n watchers.push({\r\n value: ['[[path]]', data],\r\n callBack: (value, ele) =>\r\n {\r\n const path = ele.pathname + ele.hash;\r\n\t\t\t\tconst selected = exact? (value === path) : (iSActive(ele.pathname, value));\r\n this.update(selected);\r\n }\r\n });\r\n\r\n return watchers;\r\n }\r\n\r\n /**\r\n * This will setup the states.\r\n *\r\n * @protected\r\n * @returns {object}\r\n */\r\n setupStates()\r\n {\r\n return {\r\n selected: false\r\n };\r\n }\r\n\r\n /**\r\n * This will update the class on the element.\r\n *\r\n * @param {boolean} selected\r\n * @returns {void}\r\n */\r\n update(selected)\r\n {\r\n this.state.selected = selected;\r\n }\r\n}", "import { Tbody } from '@base-framework/atoms';\r\nimport { List } from '../lists/list.js';\r\n\r\n/**\r\n * TableBody\r\n *\r\n * This will create a table body component.\r\n *\r\n * @param {object} props\r\n * @property {string} class - The class to add to the list\r\n * @property {string} key - The key to use to identify the items\r\n * @property {array} [items] - The items\r\n *\r\n * @class\r\n */\r\n// @ts-ignore\r\nexport class TableBody extends List\r\n{\r\n render()\r\n {\r\n // @ts-ignore\r\n const rowCallBack = this.row.bind(this);\r\n\r\n return Tbody({\r\n // @ts-ignore\r\n class: `tbody ${this.class || ''}`,\r\n for: ['items', rowCallBack]\r\n });\r\n }\r\n};", "import { Span } from \"@base-framework/atoms\";\r\nimport { Component, SimpleData } from \"@base-framework/base\";\r\nimport { IntervalTimer } from \"src/utils/timer/interval-timer.js\";\r\n\r\n/**\r\n * This will create a simple flat data object to use to bind\r\n * timer update. This will be used to update the time every\r\n * minute.\r\n *\r\n * This data will be bound to all the dynamic time elements.\r\n *\r\n * @constant\r\n * @type {SimpleData} data\r\n */\r\nconst data = new SimpleData({\r\n date: 0\r\n});\r\n\r\n/**\r\n * @constant\r\n * @type {number} MINUTE_INTERVAL\r\n */\r\nconst MINUTE_INTERVAL = 60000;\r\n\r\n/**\r\n * This will update the the data value every minute.\r\n *\r\n * @constant\r\n * @type {IntervalTimer} timer\r\n */\r\nconst timer = new IntervalTimer(MINUTE_INTERVAL, () =>\r\n{\r\n data.increment('date');\r\n});\r\n\r\n/**\r\n * This will start the timer to update any dynamic time\r\n * elements.\r\n */\r\ntimer.start();\r\n\r\n/**\r\n * DynamicTime\r\n *\r\n * This will create a dynamic time element that will update\r\n * the time every minute.\r\n *\r\n * @property {string} dateTime - The date time to display.\r\n * @property {function} [filter] - The filter to apply to the date time.\r\n *\r\n * @class\r\n * @augments Component\r\n */\r\nexport class DynamicTime extends Component\r\n{\r\n /**\r\n * This will set up the component data with the\r\n * data created above.\r\n *\r\n * @returns {object}\r\n */\r\n setData()\r\n {\r\n return data;\r\n }\r\n\r\n /**\r\n * This will render the component.\r\n *\r\n * @returns {object}\r\n */\r\n render()\r\n {\r\n return Span({\r\n // @ts-ignore\r\n class: this.class,\r\n text: this.getTime(),\r\n onSet: ['date', () => this.getTime()]\r\n });\r\n }\r\n\r\n /**\r\n * This will get the date and check to filter the value.\r\n *\r\n * @returns {string}\r\n */\r\n getTime()\r\n {\r\n // @ts-ignore\r\n const dateTime = this.dateTime;\r\n // @ts-ignore\r\n return (this.filter) ? this.filter(dateTime) : dateTime;\r\n }\r\n}", "/**\r\n * Timer\r\n *\r\n * This will create a timer that will call a callback function.\r\n *\r\n * @property {number} duration - The duration of the timer.\r\n * @property {function} callBack - The callback function.\r\n *\r\n * @class\r\n */\r\nexport class Timer\r\n{\r\n /**\r\n * This will create a new timer.\r\n *\r\n * @param {number} duration\r\n * @param {function} callBack\r\n */\r\n\tconstructor(duration, callBack)\r\n\t{\r\n /**\r\n * @property {number|null} timer\r\n */\r\n\t\tthis.timer = null;\r\n\r\n /**\r\n * @property {function} callBack\r\n */\r\n\t\tthis.callBack = callBack;\r\n\r\n /**\r\n * @property {number} duration\r\n */\r\n\t\tthis.duration = duration || 1000;\r\n\t}\r\n\r\n /**\r\n * This will create a timer.\r\n *\r\n * @protected\r\n * @param {function} callBack\r\n * @returns {void}\r\n */\r\n\tcreateTimer(callBack)\r\n\t{\r\n\t\tthis.timer = window.setTimeout(callBack, this.duration);\r\n\t}\r\n\r\n /**\r\n * This will start the timer.\r\n *\r\n * @returns {void}\r\n */\r\n\tstart()\r\n\t{\r\n /**\r\n * This will stop the timer before starting a new one.\r\n */\r\n\t\tthis.stop();\r\n\r\n\t\tconst callBack = this.returnCallBack.bind(this);\r\n\t\tthis.createTimer(callBack);\r\n\t}\r\n\r\n /**\r\n * This will stop the timer.\r\n *\r\n * @returns {void}\r\n */\r\n\tstop()\r\n\t{\r\n\t\twindow.clearTimeout(this.timer);\r\n\t}\r\n\r\n /**\r\n * This will call the callback function.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n\treturnCallBack()\r\n\t{\r\n\t\tconst callBack = this.callBack;\r\n\t\tif (typeof callBack === 'function')\r\n\t\t{\r\n\t\t\tcallBack.call();\r\n\t\t}\r\n\t}\r\n}", "import { Timer } from './timer.js';\r\n\r\n/**\r\n * IntervalTimer\r\n *\r\n * This will create a timer that will call a callback function.\r\n *\r\n * @class\r\n */\r\nexport class IntervalTimer extends Timer\r\n{\r\n /**\r\n * This will create a timer.\r\n *\r\n * @protected\r\n * @param {function} callBack\r\n * @returns {void}\r\n */\r\n\tcreateTimer(callBack)\r\n\t{\r\n\t\tthis.timer = window.setInterval(callBack, this.duration);\r\n\t}\r\n\r\n /**\r\n * This will stop the timer.\r\n *\r\n * @returns {void}\r\n */\r\n\tstop()\r\n\t{\r\n\t\twindow.clearInterval(this.timer);\r\n\t}\r\n}"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Div } from '@base-framework/atoms';\r\nimport { Data, Jot } from '@base-framework/base';\r\nimport { ChildHelper } from 'src/utils/child-helper.js';\r\nimport { DataHelper } from 'src/utils/data-helper.js';\r\nimport { RowDivider } from './row-divider.js';\r\n\r\n/**\r\n * This will clone the data.\r\n *\r\n * @param {*} data\r\n * @returns {*}\r\n */\r\nconst clone = (data) => JSON.parse(JSON.stringify(data));\r\n\r\n/**\r\n * List\r\n *\r\n * This will create a list component.\r\n *\r\n * @param {object} props\r\n * @property {string} class - The class to add to the list\r\n * @property {string} key - The key to use to identify the items\r\n * @property {array} [items] - The items\r\n *\r\n * @returns {ComponentConstructor}\r\n */\r\nexport const List = Jot(\r\n{\r\n /**\r\n * This will check to set upt he row divider.\r\n *\r\n * @returns {void}\r\n */\r\n onCreated()\r\n {\r\n // @ts-ignore\r\n if (this.divider)\r\n {\r\n // @ts-ignore\r\n this.rowDivider = new RowDivider({ ...this.divider });\r\n }\r\n },\r\n\r\n /**\r\n * This will set the default data.\r\n *\r\n * @returns {object}\r\n */\r\n\tsetData()\r\n {\r\n // @ts-ignore\r\n const items = (this.items)? clone(this.items) : [];\r\n return new Data({ items })\r\n },\r\n\r\n /**\r\n * This will render the list.\r\n *\r\n * @returns {object}\r\n */\r\n\trender()\r\n {\r\n // @ts-ignore\r\n const rowCallBack = this.row.bind(this);\r\n\r\n return Div({\r\n // @ts-ignore\r\n class: `list ${this.class || ''}`,\r\n for: ['items', rowCallBack]\r\n });\r\n },\r\n\r\n /**\r\n * This will create a row for each item.\r\n *\r\n * @param {*} item\r\n * @returns {object|null}\r\n */\r\n row(item, index, scope, children)\r\n {\r\n // @ts-ignore\r\n if (typeof this.rowItem !== 'function')\r\n {\r\n return null;\r\n }\r\n\r\n // @ts-ignore\r\n if (this.rowDivider)\r\n {\r\n // @ts-ignore\r\n this.rowDivider.append(item, children);\r\n }\r\n\r\n // @ts-ignore\r\n return this.rowItem(item);\r\n },\r\n\r\n /**\r\n * This will delete an item from the list.\r\n *\r\n * @public\r\n * @param {*} keyValue\r\n * @returns {void}\r\n */\r\n delete(keyValue)\r\n {\r\n // @ts-ignore\r\n const index = this.findIndexByKey(keyValue);\r\n if (index === -1)\r\n {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n this.data.delete(`items[${index}]`);\r\n // @ts-ignore\r\n const rowElement = ChildHelper.get(this.panel, index);\r\n ChildHelper.remove(rowElement);\r\n },\r\n\r\n /**\r\n * This will replace an item in the list.\r\n *\r\n * @protected\r\n * @param {object} row\r\n * @returns {void}\r\n */\r\n replace(row)\r\n {\r\n if (row.status === 'unchanged')\r\n {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n const item = row.item;\r\n if (row.status === 'added')\r\n {\r\n // @ts-ignore\r\n this.append(item);\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n const keyValue = item[this.key];\r\n // @ts-ignore\r\n const index = this.findIndexByKey(keyValue);\r\n if (index === -1)\r\n {\r\n return;\r\n }\r\n\r\n // @ts-ignore\r\n this.data.set(`items[${index}]`, item);\r\n // @ts-ignore\r\n const oldRow = ChildHelper.get(this.panel, index);\r\n // @ts-ignore\r\n const layout = this.row(item, index);\r\n ChildHelper.replace(layout, oldRow, this);\r\n },\r\n\r\n /**\r\n * This will remove items from the list.\r\n *\r\n * @public\r\n * @param {array} items\r\n * @returns {void}\r\n */\r\n remove(items)\r\n {\r\n /**\r\n * This will get the deleted rows.\r\n */\r\n items.forEach((item) =>\r\n {\r\n // @ts-ignore\r\n this.delete(item[this.key]);\r\n });\r\n },\r\n\r\n /**\r\n * This will set the items in the list.\r\n *\r\n * @public\r\n * @param {array} rows\r\n * @returns {void}\r\n */\r\n setRows(rows)\r\n {\r\n // @ts-ignore\r\n this.data.set('items', rows);\r\n },\r\n\r\n /**\r\n * This will get the items in the list.\r\n *\r\n * @public\r\n * @returns {array}\r\n */\r\n getRows()\r\n {\r\n // @ts-ignore\r\n return this.data.get('items');\r\n },\r\n\r\n /**\r\n * This will reset the list.\r\n *\r\n * @public\r\n * @returns {void}\r\n */\r\n reset()\r\n {\r\n // @ts-ignore\r\n this.data.set('items', []);\r\n\r\n // @ts-ignore\r\n if (this.rowDivider)\r\n {\r\n // @ts-ignore\r\n this.rowDivider.reset();\r\n }\r\n },\r\n\r\n /**\r\n * This will append items to the list.\r\n *\r\n * @public\r\n * @param {array|object} items\r\n * @returns {void}\r\n */\r\n append(items)\r\n {\r\n if (!Array.isArray(items))\r\n {\r\n items = [items];\r\n }\r\n\r\n items = clone(items);\r\n\r\n /**\r\n * This will get all the new rows to be batched later.\r\n */\r\n const rows = [];\r\n // @ts-ignore\r\n let lastIndex = this.data.items.length - 1;\r\n items.forEach((item) =>\r\n {\r\n // @ts-ignore\r\n this.rowDivider.append(item, rows);\r\n\r\n /**\r\n * This will build the new rows that will be appended.\r\n */\r\n // @ts-ignore\r\n rows.push(this.row(item));\r\n\r\n /**\r\n * This will silently add the new rows without re-rendering the entire list.\r\n */\r\n // @ts-ignore\r\n this.data.set(`items[${++lastIndex}]`, item);\r\n });\r\n\r\n // This will batch push all the rows.\r\n // @ts-ignore\r\n ChildHelper.append(rows, this.panel, this);\r\n },\r\n\r\n /**\r\n * This will mingle the new items with the old items.\r\n *\r\n * @public\r\n * @param {Array<Object>} newItems\r\n * @param {boolean} withDelete\r\n * @returns {void}\r\n */\r\n mingle(newItems, withDelete = false)\r\n {\r\n newItems = clone(newItems);\r\n\r\n // @ts-ignore\r\n const oldItems = this.data.get('items');\r\n\r\n /**\r\n * This will diff the old and new items to determine what has\r\n * been added, updated, or deleted.\r\n */\r\n // @ts-ignore\r\n const changes = DataHelper.diff(oldItems, newItems, this.key);\r\n\r\n /**\r\n * We want to delete the items before adding and updating the\r\n * new items.\r\n */\r\n if (withDelete && changes.deletedItems.length > 0)\r\n {\r\n // @ts-ignore\r\n this.remove(changes.deletedItems);\r\n }\r\n\r\n /**\r\n * This will add or update the new rows.\r\n */\r\n changes.changes.forEach((row) =>\r\n {\r\n // @ts-ignore\r\n this.replace(row);\r\n });\r\n },\r\n\r\n /**\r\n * This will prepend items to the list.\r\n *\r\n * @public\r\n * @param {array|object} items\r\n * @returns {void}\r\n */\r\n prepend(items)\r\n {\r\n if (!Array.isArray(items))\r\n {\r\n items = [items];\r\n }\r\n\r\n items = clone(items);\r\n\r\n /**\r\n * This will get all the new rows to be batched later.\r\n */\r\n const rows = [];\r\n const reverseItems = items.reverse();\r\n reverseItems.forEach((item) =>\r\n {\r\n // @ts-ignore\r\n this.rowDivider.prepend(item, rows);\r\n\r\n /**\r\n * This will build the new rows that will be appended.\r\n */\r\n // @ts-ignore\r\n rows.push(this.row(item));\r\n });\r\n\r\n // This will use the get method to get the items as a raw array.\r\n // @ts-ignore\r\n const newItems = reverseItems.concat(this.data.get('items'));\r\n\r\n /**\r\n * This will silently add the new rows without re-rendering the entire\r\n * list. This will bypass the data object and directly add the items\r\n * to the stage.\r\n */\r\n // @ts-ignore\r\n this.data.attributes.items = newItems;\r\n // @ts-ignore\r\n this.data.stage.items = newItems;\r\n\r\n // @ts-ignore\r\n ChildHelper.prepend(rows, this.panel, this);\r\n },\r\n\r\n /**\r\n * Finds the index of an item in the data array by its key.\r\n *\r\n * @private\r\n * @param {*} keyValue\r\n * @returns {number} Index of the item, or -1 if not found\r\n */\r\n findIndexByKey(keyValue)\r\n {\r\n //@ts-ignore\r\n const items = this.data.items;\r\n //@ts-ignore\r\n return items.findIndex((item) => item[this.key] === keyValue);\r\n }\r\n});", "import { Builder, Html } from \"@base-framework/base\";\r\n\r\n/**\r\n * ChildHelper\r\n *\r\n * This class will help with getting children of a node.\r\n *\r\n * @class\r\n */\r\nexport class ChildHelper\r\n{\r\n /**\r\n * This will get the first child.\r\n *\r\n * @param {object} parent\r\n * @returns {object|null}\r\n */\r\n\tstatic first(parent)\r\n {\r\n return this.get(parent, 0);\r\n }\r\n\r\n /**\r\n * This will get the last child.\r\n *\r\n * @param {object} parent\r\n * @returns {object|null}\r\n */\r\n static last(parent)\r\n {\r\n const index = parent.childNodes.length - 1;\r\n return this.get(parent, index);\r\n }\r\n\r\n /**\r\n * This will get the child at the specified index.\r\n *\r\n * @param {object} parent\r\n * @param {number} index\r\n * @returns {object|null}\r\n */\r\n static get(parent, index)\r\n {\r\n return parent?.childNodes[index] ?? null;\r\n }\r\n\r\n /**\r\n * This will get the parent of the node.\r\n *\r\n * @param {object} node\r\n * @returns {object|null}\r\n */\r\n static next(node)\r\n {\r\n return node?.nextSibling ?? null;\r\n }\r\n\r\n /**\r\n * This will get the previous sibling.\r\n *\r\n * @param {object} node\r\n * @returns {object|null}\r\n */\r\n static previous(node)\r\n {\r\n return node?.previousSibling ?? null;\r\n }\r\n\r\n /**\r\n * This will get the index of the node.\r\n *\r\n * @param {object} node\r\n * @returns {number}\r\n */\r\n static index(node)\r\n {\r\n if (!node || !node.parentNode)\r\n\t\t{\r\n return -1; // Return -1 if node or its parent doesn't exist\r\n }\r\n\r\n const children = node.parentNode.children;\r\n return Array.from(children).indexOf(node);\r\n }\r\n\r\n /**\r\n * This will get the previous index of the node.\r\n *\r\n * @param {object} node\r\n * @returns {number}\r\n */\r\n static getPreviousIndex(node)\r\n {\r\n const index = this.index(node);\r\n return (index > 0)? index - 1 : 0;\r\n }\r\n\r\n /**\r\n * This will replace a child layout.\r\n *\r\n * @param {object} layout\r\n * @param {object} oldChild\r\n * @param {object} parent\r\n * @returns {void}\r\n */\r\n static replace(layout, oldChild, parent)\r\n {\r\n if (!oldChild)\r\n {\r\n return;\r\n }\r\n\r\n /**\r\n * Remove the data from the old child before\r\n * replacing it with the new child.\r\n */\r\n Html.removeElementData(oldChild);\r\n\r\n const frag = Builder.build(layout, null, parent);\r\n oldChild.replaceWith(frag);\r\n }\r\n\r\n /**\r\n * This will remove a child.\r\n *\r\n * @param {object} node\r\n * @returns {void}\r\n */\r\n static remove(node)\r\n {\r\n if (node)\r\n {\r\n Html.removeChild(node);\r\n }\r\n }\r\n\r\n /**\r\n * This will append a child layout.\r\n *\r\n * @param {object} childrenLayout\r\n * @param {object} container\r\n * @param {object} parent\r\n * @returns {void}\r\n */\r\n static append(childrenLayout, container, parent)\r\n {\r\n if (!childrenLayout)\r\n {\r\n return;\r\n }\r\n\r\n Builder.build(childrenLayout, container, parent);\r\n }\r\n\r\n /**\r\n * This will prepend a child layout.\r\n *\r\n * @param {object} childrenLayout\r\n * @param {object} container\r\n * @param {object} parent\r\n * @returns {void}\r\n */\r\n static prepend(childrenLayout, container, parent)\r\n {\r\n if (!childrenLayout)\r\n {\r\n return;\r\n }\r\n\r\n const frag = Builder.build(childrenLayout, null, parent);\r\n container.insertBefore(frag, container.firstChild);\r\n }\r\n}", "/**\r\n * This will create a new item.\r\n *\r\n * @param {number} index\r\n * @param {*} item\r\n * @param {string} status\r\n * @returns {object}\r\n */\r\nconst Item = (index, item, status) =>\r\n{\r\n\treturn {\r\n\t\tindex,\r\n\t\titem,\r\n\t\tstatus\r\n\t};\r\n};\r\n\r\n/**\r\n * DataHelper\r\n *\r\n * This will help with data manipulation.\r\n *\r\n * @class\r\n */\r\nexport class DataHelper\r\n{\r\n\t/**\r\n * Compares two arrays of objects and returns the differences based on a specified key.\r\n *\r\n * @param {Array<Object>} oldArray - The original array of objects.\r\n * @param {Array<Object>} newArray - The updated array of objects.\r\n * @param {string} key - The key used to compare objects in the arrays.\r\n * @returns {Object} An object containing arrays of added, updated, and deleted items.\r\n */\r\n\tstatic diff(oldArray, newArray, key)\r\n\t{\r\n\t\tconst oldItemsMap = this.arrayToMap(oldArray, key);\r\n\t\tconst changes = [];\r\n\t\tconst deletedItems = [];\r\n\r\n\t\t// Process new array to determine status of each item\r\n\t\tnewArray.forEach((newItem, newIndex) =>\r\n\t\t{\r\n\t\t\tconst keyValue = newItem[key];\r\n\t\t\tif (!oldItemsMap.has(keyValue))\r\n\t\t\t{\r\n\t\t\t\t// Item is added\r\n\t\t\t\tchanges.push(Item(newIndex, newItem, 'added'));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst { item: oldItem } = oldItemsMap.get(keyValue);\r\n\t\t\tif (!this.deepEqual(oldItem, newItem))\r\n\t\t\t{\r\n\t\t\t\t// Item is updated\r\n\t\t\t\tchanges.push(Item(newIndex, newItem, 'updated'));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Item is unchanged\r\n\t\t\tchanges.push(Item(newIndex, newItem, 'unchanged'));\r\n\r\n\t\t\t// Remove from oldItemsMap to identify deletions later\r\n\t\t\toldItemsMap.delete(keyValue);\r\n\t\t});\r\n\r\n\t\t// Remaining items in oldItemsMap are deleted\r\n\t\toldItemsMap.forEach(({ item: oldItem }) =>\r\n\t\t{\r\n\t\t\tdeletedItems.push(oldItem);\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tchanges,\r\n\t\t\tdeletedItems\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Converts an array of objects into a Map keyed by the specified property.\r\n * Each value in the Map is an object containing the item and its index in the array.\r\n\t *\r\n\t * @param {Array<Object>} array - The array to convert.\r\n\t * @param {string} key - The key used to map the objects.\r\n\t * @returns {Map} A Map with keys as specified property and values as objects.\r\n\t * @private\r\n\t */\r\n\tstatic arrayToMap(array, key)\r\n\t{\r\n\t\tconst map = new Map();\r\n\t\tarray.forEach((item, index) =>\r\n\t\t{\r\n\t\t\tmap.set(item[key], { item, index });\r\n\t\t});\r\n\t\treturn map;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a deep comparison between two objects.\r\n\t *\r\n\t * @param {Object} obj1 - The first object to compare.\r\n\t * @param {Object} obj2 - The second object to compare.\r\n\t * @returns {boolean} True if objects are equal, else false.\r\n\t * @private\r\n\t */\r\n\tstatic deepEqual(obj1, obj2)\r\n\t{\r\n\t\tif (obj1 === obj2) return true;\r\n\r\n\t\tif (\r\n\t\t\ttypeof obj1 !== 'object' ||\r\n\t\t\tobj1 === null ||\r\n\t\t\ttypeof obj2 !== 'object' ||\r\n\t\t\tobj2 === null\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst keys1 = Object.keys(obj1);\r\n\t\tconst keys2 = Object.keys(obj2);\r\n\r\n\t\t// Different number of properties\r\n\t\tif (keys1.length !== keys2.length)\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\tfor (const key of keys1)\r\n\t\t{\r\n\t\t\tif (!keys2.includes(key))\r\n\t\t\t{\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.deepEqual(obj1[key], obj2[key]))\r\n\t\t\t{\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}", "\r\n/**\r\n * RowDivider\r\n *\r\n * This will check to add divider rows to a list based on a divider.\r\n *\r\n * @class\r\n */\r\nexport class RowDivider\r\n{\r\n /**\r\n * This will create a row divider.\r\n *\r\n * @param {object} options\r\n * @param {function} options.layout\r\n * @param {string} options.itemProperty\r\n * @param {function} [options.customCompare]\r\n */\r\n constructor({ layout, itemProperty, customCompare })\r\n {\r\n this.layout = layout;\r\n this.itemProperty = itemProperty\r\n this.customCompare = customCompare;\r\n\r\n this.lastAppend = null;\r\n this.lastPrepend = null;\r\n }\r\n\r\n /**\r\n * This will reset the divider.\r\n *\r\n * @returns {void}\r\n */\r\n reset()\r\n {\r\n this.lastAppend = null;\r\n this.lastPrepend = null;\r\n }\r\n\r\n /**\r\n * This will set the first values.\r\n *\r\n * @param {*} value\r\n * @returns {boolean}\r\n */\r\n setFirstValues(value)\r\n {\r\n let last = this.lastAppend;\r\n if (!last)\r\n {\r\n this.lastAppend = value;\r\n this.lastPrepend = value;\r\n }\r\n return (!last);\r\n }\r\n\r\n /**\r\n * This will append a value.\r\n *\r\n * @param {object} item\r\n * @param {Array<object>} children\r\n * @returns {void}\r\n */\r\n append(item, children)\r\n {\r\n const value = this.getValue(item);\r\n const first = this.setFirstValues(value);\r\n if (first)\r\n {\r\n this.addDivider(value, children);\r\n }\r\n\r\n if (this.compare(this.lastAppend, value))\r\n {\r\n this.addDivider(value, children);\r\n this.lastAppend = value;\r\n }\r\n }\r\n\r\n /**\r\n * This will get the value of the item.\r\n *\r\n * @param {object} item\r\n * @returns {*}\r\n */\r\n getValue(item)\r\n {\r\n return item[this.itemProperty] ?? null;\r\n }\r\n\r\n /**\r\n * This will prepend a value.\r\n *\r\n * @param {object} item\r\n * @param {Array<object>} children\r\n * @returns {void}\r\n */\r\n prepend(item, children)\r\n {\r\n const value = this.getValue(item);\r\n const first = this.setFirstValues(value);\r\n if (first)\r\n {\r\n this.addDivider(value, children);\r\n }\r\n\r\n if (this.compare(this.lastPrepend, value))\r\n {\r\n this.addDivider(value, children);\r\n this.lastPrepend = value;\r\n }\r\n }\r\n\r\n /**\r\n * This will compare the values.\r\n *\r\n * @param {*} lastValue\r\n * @param {*} value\r\n * @returns {boolean}\r\n */\r\n compare(lastValue, value)\r\n {\r\n if (this.customCompare)\r\n {\r\n return this.customCompare(lastValue, value);\r\n }\r\n\r\n return (lastValue !== value);\r\n }\r\n\r\n /**\r\n * This will add a divider layout.\r\n *\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n addDivider(value, children)\r\n {\r\n if (!this.layout || !children)\r\n {\r\n return;\r\n }\r\n\r\n const layout = this.layout(value);\r\n children.push(layout);\r\n }\r\n}", "import { A } from '@base-framework/atoms';\r\nimport { Component, router } from '@base-framework/base';\r\n\r\n/**\r\n * Watcher\r\n *\r\n * This will create a watcher object.\r\n *\r\n * @param {string} attr\r\n * @param {string} value\r\n * @returns {object}\r\n */\r\nconst Watcher = (attr, value) => ({\r\n attr,\r\n value\r\n});\r\n\r\n/**\r\n * This will check if the path is active.\r\n *\r\n * @param {string} path\r\n * @param {string} url\r\n * @returns {boolean}\r\n */\r\nconst iSActive = (path, url) => new RegExp('^' + path + '($|#|/|\\\\.).*').test(url);\r\n\r\n/**\r\n * NavLink\r\n *\r\n * This will create a nav link that will add an active\r\n * class when the browser route path matches the link\r\n * href.\r\n *\r\n * @property {string} activeClass - The active class to add.\r\n * @property {string} class - The class\r\n * @property {string} exact - The exact match\r\n * @property {string|object} href - The href or watcher object\r\n * @property {string|object} text - The text or watcher object\r\n * @property {array|string} nest - The nested elements\r\n *\r\n * @class\r\n * @extends Component\r\n */\r\nexport class NavLink extends Component\r\n{\r\n /**\r\n * This will configure the link active class.\r\n *\r\n * @protected\r\n * @returns {void}\r\n */\r\n beforeSetup()\r\n {\r\n // @ts-ignore\r\n this.selectedClass = this.activeClass || 'active';\r\n }\r\n\r\n /**\r\n * This will render the component.\r\n *\r\n * @returns {object}\r\n */\r\n render()\r\n {\r\n // @ts-ignore\r\n const href = this.href,\r\n // @ts-ignore\r\n text = this.text,\r\n watchers = this.setupWatchers(href, text);\r\n\r\n return A({\r\n cache: 'link',\r\n // @ts-ignore\r\n class: this.class || this.className || null,\r\n onState: ['selected', {\r\n [this.selectedClass]: true\r\n }],\r\n href: this.getString(href),\r\n text: this.getString(text),\r\n nest: this.nest || this.children,\r\n watch: watchers\r\n });\r\n }\r\n\r\n /**\r\n * This will get the link path.\r\n *\r\n * @returns {string|null}\r\n */\r\n getLinkPath()\r\n {\r\n // @ts-ignore\r\n return this?.link?.pathname || null;\r\n }\r\n\r\n /**\r\n * This will get string.\r\n *\r\n * @param {string} string\r\n * @returns {(string|null)}\r\n */\r\n getString(string)\r\n {\r\n const type = typeof string;\r\n return (type !== 'object' && type !== 'undefined')? string : null;\r\n }\r\n\r\n /**\r\n * This will setup the watchers.\r\n *\r\n * @protected\r\n * @param {string} href\r\n * @param {string} text\r\n * @returns {array}\r\n */\r\n setupWatchers(href, text)\r\n {\r\n // @ts-ignore\r\n const exact = (this.exact !== false),\r\n data = router.data;\r\n\r\n const watchers = [];\r\n\r\n if (href && typeof href === 'object')\r\n {\r\n watchers.push(Watcher('href', href));\r\n }\r\n\r\n if (text && typeof text === 'object')\r\n {\r\n watchers.push(Watcher('text', text));\r\n }\r\n\r\n watchers.push({\r\n value: ['[[path]]', data],\r\n callBack: (value, ele) =>\r\n {\r\n const path = ele.pathname + ele.hash;\r\n\t\t\t\tconst selected = exact? (value === path) : (iSActive(ele.pathname, value));\r\n this.update(selected);\r\n }\r\n });\r\n\r\n return watchers;\r\n }\r\n\r\n /**\r\n * This will setup the states.\r\n *\r\n * @protected\r\n * @returns {object}\r\n */\r\n setupStates()\r\n {\r\n return {\r\n selected: false\r\n };\r\n }\r\n\r\n /**\r\n * This will update the class on the element.\r\n *\r\n * @param {boolean} selected\r\n * @returns {void}\r\n */\r\n update(selected)\r\n {\r\n this.state.selected = selected;\r\n }\r\n}", "import { Tbody } from '@base-framework/atoms';\r\nimport { List } from '../lists/list.js';\r\n\r\n/**\r\n * TableBody\r\n *\r\n * This will create a table body component.\r\n *\r\n * @param {object} props\r\n * @property {string} class - The class to add to the list\r\n * @property {string} key - The key to use to identify the items\r\n * @property {array} [items] - The items\r\n *\r\n * @class\r\n */\r\n// @ts-ignore\r\nexport class TableBody extends List\r\n{\r\n render()\r\n {\r\n // @ts-ignore\r\n const rowCallBack = this.row.bind(this);\r\n\r\n return Tbody({\r\n // @ts-ignore\r\n class: `tbody ${this.class || ''}`,\r\n for: ['items', rowCallBack]\r\n });\r\n }\r\n};", "import { Span } from \"@base-framework/atoms\";\r\nimport { Component, SimpleData } from \"@base-framework/base\";\r\nimport { IntervalTimer } from \"src/utils/timer/interval-timer.js\";\r\n\r\n/**\r\n * This will create a simple flat data object to use to bind\r\n * timer update. This will be used to update the time every\r\n * minute.\r\n *\r\n * This data will be bound to all the dynamic time elements.\r\n *\r\n * @constant\r\n * @type {SimpleData} data\r\n */\r\nconst data = new SimpleData({\r\n date: 0\r\n});\r\n\r\n/**\r\n * @constant\r\n * @type {number} MINUTE_INTERVAL\r\n */\r\nconst MINUTE_INTERVAL = 60000;\r\n\r\n/**\r\n * This will update the the data value every minute.\r\n *\r\n * @constant\r\n * @type {IntervalTimer} timer\r\n */\r\nconst timer = new IntervalTimer(MINUTE_INTERVAL, () =>\r\n{\r\n data.increment('date');\r\n});\r\n\r\n/**\r\n * This will start the timer to update any dynamic time\r\n * elements.\r\n */\r\ntimer.start();\r\n\r\n/**\r\n * DynamicTime\r\n *\r\n * This will create a dynamic time element that will update\r\n * the time every minute.\r\n *\r\n * @property {string} dateTime - The date time to display.\r\n * @property {function} [filter] - The filter to apply to the date time.\r\n *\r\n * @class\r\n * @augments Component\r\n */\r\nexport class DynamicTime extends Component\r\n{\r\n /**\r\n * This will set up the component data with the\r\n * data created above.\r\n *\r\n * @returns {object}\r\n */\r\n setData()\r\n {\r\n return data;\r\n }\r\n\r\n /**\r\n * This will render the component.\r\n *\r\n * @returns {object}\r\n */\r\n render()\r\n {\r\n return Span({\r\n // @ts-ignore\r\n class: this.class,\r\n text: this.getTime(),\r\n onSet: ['date', () => this.getTime()]\r\n });\r\n }\r\n\r\n /**\r\n * This will get the date and check to filter the value.\r\n *\r\n * @returns {string}\r\n */\r\n getTime()\r\n {\r\n // @ts-ignore\r\n const dateTime = this.dateTime;\r\n // @ts-ignore\r\n return (this.filter) ? this.filter(dateTime) : dateTime;\r\n }\r\n}", "/**\r\n * Timer\r\n *\r\n * This will create a timer that will call a callback function.\r\n *\r\n * @property {number} duration - The duration of the timer.\r\n * @property {function} callBack - The callback function.\r\n *\r\n * @class\r\n */\r\nexport class Timer\r\n{\r\n /**\r\n * This will create a new timer.\r\n *\r\n * @param {number} duration\r\n * @param {function} callBack\r\n */\r\n\tconstructor(duration, callBack)\r\n\t{\r\n /**\r\n * @property {number|null} timer\r\n */\r\n\t\tthis.timer = null;\r\n\r\n /**\r\n * @property {function} callBack\r\n */\r\n\t\tthis.callBack = callBack;\r\n\r\n /**\r\n * @property {number} duration\r\n */\r\n\t\tthis.duration = duration || 1000;\r\n\t}\r\n\r\n /**\r\n * This will create a timer.\r\n *\r\n * @protected\r\n * @param {function} callBack\r\n * @returns {void}\r\n */\r\n\tcreateTimer(callBack)\r\n\t{\r\n\t\tthis.timer = window.setTimeout(callBack, this.duration);\r\n\t}\r\n\r\n /**\r\n * This will start the timer.\r\n *\r\n * @returns {void}\r\n */\r\n\tstart()\r\n\t{\r\n /**\r\n * This will stop the timer before starting a new one.\r\n */\r\n\t\tthis.stop();\r\n\r\n\t\tconst callBack = this.returnCallBack.bind(this);\r\n\t\tthis.createTimer(callBack);\r\n\t}\r\n\r\n /**\r\n * This will stop the timer.\r\n *\r\n * @returns {void}\r\n */\r\n\tstop()\r\n\t{\r\n\t\twindow.clearTimeout(this.timer);\r\n\t}\r\n\r\n /**\r\n * This will call the callback function.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n\treturnCallBack()\r\n\t{\r\n\t\tconst callBack = this.callBack;\r\n\t\tif (typeof callBack === 'function')\r\n\t\t{\r\n\t\t\tcallBack.call();\r\n\t\t}\r\n\t}\r\n}", "import { Timer } from './timer.js';\r\n\r\n/**\r\n * IntervalTimer\r\n *\r\n * This will create a timer that will call a callback function.\r\n *\r\n * @class\r\n */\r\nexport class IntervalTimer extends Timer\r\n{\r\n /**\r\n * This will create a timer.\r\n *\r\n * @protected\r\n * @param {function} callBack\r\n * @returns {void}\r\n */\r\n\tcreateTimer(callBack)\r\n\t{\r\n\t\tthis.timer = window.setInterval(callBack, this.duration);\r\n\t}\r\n\r\n /**\r\n * This will stop the timer.\r\n *\r\n * @returns {void}\r\n */\r\n\tstop()\r\n\t{\r\n\t\twindow.clearInterval(this.timer);\r\n\t}\r\n}"],
5
+ "mappings": "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",
6
6
  "names": ["Div", "Data", "Jot", "Builder", "Html", "ChildHelper", "parent", "index", "node", "children", "layout", "oldChild", "frag", "childrenLayout", "container", "Item", "index", "item", "status", "DataHelper", "oldArray", "newArray", "key", "oldItemsMap", "changes", "deletedItems", "newItem", "newIndex", "keyValue", "oldItem", "array", "map", "obj1", "obj2", "keys1", "keys2", "RowDivider", "layout", "itemProperty", "customCompare", "value", "last", "item", "children", "lastValue", "clone", "data", "List", "Jot", "RowDivider", "items", "Data", "rowCallBack", "Div", "item", "index", "scope", "children", "keyValue", "rowElement", "ChildHelper", "row", "oldRow", "layout", "rows", "lastIndex", "newItems", "withDelete", "oldItems", "changes", "DataHelper", "reverseItems", "A", "Component", "router", "Watcher", "attr", "value", "iSActive", "path", "url", "NavLink", "href", "text", "watchers", "string", "type", "exact", "data", "ele", "selected", "Tbody", "TableBody", "List", "rowCallBack", "Tbody", "Span", "Component", "SimpleData", "Timer", "duration", "callBack", "IntervalTimer", "Timer", "callBack", "data", "SimpleData", "MINUTE_INTERVAL", "timer", "IntervalTimer", "DynamicTime", "Component", "Span", "dateTime"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@base-framework/organisms",
3
- "version": "1.0.64",
3
+ "version": "1.0.65",
4
4
  "description": "This will add default organisms to the base framework.",
5
5
  "main": "./dist/organisms.js",
6
6
  "scripts": {