@ienlab/react-library 0.6.0 → 0.7.0

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
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`react`),t=require(`motion/react`),n=require(`react/jsx-runtime`),r=require(`firebase/firestore`),i=require(`zustand/react`);function a({placeholder:r,src:i,onLoadError:a,...o}){let[s,c]=(0,e.useState)(()=>{if(typeof window>`u`||!i)return!1;let e=new Image;return e.src=i,e.complete&&e.naturalWidth>0}),[l,u]=(0,e.useState)(i);return l!==i&&(u(i),c(!1)),(0,e.useEffect)(()=>{if(!i)return;let e=new Image;return e.src=i,e.onload=()=>c(!0),e.onerror=e=>{a?a(e):console.error(`CrossfadeImage: Failed to load image`,i)},e.complete&&e.naturalWidth>0&&e.onload(new Event(`load`)),()=>{e.onload=null,e.onerror=null}},[i,a]),(0,n.jsx)(t.AnimatePresence,{children:s&&i?(0,n.jsx)(t.motion.img,{src:i,...o,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},style:{...o.style}},`loaded-image`):(0,n.jsx)(t.motion.div,{initial:{opacity:1},transition:{duration:.3},style:{...o.style},children:r??(0,n.jsx)(`div`,{className:`w-full h-full bg-sidebar`})},`placeholder`)})}function o(e){return{...e.data(),id:e.id}}async function s(e,t,n,i){let a=i.filter(e=>!!(e&&!n.has(e.path)));for(let i=0;i<a.length;i+=30){let o=a.slice(i,i+30);(await(0,r.getDocs)((0,r.query)(e,(0,r.where)((0,r.documentId)(),`in`,o.map(e=>e.id))))).forEach(e=>{let r=t(e);n.set(e.ref.path,r)})}}async function c(e,t,n){let i=n.filter(e=>!!(e&&!t.has(e.path)));await Promise.all(i.map(async n=>{let i=e(await(0,r.getDoc)(n));t.set(n.path,i)}))}function l(e,t,n={}){let{cache:i=!0,onError:a}=n;return(0,r.onSnapshot)(e,{includeMetadataChanges:!i},e=>{(i||!e.metadata.fromCache)&&t(e)},a)}Array.prototype.mapNotNull=function(e){return this.flatMap((t,n)=>{let r=e(t,n);return r==null?[]:[r]})};function u(){if(typeof window>`u`)return`pc`;let e=navigator.userAgent,t=navigator.platform,n=/Android/i.test(e),r=/iPhone|iPad|iPod/i.test(e)||t===`MacIntel`&&navigator.maxTouchPoints>1;return n?`android`:r?`ios`:`pc`}function d(t){let r=(0,e.createContext)(null);function a({children:i,...a}){let[o]=(0,e.useState)(()=>t(a));return(0,n.jsx)(r.Provider,{value:o,children:i})}function o(t){let n=(0,e.useContext)(r);if(!n)throw Error(`Provider가 필요합니다.`);return(0,i.useStore)(n,t)}let s=new Map;return{Provider:a,useStore:o,use:new Proxy({},{get:(e,t)=>(s.has(t)||s.set(t,()=>o(e=>e[t])),s.get(t))})}}var f=()=>({updateAt:(0,r.serverTimestamp)(),delete:!0}),p=()=>({updateAt:(0,r.serverTimestamp)(),delete:!1});exports.CrossfadeImage=a,exports.createZustandContext=d,exports.deleteItem=f,exports.fetchItems=s,exports.fetchItemsByOne=c,exports.getPlatformType=u,exports.getSnapshots=l,exports.snapshotToData=o,exports.undeleteItem=p;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`react`),t=require(`motion/react`),n=require(`react/jsx-runtime`),r=require(`firebase/firestore`),i=require(`zustand/react`);function a({placeholder:r,src:i,onLoadError:a,...o}){let[s,c]=(0,e.useState)(()=>{if(typeof window>`u`||!i)return!1;let e=new Image;return e.src=i,e.complete&&e.naturalWidth>0}),[l,u]=(0,e.useState)(i);return l!==i&&(u(i),c(!1)),(0,e.useEffect)(()=>{if(!i)return;let e=new Image;return e.src=i,e.onload=()=>c(!0),e.onerror=e=>{a?a(e):console.error(`CrossfadeImage: Failed to load image`,i)},e.complete&&e.naturalWidth>0&&e.onload(new Event(`load`)),()=>{e.onload=null,e.onerror=null}},[i,a]),(0,n.jsx)(t.AnimatePresence,{children:s&&i?(0,n.jsx)(t.motion.img,{src:i,...o,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},style:{...o.style}},`loaded-image`):(0,n.jsx)(t.motion.div,{initial:{opacity:1},transition:{duration:.3},style:{...o.style},children:r??(0,n.jsx)(`div`,{className:`w-full h-full bg-sidebar`})},`placeholder`)})}var o=[`ko`,`en`];function s(e){return{...e.data(),id:e.id}}async function c(e,t,n,i){let a=i.filter(e=>!!(e&&!n.has(e.path)));for(let i=0;i<a.length;i+=30){let o=a.slice(i,i+30);(await(0,r.getDocs)((0,r.query)(e,(0,r.where)((0,r.documentId)(),`in`,o.map(e=>e.id))))).forEach(e=>{let r=t(e);n.set(e.ref.path,r)})}}async function l(e,t,n){let i=n.filter(e=>!!(e&&!t.has(e.path)));await Promise.all(i.map(async n=>{let i=e(await(0,r.getDoc)(n));t.set(n.path,i)}))}function u(e,t,n={}){let{cache:i=!0,onError:a}=n;return(0,r.onSnapshot)(e,{includeMetadataChanges:!i},e=>{(i||!e.metadata.fromCache)&&t(e)},a)}Array.prototype.mapNotNull=function(e){return this.flatMap((t,n)=>{let r=e(t,n);return r==null?[]:[r]})};function d(){if(typeof window>`u`)return`pc`;let e=navigator.userAgent,t=navigator.platform,n=/Android/i.test(e),r=/iPhone|iPad|iPod/i.test(e)||t===`MacIntel`&&navigator.maxTouchPoints>1;return n?`android`:r?`ios`:`pc`}function f(t){let r=(0,e.createContext)(null);function a({children:i,...a}){let[o]=(0,e.useState)(()=>t(a));return(0,n.jsx)(r.Provider,{value:o,children:i})}function o(t){let n=(0,e.useContext)(r);if(!n)throw Error(`Provider가 필요합니다.`);return(0,i.useStore)(n,t)}let s=new Map;return{Provider:a,useStore:o,use:new Proxy({},{get:(e,t)=>(s.has(t)||s.set(t,()=>o(e=>e[t])),s.get(t))})}}var p=()=>({updateAt:(0,r.serverTimestamp)(),delete:!0}),m=()=>({updateAt:(0,r.serverTimestamp)(),delete:!1});exports.CrossfadeImage=a,exports.SUPPORTED_LOCALES=o,exports.createZustandContext=f,exports.deleteItem=p,exports.fetchItems=c,exports.fetchItemsByOne=l,exports.getPlatformType=d,exports.getSnapshots=u,exports.snapshotToData=s,exports.undeleteItem=m;
@@ -33,14 +33,17 @@ function h({ placeholder: e, src: t, onLoadError: s, ...c }) {
33
33
  }, "placeholder") });
34
34
  }
35
35
  //#endregion
36
+ //#region src/types/localized.ts
37
+ var g = ["ko", "en"];
38
+ //#endregion
36
39
  //#region src/utils/firestore.ts
37
- function g(e) {
40
+ function _(e) {
38
41
  return {
39
42
  ...e.data(),
40
43
  id: e.id
41
44
  };
42
45
  }
43
- async function _(e, t, n, r) {
46
+ async function v(e, t, n, r) {
44
47
  let i = r.filter((e) => !!(e && !n.has(e.path)));
45
48
  for (let r = 0; r < i.length; r += 30) {
46
49
  let a = i.slice(r, r + 30);
@@ -50,14 +53,14 @@ async function _(e, t, n, r) {
50
53
  });
51
54
  }
52
55
  }
53
- async function v(e, t, n) {
56
+ async function y(e, t, n) {
54
57
  let r = n.filter((e) => !!(e && !t.has(e.path)));
55
58
  await Promise.all(r.map(async (n) => {
56
59
  let r = e(await c(n));
57
60
  t.set(n.path, r);
58
61
  }));
59
62
  }
60
- function y(e, t, n = {}) {
63
+ function b(e, t, n = {}) {
61
64
  let { cache: r = !0, onError: i } = n;
62
65
  return u(e, { includeMetadataChanges: !r }, (e) => {
63
66
  (r || !e.metadata.fromCache) && t(e);
@@ -73,14 +76,14 @@ Array.prototype.mapNotNull = function(e) {
73
76
  };
74
77
  //#endregion
75
78
  //#region src/utils/platform.ts
76
- function b() {
79
+ function x() {
77
80
  if (typeof window > "u") return "pc";
78
81
  let e = navigator.userAgent, t = navigator.platform, n = /Android/i.test(e), r = /iPhone|iPad|iPod/i.test(e) || t === "MacIntel" && navigator.maxTouchPoints > 1;
79
82
  return n ? "android" : r ? "ios" : "pc";
80
83
  }
81
84
  //#endregion
82
85
  //#region src/utils/zustand.tsx
83
- function x(n) {
86
+ function S(n) {
84
87
  let i = e(null);
85
88
  function a({ children: e, ...t }) {
86
89
  let [a] = r(() => n(t));
@@ -103,12 +106,12 @@ function x(n) {
103
106
  }
104
107
  //#endregion
105
108
  //#region src/constant/firestore.ts
106
- var S = () => ({
109
+ var C = () => ({
107
110
  updateAt: f(),
108
111
  delete: !0
109
- }), C = () => ({
112
+ }), w = () => ({
110
113
  updateAt: f(),
111
114
  delete: !1
112
115
  });
113
116
  //#endregion
114
- export { h as CrossfadeImage, x as createZustandContext, S as deleteItem, _ as fetchItems, v as fetchItemsByOne, b as getPlatformType, y as getSnapshots, g as snapshotToData, C as undeleteItem };
117
+ export { h as CrossfadeImage, g as SUPPORTED_LOCALES, S as createZustandContext, C as deleteItem, v as fetchItems, y as fetchItemsByOne, x as getPlatformType, b as getSnapshots, _ as snapshotToData, w as undeleteItem };
@@ -1,3 +1,4 @@
1
1
  export * from './firestore';
2
2
  export * from './shadcn';
3
+ export * from './localized';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare const SUPPORTED_LOCALES: readonly ["ko", "en"];
2
+ export type Locale = (typeof SUPPORTED_LOCALES)[number];
3
+ export type Localized<T, TLocale extends string = Locale> = Record<TLocale, T>;
4
+ //# sourceMappingURL=localized.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localized.d.ts","sourceRoot":"","sources":["../../src/types/localized.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,uBAAwB,CAAA;AACtD,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AACvD,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ienlab/react-library",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "My React component library",
5
5
  "main": "./dist/my-library.cjs.js",
6
6
  "module": "./dist/my-library.es.js",