shared-features 0.1.6 → 0.1.7
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/{admin-commonFeatures-BKjytwx5.js → admin-commonFeatures-CFhvjgp9.js} +3 -3
- package/dist/{admin-commonFeatures-BKjytwx5.js.map → admin-commonFeatures-CFhvjgp9.js.map} +1 -1
- package/dist/{admin-commonFeatures-bjszYcI3.cjs → admin-commonFeatures-pnaXeix_.cjs} +3 -3
- package/dist/{admin-commonFeatures-bjszYcI3.cjs.map → admin-commonFeatures-pnaXeix_.cjs.map} +1 -1
- package/dist/{broadcasts-BeTm29_q.cjs → broadcasts-DZsQNd4R.cjs} +2 -2
- package/dist/{broadcasts-BeTm29_q.cjs.map → broadcasts-DZsQNd4R.cjs.map} +1 -1
- package/dist/{broadcasts-CbrWZpcI.js → broadcasts-Dlu51_38.js} +2 -2
- package/dist/{broadcasts-CbrWZpcI.js.map → broadcasts-Dlu51_38.js.map} +1 -1
- package/dist/{commonFeatures-DMYLR629.cjs → commonFeatures-BuY97_K4.cjs} +10 -2
- package/dist/{commonFeatures-DMYLR629.cjs.map → commonFeatures-BuY97_K4.cjs.map} +1 -1
- package/dist/{commonFeatures-78YVrQq1.js → commonFeatures-LzPnbR6z.js} +10 -2
- package/dist/{commonFeatures-78YVrQq1.js.map → commonFeatures-LzPnbR6z.js.map} +1 -1
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.js +1 -1
- package/dist/{featureFlags-DLdibcv_.js → featureFlags-CSudFX4x.js} +3 -2
- package/dist/featureFlags-CSudFX4x.js.map +1 -0
- package/dist/{featureFlags-DOwy_uOj.cjs → featureFlags-CfDmshkF.cjs} +3 -2
- package/dist/featureFlags-CfDmshkF.cjs.map +1 -0
- package/dist/hooks/index.cjs +2 -2
- package/dist/hooks/index.js +2 -2
- package/dist/{index-CQNjI6V7.js → index-D2YWycum.js} +3 -3
- package/dist/{index-CQNjI6V7.js.map → index-D2YWycum.js.map} +1 -1
- package/dist/{index-B5uAGS9G.cjs → index-DxjbpnFC.cjs} +3 -3
- package/dist/{index-B5uAGS9G.cjs.map → index-DxjbpnFC.cjs.map} +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.js +7 -7
- package/dist/services/commonFeatures.d.ts.map +1 -1
- package/dist/services/index.cjs +4 -4
- package/dist/services/index.js +4 -4
- package/dist/types/commonFeatures.d.ts +11 -0
- package/dist/types/commonFeatures.d.ts.map +1 -1
- package/dist/types/index.cjs +1 -1
- package/dist/types/index.js +1 -1
- package/dist/{useCommonFeatures-NobppaW9.cjs → useCommonFeatures-CWqe4EhH.cjs} +2 -2
- package/dist/{useCommonFeatures-NobppaW9.cjs.map → useCommonFeatures-CWqe4EhH.cjs.map} +1 -1
- package/dist/{useCommonFeatures-BVaPDaPy.js → useCommonFeatures-CnmI83Er.js} +2 -2
- package/dist/{useCommonFeatures-BVaPDaPy.js.map → useCommonFeatures-CnmI83Er.js.map} +1 -1
- package/dist/{useFeatureFlags-8nC71ue-.cjs → useFeatureFlags-9_E7gair.cjs} +3 -3
- package/dist/{useFeatureFlags-8nC71ue-.cjs.map → useFeatureFlags-9_E7gair.cjs.map} +1 -1
- package/dist/{useFeatureFlags-DlMeLBH2.js → useFeatureFlags-DhIb0HYi.js} +3 -3
- package/dist/{useFeatureFlags-DlMeLBH2.js.map → useFeatureFlags-DhIb0HYi.js.map} +1 -1
- package/package.json +1 -1
- package/dist/featureFlags-DLdibcv_.js.map +0 -1
- package/dist/featureFlags-DOwy_uOj.cjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const commonFeatures = require("./commonFeatures-
|
|
3
|
+
const commonFeatures = require("./commonFeatures-BuY97_K4.cjs");
|
|
4
4
|
const types_index = require("./types/index.cjs");
|
|
5
|
-
const featureFlags = require("./featureFlags-
|
|
6
|
-
const broadcasts = require("./broadcasts-
|
|
7
|
-
const adminCommonFeatures = require("./admin-commonFeatures-
|
|
8
|
-
const useCommonFeatures = require("./useCommonFeatures-
|
|
9
|
-
const useFeatureFlags = require("./useFeatureFlags-
|
|
10
|
-
const index = require("./index-
|
|
5
|
+
const featureFlags = require("./featureFlags-CfDmshkF.cjs");
|
|
6
|
+
const broadcasts = require("./broadcasts-DZsQNd4R.cjs");
|
|
7
|
+
const adminCommonFeatures = require("./admin-commonFeatures-pnaXeix_.cjs");
|
|
8
|
+
const useCommonFeatures = require("./useCommonFeatures-CWqe4EhH.cjs");
|
|
9
|
+
const useFeatureFlags = require("./useFeatureFlags-9_E7gair.cjs");
|
|
10
|
+
const index = require("./index-DxjbpnFC.cjs");
|
|
11
11
|
const useNotificationEvents = require("./useNotificationEvents-BXeMqdak.cjs");
|
|
12
12
|
exports.checkFeatureAvailability = commonFeatures.checkFeatureAvailability;
|
|
13
13
|
exports.clearAddressInfoCache = commonFeatures.clearAddressInfoCache;
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { c, a, b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, _ } from "./commonFeatures-
|
|
1
|
+
import { c, a, b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, _ } from "./commonFeatures-LzPnbR6z.js";
|
|
2
2
|
import { CATEGORY_DESCRIPTIONS, CATEGORY_NAMES, COLLECTIONS, DEFAULT_BROADCAST_PRIORITY, DEFAULT_CAMPAIGN_PRIORITY, DEFAULT_FREQUENCY_DAYS, DEFAULT_NOTIFICATION_PREFERENCES, EVENT_TYPE_NAMES, MAX_NOTIFICATION_MESSAGE_LENGTH, MAX_NOTIFICATION_TITLE_LENGTH, NOTIFICATION_COLLECTIONS, PLACEMENT_NAMES, PLATFORM_NAMES, PRIORITY_NAMES, TYPE_NAMES, VARIANT_NAMES, getNotificationCollections } from "./types/index.js";
|
|
3
|
-
import { C as C2, a as a2, D as D2, b as b2, c as c2, d as d2, e as e2, F as F2, f as f2, P as P2, g as g2, h as h2, S as S2, i as i2, j as j2, k as k2, s as s2 } from "./featureFlags-
|
|
4
|
-
import { c as c3, a as a3, d as d3, f as f3, b as b3, e as e3, g as g3, i as i3, r as r2, s as s3, t as t2, h as h3, j as j3 } from "./broadcasts-
|
|
5
|
-
import { a as a4, c as c4, b as b4, d as d4, e as e4, f as f4, g as g4, h as h4, i as i4, j as j4, k as k3, l as l2, m as m2, n as n2, o as o2, p as p2, q as q2, r as r3, s as s4, t as t3, u as u2, v as v2, w as w2, x as x2, y as y2, z as z2, A as A2, B as B2, C as C3, D as D3, E as E2, F as F3, G as G2, H as H2, I as I2, J as J2, K as K2, L as L2, M as M2, N as N2, O as O2, P as P3 } from "./admin-commonFeatures-
|
|
6
|
-
import { u as u3, a as a5, b as b5, c as c5, d as d5, e as e5, f as f5, g as g5, h as h5, i as i5, j as j5, k as k4, l as l3, m as m3 } from "./useCommonFeatures-
|
|
7
|
-
import { u as u4, a as a6, b as b6, c as c6, d as d6, e as e6, f as f6, g as g6, h as h6, i as i6, j as j6, k as k5 } from "./useFeatureFlags-
|
|
8
|
-
import { A as A3, a as a7, b as b7, c as c7, d as d7, e as e7, f as f7, B as B3, g as g7, C as C4, h as h7, i as i7, D as D4, F as F4, j as j7, k as k6, G as G3, H as H3, L as L3, M as M3, S as S3, l as l4, m as m4, n as n3, T as T2, o as o3, p as p3, V as V2, q as q3, r as r4 } from "./index-
|
|
3
|
+
import { C as C2, a as a2, D as D2, b as b2, c as c2, d as d2, e as e2, F as F2, f as f2, P as P2, g as g2, h as h2, S as S2, i as i2, j as j2, k as k2, s as s2 } from "./featureFlags-CSudFX4x.js";
|
|
4
|
+
import { c as c3, a as a3, d as d3, f as f3, b as b3, e as e3, g as g3, i as i3, r as r2, s as s3, t as t2, h as h3, j as j3 } from "./broadcasts-Dlu51_38.js";
|
|
5
|
+
import { a as a4, c as c4, b as b4, d as d4, e as e4, f as f4, g as g4, h as h4, i as i4, j as j4, k as k3, l as l2, m as m2, n as n2, o as o2, p as p2, q as q2, r as r3, s as s4, t as t3, u as u2, v as v2, w as w2, x as x2, y as y2, z as z2, A as A2, B as B2, C as C3, D as D3, E as E2, F as F3, G as G2, H as H2, I as I2, J as J2, K as K2, L as L2, M as M2, N as N2, O as O2, P as P3 } from "./admin-commonFeatures-CFhvjgp9.js";
|
|
6
|
+
import { u as u3, a as a5, b as b5, c as c5, d as d5, e as e5, f as f5, g as g5, h as h5, i as i5, j as j5, k as k4, l as l3, m as m3 } from "./useCommonFeatures-CnmI83Er.js";
|
|
7
|
+
import { u as u4, a as a6, b as b6, c as c6, d as d6, e as e6, f as f6, g as g6, h as h6, i as i6, j as j6, k as k5 } from "./useFeatureFlags-DhIb0HYi.js";
|
|
8
|
+
import { A as A3, a as a7, b as b7, c as c7, d as d7, e as e7, f as f7, B as B3, g as g7, C as C4, h as h7, i as i7, D as D4, F as F4, j as j7, k as k6, G as G3, H as H3, L as L3, M as M3, S as S3, l as l4, m as m4, n as n3, T as T2, o as o3, p as p3, V as V2, q as q3, r as r4 } from "./index-D2YWycum.js";
|
|
9
9
|
import { A as A4, a as a8, b as b8, P as P4, R as R2, S as S4, c as c8, d as d8, e as e8, f as f8, g as g8, h as h8, i as i8, j as j8, k as k7, l as l5, m as m5, n as n4, r as r5, u as u5, v as v3 } from "./useNotificationEvents-DAmR7FYF.js";
|
|
10
10
|
export {
|
|
11
11
|
A4 as ACCOUNT_TEMPLATES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonFeatures.d.ts","sourceRoot":"","sources":["../../src/services/commonFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAUL,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AA4BjC,wBAAgB,2BAA2B,IAAI,IAAI,CAUlD;AA0BD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAwBpE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,GAAG,WAAW,CAahG;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AA2BD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAwBxE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,GAAG,WAAW,CAapG;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;
|
|
1
|
+
{"version":3,"file":"commonFeatures.d.ts","sourceRoot":"","sources":["../../src/services/commonFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAUL,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AA4BjC,wBAAgB,2BAA2B,IAAI,IAAI,CAUlD;AA0BD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAwBpE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,GAAG,WAAW,CAahG;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AA2BD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAwBxE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,GAAG,WAAW,CAapG;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAkCD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA4BpE;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAoCD,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAwCnG;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAuBD,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAoC5G;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAwBD,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAwC1F;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAsBD,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAwCpF;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AA2BD,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAwCtG;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAiDD,wBAAsB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAgD1F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAkB9E;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
package/dist/services/index.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const commonFeatures = require("../commonFeatures-
|
|
4
|
-
const broadcasts = require("../broadcasts-
|
|
5
|
-
const adminCommonFeatures = require("../admin-commonFeatures-
|
|
6
|
-
const featureFlags = require("../featureFlags-
|
|
3
|
+
const commonFeatures = require("../commonFeatures-BuY97_K4.cjs");
|
|
4
|
+
const broadcasts = require("../broadcasts-DZsQNd4R.cjs");
|
|
5
|
+
const adminCommonFeatures = require("../admin-commonFeatures-pnaXeix_.cjs");
|
|
6
|
+
const featureFlags = require("../featureFlags-CfDmshkF.cjs");
|
|
7
7
|
exports.checkFeatureAvailability = commonFeatures.checkFeatureAvailability;
|
|
8
8
|
exports.clearAddressInfoCache = commonFeatures.clearAddressInfoCache;
|
|
9
9
|
exports.clearAllCommonFeaturesCache = commonFeatures.clearAllCommonFeaturesCache;
|
package/dist/services/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { c, a, b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, G, H, I, M, O, P, Q, S, T, U, V, W, X, Y, Z, _ } from "../commonFeatures-
|
|
2
|
-
import { c as c2, a as a2, d as d2, f as f2, b as b2, e as e2, g as g2, i as i2, r as r2, s as s2, t as t2, h as h2, j as j2 } from "../broadcasts-
|
|
3
|
-
import { a as a3, c as c3, b as b3, d as d3, e as e3, f as f3, g as g3, h as h3, i as i3, j as j3, k as k2, l as l2, m as m2, n as n2, o as o2, p as p2, q as q2, r as r3, s as s3, t as t3, u as u2, v as v2, w as w2, x as x2, y as y2, z as z2, A as A2, B as B2, C as C2, D as D2, E, F, G as G2, H as H2, I as I2, J, K, L, M as M2, N, O as O2, P as P2 } from "../admin-commonFeatures-
|
|
4
|
-
import { C as C3, F as F2 } from "../featureFlags-
|
|
1
|
+
import { c, a, b, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, G, H, I, M, O, P, Q, S, T, U, V, W, X, Y, Z, _ } from "../commonFeatures-LzPnbR6z.js";
|
|
2
|
+
import { c as c2, a as a2, d as d2, f as f2, b as b2, e as e2, g as g2, i as i2, r as r2, s as s2, t as t2, h as h2, j as j2 } from "../broadcasts-Dlu51_38.js";
|
|
3
|
+
import { a as a3, c as c3, b as b3, d as d3, e as e3, f as f3, g as g3, h as h3, i as i3, j as j3, k as k2, l as l2, m as m2, n as n2, o as o2, p as p2, q as q2, r as r3, s as s3, t as t3, u as u2, v as v2, w as w2, x as x2, y as y2, z as z2, A as A2, B as B2, C as C2, D as D2, E, F, G as G2, H as H2, I as I2, J, K, L, M as M2, N, O as O2, P as P2 } from "../admin-commonFeatures-CFhvjgp9.js";
|
|
4
|
+
import { C as C3, F as F2 } from "../featureFlags-CSudFX4x.js";
|
|
5
5
|
export {
|
|
6
6
|
C3 as COLLECTION_FEATURE_FLAGS,
|
|
7
7
|
F2 as FEATURE_FLAGS_DOC_ID,
|
|
@@ -66,17 +66,28 @@ export interface SocialLink {
|
|
|
66
66
|
showIn: ('footer' | 'contact' | 'about' | 'header')[];
|
|
67
67
|
updatedAt: Timestamp;
|
|
68
68
|
}
|
|
69
|
+
export interface AddressCoordinates {
|
|
70
|
+
lat: number;
|
|
71
|
+
lng: number;
|
|
72
|
+
}
|
|
69
73
|
export interface AddressInfo {
|
|
70
74
|
id: string;
|
|
71
75
|
label?: string;
|
|
72
76
|
streetAddress?: string;
|
|
77
|
+
apartment?: string;
|
|
73
78
|
city?: string;
|
|
74
79
|
state?: string;
|
|
75
80
|
postalCode?: string;
|
|
76
81
|
country?: string;
|
|
82
|
+
landmark?: string;
|
|
77
83
|
fullAddress?: string;
|
|
78
84
|
googleMapsUrl?: string;
|
|
85
|
+
googleMapsEmbedUrl?: string;
|
|
86
|
+
coordinates?: AddressCoordinates;
|
|
87
|
+
showMap: boolean;
|
|
79
88
|
isPublic: boolean;
|
|
89
|
+
workingHours?: string;
|
|
90
|
+
additionalInfo?: string;
|
|
80
91
|
updatedAt: Timestamp;
|
|
81
92
|
}
|
|
82
93
|
export declare const DEFAULT_ADDRESS_INFO: Omit<AddressInfo, 'id' | 'updatedAt'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commonFeatures.d.ts","sourceRoot":"","sources":["../../src/types/commonFeatures.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"commonFeatures.d.ts","sourceRoot":"","sources":["../../src/types/commonFeatures.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const featureFlags = require("../featureFlags-
|
|
3
|
+
const featureFlags = require("../featureFlags-CfDmshkF.cjs");
|
|
4
4
|
const DEFAULT_FREQUENCY_DAYS = 20;
|
|
5
5
|
const DEFAULT_CAMPAIGN_PRIORITY = 50;
|
|
6
6
|
const VARIANT_NAMES = {
|
package/dist/types/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C, a, D, b, c, d, e, F, f, P, g, h, S, i, j, k, s } from "../featureFlags-
|
|
1
|
+
import { C, a, D, b, c, d, e, F, f, P, g, h, S, i, j, k, s } from "../featureFlags-CSudFX4x.js";
|
|
2
2
|
const DEFAULT_FREQUENCY_DAYS = 20;
|
|
3
3
|
const DEFAULT_CAMPAIGN_PRIORITY = 50;
|
|
4
4
|
const VARIANT_NAMES = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const react = require("react");
|
|
3
|
-
const commonFeatures = require("./commonFeatures-
|
|
3
|
+
const commonFeatures = require("./commonFeatures-BuY97_K4.cjs");
|
|
4
4
|
function useCampaigns(options) {
|
|
5
5
|
const {
|
|
6
6
|
placement,
|
|
@@ -567,4 +567,4 @@ exports.useSkills = useSkills;
|
|
|
567
567
|
exports.useSocialLinks = useSocialLinks;
|
|
568
568
|
exports.useTestimonials = useTestimonials;
|
|
569
569
|
exports.useUpdateAdModal = useUpdateAdModal;
|
|
570
|
-
//# sourceMappingURL=useCommonFeatures-
|
|
570
|
+
//# sourceMappingURL=useCommonFeatures-CWqe4EhH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCommonFeatures-NobppaW9.cjs","sources":["../src/hooks/useCampaigns.ts","../src/hooks/useCommonFeatures.ts"],"sourcesContent":["/**\n * useCampaigns Hook\n *\n * React hook for fetching and displaying campaigns in consumer projects.\n *\n * @author Ahsan Mahmood <aoneahsan@gmail.com>\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { fetchActiveCampaigns, clearCampaignsCache } from '../services/campaigns';\nimport {\n trackImpression,\n trackClick,\n trackClose,\n isEligibleForCampaign,\n} from '../services/analytics';\nimport { isInitialized } from '../firebase/config';\nimport type {\n CampaignWithProduct,\n AdPlacement,\n SmallPanelVariant,\n LargePanelVariant,\n} from '../types/campaigns';\n\nexport interface UseCampaignsOptions {\n /** Placement to fetch campaigns for */\n placement: AdPlacement;\n /** Maximum number of campaigns to fetch */\n maxCampaigns?: number;\n /** Whether to auto-fetch on mount (default: true) */\n autoFetch?: boolean;\n /** Default variant for small placements */\n defaultSmallVariant?: SmallPanelVariant;\n /** Default variant for large placements */\n defaultLargeVariant?: LargePanelVariant;\n}\n\nexport interface UseCampaignsResult {\n /** List of eligible campaigns with product data */\n campaigns: CampaignWithProduct[];\n /** Single campaign (first eligible) - convenience accessor */\n campaign: CampaignWithProduct | null;\n /** Whether campaigns are being fetched */\n loading: boolean;\n /** Error message if fetch failed */\n error: string | null;\n /** Refetch campaigns */\n refetch: () => Promise<void>;\n /** Record impression for a campaign */\n recordImpression: (campaign: CampaignWithProduct) => Promise<void>;\n /** Record click for a campaign */\n recordClick: (campaign: CampaignWithProduct) => Promise<void>;\n /** Record close/dismiss for a campaign */\n recordClose: (campaign: CampaignWithProduct) => Promise<void>;\n}\n\n/**\n * Hook to fetch and manage campaigns for a specific placement\n *\n * @example\n * ```tsx\n * const { campaigns, loading, recordImpression, recordClick } = useCampaigns({\n * placement: 'footer_slider',\n * maxCampaigns: 5,\n * });\n *\n * if (loading) return <Spinner />;\n *\n * return (\n * <AdSlider\n * campaigns={campaigns}\n * onImpression={recordImpression}\n * onClick={recordClick}\n * />\n * );\n * ```\n */\nexport function useCampaigns(options: UseCampaignsOptions): UseCampaignsResult {\n const {\n placement,\n maxCampaigns = 5,\n autoFetch = true,\n defaultSmallVariant = 'small_panel_2',\n defaultLargeVariant: _defaultLargeVariant = 'large_slider_1',\n } = options;\n // Note: _defaultLargeVariant reserved for large variant components\n\n const [campaigns, setCampaigns] = useState<CampaignWithProduct[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n\n const fetchCampaigns = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const allCampaigns = await fetchActiveCampaigns(placement);\n\n // Filter by frequency capping\n const eligibleCampaigns: CampaignWithProduct[] = [];\n\n for (const campaign of allCampaigns) {\n const eligible = await isEligibleForCampaign(\n campaign.id,\n campaign.frequencyDays\n );\n if (eligible) {\n eligibleCampaigns.push(campaign);\n if (eligibleCampaigns.length >= maxCampaigns) break;\n }\n }\n\n setCampaigns(eligibleCampaigns);\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Failed to fetch campaigns';\n setError(message);\n console.error('[shared-features] Error fetching campaigns:', err);\n } finally {\n setLoading(false);\n }\n }, [placement, maxCampaigns]);\n\n // Auto-fetch on mount\n useEffect(() => {\n if (autoFetch) {\n fetchCampaigns();\n }\n }, [autoFetch, fetchCampaigns]);\n\n // Record impression\n const handleRecordImpression = useCallback(\n async (campaign: CampaignWithProduct) => {\n const variant = campaign.variant.startsWith('small_')\n ? campaign.variant\n : campaign.variant.startsWith('large_')\n ? campaign.variant\n : defaultSmallVariant;\n\n await trackImpression(\n campaign.id,\n campaign.productId,\n placement,\n variant,\n campaign.frequencyDays\n );\n },\n [placement, defaultSmallVariant]\n );\n\n // Record click\n const handleRecordClick = useCallback(\n async (campaign: CampaignWithProduct) => {\n const variant = campaign.variant;\n await trackClick(campaign.id, campaign.productId, placement, variant);\n },\n [placement]\n );\n\n // Record close\n const handleRecordClose = useCallback(\n async (campaign: CampaignWithProduct) => {\n const variant = campaign.variant;\n await trackClose(campaign.id, campaign.productId, placement, variant);\n },\n [placement]\n );\n\n // Refetch with cache clear\n const refetch = useCallback(async () => {\n clearCampaignsCache();\n await fetchCampaigns();\n }, [fetchCampaigns]);\n\n return {\n campaigns,\n campaign: campaigns[0] || null,\n loading,\n error,\n refetch,\n recordImpression: handleRecordImpression,\n recordClick: handleRecordClick,\n recordClose: handleRecordClose,\n };\n}\n\n/**\n * Hook to fetch a single campaign for a placement\n * Convenience wrapper around useCampaigns\n */\nexport function useCampaign(options: Omit<UseCampaignsOptions, 'maxCampaigns'>) {\n return useCampaigns({ ...options, maxCampaigns: 1 });\n}\n\n// Storage keys for modal hooks\nconst STORAGE_KEYS = {\n oneTimeShown: 'shared_features_onetime_ad_shown',\n appVersion: 'shared_features_app_version',\n} as const;\n\n/**\n * Hook to manage one-time ad modal visibility\n * Shows modal on first visit, then remembers user has seen it\n *\n * @example\n * ```tsx\n * const { shouldShow, markAsShown } = useOneTimeAdModal();\n *\n * if (shouldShow) {\n * return <AdModal onClose={markAsShown} />;\n * }\n * ```\n */\nexport function useOneTimeAdModal() {\n const [hasShown, setHasShown] = useState(false);\n const [shouldShow, setShouldShow] = useState(false);\n\n useEffect(() => {\n // Check if modal has been shown before\n const hasSeenModal = localStorage.getItem(STORAGE_KEYS.oneTimeShown);\n if (!hasSeenModal) {\n setShouldShow(true);\n }\n }, []);\n\n const markAsShown = useCallback(() => {\n localStorage.setItem(STORAGE_KEYS.oneTimeShown, 'true');\n setHasShown(true);\n setShouldShow(false);\n }, []);\n\n return {\n /** Whether the modal should be displayed */\n shouldShow: shouldShow && !hasShown,\n /** Mark the modal as shown (call when user dismisses) */\n markAsShown,\n };\n}\n\n/**\n * Hook to manage update ad modal visibility\n * Shows modal when app version changes\n *\n * @param currentVersion - Current app version (defaults to VITE_APP_VERSION env var or '1.0.0')\n *\n * @example\n * ```tsx\n * const { shouldShow, currentVersion, markAsShown } = useUpdateAdModal();\n *\n * if (shouldShow) {\n * return <AdUpdateModal version={currentVersion} onClose={markAsShown} />;\n * }\n * ```\n */\nexport function useUpdateAdModal(currentVersion?: string) {\n const version = currentVersion || import.meta.env.VITE_APP_VERSION || '1.0.0';\n const [shouldShow, setShouldShow] = useState(false);\n const [previousVersion, setPreviousVersion] = useState<string | null>(null);\n\n useEffect(() => {\n const storedVersion = localStorage.getItem(STORAGE_KEYS.appVersion);\n\n if (!storedVersion) {\n // First time user - store version but don't show update modal\n localStorage.setItem(STORAGE_KEYS.appVersion, version);\n } else if (storedVersion !== version) {\n // Version changed - show update modal\n setShouldShow(true);\n setPreviousVersion(storedVersion);\n }\n }, [version]);\n\n const markAsShown = useCallback(() => {\n localStorage.setItem(STORAGE_KEYS.appVersion, version);\n setShouldShow(false);\n }, [version]);\n\n return {\n /** Whether the modal should be displayed */\n shouldShow,\n /** Previous app version (before update) */\n previousVersion,\n /** Current app version */\n currentVersion: version,\n /** Mark the modal as shown (call when user dismisses) */\n markAsShown,\n };\n}\n","/**\n * Common Features Hooks\n *\n * React hooks for fetching and using common features in consumer projects.\n *\n * @author Ahsan Mahmood <aoneahsan@gmail.com>\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { isInitialized } from '../firebase/config';\nimport {\n fetchContactInfo,\n subscribeToContactInfo,\n clearContactInfoCache,\n fetchDeveloperInfo,\n subscribeToDeveloperInfo,\n clearDeveloperInfoCache,\n fetchAddressInfo,\n clearAddressInfoCache,\n fetchSocialLinks,\n clearSocialLinksCache,\n fetchPaymentOptions,\n clearPaymentOptionsCache,\n fetchServices,\n clearServicesCache,\n fetchSkills,\n clearSkillsCache,\n fetchTestimonials,\n clearTestimonialsCache,\n fetchProjects,\n fetchProjectBySlug,\n clearProjectsCache,\n} from '../services/commonFeatures';\nimport type {\n ContactInfo,\n DeveloperInfo,\n AddressInfo,\n SocialLink,\n PaymentOption,\n Service,\n Skill,\n Testimonial,\n Project,\n UseCommonFeatureOptions,\n UseCommonFeatureResult,\n UseCommonFeaturesListResult,\n FetchSocialLinksOptions,\n FetchServicesOptions,\n FetchSkillsOptions,\n FetchTestimonialsOptions,\n FetchPaymentOptionsOptions,\n FetchProjectsOptions,\n} from '../types/commonFeatures';\n\n// ============================================================================\n// CONTACT INFO\n// ============================================================================\n\n/**\n * Hook to fetch contact information\n *\n * @example\n * ```tsx\n * const { data: contact, loading } = useContactInfo();\n *\n * if (loading) return <Spinner />;\n * if (!contact) return null;\n *\n * return <a href={`mailto:${contact.email}`}>{contact.email}</a>;\n * ```\n */\nexport function useContactInfo(\n options: UseCommonFeatureOptions = {}\n): UseCommonFeatureResult<ContactInfo> {\n const { autoFetch = true, realtime = false } = options;\n\n const [data, setData] = useState<ContactInfo | null>(null);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchContactInfo();\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch contact info');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, []);\n\n const refetch = useCallback(async () => {\n clearContactInfoCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n\n if (realtime && isInitialized()) {\n const unsubscribe = subscribeToContactInfo((result) => {\n if (mountedRef.current) {\n setData(result);\n setLoading(false);\n }\n });\n return () => {\n mountedRef.current = false;\n unsubscribe();\n };\n }\n\n if (autoFetch) fetch();\n\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, realtime, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// DEVELOPER INFO\n// ============================================================================\n\n/**\n * Hook to fetch developer information\n *\n * @example\n * ```tsx\n * const { data: developer, loading } = useDeveloperInfo();\n *\n * if (loading) return <Spinner />;\n * if (!developer) return null;\n *\n * return (\n * <div>\n * <h1>{developer.name}</h1>\n * <p>{developer.title}</p>\n * </div>\n * );\n * ```\n */\nexport function useDeveloperInfo(\n options: UseCommonFeatureOptions = {}\n): UseCommonFeatureResult<DeveloperInfo> {\n const { autoFetch = true, realtime = false } = options;\n\n const [data, setData] = useState<DeveloperInfo | null>(null);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchDeveloperInfo();\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch developer info');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, []);\n\n const refetch = useCallback(async () => {\n clearDeveloperInfoCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n\n if (realtime && isInitialized()) {\n const unsubscribe = subscribeToDeveloperInfo((result) => {\n if (mountedRef.current) {\n setData(result);\n setLoading(false);\n }\n });\n return () => {\n mountedRef.current = false;\n unsubscribe();\n };\n }\n\n if (autoFetch) fetch();\n\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, realtime, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// ADDRESS INFO\n// ============================================================================\n\n/**\n * Hook to fetch address information\n */\nexport function useAddressInfo(\n options: UseCommonFeatureOptions = {}\n): UseCommonFeatureResult<AddressInfo> {\n const { autoFetch = true } = options;\n\n const [data, setData] = useState<AddressInfo | null>(null);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchAddressInfo();\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch address info');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, []);\n\n const refetch = useCallback(async () => {\n clearAddressInfoCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// SOCIAL LINKS\n// ============================================================================\n\n/**\n * Hook to fetch social links\n *\n * @example\n * ```tsx\n * const { data: links, loading } = useSocialLinks({ showIn: ['footer'] });\n *\n * if (loading) return <Spinner />;\n *\n * return (\n * <div>\n * {links.map(link => (\n * <a key={link.id} href={link.url}>{link.platform}</a>\n * ))}\n * </div>\n * );\n * ```\n */\nexport function useSocialLinks(\n options: FetchSocialLinksOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<SocialLink> {\n const { autoFetch = true, showIn, activeOnly } = options;\n\n const [data, setData] = useState<SocialLink[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchSocialLinks({ showIn, activeOnly });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch social links');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [showIn, activeOnly]);\n\n const refetch = useCallback(async () => {\n clearSocialLinksCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// PAYMENT OPTIONS\n// ============================================================================\n\n/**\n * Hook to fetch payment options\n */\nexport function usePaymentOptions(\n options: FetchPaymentOptionsOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<PaymentOption> {\n const { autoFetch = true, activeOnly, type } = options;\n\n const [data, setData] = useState<PaymentOption[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchPaymentOptions({ activeOnly, type });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch payment options');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [activeOnly, type]);\n\n const refetch = useCallback(async () => {\n clearPaymentOptionsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// SERVICES\n// ============================================================================\n\n/**\n * Hook to fetch services\n */\nexport function useServices(\n options: FetchServicesOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<Service> {\n const { autoFetch = true, category, activeOnly, featuredOnly } = options;\n\n const [data, setData] = useState<Service[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchServices({ category, activeOnly, featuredOnly });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch services');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [category, activeOnly, featuredOnly]);\n\n const refetch = useCallback(async () => {\n clearServicesCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// SKILLS\n// ============================================================================\n\n/**\n * Hook to fetch skills\n */\nexport function useSkills(\n options: FetchSkillsOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<Skill> {\n const { autoFetch = true, category, activeOnly, featuredOnly } = options;\n\n const [data, setData] = useState<Skill[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchSkills({ category, activeOnly, featuredOnly });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch skills');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [category, activeOnly, featuredOnly]);\n\n const refetch = useCallback(async () => {\n clearSkillsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// TESTIMONIALS\n// ============================================================================\n\n/**\n * Hook to fetch testimonials\n */\nexport function useTestimonials(\n options: FetchTestimonialsOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<Testimonial> {\n const { autoFetch = true, activeOnly, featuredOnly, limit } = options;\n\n const [data, setData] = useState<Testimonial[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchTestimonials({ activeOnly, featuredOnly, limit });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch testimonials');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [activeOnly, featuredOnly, limit]);\n\n const refetch = useCallback(async () => {\n clearTestimonialsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// PROJECTS\n// ============================================================================\n\n/**\n * Hook to fetch projects\n *\n * @example\n * ```tsx\n * const { data: projects, loading } = useProjects({ featuredOnly: true });\n *\n * if (loading) return <Spinner />;\n *\n * return (\n * <div>\n * {projects.map(project => (\n * <div key={project.id}>\n * <h2>{project.title}</h2>\n * <p>{project.description}</p>\n * </div>\n * ))}\n * </div>\n * );\n * ```\n */\nexport function useProjects(\n options: FetchProjectsOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<Project> {\n const { autoFetch = true, category, status, activeOnly, featuredOnly, limit } = options;\n\n const [data, setData] = useState<Project[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchProjects({ category, status, activeOnly, featuredOnly, limit });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch projects');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [category, status, activeOnly, featuredOnly, limit]);\n\n const refetch = useCallback(async () => {\n clearProjectsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n/**\n * Hook to fetch a single project by slug\n */\nexport function useProject(\n slug: string,\n options: { autoFetch?: boolean } = {}\n): UseCommonFeatureResult<Project> {\n const { autoFetch = true } = options;\n\n const [data, setData] = useState<Project | null>(null);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n if (!slug) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchProjectBySlug(slug);\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch project');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [slug]);\n\n const refetch = useCallback(async () => {\n clearProjectsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n"],"names":["useState","useCallback","isInitialized","fetchActiveCampaigns","isEligibleForCampaign","useEffect","trackImpression","trackClick","trackClose","clearCampaignsCache","useRef","fetchContactInfo","clearContactInfoCache","subscribeToContactInfo","fetchDeveloperInfo","clearDeveloperInfoCache","subscribeToDeveloperInfo","fetchAddressInfo","clearAddressInfoCache","fetchSocialLinks","clearSocialLinksCache","fetchPaymentOptions","clearPaymentOptionsCache","fetchServices","clearServicesCache","fetchSkills","clearSkillsCache","fetchTestimonials","clearTestimonialsCache","fetchProjects","clearProjectsCache","fetchProjectBySlug"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useCommonFeatures-CWqe4EhH.cjs","sources":["../src/hooks/useCampaigns.ts","../src/hooks/useCommonFeatures.ts"],"sourcesContent":["/**\n * useCampaigns Hook\n *\n * React hook for fetching and displaying campaigns in consumer projects.\n *\n * @author Ahsan Mahmood <aoneahsan@gmail.com>\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { fetchActiveCampaigns, clearCampaignsCache } from '../services/campaigns';\nimport {\n trackImpression,\n trackClick,\n trackClose,\n isEligibleForCampaign,\n} from '../services/analytics';\nimport { isInitialized } from '../firebase/config';\nimport type {\n CampaignWithProduct,\n AdPlacement,\n SmallPanelVariant,\n LargePanelVariant,\n} from '../types/campaigns';\n\nexport interface UseCampaignsOptions {\n /** Placement to fetch campaigns for */\n placement: AdPlacement;\n /** Maximum number of campaigns to fetch */\n maxCampaigns?: number;\n /** Whether to auto-fetch on mount (default: true) */\n autoFetch?: boolean;\n /** Default variant for small placements */\n defaultSmallVariant?: SmallPanelVariant;\n /** Default variant for large placements */\n defaultLargeVariant?: LargePanelVariant;\n}\n\nexport interface UseCampaignsResult {\n /** List of eligible campaigns with product data */\n campaigns: CampaignWithProduct[];\n /** Single campaign (first eligible) - convenience accessor */\n campaign: CampaignWithProduct | null;\n /** Whether campaigns are being fetched */\n loading: boolean;\n /** Error message if fetch failed */\n error: string | null;\n /** Refetch campaigns */\n refetch: () => Promise<void>;\n /** Record impression for a campaign */\n recordImpression: (campaign: CampaignWithProduct) => Promise<void>;\n /** Record click for a campaign */\n recordClick: (campaign: CampaignWithProduct) => Promise<void>;\n /** Record close/dismiss for a campaign */\n recordClose: (campaign: CampaignWithProduct) => Promise<void>;\n}\n\n/**\n * Hook to fetch and manage campaigns for a specific placement\n *\n * @example\n * ```tsx\n * const { campaigns, loading, recordImpression, recordClick } = useCampaigns({\n * placement: 'footer_slider',\n * maxCampaigns: 5,\n * });\n *\n * if (loading) return <Spinner />;\n *\n * return (\n * <AdSlider\n * campaigns={campaigns}\n * onImpression={recordImpression}\n * onClick={recordClick}\n * />\n * );\n * ```\n */\nexport function useCampaigns(options: UseCampaignsOptions): UseCampaignsResult {\n const {\n placement,\n maxCampaigns = 5,\n autoFetch = true,\n defaultSmallVariant = 'small_panel_2',\n defaultLargeVariant: _defaultLargeVariant = 'large_slider_1',\n } = options;\n // Note: _defaultLargeVariant reserved for large variant components\n\n const [campaigns, setCampaigns] = useState<CampaignWithProduct[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n\n const fetchCampaigns = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const allCampaigns = await fetchActiveCampaigns(placement);\n\n // Filter by frequency capping\n const eligibleCampaigns: CampaignWithProduct[] = [];\n\n for (const campaign of allCampaigns) {\n const eligible = await isEligibleForCampaign(\n campaign.id,\n campaign.frequencyDays\n );\n if (eligible) {\n eligibleCampaigns.push(campaign);\n if (eligibleCampaigns.length >= maxCampaigns) break;\n }\n }\n\n setCampaigns(eligibleCampaigns);\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Failed to fetch campaigns';\n setError(message);\n console.error('[shared-features] Error fetching campaigns:', err);\n } finally {\n setLoading(false);\n }\n }, [placement, maxCampaigns]);\n\n // Auto-fetch on mount\n useEffect(() => {\n if (autoFetch) {\n fetchCampaigns();\n }\n }, [autoFetch, fetchCampaigns]);\n\n // Record impression\n const handleRecordImpression = useCallback(\n async (campaign: CampaignWithProduct) => {\n const variant = campaign.variant.startsWith('small_')\n ? campaign.variant\n : campaign.variant.startsWith('large_')\n ? campaign.variant\n : defaultSmallVariant;\n\n await trackImpression(\n campaign.id,\n campaign.productId,\n placement,\n variant,\n campaign.frequencyDays\n );\n },\n [placement, defaultSmallVariant]\n );\n\n // Record click\n const handleRecordClick = useCallback(\n async (campaign: CampaignWithProduct) => {\n const variant = campaign.variant;\n await trackClick(campaign.id, campaign.productId, placement, variant);\n },\n [placement]\n );\n\n // Record close\n const handleRecordClose = useCallback(\n async (campaign: CampaignWithProduct) => {\n const variant = campaign.variant;\n await trackClose(campaign.id, campaign.productId, placement, variant);\n },\n [placement]\n );\n\n // Refetch with cache clear\n const refetch = useCallback(async () => {\n clearCampaignsCache();\n await fetchCampaigns();\n }, [fetchCampaigns]);\n\n return {\n campaigns,\n campaign: campaigns[0] || null,\n loading,\n error,\n refetch,\n recordImpression: handleRecordImpression,\n recordClick: handleRecordClick,\n recordClose: handleRecordClose,\n };\n}\n\n/**\n * Hook to fetch a single campaign for a placement\n * Convenience wrapper around useCampaigns\n */\nexport function useCampaign(options: Omit<UseCampaignsOptions, 'maxCampaigns'>) {\n return useCampaigns({ ...options, maxCampaigns: 1 });\n}\n\n// Storage keys for modal hooks\nconst STORAGE_KEYS = {\n oneTimeShown: 'shared_features_onetime_ad_shown',\n appVersion: 'shared_features_app_version',\n} as const;\n\n/**\n * Hook to manage one-time ad modal visibility\n * Shows modal on first visit, then remembers user has seen it\n *\n * @example\n * ```tsx\n * const { shouldShow, markAsShown } = useOneTimeAdModal();\n *\n * if (shouldShow) {\n * return <AdModal onClose={markAsShown} />;\n * }\n * ```\n */\nexport function useOneTimeAdModal() {\n const [hasShown, setHasShown] = useState(false);\n const [shouldShow, setShouldShow] = useState(false);\n\n useEffect(() => {\n // Check if modal has been shown before\n const hasSeenModal = localStorage.getItem(STORAGE_KEYS.oneTimeShown);\n if (!hasSeenModal) {\n setShouldShow(true);\n }\n }, []);\n\n const markAsShown = useCallback(() => {\n localStorage.setItem(STORAGE_KEYS.oneTimeShown, 'true');\n setHasShown(true);\n setShouldShow(false);\n }, []);\n\n return {\n /** Whether the modal should be displayed */\n shouldShow: shouldShow && !hasShown,\n /** Mark the modal as shown (call when user dismisses) */\n markAsShown,\n };\n}\n\n/**\n * Hook to manage update ad modal visibility\n * Shows modal when app version changes\n *\n * @param currentVersion - Current app version (defaults to VITE_APP_VERSION env var or '1.0.0')\n *\n * @example\n * ```tsx\n * const { shouldShow, currentVersion, markAsShown } = useUpdateAdModal();\n *\n * if (shouldShow) {\n * return <AdUpdateModal version={currentVersion} onClose={markAsShown} />;\n * }\n * ```\n */\nexport function useUpdateAdModal(currentVersion?: string) {\n const version = currentVersion || import.meta.env.VITE_APP_VERSION || '1.0.0';\n const [shouldShow, setShouldShow] = useState(false);\n const [previousVersion, setPreviousVersion] = useState<string | null>(null);\n\n useEffect(() => {\n const storedVersion = localStorage.getItem(STORAGE_KEYS.appVersion);\n\n if (!storedVersion) {\n // First time user - store version but don't show update modal\n localStorage.setItem(STORAGE_KEYS.appVersion, version);\n } else if (storedVersion !== version) {\n // Version changed - show update modal\n setShouldShow(true);\n setPreviousVersion(storedVersion);\n }\n }, [version]);\n\n const markAsShown = useCallback(() => {\n localStorage.setItem(STORAGE_KEYS.appVersion, version);\n setShouldShow(false);\n }, [version]);\n\n return {\n /** Whether the modal should be displayed */\n shouldShow,\n /** Previous app version (before update) */\n previousVersion,\n /** Current app version */\n currentVersion: version,\n /** Mark the modal as shown (call when user dismisses) */\n markAsShown,\n };\n}\n","/**\n * Common Features Hooks\n *\n * React hooks for fetching and using common features in consumer projects.\n *\n * @author Ahsan Mahmood <aoneahsan@gmail.com>\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport { isInitialized } from '../firebase/config';\nimport {\n fetchContactInfo,\n subscribeToContactInfo,\n clearContactInfoCache,\n fetchDeveloperInfo,\n subscribeToDeveloperInfo,\n clearDeveloperInfoCache,\n fetchAddressInfo,\n clearAddressInfoCache,\n fetchSocialLinks,\n clearSocialLinksCache,\n fetchPaymentOptions,\n clearPaymentOptionsCache,\n fetchServices,\n clearServicesCache,\n fetchSkills,\n clearSkillsCache,\n fetchTestimonials,\n clearTestimonialsCache,\n fetchProjects,\n fetchProjectBySlug,\n clearProjectsCache,\n} from '../services/commonFeatures';\nimport type {\n ContactInfo,\n DeveloperInfo,\n AddressInfo,\n SocialLink,\n PaymentOption,\n Service,\n Skill,\n Testimonial,\n Project,\n UseCommonFeatureOptions,\n UseCommonFeatureResult,\n UseCommonFeaturesListResult,\n FetchSocialLinksOptions,\n FetchServicesOptions,\n FetchSkillsOptions,\n FetchTestimonialsOptions,\n FetchPaymentOptionsOptions,\n FetchProjectsOptions,\n} from '../types/commonFeatures';\n\n// ============================================================================\n// CONTACT INFO\n// ============================================================================\n\n/**\n * Hook to fetch contact information\n *\n * @example\n * ```tsx\n * const { data: contact, loading } = useContactInfo();\n *\n * if (loading) return <Spinner />;\n * if (!contact) return null;\n *\n * return <a href={`mailto:${contact.email}`}>{contact.email}</a>;\n * ```\n */\nexport function useContactInfo(\n options: UseCommonFeatureOptions = {}\n): UseCommonFeatureResult<ContactInfo> {\n const { autoFetch = true, realtime = false } = options;\n\n const [data, setData] = useState<ContactInfo | null>(null);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchContactInfo();\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch contact info');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, []);\n\n const refetch = useCallback(async () => {\n clearContactInfoCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n\n if (realtime && isInitialized()) {\n const unsubscribe = subscribeToContactInfo((result) => {\n if (mountedRef.current) {\n setData(result);\n setLoading(false);\n }\n });\n return () => {\n mountedRef.current = false;\n unsubscribe();\n };\n }\n\n if (autoFetch) fetch();\n\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, realtime, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// DEVELOPER INFO\n// ============================================================================\n\n/**\n * Hook to fetch developer information\n *\n * @example\n * ```tsx\n * const { data: developer, loading } = useDeveloperInfo();\n *\n * if (loading) return <Spinner />;\n * if (!developer) return null;\n *\n * return (\n * <div>\n * <h1>{developer.name}</h1>\n * <p>{developer.title}</p>\n * </div>\n * );\n * ```\n */\nexport function useDeveloperInfo(\n options: UseCommonFeatureOptions = {}\n): UseCommonFeatureResult<DeveloperInfo> {\n const { autoFetch = true, realtime = false } = options;\n\n const [data, setData] = useState<DeveloperInfo | null>(null);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchDeveloperInfo();\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch developer info');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, []);\n\n const refetch = useCallback(async () => {\n clearDeveloperInfoCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n\n if (realtime && isInitialized()) {\n const unsubscribe = subscribeToDeveloperInfo((result) => {\n if (mountedRef.current) {\n setData(result);\n setLoading(false);\n }\n });\n return () => {\n mountedRef.current = false;\n unsubscribe();\n };\n }\n\n if (autoFetch) fetch();\n\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, realtime, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// ADDRESS INFO\n// ============================================================================\n\n/**\n * Hook to fetch address information\n */\nexport function useAddressInfo(\n options: UseCommonFeatureOptions = {}\n): UseCommonFeatureResult<AddressInfo> {\n const { autoFetch = true } = options;\n\n const [data, setData] = useState<AddressInfo | null>(null);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchAddressInfo();\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch address info');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, []);\n\n const refetch = useCallback(async () => {\n clearAddressInfoCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// SOCIAL LINKS\n// ============================================================================\n\n/**\n * Hook to fetch social links\n *\n * @example\n * ```tsx\n * const { data: links, loading } = useSocialLinks({ showIn: ['footer'] });\n *\n * if (loading) return <Spinner />;\n *\n * return (\n * <div>\n * {links.map(link => (\n * <a key={link.id} href={link.url}>{link.platform}</a>\n * ))}\n * </div>\n * );\n * ```\n */\nexport function useSocialLinks(\n options: FetchSocialLinksOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<SocialLink> {\n const { autoFetch = true, showIn, activeOnly } = options;\n\n const [data, setData] = useState<SocialLink[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchSocialLinks({ showIn, activeOnly });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch social links');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [showIn, activeOnly]);\n\n const refetch = useCallback(async () => {\n clearSocialLinksCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// PAYMENT OPTIONS\n// ============================================================================\n\n/**\n * Hook to fetch payment options\n */\nexport function usePaymentOptions(\n options: FetchPaymentOptionsOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<PaymentOption> {\n const { autoFetch = true, activeOnly, type } = options;\n\n const [data, setData] = useState<PaymentOption[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchPaymentOptions({ activeOnly, type });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch payment options');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [activeOnly, type]);\n\n const refetch = useCallback(async () => {\n clearPaymentOptionsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// SERVICES\n// ============================================================================\n\n/**\n * Hook to fetch services\n */\nexport function useServices(\n options: FetchServicesOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<Service> {\n const { autoFetch = true, category, activeOnly, featuredOnly } = options;\n\n const [data, setData] = useState<Service[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchServices({ category, activeOnly, featuredOnly });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch services');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [category, activeOnly, featuredOnly]);\n\n const refetch = useCallback(async () => {\n clearServicesCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// SKILLS\n// ============================================================================\n\n/**\n * Hook to fetch skills\n */\nexport function useSkills(\n options: FetchSkillsOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<Skill> {\n const { autoFetch = true, category, activeOnly, featuredOnly } = options;\n\n const [data, setData] = useState<Skill[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchSkills({ category, activeOnly, featuredOnly });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch skills');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [category, activeOnly, featuredOnly]);\n\n const refetch = useCallback(async () => {\n clearSkillsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// TESTIMONIALS\n// ============================================================================\n\n/**\n * Hook to fetch testimonials\n */\nexport function useTestimonials(\n options: FetchTestimonialsOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<Testimonial> {\n const { autoFetch = true, activeOnly, featuredOnly, limit } = options;\n\n const [data, setData] = useState<Testimonial[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchTestimonials({ activeOnly, featuredOnly, limit });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch testimonials');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [activeOnly, featuredOnly, limit]);\n\n const refetch = useCallback(async () => {\n clearTestimonialsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n// ============================================================================\n// PROJECTS\n// ============================================================================\n\n/**\n * Hook to fetch projects\n *\n * @example\n * ```tsx\n * const { data: projects, loading } = useProjects({ featuredOnly: true });\n *\n * if (loading) return <Spinner />;\n *\n * return (\n * <div>\n * {projects.map(project => (\n * <div key={project.id}>\n * <h2>{project.title}</h2>\n * <p>{project.description}</p>\n * </div>\n * ))}\n * </div>\n * );\n * ```\n */\nexport function useProjects(\n options: FetchProjectsOptions & UseCommonFeatureOptions = {}\n): UseCommonFeaturesListResult<Project> {\n const { autoFetch = true, category, status, activeOnly, featuredOnly, limit } = options;\n\n const [data, setData] = useState<Project[]>([]);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchProjects({ category, status, activeOnly, featuredOnly, limit });\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch projects');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [category, status, activeOnly, featuredOnly, limit]);\n\n const refetch = useCallback(async () => {\n clearProjectsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n\n/**\n * Hook to fetch a single project by slug\n */\nexport function useProject(\n slug: string,\n options: { autoFetch?: boolean } = {}\n): UseCommonFeatureResult<Project> {\n const { autoFetch = true } = options;\n\n const [data, setData] = useState<Project | null>(null);\n const [loading, setLoading] = useState(autoFetch);\n const [error, setError] = useState<string | null>(null);\n const mountedRef = useRef(true);\n\n const fetch = useCallback(async () => {\n if (!isInitialized()) {\n setError('shared-features not initialized');\n setLoading(false);\n return;\n }\n\n if (!slug) {\n setLoading(false);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n const result = await fetchProjectBySlug(slug);\n if (mountedRef.current) setData(result);\n } catch (err) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err.message : 'Failed to fetch project');\n }\n } finally {\n if (mountedRef.current) setLoading(false);\n }\n }, [slug]);\n\n const refetch = useCallback(async () => {\n clearProjectsCache();\n await fetch();\n }, [fetch]);\n\n useEffect(() => {\n mountedRef.current = true;\n if (autoFetch) fetch();\n return () => {\n mountedRef.current = false;\n };\n }, [autoFetch, fetch]);\n\n return { data, loading, error, refetch };\n}\n"],"names":["useState","useCallback","isInitialized","fetchActiveCampaigns","isEligibleForCampaign","useEffect","trackImpression","trackClick","trackClose","clearCampaignsCache","useRef","fetchContactInfo","clearContactInfoCache","subscribeToContactInfo","fetchDeveloperInfo","clearDeveloperInfoCache","subscribeToDeveloperInfo","fetchAddressInfo","clearAddressInfoCache","fetchSocialLinks","clearSocialLinksCache","fetchPaymentOptions","clearPaymentOptionsCache","fetchServices","clearServicesCache","fetchSkills","clearSkillsCache","fetchTestimonials","clearTestimonialsCache","fetchProjects","clearProjectsCache","fetchProjectBySlug"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState, useCallback, useEffect, useRef } from "react";
|
|
2
|
-
import { R as isInitialized, o as fetchActiveCampaigns, P as isEligibleForCampaign, Y as trackImpression, W as trackClick, X as trackClose, d as clearCampaignsCache, p as fetchAddressInfo, a as clearAddressInfoCache, r as fetchContactInfo, e as clearContactInfoCache, T as subscribeToContactInfo, s as fetchDeveloperInfo, f as clearDeveloperInfoCache, U as subscribeToDeveloperInfo, u as fetchPaymentOptions, h as clearPaymentOptionsCache, w as fetchProjectBySlug, j as clearProjectsCache, x as fetchProjects, y as fetchServices, k as clearServicesCache, z as fetchSkills, l as clearSkillsCache, A as fetchSocialLinks, m as clearSocialLinksCache, B as fetchTestimonials, n as clearTestimonialsCache } from "./commonFeatures-
|
|
2
|
+
import { R as isInitialized, o as fetchActiveCampaigns, P as isEligibleForCampaign, Y as trackImpression, W as trackClick, X as trackClose, d as clearCampaignsCache, p as fetchAddressInfo, a as clearAddressInfoCache, r as fetchContactInfo, e as clearContactInfoCache, T as subscribeToContactInfo, s as fetchDeveloperInfo, f as clearDeveloperInfoCache, U as subscribeToDeveloperInfo, u as fetchPaymentOptions, h as clearPaymentOptionsCache, w as fetchProjectBySlug, j as clearProjectsCache, x as fetchProjects, y as fetchServices, k as clearServicesCache, z as fetchSkills, l as clearSkillsCache, A as fetchSocialLinks, m as clearSocialLinksCache, B as fetchTestimonials, n as clearTestimonialsCache } from "./commonFeatures-LzPnbR6z.js";
|
|
3
3
|
function useCampaigns(options) {
|
|
4
4
|
const {
|
|
5
5
|
placement,
|
|
@@ -568,4 +568,4 @@ export {
|
|
|
568
568
|
useUpdateAdModal as m,
|
|
569
569
|
useAddressInfo as u
|
|
570
570
|
};
|
|
571
|
-
//# sourceMappingURL=useCommonFeatures-
|
|
571
|
+
//# sourceMappingURL=useCommonFeatures-CnmI83Er.js.map
|