@moneko/react 0.0.6 → 0.0.8

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/lib/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export { default as Link } from './link.js';
2
- export { default as useNavigate } from './use-navgate.js';
1
+ export * from 'react-router-dom';
2
+ export { default as LinkWithMenuId } from './link.js';
3
+ export { default as useNavigateWithMenuId } from './use-navgate.js';
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as Link}from"./link.js";export{default as useNavigate}from"./use-navgate.js";
1
+ export*from"react-router-dom";export{default as LinkWithMenuId}from"./link.js";export{default as useNavigateWithMenuId}from"./use-navgate.js";
2
2
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { default as Link } from './link.js';\nexport { default as useNavigate } from './use-navgate.js';\n"],"names":["default","Link","useNavigate"],"mappings":"AAAA,OAASA,WAAWC,IAAI,KAAQ,WAAY,AAC5C,QAASD,WAAWE,WAAW,KAAQ,kBAAmB"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from 'react-router-dom';\nexport { default as LinkWithMenuId } from './link.js';\nexport { default as useNavigateWithMenuId } from './use-navgate.js';\n"],"names":["default","LinkWithMenuId","useNavigateWithMenuId"],"mappings":"AAAA,WAAc,kBAAmB,AACjC,QAASA,WAAWC,cAAc,KAAQ,WAAY,AACtD,QAASD,WAAWE,qBAAqB,KAAQ,kBAAmB"}
package/lib/link.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  import { type FC } from 'react';
2
2
  import { type LinkProps as ReactRouterLinkProps, type To } from 'react-router-dom';
3
3
  export interface LinkProps extends Omit<ReactRouterLinkProps, 'to'> {
4
- /** search保留字 */
4
+ /** 保留字 */
5
5
  reserved?: string | string[];
6
6
  to: To | -1;
7
7
  }
8
+ /** 跳转时继承部分query参数
9
+ * @default {string[]} ['menuId', 'dynamicTitle']
10
+ */
8
11
  declare const Link: FC<LinkProps>;
9
12
  export default Link;
package/lib/link.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/link.tsx"],"sourcesContent":["import React, { type FC, useMemo } from 'react';\nimport {\n Link as ReactRouterLink,\n type LinkProps as ReactRouterLinkProps,\n type To,\n useSearchParams,\n} from 'react-router-dom';\n\nexport interface LinkProps extends Omit<ReactRouterLinkProps, 'to'> {\n /** search保留字 */\n reserved?: string | string[];\n to: To | -1;\n}\n\nconst Link: FC<LinkProps> = ({ reserved, to, children, ...props }) => {\n const reservedWord = useMemo(() => {\n return ['menuId', 'dynamicTitle', ...(Array.isArray(reserved) ? reserved : [reserved])].filter(\n Boolean,\n );\n }, [reserved]);\n const [search] = useSearchParams();\n const toUrl = useMemo(() => {\n if (to === -1) {\n return -1;\n }\n /** 提取保留字属性 */\n const nextSearch: Record<string, string> = {};\n\n search.forEach((val, key) => {\n if (reservedWord.includes(key)) {\n nextSearch[key] = val;\n }\n });\n\n let entryUrl = to as string;\n const entrySearchIdx = entryUrl.indexOf('?');\n\n if (entrySearchIdx !== -1) {\n const searchByToUrl = new URLSearchParams(entryUrl.slice(entrySearchIdx));\n\n searchByToUrl.forEach((val, key) => {\n nextSearch[key] = val;\n });\n entryUrl = entryUrl.substring(0, entrySearchIdx);\n }\n const searchString = new URLSearchParams(nextSearch).toString();\n\n return searchString?.trim().length ? [entryUrl, searchString].join('?') : entryUrl;\n }, [reservedWord, search, to]);\n\n return (\n <ReactRouterLink {...props} to={toUrl as To}>\n {children}\n </ReactRouterLink>\n );\n};\n\nexport default Link;\n"],"names":["useMemo","Link","ReactRouterLink","useSearchParams","reserved","to","children","props","reservedWord","Array","isArray","filter","Boolean","search","toUrl","nextSearch","forEach","val","key","includes","entryUrl","entrySearchIdx","indexOf","searchByToUrl","URLSearchParams","slice","substring","searchString","toString","trim","length","join"],"mappings":"uCAAA,QAAyBA,WAAAA,CAAO,KAAQ,OAAQ,AAChD,QACEC,QAAQC,CAAe,CAGvBC,mBAAAA,CAAe,KACV,kBAAmB,AAmD1B,eA3C4B,CAAA,CAAC,CAAEC,SAAAA,CAAQ,CAAEC,GAAAA,CAAE,CAAEC,SAAAA,CAAQ,CAAE,GAAGC,EAAO,IAC/D,IAAMC,EAAeR,EAAQ,IACpB,CAAC,SAAU,kBAAoBS,MAAMC,QAAQN,GAAYA,EAAW,CAACA,EAAS,CAAE,CAACO,OACtFC,SAED,CAACR,EAAS,EACP,CAACS,EAAO,CAAGV,IACXW,EAAQd,EAAQ,KACpB,GAAIK,AAAO,KAAPA,EACF,OAAO,GAGT,IAAMU,EAAqC,CAAC,EAE5CF,EAAOG,QAAQ,CAACC,EAAKC,KACfV,EAAaW,SAASD,IACxBH,CAAAA,CAAU,CAACG,EAAI,CAAGD,CAAE,CAExB,GAEA,IAAIG,EAAWf,EACTgB,EAAiBD,EAASE,QAAQ,KAExC,GAAID,AAAmB,KAAnBA,EAAuB,CACzB,IAAME,EAAgB,IAAIC,gBAAgBJ,EAASK,MAAMJ,IAEzDE,EAAcP,QAAQ,CAACC,EAAKC,KAC1BH,CAAU,CAACG,EAAI,CAAGD,CACpB,GACAG,EAAWA,EAASM,UAAU,EAAGL,EACnC,CACA,IAAMM,EAAe,IAAIH,gBAAgBT,GAAYa,WAErD,OAAOD,GAAcE,OAAOC,OAAS,CAACV,EAAUO,EAAa,CAACI,KAAK,KAAOX,CAC5E,EAAG,CAACZ,EAAcK,EAAQR,EAAG,EAE7B,OACE,EAACH,GAAiB,GAAGK,CAAK,CAAEF,GAAIS,WAC7BR,GAGP,CAAA,CAEoB"}
1
+ {"version":3,"sources":["../src/link.tsx"],"sourcesContent":["import React, { type FC, useMemo } from 'react';\nimport {\n Link as ReactRouterLink,\n type LinkProps as ReactRouterLinkProps,\n type To,\n useSearchParams,\n} from 'react-router-dom';\n\nexport interface LinkProps extends Omit<ReactRouterLinkProps, 'to'> {\n /** 保留字 */\n reserved?: string | string[];\n to: To | -1;\n}\n\n/** 跳转时继承部分query参数\n * @default {string[]} ['menuId', 'dynamicTitle'] \n */\nconst Link: FC<LinkProps> = ({ reserved, to, children, ...props }) => {\n const reservedWord = useMemo(() => {\n return ['menuId', 'dynamicTitle', ...(Array.isArray(reserved) ? reserved : [reserved])].filter(\n Boolean,\n );\n }, [reserved]);\n const [search] = useSearchParams();\n const toUrl = useMemo(() => {\n if (to === -1) {\n return -1;\n }\n /** 提取保留字属性 */\n const nextSearch: Record<string, string> = {};\n\n search.forEach((val, key) => {\n if (reservedWord.includes(key)) {\n nextSearch[key] = val;\n }\n });\n\n let entryUrl = to as string;\n const entrySearchIdx = entryUrl.indexOf('?');\n\n if (entrySearchIdx !== -1) {\n const searchByToUrl = new URLSearchParams(entryUrl.slice(entrySearchIdx));\n\n searchByToUrl.forEach((val, key) => {\n nextSearch[key] = val;\n });\n entryUrl = entryUrl.substring(0, entrySearchIdx);\n }\n const searchString = new URLSearchParams(nextSearch).toString();\n\n return searchString?.trim().length ? [entryUrl, searchString].join('?') : entryUrl;\n }, [reservedWord, search, to]);\n\n return (\n <ReactRouterLink {...props} to={toUrl as To}>\n {children}\n </ReactRouterLink>\n );\n};\n\nexport default Link;\n"],"names":["useMemo","Link","ReactRouterLink","useSearchParams","reserved","to","children","props","reservedWord","Array","isArray","filter","Boolean","search","toUrl","nextSearch","forEach","val","key","includes","entryUrl","entrySearchIdx","indexOf","searchByToUrl","URLSearchParams","slice","substring","searchString","toString","trim","length","join"],"mappings":"uCAAA,QAAyBA,WAAAA,CAAO,KAAQ,OAAQ,AAChD,QACEC,QAAQC,CAAe,CAGvBC,mBAAAA,CAAe,KACV,kBAAmB,AAsD1B,eA3C4B,CAAA,CAAC,CAAEC,SAAAA,CAAQ,CAAEC,GAAAA,CAAE,CAAEC,SAAAA,CAAQ,CAAE,GAAGC,EAAO,IAC/D,IAAMC,EAAeR,EAAQ,IACpB,CAAC,SAAU,kBAAoBS,MAAMC,QAAQN,GAAYA,EAAW,CAACA,EAAS,CAAE,CAACO,OACtFC,SAED,CAACR,EAAS,EACP,CAACS,EAAO,CAAGV,IACXW,EAAQd,EAAQ,KACpB,GAAIK,AAAO,KAAPA,EACF,OAAO,GAGT,IAAMU,EAAqC,CAAC,EAE5CF,EAAOG,QAAQ,CAACC,EAAKC,KACfV,EAAaW,SAASD,IACxBH,CAAAA,CAAU,CAACG,EAAI,CAAGD,CAAE,CAExB,GAEA,IAAIG,EAAWf,EACTgB,EAAiBD,EAASE,QAAQ,KAExC,GAAID,AAAmB,KAAnBA,EAAuB,CACzB,IAAME,EAAgB,IAAIC,gBAAgBJ,EAASK,MAAMJ,IAEzDE,EAAcP,QAAQ,CAACC,EAAKC,KAC1BH,CAAU,CAACG,EAAI,CAAGD,CACpB,GACAG,EAAWA,EAASM,UAAU,EAAGL,EACnC,CACA,IAAMM,EAAe,IAAIH,gBAAgBT,GAAYa,WAErD,OAAOD,GAAcE,OAAOC,OAAS,CAACV,EAAUO,EAAa,CAACI,KAAK,KAAOX,CAC5E,EAAG,CAACZ,EAAcK,EAAQR,EAAG,EAE7B,OACE,EAACH,GAAiB,GAAGK,CAAK,CAAEF,GAAIS,WAC7BR,GAGP,CAAA,CAEoB"}
package/lib/merge.d.ts CHANGED
@@ -1,10 +1,3 @@
1
- type Prefix = {
2
- children?: Prefix[];
3
- meta?: object;
4
- element?: any;
5
- path: string;
6
- };
7
- declare function merge<T extends Prefix>(route: T[], key: keyof T): ({
8
- key: string;
9
- } & T)[] | undefined;
1
+ import type { RouteConfig } from '@app/routes';
2
+ declare function merge<T extends RouteConfig>(route: T[], key: keyof T): T[] | undefined;
10
3
  export default merge;
package/lib/merge.js CHANGED
@@ -1,2 +1,2 @@
1
- import{createElement as e,isValidElement as r}from"react";export default function t(n,l){if(!n.length)return;let i=[];return n.forEach(e=>{let r=i.findIndex(r=>r[l]==e[l]);if(r>-1){let n=[...i[r].children||[],...e.children||[]];i[r]=Object.assign(e,i[r],i[r].meta&&{meta:{...i[r].meta,...e.meta}}),n.length&&(i[r].children=t(n,l))}else i.push(Object.assign(e,Array.isArray(e.children)&&{children:t(e.children,l)}))}),function t(n){return n.map(n=>{let l=Object.assign({key:n.path},n);return l.element&&!r(l.element)&&(l.element=e(l.element,l.meta)),Array.isArray(l.children)&&(l.children=t(l.children)),l})}(i)};
1
+ export default function e(n,r){if(!n.length)return;let t=[];return n.forEach(n=>{let i=t.findIndex(e=>e[r]==n[r]);if(i>-1){let l=[...t[i].children||[],...n.children||[]];t[i]=Object.assign(n,t[i],t[i].meta&&{meta:{...t[i].meta,...n.meta}}),l.length&&(t[i].children=e(l,r))}else t.push(Object.assign(n,Array.isArray(n.children)&&{children:e(n.children,r)}))}),t};
2
2
  //# sourceMappingURL=merge.js.map
package/lib/merge.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/merge.ts"],"sourcesContent":["import { createElement, isValidElement } from 'react';\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Prefix = { children?: Prefix[]; meta?: object; element?: any; path: string };\n\nfunction prefix<T extends Prefix>(list: T[]) {\n return list.map((r) => {\n const _ = Object.assign({ key: r.path }, r);\n\n if (_.element && !isValidElement(_.element)) {\n _.element = createElement(_.element, _.meta);\n }\n if (Array.isArray(_.children)) {\n _.children = prefix(_.children);\n }\n return _;\n });\n}\nfunction merge<T extends Prefix>(route: T[], key: keyof T) {\n if (!route.length) return void 0;\n const arr: T[] = [];\n\n route.forEach((e) => {\n const idx = arr.findIndex((i) => i[key] == e[key]);\n\n if (idx > -1) {\n const ctree: T[] = [...(arr[idx].children || []), ...(e.children || [])] as T[];\n\n arr[idx] = Object.assign(\n e,\n arr[idx],\n arr[idx].meta && {\n meta: {\n ...arr[idx].meta,\n ...e.meta,\n },\n },\n );\n if (ctree.length) {\n arr[idx].children = merge(ctree, key);\n }\n } else {\n arr.push(\n Object.assign(\n e,\n Array.isArray(e.children) && {\n children: merge(e.children as T[], key),\n },\n ),\n );\n }\n });\n\n return prefix(arr);\n}\n\nexport default merge;\n"],"names":["createElement","isValidElement","merge","route","key","length","arr","forEach","e","idx","findIndex","i","ctree","children","Object","assign","meta","push","Array","isArray","prefix","list","map","r","_","path","element"],"mappings":"AAAA,OAASA,iBAAAA,CAAa,CAAEC,kBAAAA,CAAc,KAAQ,OAAQ,AAuDtD,gBAtCA,SAASC,EAAwBC,CAAU,CAAEC,CAAY,EACvD,GAAI,CAACD,EAAME,OAAQ,OACnB,IAAMC,EAAW,EAAE,CAiCnB,OA/BAH,EAAMI,QAAQ,AAACC,IACb,IAAMC,EAAMH,EAAII,UAAU,AAACC,GAAMA,CAAC,CAACP,EAAI,EAAII,CAAC,CAACJ,EAAI,EAEjD,GAAIK,EAAM,GAAI,CACZ,IAAMG,EAAa,IAAKN,CAAG,CAACG,EAAI,CAACI,UAAY,EAAE,IAAOL,EAAEK,UAAY,EAAE,CAAE,AAExEP,CAAAA,CAAG,CAACG,EAAI,CAAGK,OAAOC,OAChBP,EACAF,CAAG,CAACG,EAAI,CACRH,CAAG,CAACG,EAAI,CAACO,MAAQ,CACfA,KAAM,CACJ,GAAGV,CAAG,CAACG,EAAI,CAACO,IAAI,CAChB,GAAGR,EAAEQ,IAAI,AACX,CACF,GAEEJ,EAAMP,QACRC,CAAAA,CAAG,CAACG,EAAI,CAACI,SAAWX,EAAMU,EAAOR,EAAG,CAExC,MACEE,EAAIW,KACFH,OAAOC,OACLP,EACAU,MAAMC,QAAQX,EAAEK,WAAa,CAC3BA,SAAUX,EAAMM,EAAEK,SAAiBT,EACrC,GAIR,GAEOgB,AAhDT,SAASA,EAAyBC,CAAS,EACzC,OAAOA,EAAKC,IAAI,AAACC,IACf,IAAMC,EAAIV,OAAOC,OAAO,CAAEX,IAAKmB,EAAEE,IAAK,EAAGF,GAQzC,OANIC,EAAEE,SAAW,CAACzB,EAAeuB,EAAEE,UACjCF,CAAAA,EAAEE,QAAU1B,EAAcwB,EAAEE,QAASF,EAAER,KAAI,EAEzCE,MAAMC,QAAQK,EAAEX,WAClBW,CAAAA,EAAEX,SAAWO,EAAOI,EAAEX,SAAQ,EAEzBW,CACT,EACF,EAoCgBlB,EAChB,CAEqB"}
1
+ {"version":3,"sources":["../src/merge.ts"],"sourcesContent":["import type { RouteConfig } from '@app/routes';\n\nfunction merge<T extends RouteConfig>(route: T[], key: keyof T) {\n if (!route.length) return void 0;\n const arr: T[] = [];\n\n route.forEach((e) => {\n const idx = arr.findIndex((i) => i[key] == e[key]);\n\n if (idx > -1) {\n const ctree: T[] = [...(arr[idx].children || []), ...(e.children || [])] as T[];\n\n arr[idx] = Object.assign(\n e,\n arr[idx],\n arr[idx].meta && {\n meta: {\n ...arr[idx].meta,\n ...e.meta,\n },\n },\n );\n if (ctree.length) {\n arr[idx].children = merge(ctree, key);\n }\n } else {\n arr.push(\n Object.assign(\n e,\n Array.isArray(e.children) && {\n children: merge(e.children as T[], key),\n },\n ),\n );\n }\n });\n\n return arr;\n}\n\nexport default merge;\n"],"names":["merge","route","key","length","arr","forEach","e","idx","findIndex","i","ctree","children","Object","assign","meta","push","Array","isArray"],"mappings":"AAwCA,eAtCA,SAASA,EAA6BC,CAAU,CAAEC,CAAY,EAC5D,GAAI,CAACD,EAAME,OAAQ,OACnB,IAAMC,EAAW,EAAE,CAiCnB,OA/BAH,EAAMI,QAAQ,AAACC,IACb,IAAMC,EAAMH,EAAII,UAAU,AAACC,GAAMA,CAAC,CAACP,EAAI,EAAII,CAAC,CAACJ,EAAI,EAEjD,GAAIK,EAAM,GAAI,CACZ,IAAMG,EAAa,IAAKN,CAAG,CAACG,EAAI,CAACI,UAAY,EAAE,IAAOL,EAAEK,UAAY,EAAE,CAAE,AAExEP,CAAAA,CAAG,CAACG,EAAI,CAAGK,OAAOC,OAChBP,EACAF,CAAG,CAACG,EAAI,CACRH,CAAG,CAACG,EAAI,CAACO,MAAQ,CACfA,KAAM,CACJ,GAAGV,CAAG,CAACG,EAAI,CAACO,IAAI,CAChB,GAAGR,EAAEQ,IAAI,AACX,CACF,GAEEJ,EAAMP,QACRC,CAAAA,CAAG,CAACG,EAAI,CAACI,SAAWX,EAAMU,EAAOR,EAAG,CAExC,MACEE,EAAIW,KACFH,OAAOC,OACLP,EACAU,MAAMC,QAAQX,EAAEK,WAAa,CAC3BA,SAAUX,EAAMM,EAAEK,SAAiBT,EACrC,GAIR,GAEOE,CACT,CAEqB"}
@@ -1,3 +1,6 @@
1
1
  import { type NavigateOptions, type To } from 'react-router-dom';
2
+ /** 跳转时继承部分query参数
3
+ * @default {string[]} ['menuId', 'dynamicTitle']
4
+ */
2
5
  declare const useNavigate: (reserved?: string | string[]) => (to: To | -1, options?: NavigateOptions) => void;
3
6
  export default useNavigate;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/use-navgate.ts"],"sourcesContent":["import {\n type NavigateOptions,\n type To,\n useNavigate as useNavigateReactRouter,\n useSearchParams,\n} from 'react-router-dom';\n\nconst useNavigate = (\n /** search保留字 */\n reserved?: string | string[],\n) => {\n const reservedWord = Array.from(new Set(['menuId', 'dynamicTitle', ...(reserved || [])])).filter(\n Boolean,\n );\n const navigate = useNavigateReactRouter();\n const [search] = useSearchParams();\n\n const navigateTo = (to: To | -1, options?: NavigateOptions) => {\n if (to === -1) {\n navigate(-1);\n return;\n }\n /** 提取保留字属性 */\n const nextSearch: Record<string, string> = {};\n const urlParts = (to as string).split('?');\n const searchByToUrl = new URLSearchParams(urlParts[1] || '');\n\n for (const [key, val] of search) {\n if (reservedWord.includes(key)) {\n nextSearch[key] = val;\n }\n }\n for (const [key, val] of searchByToUrl) {\n if (reservedWord.includes(key)) {\n nextSearch[key] = val;\n }\n }\n\n const searchObj = new URLSearchParams(nextSearch);\n const searchString = searchObj.toString();\n const toUrl = searchString ? `${urlParts[0]}?${searchString}` : urlParts[0];\n\n navigate(toUrl, options);\n };\n\n return navigateTo;\n};\n\nexport default useNavigate;\n"],"names":["useNavigate","useNavigateReactRouter","useSearchParams","reserved","reservedWord","Array","from","Set","filter","Boolean","navigate","search","to","options","nextSearch","urlParts","split","searchByToUrl","URLSearchParams","key","val","includes","searchObj","searchString","toString","toUrl"],"mappings":"AAAA,OAGEA,eAAeC,CAAsB,CACrCC,mBAAAA,CAAe,KACV,kBAAmB,AA2C1B,eAzCoB,CAAA,AAElBC,IAEA,IAAMC,EAAeC,MAAMC,KAAK,IAAIC,IAAI,CAAC,SAAU,kBAAoBJ,GAAY,EAAE,CAAE,GAAGK,OACxFC,SAEIC,EAAWT,IACX,CAACU,EAAO,CAAGT,IA8BjB,MA5BmB,CAACU,EAAaC,KAC/B,GAAID,AAAO,KAAPA,EAAW,CACbF,EAAS,IACT,MACF,CAEA,IAAMI,EAAqC,CAAC,EACtCC,EAAW,AAACH,EAAcI,MAAM,KAChCC,EAAgB,IAAIC,gBAAgBH,CAAQ,CAAC,EAAE,EAAI,IAEzD,IAAK,GAAM,CAACI,EAAKC,EAAI,GAAIT,EACnBP,EAAaiB,SAASF,IACxBL,CAAAA,CAAU,CAACK,EAAI,CAAGC,CAAE,EAGxB,IAAK,GAAM,CAACD,EAAKC,EAAI,GAAIH,EACnBb,EAAaiB,SAASF,IACxBL,CAAAA,CAAU,CAACK,EAAI,CAAGC,CAAE,EAIxB,IAAME,EAAY,IAAIJ,gBAAgBJ,GAChCS,EAAeD,EAAUE,WACzBC,EAAQF,EAAe,CAAC,EAAER,CAAQ,CAAC,EAAE,CAAC,CAAC,EAAEQ,EAAa,CAAC,CAAGR,CAAQ,CAAC,EAAE,CAE3EL,EAASe,EAAOZ,EAClB,CAGF,CAAA,CAE2B"}
1
+ {"version":3,"sources":["../src/use-navgate.ts"],"sourcesContent":["import {\n type NavigateOptions,\n type To,\n useNavigate as useNavigateReactRouter,\n useSearchParams,\n} from 'react-router-dom';\n\n/** 跳转时继承部分query参数\n * @default {string[]} ['menuId', 'dynamicTitle'] \n */\nconst useNavigate = (\n /** search保留字 */\n reserved?: string | string[],\n) => {\n const reservedWord = Array.from(new Set(['menuId', 'dynamicTitle', ...(reserved || [])])).filter(\n Boolean,\n );\n const navigate = useNavigateReactRouter();\n const [search] = useSearchParams();\n\n const navigateTo = (to: To | -1, options?: NavigateOptions) => {\n if (to === -1) {\n navigate(-1);\n return;\n }\n /** 提取保留字属性 */\n const nextSearch: Record<string, string> = {};\n const urlParts = (to as string).split('?');\n const searchByToUrl = new URLSearchParams(urlParts[1] || '');\n\n for (const [key, val] of search) {\n if (reservedWord.includes(key)) {\n nextSearch[key] = val;\n }\n }\n for (const [key, val] of searchByToUrl) {\n if (reservedWord.includes(key)) {\n nextSearch[key] = val;\n }\n }\n\n const searchObj = new URLSearchParams(nextSearch);\n const searchString = searchObj.toString();\n const toUrl = searchString ? `${urlParts[0]}?${searchString}` : urlParts[0];\n\n navigate(toUrl, options);\n };\n\n return navigateTo;\n};\n\nexport default useNavigate;\n"],"names":["useNavigate","useNavigateReactRouter","useSearchParams","reserved","reservedWord","Array","from","Set","filter","Boolean","navigate","search","to","options","nextSearch","urlParts","split","searchByToUrl","URLSearchParams","key","val","includes","searchObj","searchString","toString","toUrl"],"mappings":"AAAA,OAGEA,eAAeC,CAAsB,CACrCC,mBAAAA,CAAe,KACV,kBAAmB,AA8C1B,eAzCoB,CAAA,AAElBC,IAEA,IAAMC,EAAeC,MAAMC,KAAK,IAAIC,IAAI,CAAC,SAAU,kBAAoBJ,GAAY,EAAE,CAAE,GAAGK,OACxFC,SAEIC,EAAWT,IACX,CAACU,EAAO,CAAGT,IA8BjB,MA5BmB,CAACU,EAAaC,KAC/B,GAAID,AAAO,KAAPA,EAAW,CACbF,EAAS,IACT,MACF,CAEA,IAAMI,EAAqC,CAAC,EACtCC,EAAW,AAACH,EAAcI,MAAM,KAChCC,EAAgB,IAAIC,gBAAgBH,CAAQ,CAAC,EAAE,EAAI,IAEzD,IAAK,GAAM,CAACI,EAAKC,EAAI,GAAIT,EACnBP,EAAaiB,SAASF,IACxBL,CAAAA,CAAU,CAACK,EAAI,CAAGC,CAAE,EAGxB,IAAK,GAAM,CAACD,EAAKC,EAAI,GAAIH,EACnBb,EAAaiB,SAASF,IACxBL,CAAAA,CAAU,CAACK,EAAI,CAAGC,CAAE,EAIxB,IAAME,EAAY,IAAIJ,gBAAgBJ,GAChCS,EAAeD,EAAUE,WACzBC,EAAQF,EAAe,CAAC,EAAER,CAAQ,CAAC,EAAE,CAAC,CAAC,EAAEQ,EAAa,CAAC,CAAGR,CAAQ,CAAC,EAAE,CAE3EL,EAASe,EAAOZ,EAClB,CAGF,CAAA,CAE2B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneko/react",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "react",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -11,26 +11,21 @@
11
11
  "type": "module",
12
12
  "license": "MIT",
13
13
  "dependencies": {
14
- "@moneko/common": "1.2.0",
15
- "@moneko/css": "1.0.5",
16
14
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.11",
17
- "@types/react": "^18.2.16",
18
- "@types/react-dom": "^18.2.7",
19
15
  "@types/react-router-dom": "^5.3.3",
20
- "react-activation": "0.12.4",
21
16
  "react-refresh": "0.14.0",
22
17
  "react-refresh-typescript": "2.0.9",
23
18
  "react-router": "6.15.0",
24
19
  "react-router-dom": "6.15.0",
25
- "shared-store-object": "^1.0.8",
26
- "eslint-plugin-react-hooks": "^4.6.0",
27
- "eslint-plugin-react": "7.33.2"
20
+ "shared-store-object": "^1.0.8"
28
21
  },
29
22
  "devDependencies": {
30
23
  "@swc/cli": "0.1.62",
31
24
  "@swc/core": "1.3.62",
32
25
  "@types/shelljs": "^0.8.12",
33
26
  "@types/webpack-env": "1.18.1",
27
+ "@types/react": "^18.2.16",
28
+ "@types/react-dom": "^18.2.7",
34
29
  "antd": "5.7.3",
35
30
  "eslint-config-neko": "^1.1.1",
36
31
  "react": "^18.2.0",
package/lib/normalize.css DELETED
@@ -1,208 +0,0 @@
1
- html,
2
- body {
3
- margin: 0;
4
- padding: 0;
5
- line-height: 1.8;
6
- }
7
-
8
- input,
9
- textarea {
10
- caret-color: inherit;
11
- }
12
-
13
- h1 {
14
- margin: 0.67em 0;
15
- font-size: 2em;
16
- }
17
-
18
- hr {
19
- overflow: visible;
20
- block-size: 0;
21
- box-sizing: content-box;
22
- }
23
-
24
- pre {
25
- font-size: 1em;
26
- font-family: monospace;
27
- }
28
-
29
- a {
30
- text-decoration: none;
31
- background-color: transparent;
32
- cursor: pointer;
33
- }
34
-
35
- abbr[title] {
36
- border-block-end: none;
37
- text-decoration: underline;
38
- text-decoration: underline dotted;
39
- }
40
-
41
- b,
42
- strong {
43
- font-weight: bolder;
44
- }
45
-
46
- code,
47
- kbd,
48
- samp {
49
- font-size: 1em;
50
- font-family: monospace;
51
- }
52
-
53
- small {
54
- font-size: 80%;
55
- }
56
-
57
- sub,
58
- sup {
59
- position: relative;
60
- font-size: 75%;
61
- line-height: 0;
62
- vertical-align: baseline;
63
- }
64
-
65
- sub {
66
- inset-block-end: -0.25em;
67
- }
68
-
69
- sup {
70
- inset-block-start: -0.5em;
71
- }
72
-
73
- img {
74
- border-style: none;
75
- }
76
-
77
- img,
78
- button {
79
- outline: 1px solid transparent;
80
- }
81
-
82
- button,
83
- input,
84
- optgroup,
85
- select,
86
- textarea {
87
- margin: 0;
88
- font-size: 100%;
89
- font-family: inherit;
90
- line-height: 1.15;
91
- }
92
-
93
- button,
94
- input {
95
- overflow: visible;
96
- }
97
-
98
- button,
99
- select {
100
- text-transform: none;
101
- }
102
-
103
- button,
104
- [type='button'],
105
- [type='reset'],
106
- [type='submit'] {
107
- appearance: button;
108
- }
109
-
110
- button::-moz-focus-inner,
111
- [type='button']::-moz-focus-inner,
112
- [type='reset']::-moz-focus-inner,
113
- [type='submit']::-moz-focus-inner {
114
- border-style: none;
115
- padding: 0;
116
- }
117
-
118
- button:-moz-focusring,
119
- [type='button']:-moz-focusring,
120
- [type='reset']:-moz-focusring,
121
- [type='submit']:-moz-focusring {
122
- outline: 1px dotted var(--primary-outline);
123
- }
124
-
125
- fieldset {
126
- padding: 0.35em 0.75em 0.625em;
127
- }
128
-
129
- legend {
130
- display: table;
131
- padding: 0;
132
- max-inline-size: 100%;
133
- white-space: normal;
134
- color: inherit;
135
- box-sizing: border-box;
136
- }
137
-
138
- progress {
139
- vertical-align: baseline;
140
- }
141
-
142
- textarea {
143
- overflow: auto;
144
- }
145
-
146
- details {
147
- display: block;
148
- }
149
-
150
- summary {
151
- display: list-item;
152
- }
153
-
154
- template,
155
- [hidden] {
156
- display: none;
157
- }
158
-
159
- [type='checkbox'],
160
- [type='radio'] {
161
- box-sizing: border-box;
162
- padding: 0;
163
- }
164
-
165
- [type='number']::-webkit-inner-spin-button,
166
- [type='number']::-webkit-outer-spin-button {
167
- block-size: auto;
168
- }
169
-
170
- [type='search'] {
171
- appearance: textfield;
172
- outline-offset: -2px;
173
- }
174
-
175
- [type='search']::-webkit-search-decoration {
176
- appearance: none;
177
- }
178
-
179
- ::-webkit-file-upload-button {
180
- appearance: button;
181
- font: inherit;
182
- }
183
-
184
- ::-webkit-scrollbar {
185
- inline-size: 5px;
186
- block-size: 5px;
187
- }
188
-
189
- ::-webkit-scrollbar-track,
190
- ::-webkit-scrollbar-thumb {
191
- background-color: transparent;
192
- }
193
-
194
- :hover::-webkit-scrollbar-thumb {
195
- background-color: var(--primary-selection);
196
- }
197
-
198
- ::-webkit-scrollbar-thumb:hover {
199
- background-color: var(--primary-hover);
200
- }
201
-
202
- ::-webkit-scrollbar-thumb:active {
203
- background-color: var(--primary-active);
204
- }
205
-
206
- ::-webkit-scrollbar-button {
207
- display: none;
208
- }