@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""}},
|
|
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.
|
|
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",
|