@datlv-trustshop/shopify-inapp-components 0.2.8 → 0.2.10

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.
Files changed (220) hide show
  1. package/dist/components/AppList.d.ts +1 -0
  2. package/dist/components/AppList.d.ts.map +1 -0
  3. package/dist/components/AppList.js +1 -0
  4. package/dist/components/AppList.js.map +1 -0
  5. package/dist/components/ArticleList.d.ts +1 -0
  6. package/dist/components/ArticleList.d.ts.map +1 -0
  7. package/dist/components/ArticleList.js +1 -0
  8. package/dist/components/ArticleList.js.map +1 -0
  9. package/dist/components/ArticleSlide.d.ts +1 -0
  10. package/dist/components/ArticleSlide.d.ts.map +1 -0
  11. package/dist/components/ArticleSlide.js +1 -0
  12. package/dist/components/ArticleSlide.js.map +1 -0
  13. package/dist/components/FloatingCard.d.ts +1 -0
  14. package/dist/components/FloatingCard.d.ts.map +1 -0
  15. package/dist/components/FloatingCard.js +5 -4
  16. package/dist/components/FloatingCard.js.map +1 -0
  17. package/dist/components/FooterBanner.d.ts +1 -0
  18. package/dist/components/FooterBanner.d.ts.map +1 -0
  19. package/dist/components/FooterBanner.js +1 -0
  20. package/dist/components/FooterBanner.js.map +1 -0
  21. package/dist/components/GrowApps.d.ts +6 -6
  22. package/dist/components/GrowApps.d.ts.map +1 -0
  23. package/dist/components/GrowApps.js +11 -3
  24. package/dist/components/GrowApps.js.map +1 -0
  25. package/dist/components/ImageLoading.d.ts +1 -0
  26. package/dist/components/ImageLoading.d.ts.map +1 -0
  27. package/dist/components/ImageLoading.js +1 -0
  28. package/dist/components/ImageLoading.js.map +1 -0
  29. package/dist/components/PartnerIntegration.d.ts +8 -8
  30. package/dist/components/PartnerIntegration.d.ts.map +1 -0
  31. package/dist/components/PartnerIntegration.js +15 -76
  32. package/dist/components/PartnerIntegration.js.map +1 -0
  33. package/dist/components/PartnerList.d.ts +1 -0
  34. package/dist/components/PartnerList.d.ts.map +1 -0
  35. package/dist/components/PartnerList.js +1 -0
  36. package/dist/components/PartnerList.js.map +1 -0
  37. package/dist/components/PopupBanner.d.ts +4 -4
  38. package/dist/components/PopupBanner.d.ts.map +1 -0
  39. package/dist/components/PopupBanner.js +5 -1
  40. package/dist/components/PopupBanner.js.map +1 -0
  41. package/dist/components/TopBanner.d.ts +7 -7
  42. package/dist/components/TopBanner.d.ts.map +1 -0
  43. package/dist/components/TopBanner.js +15 -30
  44. package/dist/components/TopBanner.js.map +1 -0
  45. package/dist/components/WhatsNew.d.ts +6 -7
  46. package/dist/components/WhatsNew.d.ts.map +1 -0
  47. package/dist/components/WhatsNew.js +23 -25
  48. package/dist/components/WhatsNew.js.map +1 -0
  49. package/dist/components/index.d.ts +1 -0
  50. package/dist/components/index.d.ts.map +1 -0
  51. package/dist/components/index.js +1 -0
  52. package/dist/components/index.js.map +1 -0
  53. package/dist/components/inlineStyles.d.ts +1 -0
  54. package/dist/components/inlineStyles.d.ts.map +1 -0
  55. package/dist/components/inlineStyles.js +1 -0
  56. package/dist/components/inlineStyles.js.map +1 -0
  57. package/dist/components/styles.d.ts +1 -0
  58. package/dist/components/styles.d.ts.map +1 -0
  59. package/dist/components/styles.js +1 -0
  60. package/dist/components/styles.js.map +1 -0
  61. package/dist/config/component-defaults.d.ts +71 -0
  62. package/dist/config/component-defaults.d.ts.map +1 -0
  63. package/dist/config/component-defaults.js +106 -0
  64. package/dist/config/component-defaults.js.map +1 -0
  65. package/dist/config/internal-config.d.ts +28 -0
  66. package/dist/config/internal-config.d.ts.map +1 -0
  67. package/dist/config/internal-config.js +100 -0
  68. package/dist/config/internal-config.js.map +1 -0
  69. package/dist/core/SDKManager.d.ts +262 -0
  70. package/dist/core/SDKManager.d.ts.map +1 -0
  71. package/dist/core/SDKManager.js +527 -0
  72. package/dist/core/SDKManager.js.map +1 -0
  73. package/dist/core/adapter.d.ts +1 -0
  74. package/dist/core/adapter.d.ts.map +1 -0
  75. package/dist/core/adapter.js +1 -0
  76. package/dist/core/adapter.js.map +1 -0
  77. package/dist/core/engine.d.ts +1 -0
  78. package/dist/core/engine.d.ts.map +1 -0
  79. package/dist/core/engine.js +1 -0
  80. package/dist/core/engine.js.map +1 -0
  81. package/dist/core/fetcher.d.ts +1 -0
  82. package/dist/core/fetcher.d.ts.map +1 -0
  83. package/dist/core/fetcher.js +1 -0
  84. package/dist/core/fetcher.js.map +1 -0
  85. package/dist/core/global-manager.d.ts +1 -0
  86. package/dist/core/global-manager.d.ts.map +1 -0
  87. package/dist/core/global-manager.js +1 -0
  88. package/dist/core/global-manager.js.map +1 -0
  89. package/dist/hooks/index.d.ts +2 -3
  90. package/dist/hooks/index.d.ts.map +1 -0
  91. package/dist/hooks/index.js +2 -3
  92. package/dist/hooks/index.js.map +1 -0
  93. package/dist/hooks/useApps.d.ts +1 -0
  94. package/dist/hooks/useApps.d.ts.map +1 -0
  95. package/dist/hooks/useApps.js +10 -9
  96. package/dist/hooks/useApps.js.map +1 -0
  97. package/dist/hooks/useArticles.d.ts +1 -0
  98. package/dist/hooks/useArticles.d.ts.map +1 -0
  99. package/dist/hooks/useArticles.js +10 -14
  100. package/dist/hooks/useArticles.js.map +1 -0
  101. package/dist/hooks/useBanner.d.ts +1 -0
  102. package/dist/hooks/useBanner.d.ts.map +1 -0
  103. package/dist/hooks/useBanner.js +6 -5
  104. package/dist/hooks/useBanner.js.map +1 -0
  105. package/dist/hooks/useCampaignTracking.d.ts +1 -0
  106. package/dist/hooks/useCampaignTracking.d.ts.map +1 -0
  107. package/dist/hooks/useCampaignTracking.js +1 -0
  108. package/dist/hooks/useCampaignTracking.js.map +1 -0
  109. package/dist/hooks/useDashboard.d.ts +1 -0
  110. package/dist/hooks/useDashboard.d.ts.map +1 -0
  111. package/dist/hooks/useDashboard.js +18 -9
  112. package/dist/hooks/useDashboard.js.map +1 -0
  113. package/dist/hooks/useFloatingCards.d.ts +4 -2
  114. package/dist/hooks/useFloatingCards.d.ts.map +1 -0
  115. package/dist/hooks/useFloatingCards.js +52 -76
  116. package/dist/hooks/useFloatingCards.js.map +1 -0
  117. package/dist/hooks/usePartnerIntegration.d.ts +7 -2
  118. package/dist/hooks/usePartnerIntegration.d.ts.map +1 -0
  119. package/dist/hooks/usePartnerIntegration.js +26 -37
  120. package/dist/hooks/usePartnerIntegration.js.map +1 -0
  121. package/dist/hooks/useTranslations.d.ts +1 -0
  122. package/dist/hooks/useTranslations.d.ts.map +1 -0
  123. package/dist/hooks/useTranslations.js +5 -3
  124. package/dist/hooks/useTranslations.js.map +1 -0
  125. package/dist/hooks/useWhatsNew.d.ts +1 -0
  126. package/dist/hooks/useWhatsNew.d.ts.map +1 -0
  127. package/dist/hooks/useWhatsNew.js +9 -8
  128. package/dist/hooks/useWhatsNew.js.map +1 -0
  129. package/dist/index.d.ts +38 -22
  130. package/dist/index.d.ts.map +1 -0
  131. package/dist/index.js +76 -22
  132. package/dist/index.js.map +1 -0
  133. package/dist/translations/default.d.ts +1 -0
  134. package/dist/translations/default.d.ts.map +1 -0
  135. package/dist/translations/default.js +1 -0
  136. package/dist/translations/default.js.map +1 -0
  137. package/dist/translations/locales/cn.json +39 -0
  138. package/dist/translations/locales/de.json +39 -0
  139. package/dist/translations/locales/dk.json +39 -0
  140. package/dist/translations/locales/en.json +39 -0
  141. package/dist/translations/locales/es.json +39 -0
  142. package/dist/translations/locales/fr.json +39 -0
  143. package/dist/translations/locales/ie.json +39 -0
  144. package/dist/translations/locales/in.json +39 -0
  145. package/dist/translations/locales/it.json +39 -0
  146. package/dist/translations/locales/jp.json +39 -0
  147. package/dist/translations/locales/nl.json +39 -0
  148. package/dist/translations/locales/nz.json +39 -0
  149. package/dist/translations/locales/pt.json +39 -0
  150. package/dist/translations/locales/se.json +39 -0
  151. package/dist/translations/locales/vi.json +39 -0
  152. package/dist/translations/translation-manager.d.ts +89 -0
  153. package/dist/translations/translation-manager.d.ts.map +1 -0
  154. package/dist/translations/translation-manager.js +239 -0
  155. package/dist/translations/translation-manager.js.map +1 -0
  156. package/dist/types/app.d.ts +1 -0
  157. package/dist/types/app.d.ts.map +1 -0
  158. package/dist/types/app.js +1 -0
  159. package/dist/types/app.js.map +1 -0
  160. package/dist/types/article.d.ts +1 -0
  161. package/dist/types/article.d.ts.map +1 -0
  162. package/dist/types/article.js +1 -0
  163. package/dist/types/article.js.map +1 -0
  164. package/dist/types/banner.d.ts +1 -0
  165. package/dist/types/banner.d.ts.map +1 -0
  166. package/dist/types/banner.js +1 -0
  167. package/dist/types/banner.js.map +1 -0
  168. package/dist/types/component-props.d.ts +140 -0
  169. package/dist/types/component-props.d.ts.map +1 -0
  170. package/dist/types/component-props.js +6 -0
  171. package/dist/types/component-props.js.map +1 -0
  172. package/dist/types/dashboard.d.ts +1 -0
  173. package/dist/types/dashboard.d.ts.map +1 -0
  174. package/dist/types/dashboard.js +1 -0
  175. package/dist/types/dashboard.js.map +1 -0
  176. package/dist/types/index.d.ts +1 -0
  177. package/dist/types/index.d.ts.map +1 -0
  178. package/dist/types/index.js +1 -0
  179. package/dist/types/index.js.map +1 -0
  180. package/dist/types/integration.d.ts +1 -0
  181. package/dist/types/integration.d.ts.map +1 -0
  182. package/dist/types/integration.js +1 -0
  183. package/dist/types/integration.js.map +1 -0
  184. package/dist/types/partner.d.ts +1 -0
  185. package/dist/types/partner.d.ts.map +1 -0
  186. package/dist/types/partner.js +1 -0
  187. package/dist/types/partner.js.map +1 -0
  188. package/dist/types/product-update.d.ts +1 -0
  189. package/dist/types/product-update.d.ts.map +1 -0
  190. package/dist/types/product-update.js +1 -0
  191. package/dist/types/product-update.js.map +1 -0
  192. package/dist/types/translations.d.ts +1 -0
  193. package/dist/types/translations.d.ts.map +1 -0
  194. package/dist/types/translations.js +1 -0
  195. package/dist/types/translations.js.map +1 -0
  196. package/dist/utils/campaignTracking.d.ts +1 -0
  197. package/dist/utils/campaignTracking.d.ts.map +1 -0
  198. package/dist/utils/campaignTracking.js +1 -0
  199. package/dist/utils/campaignTracking.js.map +1 -0
  200. package/dist/utils/cls-monitor.d.ts +1 -0
  201. package/dist/utils/cls-monitor.d.ts.map +1 -0
  202. package/dist/utils/cls-monitor.js +1 -0
  203. package/dist/utils/cls-monitor.js.map +1 -0
  204. package/dist/utils/injectStyles.d.ts +1 -0
  205. package/dist/utils/injectStyles.d.ts.map +1 -0
  206. package/dist/utils/injectStyles.js +1 -0
  207. package/dist/utils/injectStyles.js.map +1 -0
  208. package/dist/utils/sessionManager.d.ts +1 -0
  209. package/dist/utils/sessionManager.d.ts.map +1 -0
  210. package/dist/utils/sessionManager.js +1 -0
  211. package/dist/utils/sessionManager.js.map +1 -0
  212. package/package.json +4 -3
  213. package/dist/hooks/useFloatingCardActions.d.ts +0 -17
  214. package/dist/hooks/useFloatingCardActions.js +0 -54
  215. package/dist/hooks/useFloatingCardEngine.d.ts +0 -21
  216. package/dist/hooks/useFloatingCardEngine.js +0 -39
  217. package/dist/hooks/useGrowApps.d.ts +0 -10
  218. package/dist/hooks/useGrowApps.js +0 -14
  219. package/dist/provider/DashboardProvider.d.ts +0 -36
  220. package/dist/provider/DashboardProvider.js +0 -200
@@ -31,3 +31,4 @@ export declare class DashboardEngine {
31
31
  updateConfig(newConfig: Partial<DashboardConfig>): void;
32
32
  getCurrentLocale(): string;
33
33
  }
34
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,UAAU,EACV,OAAO,EACP,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,UAAU,EACX,MAAM,UAAU,CAAC;AAIlB,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IACvD,OAAO,CAAC,IAAI,CAA8B;IACnC,MAAM,EAAE,eAAe,CAAC;IAC/B,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,SAAS,CAAwD;IACzE,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO;WAWO,WAAW,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,eAAe;WAYtD,aAAa,IAAI,IAAI;IAItB,IAAI,CAAC,YAAY,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;YAuBjD,QAAQ;IAYf,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;IAS5E,OAAO,CAAC,eAAe;IAIhB,OAAO,IAAI,aAAa,GAAG,IAAI;IAI/B,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE;IAU3C,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE;IAIjD,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE;IAUpC,YAAY,IAAI,QAAQ,EAAE;IAK1B,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;IAU1C,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAU1C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,aAAa,IAAI,OAAO;IAIxB,WAAW,IAAI,MAAM;IAKrB,YAAY,IAAI,OAAO;IAIvB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAY/B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9C,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAoBvD,gBAAgB,IAAI,MAAM;CAGlC"}
@@ -174,3 +174,4 @@ export class DashboardEngine {
174
174
  }
175
175
  }
176
176
  DashboardEngine.instance = null;
177
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/core/engine.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DashboardData,\n DashboardConfig,\n BannerItem,\n AppItem,\n AppGroup,\n ArticleItem,\n ProductUpdateItem,\n BannerType,\n} from \"../types\";\nimport { adaptDashboardData } from \"./adapter\";\nimport { fetchDashboard } from \"./fetcher\";\n\nexport class DashboardEngine {\n private static instance: DashboardEngine | null = null;\n private data: DashboardData | null = null;\n public config: DashboardConfig; // Made public for access in FloatingCard\n private initPromise: Promise<void> | null = null;\n private lastFetchTime: number = 0;\n private listeners: Set<(data: DashboardData | null) => void> = new Set();\n private fetchInProgress: boolean = false;\n private currentLocale: string;\n\n private constructor(config: DashboardConfig) {\n this.config = {\n cacheTime: 5 * 60 * 1000,\n retryAttempts: 3,\n retryDelay: 1000,\n locale: \"en\",\n ...config,\n };\n this.currentLocale = this.config.locale || \"en\";\n }\n\n public static getInstance(config?: DashboardConfig): DashboardEngine {\n if (!DashboardEngine.instance) {\n if (!config) {\n throw new Error(\n \"DashboardEngine requires config on first initialization\",\n );\n }\n DashboardEngine.instance = new DashboardEngine(config);\n }\n return DashboardEngine.instance;\n }\n\n public static resetInstance(): void {\n DashboardEngine.instance = null;\n }\n\n public async init(forceRefresh: boolean = false): Promise<void> {\n const now = Date.now();\n const cacheExpired =\n now - this.lastFetchTime > (this.config.cacheTime || 0);\n\n if (!forceRefresh && !cacheExpired && this.data) {\n return Promise.resolve();\n }\n\n if (this.fetchInProgress && this.initPromise) {\n return this.initPromise;\n }\n\n if (!this.initPromise || forceRefresh || cacheExpired) {\n this.fetchInProgress = true;\n this.initPromise = this.loadData().finally(() => {\n this.fetchInProgress = false;\n });\n }\n\n return this.initPromise;\n }\n\n private async loadData(): Promise<void> {\n try {\n const rawData = await fetchDashboard(this.config);\n this.data = adaptDashboardData(rawData);\n this.lastFetchTime = Date.now();\n this.notifyListeners();\n } catch (error) {\n console.error(\"Failed to load dashboard data:\", error);\n throw error;\n }\n }\n\n public subscribe(listener: (data: DashboardData | null) => void): () => void {\n this.listeners.add(listener);\n listener(this.data);\n\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n private notifyListeners(): void {\n this.listeners.forEach((listener) => listener(this.data));\n }\n\n public getData(): DashboardData | null {\n return this.data;\n }\n\n public getBanners(type?: BannerType): BannerItem[] {\n if (!this.data?.banners) return [];\n\n if (type) {\n return this.data.banners.filter((banner) => banner.type === type);\n }\n\n return this.data.banners;\n }\n\n public getActiveBanners(type?: BannerType): BannerItem[] {\n return this.getBanners(type).filter((banner) => banner.isActive !== false);\n }\n\n public getApps(group?: AppGroup): AppItem[] {\n if (!this.data?.apps) return [];\n\n if (group) {\n return this.data.apps[group] || [];\n }\n\n return Object.values(this.data.apps).flat();\n }\n\n public getAppGroups(): AppGroup[] {\n if (!this.data?.apps) return [];\n return Object.keys(this.data.apps) as AppGroup[];\n }\n\n public getArticles(limit?: number): ArticleItem[] {\n if (!this.data?.articles) return [];\n\n if (limit && limit > 0) {\n return this.data.articles.slice(0, limit);\n }\n\n return this.data.articles;\n }\n\n public getWhatsNew(limit?: number): ProductUpdateItem[] {\n if (!this.data?.whatsNew) return [];\n\n if (limit && limit > 0) {\n return this.data.whatsNew.slice(0, limit);\n }\n\n return this.data.whatsNew;\n }\n\n public async refresh(): Promise<void> {\n return this.init(true);\n }\n\n public isInitialized(): boolean {\n return this.data !== null;\n }\n\n public getCacheAge(): number {\n if (!this.lastFetchTime) return Infinity;\n return Date.now() - this.lastFetchTime;\n }\n\n public isCacheValid(): boolean {\n return this.getCacheAge() < (this.config.cacheTime || 0);\n }\n\n public updateLocale(locale: string): boolean {\n if (this.currentLocale !== locale) {\n this.currentLocale = locale;\n this.config = { ...this.config, locale };\n this.data = null;\n this.lastFetchTime = 0;\n this.initPromise = null;\n return true; // Locale was changed\n }\n return false; // Locale was not changed\n }\n\n public async setLocale(locale: string): Promise<void> {\n if (this.currentLocale !== locale) {\n const wasInitialized = this.isInitialized();\n\n this.currentLocale = locale;\n this.config = { ...this.config, locale };\n\n // Clear data to force refresh with new locale\n this.data = null;\n this.lastFetchTime = 0;\n this.initPromise = null;\n\n // If engine was initialized, automatically refresh with new locale\n if (wasInitialized) {\n await this.init();\n }\n\n // Notify listeners about the change\n this.notifyListeners();\n }\n }\n\n public updateConfig(newConfig: Partial<DashboardConfig>): void {\n const oldConfig = this.config;\n this.config = { ...this.config, ...newConfig };\n\n // If locale changed, update current locale and clear cache\n if (newConfig.locale && newConfig.locale !== this.currentLocale) {\n this.currentLocale = newConfig.locale;\n this.data = null;\n this.lastFetchTime = 0;\n this.initPromise = null;\n }\n\n // If API URL changed, clear cache\n if (newConfig.apiUrl && newConfig.apiUrl !== oldConfig.apiUrl) {\n this.data = null;\n this.lastFetchTime = 0;\n this.initPromise = null;\n }\n }\n\n public getCurrentLocale(): string {\n return this.currentLocale;\n }\n}\n"]}
@@ -2,3 +2,4 @@ import { DashboardConfig } from "../types";
2
2
  export declare function fetchDashboard(config: DashboardConfig): Promise<any>;
3
3
  export declare function clearCache(url?: string): void;
4
4
  export declare function getCacheSize(): number;
5
+ //# sourceMappingURL=fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../src/core/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAS3C,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAoE1E;AAED,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAM7C;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -70,3 +70,4 @@ export function clearCache(url) {
70
70
  export function getCacheSize() {
71
71
  return cache.size;
72
72
  }
73
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/core/fetcher.ts"],"names":[],"mappings":"AAOA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAuB;IAC1D,oCAAoC;IACpC,yCAAyC;IACzC,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,4BAA4B;QAC5B,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;QACrC,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,WAAW;YAC3C,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;YACxB,CAAC,CAAC,uBAAuB,CAAC;QAC5B,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;IACrC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEvC,mCAAmC;IACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACxD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,EAAE,UAAkB,CAAC,EAAgB,EAAE;QAC/D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;gBAC3C,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,iBAAiB,EAAE,MAAM,EAAE,6BAA6B;oBACxD,GAAG,MAAM,CAAC,OAAO;iBAClB;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEnC,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBAC7C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;oBAClB,IAAI;oBACJ,SAAS,EAAE,GAAG;iBACf,CAAC,CAAC;YACL,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;YAE9C,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC;gBACpD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,GAAG,EAAE,CAAC;QACR,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC","sourcesContent":["import { DashboardConfig } from \"../types\";\n\ninterface CacheEntry {\n data: any;\n timestamp: number;\n}\n\nconst cache = new Map<string, CacheEntry>();\n\nexport async function fetchDashboard(config: DashboardConfig): Promise<any> {\n // Build URL with locale query param\n // Handle both absolute and relative URLs\n let url: URL;\n try {\n // Try as absolute URL first\n url = new URL(config.apiUrl);\n } catch {\n // If it fails, treat as relative URL\n const baseUrl = typeof window !== 'undefined' \n ? window.location.origin \n : 'http://localhost:3000';\n url = new URL(config.apiUrl, baseUrl);\n }\n \n const locale = config.locale || 'en';\n url.searchParams.set('locale', locale);\n \n // Use URL with locale as cache key\n const cacheKey = url.toString();\n const now = Date.now();\n\n if (config.cacheTime && config.cacheTime > 0) {\n const cached = cache.get(cacheKey);\n if (cached && now - cached.timestamp < config.cacheTime) {\n return Promise.resolve(cached.data);\n }\n }\n\n const attemptFetch = async (attempt: number = 1): Promise<any> => {\n try {\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept-Language\": locale, // Also send locale in header\n ...config.headers,\n },\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data = await response.json();\n\n if (config.cacheTime && config.cacheTime > 0) {\n cache.set(cacheKey, {\n data,\n timestamp: now,\n });\n }\n\n return data;\n } catch (error) {\n const maxAttempts = config.retryAttempts || 3;\n\n if (attempt < maxAttempts) {\n const delay = (config.retryDelay || 1000) * attempt;\n await new Promise((resolve) => setTimeout(resolve, delay));\n return attemptFetch(attempt + 1);\n }\n\n throw error;\n }\n };\n\n return attemptFetch();\n}\n\nexport function clearCache(url?: string): void {\n if (url) {\n cache.delete(url);\n } else {\n cache.clear();\n }\n}\n\nexport function getCacheSize(): number {\n return cache.size;\n}\n"]}
@@ -88,3 +88,4 @@ export declare class GlobalDashboardManager {
88
88
  */
89
89
  static reset(): void;
90
90
  }
91
+ //# sourceMappingURL=global-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-manager.d.ts","sourceRoot":"","sources":["../../src/core/global-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAc3D;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuC;IAC9D,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,WAAW,CAKjB;IACF,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,oBAAoB,CAAuB;IAEnD,OAAO;WAIO,WAAW,IAAI,sBAAsB;IAOnD;;OAEG;IACI,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,EAAE,yBAAyB,GAAE,OAAe,GAAG,IAAI;IA8B/G;;OAEG;IACI,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAW3C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAWpB;;OAEG;IACU,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD1D;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCrC;;OAEG;IACU,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCrD;;OAEG;IACI,gBAAgB,IAAI,MAAM;IAOjC;;OAEG;IACI,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;IAanF;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACI,QAAQ,IAAI,cAAc;IAIjC;;OAEG;IACI,SAAS,IAAI,eAAe,GAAG,IAAI;IAI1C;;OAEG;IACI,aAAa,IAAI,OAAO;IAI/B;;OAEG;IACI,gBAAgB,IAAI,MAAM;IAIjC;;OAEG;WACW,KAAK,IAAI,IAAI;CAuB5B"}
@@ -344,3 +344,4 @@ export class GlobalDashboardManager {
344
344
  }
345
345
  }
346
346
  GlobalDashboardManager.instance = null;
347
+ //# sourceMappingURL=global-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-manager.js","sourceRoot":"","sources":["../../src/core/global-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { DashboardEngine } from \"./engine\";\nimport { DashboardConfig, DashboardState } from \"../types\";\n\ninterface ProviderInfo {\n id: string;\n mounted: boolean;\n config?: DashboardConfig;\n autoRefreshOnLocaleChange?: boolean;\n}\n\ninterface GlobalStateListener {\n id: string;\n callback: (state: DashboardState) => void;\n}\n\n/**\n * GlobalDashboardManager - Singleton manager for shared SDK state\n * \n * This manager ensures all DashboardProvider instances share:\n * - The same engine instance\n * - The same data/cache\n * - The same locale state\n * - Deduplicated API calls\n * \n * Multiple providers can mount/unmount independently while maintaining\n * a stable, shared runtime.\n */\nexport class GlobalDashboardManager {\n private static instance: GlobalDashboardManager | null = null;\n private engine: DashboardEngine | null = null;\n private providers: Map<string, ProviderInfo> = new Map();\n private stateListeners: Set<GlobalStateListener> = new Set();\n private globalState: DashboardState = {\n data: null,\n loading: false,\n error: null,\n lastFetch: null,\n };\n private initPromise: Promise<void> | null = null;\n private lastConfig: DashboardConfig | null = null;\n private pendingLocaleRefresh: string | null = null;\n\n private constructor() {\n // Private constructor for singleton\n }\n\n public static getInstance(): GlobalDashboardManager {\n if (!GlobalDashboardManager.instance) {\n GlobalDashboardManager.instance = new GlobalDashboardManager();\n }\n return GlobalDashboardManager.instance;\n }\n\n /**\n * Register a provider instance\n */\n public registerProvider(id: string, config?: DashboardConfig, autoRefreshOnLocaleChange: boolean = false): void {\n this.providers.set(id, { \n id, \n mounted: true, \n config,\n autoRefreshOnLocaleChange\n });\n\n // Update config if provided and different\n if (config && !this.configEquals(this.lastConfig, config)) {\n this.updateGlobalConfig(config);\n }\n\n // Check if we need to initialize due to pending locale refresh\n // This handles the case where all providers have autoInit=false but want locale refresh\n if (this.pendingLocaleRefresh && autoRefreshOnLocaleChange) {\n const locale = this.pendingLocaleRefresh;\n this.pendingLocaleRefresh = null;\n \n // Force initialization with the new locale if not initialized\n if (!this.engine || !this.engine.isInitialized()) {\n if (this.lastConfig) {\n this.init({ ...this.lastConfig, locale }).catch(console.error);\n }\n } else {\n this.engine.setLocale(locale).catch(console.error);\n }\n }\n }\n\n /**\n * Unregister a provider instance\n */\n public unregisterProvider(id: string): void {\n this.providers.delete(id);\n \n // Remove associated listeners\n this.stateListeners = new Set(\n Array.from(this.stateListeners).filter(l => !l.id.startsWith(id))\n );\n\n // Don't destroy engine even if no providers - maintain stable runtime\n }\n\n /**\n * Get or create the shared engine instance\n */\n private getOrCreateEngine(config?: DashboardConfig): DashboardEngine {\n if (!this.engine) {\n if (!config && !this.lastConfig) {\n throw new Error(\"GlobalDashboardManager requires config on first use\");\n }\n const finalConfig = config || this.lastConfig!;\n this.engine = DashboardEngine.getInstance(finalConfig);\n this.lastConfig = finalConfig;\n \n // Subscribe to engine changes\n this.engine.subscribe((data) => {\n this.updateGlobalState({\n data,\n loading: false,\n error: null,\n lastFetch: data ? new Date() : this.globalState.lastFetch,\n });\n });\n }\n return this.engine;\n }\n\n /**\n * Update the global configuration\n */\n private updateGlobalConfig(config: DashboardConfig): void {\n const previousLocale = this.lastConfig?.locale;\n this.lastConfig = config;\n \n if (this.engine) {\n // Update existing engine config\n this.engine.updateConfig(config);\n \n // If locale changed, we need to refresh data\n if (config.locale && config.locale !== previousLocale) {\n // Check if any provider wants auto-refresh on locale change\n const shouldRefresh = Array.from(this.providers.values()).some(p => p.autoRefreshOnLocaleChange);\n \n if (this.engine.isInitialized()) {\n // Engine is initialized, refresh immediately if any provider wants it\n if (shouldRefresh) {\n this.engine.setLocale(config.locale).catch(console.error);\n } else {\n this.engine.updateLocale(config.locale);\n }\n } else {\n // Engine not initialized yet\n this.engine.updateLocale(config.locale);\n \n // If any provider wants refresh, force initialization NOW\n // This is critical for autoInit=false providers\n if (shouldRefresh) {\n this.init(config).catch(console.error);\n } else {\n // Mark for later refresh when a provider initializes\n this.pendingLocaleRefresh = config.locale;\n }\n }\n }\n } else if (config.locale && config.locale !== previousLocale) {\n // No engine yet, but locale changed - mark for refresh when engine is created\n this.pendingLocaleRefresh = config.locale;\n }\n }\n\n /**\n * Check if two configs are equal\n */\n private configEquals(a: DashboardConfig | null, b: DashboardConfig | null): boolean {\n if (!a || !b) return a === b;\n return (\n a.apiUrl === b.apiUrl &&\n a.locale === b.locale &&\n a.cacheTime === b.cacheTime &&\n a.retryAttempts === b.retryAttempts &&\n a.retryDelay === b.retryDelay\n );\n }\n\n /**\n * Initialize the shared engine\n */\n public async init(config?: DashboardConfig): Promise<void> {\n // If we have a pending locale refresh and config has a different locale,\n // use the pending locale instead\n if (this.pendingLocaleRefresh && config) {\n config = { ...config, locale: this.pendingLocaleRefresh };\n }\n \n if (this.initPromise && !config) {\n return this.initPromise;\n }\n\n if (config) {\n this.updateGlobalConfig(config);\n }\n\n this.updateGlobalState({ ...this.globalState, loading: true, error: null });\n\n this.initPromise = (async () => {\n try {\n const engine = this.getOrCreateEngine(config);\n await engine.init();\n const data = engine.getData();\n \n // Clear pending locale refresh since we just initialized with it\n if (this.pendingLocaleRefresh) {\n this.pendingLocaleRefresh = null;\n }\n \n this.updateGlobalState({\n data,\n loading: false,\n error: null,\n lastFetch: new Date(),\n });\n } catch (error) {\n const err = error instanceof Error \n ? error \n : new Error(\"Failed to initialize dashboard\");\n \n this.updateGlobalState({\n ...this.globalState,\n loading: false,\n error: err,\n });\n \n throw err;\n }\n })();\n\n return this.initPromise;\n }\n\n /**\n * Refresh the dashboard data\n */\n public async refresh(): Promise<void> {\n if (!this.engine) {\n return this.init();\n }\n\n this.updateGlobalState({ ...this.globalState, loading: true, error: null });\n\n try {\n await this.engine.refresh();\n const data = this.engine.getData();\n \n this.updateGlobalState({\n data,\n loading: false,\n error: null,\n lastFetch: new Date(),\n });\n } catch (error) {\n const err = error instanceof Error \n ? error \n : new Error(\"Failed to refresh dashboard\");\n \n this.updateGlobalState({\n ...this.globalState,\n loading: false,\n error: err,\n });\n \n throw err;\n }\n }\n\n /**\n * Update locale globally\n */\n public async setLocale(locale: string): Promise<void> {\n // Update the last config\n if (this.lastConfig) {\n this.lastConfig = { ...this.lastConfig, locale };\n }\n \n // Check if any provider wants auto-refresh\n const shouldRefresh = Array.from(this.providers.values()).some(p => p.autoRefreshOnLocaleChange);\n \n if (!this.engine) {\n // No engine yet, but if any provider wants refresh, initialize NOW\n if (shouldRefresh && this.lastConfig) {\n await this.init({ ...this.lastConfig, locale });\n } else {\n // Mark locale for refresh when engine is created\n this.pendingLocaleRefresh = locale;\n }\n return;\n }\n\n // Engine exists, update locale\n if (this.engine.isInitialized()) {\n await this.engine.setLocale(locale);\n } else {\n // Engine exists but not initialized\n this.engine.updateLocale(locale);\n \n // If any provider wants refresh, initialize now\n if (shouldRefresh) {\n await this.init();\n }\n }\n }\n\n /**\n * Get the current locale\n */\n public getCurrentLocale(): string {\n if (this.engine) {\n return this.engine.getCurrentLocale();\n }\n return this.lastConfig?.locale || \"en\";\n }\n\n /**\n * Subscribe to global state changes\n */\n public subscribe(id: string, callback: (state: DashboardState) => void): () => void {\n const listener = { id, callback };\n this.stateListeners.add(listener);\n \n // Immediately call with current state\n callback(this.globalState);\n \n // Return unsubscribe function\n return () => {\n this.stateListeners.delete(listener);\n };\n }\n\n /**\n * Update and broadcast global state\n */\n private updateGlobalState(state: DashboardState): void {\n this.globalState = state;\n \n // Notify all listeners\n this.stateListeners.forEach(listener => {\n try {\n listener.callback(state);\n } catch (error) {\n console.error(`Error in state listener ${listener.id}:`, error);\n }\n });\n }\n\n /**\n * Get the current global state\n */\n public getState(): DashboardState {\n return this.globalState;\n }\n\n /**\n * Get the shared engine instance (if created)\n */\n public getEngine(): DashboardEngine | null {\n return this.engine;\n }\n\n /**\n * Check if manager is initialized\n */\n public isInitialized(): boolean {\n return this.engine?.isInitialized() || false;\n }\n\n /**\n * Get provider count\n */\n public getProviderCount(): number {\n return this.providers.size;\n }\n\n /**\n * Reset the global manager (for testing)\n */\n public static reset(): void {\n if (GlobalDashboardManager.instance) {\n const manager = GlobalDashboardManager.instance;\n \n // Clear listeners\n manager.stateListeners.clear();\n manager.providers.clear();\n \n // Reset state\n manager.globalState = {\n data: null,\n loading: false,\n error: null,\n lastFetch: null,\n };\n \n manager.initPromise = null;\n manager.lastConfig = null;\n manager.engine = null;\n }\n \n GlobalDashboardManager.instance = null;\n }\n}"]}
@@ -3,9 +3,8 @@ export * from "./useBanner";
3
3
  export * from "./useApps";
4
4
  export * from "./useArticles";
5
5
  export * from "./useWhatsNew";
6
- export * from "./useGrowApps";
7
6
  export * from "./usePartnerIntegration";
8
7
  export * from "./useFloatingCards";
9
8
  export * from "./useCampaignTracking";
10
- export * from "./useFloatingCardActions";
11
- export * from "./useFloatingCardEngine";
9
+ export * from "./useTranslations";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
@@ -3,9 +3,8 @@ export * from "./useBanner";
3
3
  export * from "./useApps";
4
4
  export * from "./useArticles";
5
5
  export * from "./useWhatsNew";
6
- export * from "./useGrowApps";
7
6
  export * from "./usePartnerIntegration";
8
7
  export * from "./useFloatingCards";
9
8
  export * from "./useCampaignTracking";
10
- export * from "./useFloatingCardActions";
11
- export * from "./useFloatingCardEngine";
9
+ export * from "./useTranslations";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC","sourcesContent":["export * from \"./useDashboard\";\nexport * from \"./useBanner\";\nexport * from \"./useApps\";\nexport * from \"./useArticles\";\nexport * from \"./useWhatsNew\";\nexport * from \"./usePartnerIntegration\";\nexport * from \"./useFloatingCards\";\nexport * from \"./useCampaignTracking\";\nexport * from \"./useTranslations\";\n"]}
@@ -1,3 +1,4 @@
1
1
  import { AppItem, AppGroup } from "../types";
2
2
  export declare function useApps(group?: AppGroup): AppItem[];
3
3
  export declare function useAppGroups(): AppGroup[];
4
+ //# sourceMappingURL=useApps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApps.d.ts","sourceRoot":"","sources":["../../src/hooks/useApps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAI7C,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,EAAE,CAOnD;AAED,wBAAgB,YAAY,IAAI,QAAQ,EAAE,CAOzC"}
@@ -1,18 +1,19 @@
1
+ import { useSDK } from "../core/SDKManager";
1
2
  import { useMemo } from "react";
2
- import { useDashboardContext } from "../provider/DashboardProvider";
3
3
  export function useApps(group) {
4
- const { engine, state } = useDashboardContext();
4
+ const sdk = useSDK();
5
5
  return useMemo(() => {
6
- if (!engine || !state.data)
6
+ if (!sdk.dashboardEngine)
7
7
  return [];
8
- return engine.getApps(group);
9
- }, [engine, group, state.data]);
8
+ return sdk.dashboardEngine.getApps(group);
9
+ }, [sdk.dashboardEngine, sdk.dashboardData, group]);
10
10
  }
11
11
  export function useAppGroups() {
12
- const { engine, state } = useDashboardContext();
12
+ const sdk = useSDK();
13
13
  return useMemo(() => {
14
- if (!engine || !state.data)
14
+ if (!sdk.dashboardEngine)
15
15
  return [];
16
- return engine.getAppGroups();
17
- }, [engine, state.data]);
16
+ return sdk.dashboardEngine.getAppGroups();
17
+ }, [sdk.dashboardEngine, sdk.dashboardData]);
18
18
  }
19
+ //# sourceMappingURL=useApps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useApps.js","sourceRoot":"","sources":["../../src/hooks/useApps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,UAAU,OAAO,CAAC,KAAgB;IACtC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,GAAG,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,GAAG,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;AAC/C,CAAC","sourcesContent":["import { AppItem, AppGroup } from \"../types\";\nimport { useSDK } from \"../core/SDKManager\";\nimport { useMemo } from \"react\";\n\nexport function useApps(group?: AppGroup): AppItem[] {\n const sdk = useSDK();\n \n return useMemo(() => {\n if (!sdk.dashboardEngine) return [];\n return sdk.dashboardEngine.getApps(group);\n }, [sdk.dashboardEngine, sdk.dashboardData, group]);\n}\n\nexport function useAppGroups(): AppGroup[] {\n const sdk = useSDK();\n \n return useMemo(() => {\n if (!sdk.dashboardEngine) return [];\n return sdk.dashboardEngine.getAppGroups();\n }, [sdk.dashboardEngine, sdk.dashboardData]);\n}\n"]}
@@ -9,3 +9,4 @@ export interface UseArticlesResult {
9
9
  export declare function useArticles(limit?: number): UseArticlesResult;
10
10
  export declare function useLatestArticles(limit?: number): ArticleItem[];
11
11
  export declare function useArticleCategories(): string[];
12
+ //# sourceMappingURL=useArticles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useArticles.d.ts","sourceRoot":"","sources":["../../src/hooks/useArticles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC7D,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;IAC3D,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;CACrD;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,CA6B7D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,MAAU,GAAG,WAAW,EAAE,CAMlE;AAED,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAc/C"}
@@ -1,29 +1,24 @@
1
1
  import { useMemo } from "react";
2
- import { useDashboardContext } from "../provider/DashboardProvider";
2
+ import { useSDK } from "../core/SDKManager";
3
3
  export function useArticles(limit) {
4
- const { engine, state } = useDashboardContext();
4
+ const sdk = useSDK();
5
5
  const articles = useMemo(() => {
6
- if (!engine || !state.data)
6
+ if (!sdk.dashboardEngine)
7
7
  return [];
8
- return engine.getArticles(limit);
9
- }, [engine, limit, state.data]);
8
+ return sdk.dashboardEngine.getArticles(limit);
9
+ }, [sdk.dashboardEngine, sdk.dashboardData, limit]);
10
10
  const getArticle = (id) => {
11
- return articles.find((article) => article.id === id);
11
+ return articles.find(article => article.id === id || article.id === String(id) || article.id === Number(id));
12
12
  };
13
13
  const getArticlesByCategory = (category) => {
14
- return articles.filter((article) => article.category === category);
14
+ return articles.filter(article => article.category === category);
15
15
  };
16
16
  const getLatestArticles = (limitCount) => {
17
- const sorted = [...articles].sort((a, b) => {
18
- const dateA = new Date(a.publishedDate || 0).getTime();
19
- const dateB = new Date(b.publishedDate || 0).getTime();
20
- return dateB - dateA;
21
- });
22
- return sorted.slice(0, limitCount);
17
+ return articles.slice(0, limitCount);
23
18
  };
24
19
  return {
25
20
  articles,
26
- loading: state.loading,
21
+ loading: sdk.dashboardLoading || false,
27
22
  getArticle,
28
23
  getArticlesByCategory,
29
24
  getLatestArticles,
@@ -47,3 +42,4 @@ export function useArticleCategories() {
47
42
  return Array.from(categories);
48
43
  }, [articles]);
49
44
  }
45
+ //# sourceMappingURL=useArticles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useArticles.js","sourceRoot":"","sources":["../../src/hooks/useArticles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAW5C,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,IAAI,CAAC,GAAG,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,CAAC,EAAmB,EAA2B,EAAE;QAClE,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC7B,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAC5E,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAiB,EAAE;QAChE,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,UAAkB,EAAiB,EAAE;QAC9D,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,GAAG,CAAC,gBAAgB,IAAI,KAAK;QACtC,UAAU;QACV,qBAAqB;QACrB,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB,CAAC;IACjD,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,CAAC;IAEtD,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;IAEnC,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QAErC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjB,CAAC","sourcesContent":["import { useMemo } from \"react\";\nimport { useSDK } from \"../core/SDKManager\";\nimport { ArticleItem } from \"../types\";\n\nexport interface UseArticlesResult {\n articles: ArticleItem[];\n loading: boolean;\n getArticle: (id: string | number) => ArticleItem | undefined;\n getArticlesByCategory: (category: string) => ArticleItem[];\n getLatestArticles: (limit: number) => ArticleItem[];\n}\n\nexport function useArticles(limit?: number): UseArticlesResult {\n const sdk = useSDK();\n\n const articles = useMemo(() => {\n if (!sdk.dashboardEngine) return [];\n return sdk.dashboardEngine.getArticles(limit);\n }, [sdk.dashboardEngine, sdk.dashboardData, limit]);\n\n const getArticle = (id: string | number): ArticleItem | undefined => {\n return articles.find(article => \n article.id === id || article.id === String(id) || article.id === Number(id)\n );\n };\n\n const getArticlesByCategory = (category: string): ArticleItem[] => {\n return articles.filter(article => article.category === category);\n };\n\n const getLatestArticles = (limitCount: number): ArticleItem[] => {\n return articles.slice(0, limitCount);\n };\n\n return {\n articles,\n loading: sdk.dashboardLoading || false,\n getArticle,\n getArticlesByCategory,\n getLatestArticles,\n };\n}\n\nexport function useLatestArticles(limit: number = 5): ArticleItem[] {\n const { articles, getLatestArticles } = useArticles();\n\n return useMemo(() => {\n return getLatestArticles(limit);\n }, [articles, limit]);\n}\n\nexport function useArticleCategories(): string[] {\n const { articles } = useArticles();\n\n return useMemo(() => {\n const categories = new Set<string>();\n\n articles.forEach((article) => {\n if (article.category) {\n categories.add(article.category);\n }\n });\n\n return Array.from(categories);\n }, [articles]);\n}\n"]}
@@ -3,3 +3,4 @@ export declare function useBanners(type?: BannerType): BannerItem[];
3
3
  export declare function useTopBanner(): BannerItem | null;
4
4
  export declare function usePopupBanner(): BannerItem | null;
5
5
  export declare function useFooterBanner(): BannerItem | null;
6
+ //# sourceMappingURL=useBanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBanner.d.ts","sourceRoot":"","sources":["../../src/hooks/useBanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAIlD,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAO1D;AAED,wBAAgB,YAAY,IAAI,UAAU,GAAG,IAAI,CAGhD;AAED,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CAGlD;AAED,wBAAgB,eAAe,IAAI,UAAU,GAAG,IAAI,CAGnD"}
@@ -1,12 +1,12 @@
1
+ import { useSDK } from "../core/SDKManager";
1
2
  import { useMemo } from "react";
2
- import { useDashboardContext } from "../provider/DashboardProvider";
3
3
  export function useBanners(type) {
4
- const { engine, state } = useDashboardContext();
4
+ const sdk = useSDK();
5
5
  return useMemo(() => {
6
- if (!engine || !state.data)
6
+ if (!sdk.dashboardEngine)
7
7
  return [];
8
- return engine.getBanners(type);
9
- }, [engine, type, state.data]);
8
+ return sdk.dashboardEngine.getActiveBanners(type);
9
+ }, [sdk.dashboardEngine, sdk.dashboardData, type]);
10
10
  }
11
11
  export function useTopBanner() {
12
12
  const banners = useBanners("top_banner");
@@ -20,3 +20,4 @@ export function useFooterBanner() {
20
20
  const banners = useBanners("footer_banner");
21
21
  return banners[0] || null;
22
22
  }
23
+ //# sourceMappingURL=useBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBanner.js","sourceRoot":"","sources":["../../src/hooks/useBanner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,UAAU,UAAU,CAAC,IAAiB;IAC1C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IAErB,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,GAAG,CAAC,eAAe;YAAE,OAAO,EAAE,CAAC;QACpC,OAAO,GAAG,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC","sourcesContent":["import { BannerItem, BannerType } from \"../types\";\nimport { useSDK } from \"../core/SDKManager\";\nimport { useMemo } from \"react\";\n\nexport function useBanners(type?: BannerType): BannerItem[] {\n const sdk = useSDK();\n\n return useMemo(() => {\n if (!sdk.dashboardEngine) return [];\n return sdk.dashboardEngine.getActiveBanners(type);\n }, [sdk.dashboardEngine, sdk.dashboardData, type]);\n}\n\nexport function useTopBanner(): BannerItem | null {\n const banners = useBanners(\"top_banner\");\n return banners[0] || null;\n}\n\nexport function usePopupBanner(): BannerItem | null {\n const banners = useBanners(\"popup\");\n return banners[0] || null;\n}\n\nexport function useFooterBanner(): BannerItem | null {\n const banners = useBanners(\"footer_banner\");\n return banners[0] || null;\n}\n"]}
@@ -42,3 +42,4 @@ export declare function useCampaignTracking(options: UseCampaignTrackingOptions)
42
42
  getTimeToAction: () => number | undefined;
43
43
  };
44
44
  export {};
45
+ //# sourceMappingURL=useCampaignTracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCampaignTracking.d.ts","sourceRoot":"","sources":["../../src/hooks/useCampaignTracking.ts"],"names":[],"mappings":"AAGA,UAAU,4BAA4B;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B;;;;;EAuF1E;AAED,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B;gCAUnD;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC;;;;;;;;EAkCJ"}
@@ -114,3 +114,4 @@ export function useCampaignTracking(options) {
114
114
  trackDismiss,
115
115
  };
116
116
  }
117
+ //# sourceMappingURL=useCampaignTracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCampaignTracking.js","sourceRoot":"","sources":["../../src/hooks/useCampaignTracking.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useRef, useCallback, useState } from 'react';\nimport { trackCampaignView, trackCampaignClick } from '../utils/campaignTracking';\n\ninterface UseCampaignVisibilityOptions {\n shopId: string;\n campaignId: string | number;\n threshold?: number; // Intersection threshold (0-1)\n visibilityDuration?: number; // Time in ms the element must be visible\n metadata?: Record<string, any>;\n}\n\n/**\n * Hook to track campaign visibility using IntersectionObserver\n * Automatically tracks views when element is visible for specified duration\n */\nexport function useCampaignVisibility(options: UseCampaignVisibilityOptions) {\n const {\n shopId,\n campaignId,\n threshold = 0.5, // Default: 50% visible\n visibilityDuration = 1000, // Default: 1 second\n metadata = {},\n } = options;\n \n const elementRef = useRef<HTMLDivElement>(null);\n const visibilityTimerRef = useRef<NodeJS.Timeout | null>(null);\n const hasTrackedViewRef = useRef(false);\n const [isVisible, setIsVisible] = useState(false);\n const firstVisibleTimeRef = useRef<number | null>(null);\n \n useEffect(() => {\n if (!elementRef.current || typeof window === 'undefined') return;\n \n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n const nowVisible = entry.isIntersecting && entry.intersectionRatio >= threshold;\n \n if (nowVisible && !hasTrackedViewRef.current) {\n // Element became visible\n setIsVisible(true);\n \n // Record first visible time if not already set\n if (!firstVisibleTimeRef.current) {\n firstVisibleTimeRef.current = Date.now();\n }\n \n // Start timer for view tracking\n if (visibilityTimerRef.current) {\n clearTimeout(visibilityTimerRef.current);\n }\n \n visibilityTimerRef.current = setTimeout(() => {\n // Track view after visibility duration\n if (!hasTrackedViewRef.current) {\n trackCampaignView(shopId, campaignId, metadata);\n hasTrackedViewRef.current = true;\n }\n }, visibilityDuration);\n } else if (!nowVisible) {\n // Element became hidden\n setIsVisible(false);\n \n // Clear timer if element becomes hidden before tracking\n if (visibilityTimerRef.current && !hasTrackedViewRef.current) {\n clearTimeout(visibilityTimerRef.current);\n visibilityTimerRef.current = null;\n }\n }\n });\n },\n {\n threshold: [0, threshold], // Watch for both becoming visible and hidden\n rootMargin: '0px',\n }\n );\n \n observer.observe(elementRef.current);\n \n return () => {\n // Cleanup\n if (visibilityTimerRef.current) {\n clearTimeout(visibilityTimerRef.current);\n }\n observer.disconnect();\n };\n }, [shopId, campaignId, threshold, visibilityDuration, metadata]);\n \n // Calculate time to action for clicks\n const getTimeToAction = useCallback(() => {\n if (firstVisibleTimeRef.current) {\n return Date.now() - firstVisibleTimeRef.current;\n }\n return undefined;\n }, []);\n \n return {\n elementRef,\n isVisible,\n hasTrackedView: hasTrackedViewRef.current,\n getTimeToAction,\n };\n}\n\ninterface UseCampaignTrackingOptions {\n shopId: string;\n campaignId: string | number;\n threshold?: number;\n visibilityDuration?: number;\n metadata?: Record<string, any>;\n}\n\n/**\n * Main hook for campaign tracking\n * Combines visibility tracking with click tracking utilities\n */\nexport function useCampaignTracking(options: UseCampaignTrackingOptions) {\n const { shopId, campaignId, ...visibilityOptions } = options;\n \n const visibility = useCampaignVisibility({\n shopId,\n campaignId,\n ...visibilityOptions,\n });\n \n const trackClick = useCallback(\n (clickOptions?: {\n actionType?: string;\n ctaId?: string;\n ctaKey?: string;\n metadata?: Record<string, any>;\n }) => {\n const timeToAction = visibility.getTimeToAction();\n \n trackCampaignClick(shopId, campaignId, {\n ...clickOptions,\n timeToAction,\n metadata: {\n ...options.metadata,\n ...clickOptions?.metadata,\n },\n });\n },\n [shopId, campaignId, visibility, options.metadata]\n );\n \n const trackPrimaryAction = useCallback(() => {\n trackClick({ actionType: 'primary' });\n }, [trackClick]);\n \n const trackSecondaryAction = useCallback(() => {\n trackClick({ actionType: 'secondary' });\n }, [trackClick]);\n \n const trackDismiss = useCallback(() => {\n trackClick({ actionType: 'dismiss' });\n }, [trackClick]);\n \n return {\n ...visibility,\n trackClick,\n trackPrimaryAction,\n trackSecondaryAction,\n trackDismiss,\n };\n}"]}
@@ -9,3 +9,4 @@ export interface UseDashboardResult {
9
9
  locale: string;
10
10
  }
11
11
  export declare function useDashboard(): UseDashboardResult;
12
+ //# sourceMappingURL=useDashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../src/hooks/useDashboard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,IAAI,kBAAkB,CAoBjD"}
@@ -1,13 +1,22 @@
1
- import { useDashboardContext } from "../provider/DashboardProvider";
1
+ import { useSDK } from "../core/SDKManager";
2
+ import SDKManager from "../core/SDKManager";
2
3
  export function useDashboard() {
3
- const { state, refresh, isInitialized, locale } = useDashboardContext();
4
+ const sdk = useSDK({});
5
+ // Get dashboard data from SDK
6
+ const dashboardData = SDKManager.getDashboardData();
4
7
  return {
5
- data: state.data,
6
- loading: state.loading,
7
- error: state.error,
8
- refresh,
9
- isInitialized,
10
- lastFetch: state.lastFetch,
11
- locale,
8
+ data: dashboardData || null,
9
+ loading: sdk.dashboardLoading || false,
10
+ error: sdk.dashboardError || null,
11
+ refresh: async () => {
12
+ // Trigger a refresh through SDK
13
+ if (SDKManager.getDashboardEngine()) {
14
+ await SDKManager.getDashboardEngine().refresh();
15
+ }
16
+ },
17
+ isInitialized: sdk.initialized,
18
+ lastFetch: dashboardData ? new Date() : null,
19
+ locale: sdk.locale,
12
20
  };
13
21
  }
22
+ //# sourceMappingURL=useDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDashboard.js","sourceRoot":"","sources":["../../src/hooks/useDashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,UAAU,MAAM,oBAAoB,CAAC;AAa5C,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEvB,8BAA8B;IAC9B,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;IAEpD,OAAO;QACL,IAAI,EAAE,aAAa,IAAI,IAAI;QAC3B,OAAO,EAAE,GAAG,CAAC,gBAAgB,IAAI,KAAK;QACtC,KAAK,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;QACjC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,gCAAgC;YAChC,IAAI,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBACpC,MAAM,UAAU,CAAC,kBAAkB,EAAG,CAAC,OAAO,EAAE,CAAC;YACnD,CAAC;QACH,CAAC;QACD,aAAa,EAAE,GAAG,CAAC,WAAW;QAC9B,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC5C,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC","sourcesContent":["import { useSDK } from \"../core/SDKManager\";\nimport SDKManager from \"../core/SDKManager\";\nimport { DashboardData } from \"../types\";\n\nexport interface UseDashboardResult {\n data: DashboardData | null;\n loading: boolean;\n error: Error | null;\n refresh: () => Promise<void>;\n isInitialized: boolean;\n lastFetch: Date | null;\n locale: string;\n}\n\nexport function useDashboard(): UseDashboardResult {\n const sdk = useSDK({});\n \n // Get dashboard data from SDK\n const dashboardData = SDKManager.getDashboardData();\n \n return {\n data: dashboardData || null,\n loading: sdk.dashboardLoading || false,\n error: sdk.dashboardError || null,\n refresh: async () => {\n // Trigger a refresh through SDK\n if (SDKManager.getDashboardEngine()) {\n await SDKManager.getDashboardEngine()!.refresh();\n }\n },\n isInitialized: sdk.initialized,\n lastFetch: dashboardData ? new Date() : null,\n locale: sdk.locale,\n };\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  import type { FloatingCardData } from "../components/FloatingCard";
2
+ import { type UseSDKOptions } from "../core/SDKManager";
2
3
  export type { FloatingCardData } from "../components/FloatingCard";
3
- interface UseFloatingCardsOptions {
4
+ interface UseFloatingCardsOptions extends UseSDKOptions {
4
5
  shopId?: string;
5
6
  autoFetch?: boolean;
6
7
  currentRoute?: string;
7
- locale?: string;
8
8
  }
9
9
  interface UseFloatingCardsReturn {
10
10
  cards: FloatingCardData[];
@@ -17,6 +17,7 @@ interface UseFloatingCardsReturn {
17
17
  }
18
18
  /**
19
19
  * Hook to fetch and manage floating cards (campaigns)
20
+ * Now uses SDK-managed campaigns data
20
21
  */
21
22
  export declare function useFloatingCards(options?: UseFloatingCardsOptions): UseFloatingCardsReturn;
22
23
  /**
@@ -30,3 +31,4 @@ export declare function useVisibleFloatingCards(options?: UseFloatingCardsOption
30
31
  resetDismissedCards: () => void;
31
32
  hasDismissedCards: boolean;
32
33
  };
34
+ //# sourceMappingURL=useFloatingCards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFloatingCards.d.ts","sourceRoot":"","sources":["../../src/hooks/useFloatingCards.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEhE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,UAAU,uBAAwB,SAAQ,aAAa;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,uBAA4B,GACpC,sBAAsB,CAkHxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,uBAA4B,GACpC;IACD,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CA2EA"}