@famalabs/web-ui 1.0.0-beta.25 → 1.0.0-beta.26

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.
@@ -1 +1 @@
1
- import e from"qs";import{mongoOperators as t}from"./TableTypes.js";const r=e=>"object"==typeof e&&null!=e&&!Array.isArray(e),n=e=>{if(r(e)){const r=Object.keys(e).find(e=>e.startsWith("$"));if(r&&t.string.includes(r))return{value:String(e[r]),operator:r};const o=Object.keys(e).find(e=>!e.startsWith("$"));if(o)return n(e[o])}return{value:String(e)}},o=e=>{try{return JSON.stringify(e)}catch{return""}},i=e=>e&&Array.isArray(e)&&0!==e.length?e.map(e=>({index:e.index??0,column:e.column??"",operator:e.operator??"",type:e.type??"",value:null==e.value?"":"object"==typeof e.value?o(e.value):String(e.value)})).sort((e,t)=>e.column!==t.column?e.column.localeCompare(t.column):e.index!==t.index?e.index-t.index:e.operator!==t.operator?e.operator.localeCompare(t.operator):e.type!==t.type?e.type.localeCompare(t.type):e.value.localeCompare(t.value)).map(e=>`${e.type}|${e.column}|${e.index}|${e.operator}|${e.value}`).join("-"):"",a=(e,t)=>{switch(null!=e?typeof e:"undefined"){case"string":return t.toString();case"number":return Number(t);case"boolean":return Boolean(t);default:return t}},l=(e,t)=>{if(r(t)){const r=Object.keys(t).filter(e=>!e.startsWith("$"));if(1===r.length)return l(`${e}.${r[0]}`,t[r[0]])}return e},s=t=>{if(!t||0===t.length)return[];const r=e.parse(t,{ignoreQueryPrefix:!0}).filter??{};return Object.entries(r).map(([e,t])=>l(e,t))};function u(t,o){if(0===o.length)return[];const i=e.parse(o,{ignoreQueryPrefix:!0,allowEmptyArrays:!0}).filter??{},s={},u=new Map,c=e=>(void 0===s[e]&&(s[e]=0),s[e]),p=(e,t=1)=>{s[e]=c(e)+t},f=e=>{const t=e.operator??"",r=`${e.column}|${e.index}|${t}|${e.value}`;u.set(r,e)};return Object.entries(i).forEach(([e,o])=>{const i=l(e,o),s=t.find(e=>e.filterOptions&&e.accessor===i),u=s?.accessor,m=s?.filterOptions?.type;if(!u||!m)return;const $=u!==e?u.slice(e.length+1).split(".").filter(Boolean):[];let y=o;for(const e of $)r(y)&&e in y&&(y=y[e]);switch(m){case"string":{const{value:e,operator:t}=n(y),r=c(u);f({column:u,value:e,index:r,type:"string",operator:t}),p(u);break}case"number":{const e=c(u);if(r(y)){Object.entries(y).forEach(([t,r])=>{f({column:u,value:Number(r),index:e,type:"number",operator:t})})}else f({column:u,value:Number(y),index:e,type:"number"});p(u);break}case"select":{const e=s?.filterOptions;if(!e||!e.options||0===e.options.length)break;const t=c(u);let n=y,o=!0===e.multiple;if(r(y)&&"$in"in y&&(n=y.$in,o=!0),"string"==typeof n&&n.startsWith("[")&&n.endsWith("]")){const e=n.slice(1,-1).trim();n=e?e.split(",").map(e=>e.trim().replace(/(^"|"$)/g,"")):[]}const i=(Array.isArray(n)?n:null!=n&&""!==n?[n]:[]).map(t=>a(e.options[0].id,t)).filter(t=>e.options.some(e=>String(e.id)===String(t)));o?(f({column:u,value:i,index:t,type:"select",operator:"$in"}),p(u)):(i.forEach((e,r)=>{f({column:u,value:e,index:t+r,type:"select"})}),p(u,i.length));break}case"date":{const e=c(u);if(r(y)){Object.entries(y).forEach(([t,r])=>{f({column:u,value:r,index:e,type:"date",operator:t})})}else f({column:u,value:y,index:e,type:"date",operator:"$eq"});p(u);break}}}),Array.from(u.values())}function c(r){if(0===r.length)return"";const n=r.reduce((e,r)=>{const[n,...o]=r.column.split("."),i=o.map(e=>`[${e}]`).join("");switch(r.type){case"string":{const o=r.operator;return o&&t.string.includes(o)?e[`filter[${n}]${i}[${o}]`]=r.value:e[`filter[${n}]${i}`]=r.value,e}case"number":{const o=r.operator;return o&&t.number.includes(o)?e[`filter[${n}]${i}[${o}]`]=r.value:e[`filter[${n}]${i}`]=r.value,e}case"select":{const o=r.operator;if(o&&t.select.includes(o)){const t=Array.isArray(r.value)?`[${r.value.map(e=>"string"==typeof e?`"${e}"`:e).join(", ")}]`:r.value;e[`filter[${n}]${i}[${o}]`]=t}else e[`filter[${n}]${i}`]=r.value;return e}case"date":{const o=r.operator;return o&&t.date.includes(o)?e[`filter[${n}]${i}[${o}]`]=r.value:e[`filter[${n}]${i}`]=r.value,e}default:return e[`filter[${n}]${i}`]=r.value,e}},{});return e.stringify(n,{encode:!1,arrayFormat:"brackets"})}export{s as getFilterColumnsFromQuery,u as parseQueryFilters,i as serializeFilters,c as stringifyFilters,a as typeCaster};
1
+ import e from"qs";import{mongoOperators as t}from"./TableTypes.js";const r=e=>"object"==typeof e&&null!=e&&!Array.isArray(e),n=e=>{if(r(e)){const r=Object.keys(e).find(e=>e.startsWith("$"));if(r&&t.string.includes(r))return{value:String(e[r]),operator:r};const o=Object.keys(e).find(e=>!e.startsWith("$"));if(o)return n(e[o])}return{value:String(e)}},o=e=>{try{return JSON.stringify(e)}catch{return""}},a=e=>e&&Array.isArray(e)&&0!==e.length?e.map(e=>({index:e.index??0,column:e.column??"",operator:e.operator??"",type:e.type??"",value:null==e.value?"":"object"==typeof e.value?o(e.value):String(e.value)})).sort((e,t)=>e.column!==t.column?e.column.localeCompare(t.column):e.index!==t.index?e.index-t.index:e.operator!==t.operator?e.operator.localeCompare(t.operator):e.type!==t.type?e.type.localeCompare(t.type):e.value.localeCompare(t.value)).map(e=>`${e.type}|${e.column}|${e.index}|${e.operator}|${e.value}`).join("-"):"",i=(e,t)=>{switch(null!=e?typeof e:"undefined"){case"string":return t.toString();case"number":return Number(t);case"boolean":return Boolean(t);default:return t}},l=(e,t)=>{if(r(t)){const r=Object.keys(t).filter(e=>!e.startsWith("$"));if(1===r.length)return l(`${e}.${r[0]}`,t[r[0]])}return e},s=(e,t)=>{if(!r(t))return[[e,t]];const n=Object.keys(t),o=n.some(e=>e.startsWith("$")),a=n.filter(e=>!e.startsWith("$"));return o||0===a.length?[[e,t]]:1===a.length?s(`${e}.${a[0]}`,t[a[0]]):a.flatMap(r=>s(`${e}.${r}`,t[r]))},u=t=>{if(!t||0===t.length)return[];const r=e.parse(t,{ignoreQueryPrefix:!0}).filter??{};return Object.entries(r).map(([e,t])=>l(e,t))};function c(t,o){if(0===o.length)return[];const a=e.parse(o,{ignoreQueryPrefix:!0,allowEmptyArrays:!0,parseArrays:!0}).filter??{},l={},u=new Map,c=e=>(void 0===l[e]&&(l[e]=0),l[e]),p=(e,t=1)=>{l[e]=c(e)+t},f=e=>{const t=e.operator??"",r=`${e.column}|${e.index}|${t}|${e.value}`;u.set(r,e)};return Object.entries(a).flatMap(([e,t])=>s(e,t)).forEach(([e,o])=>{const a=t.find(t=>t.filterOptions&&t.accessor===e),l=a?.accessor,s=a?.filterOptions?.type;if(l&&s)switch(s){case"string":{const{value:e,operator:t}=n(o),r=c(l);f({column:l,value:e,index:r,type:"string",operator:t}),p(l);break}case"number":{const e=c(l);if(r(o)){Object.entries(o).forEach(([t,r])=>{f({column:l,value:Number(r),index:e,type:"number",operator:t})})}else f({column:l,value:Number(o),index:e,type:"number"});p(l);break}case"select":{const e=a?.filterOptions;if(!e||!e.options||0===e.options.length)break;const t=c(l);let n=o,s=!0===e.multiple;if(r(o)&&"$in"in o&&(n=o.$in,s=!0),"string"==typeof n&&n.startsWith("[")&&n.endsWith("]")){const e=n.slice(1,-1).trim();n=e?e.split(",").map(e=>e.trim().replace(/(^"|"$)/g,"")):[]}const u=(Array.isArray(n)?n:null!=n&&""!==n?[n]:[]).map(t=>i(e.options[0].id,t)).filter(t=>e.options.some(e=>String(e.id)===String(t)));s?(f({column:l,value:u,index:t,type:"select",operator:"$in"}),p(l)):(u.forEach((e,r)=>{f({column:l,value:e,index:t+r,type:"select"})}),p(l,u.length));break}case"date":{const e=c(l);if(r(o)){Object.entries(o).forEach(([t,r])=>{f({column:l,value:r,index:e,type:"date",operator:t})})}else f({column:l,value:o,index:e,type:"date",operator:"$eq"});p(l);break}}}),Array.from(u.values())}function p(r){if(0===r.length)return"";const n=r.reduce((e,r)=>{const[n,...o]=r.column.split("."),a=o.map(e=>`[${e}]`).join("");switch(r.type){case"string":{const o=r.operator;return o&&t.string.includes(o)?e[`filter[${n}]${a}[${o}]`]=r.value:e[`filter[${n}]${a}`]=r.value,e}case"number":{const o=r.operator;return o&&t.number.includes(o)?e[`filter[${n}]${a}[${o}]`]=r.value:e[`filter[${n}]${a}`]=r.value,e}case"select":{const o=r.operator;if(o&&t.select.includes(o)){const t=Array.isArray(r.value)?`[${r.value.map(e=>"string"==typeof e?`"${e}"`:e).join(", ")}]`:r.value;e[`filter[${n}]${a}[${o}]`]=t}else e[`filter[${n}]${a}`]=r.value;return e}case"date":{const o=r.operator;return o&&t.date.includes(o)?e[`filter[${n}]${a}[${o}]`]=r.value:e[`filter[${n}]${a}`]=r.value,e}default:return e[`filter[${n}]${a}`]=r.value,e}},{});return e.stringify(n,{encode:!1,arrayFormat:"brackets"})}export{u as getFilterColumnsFromQuery,c as parseQueryFilters,a as serializeFilters,p as stringifyFilters,i as typeCaster};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@famalabs/web-ui",
3
- "version": "1.0.0-beta.25",
3
+ "version": "1.0.0-beta.26",
4
4
  "author": " Fama Labs <info@famalabs.com>",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,8 +20,8 @@
20
20
  "@blocknote/react": ">=0.47.0 <1.0.0",
21
21
  "@blocknote/xl-ai": ">=0.47.0 <1.0.0",
22
22
  "@hello-pangea/dnd": "^18.0.0",
23
- "@mui/material": "^7.3.8",
24
- "@mui/x-date-pickers": "^8.27.0",
23
+ "@mui/material": "^7.3.8 || ^9.0.0",
24
+ "@mui/x-date-pickers": "^8.27.0 || ^9.0.0",
25
25
  "ai": "^6.0.84",
26
26
  "dayjs": "^1.11.19",
27
27
  "lucide-react": ">=0.563.0 || ^1.0.0",