@greatapps/common 1.1.776 → 1.1.777

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.
@@ -15,8 +15,7 @@ function loadClarityScript() {
15
15
  const t = document.createElement("script");
16
16
  t.async = true;
17
17
  t.src = src;
18
- const y = document.getElementsByTagName("script")[0];
19
- y?.parentNode?.insertBefore(t, y);
18
+ document.head.appendChild(t);
20
19
  } catch {
21
20
  }
22
21
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/embeds/ClarityEmbed.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { useAuth } from '../../providers/auth.provider';\n\nconst CLARITY_PROJECT_ID = 'rc99jr00nn';\nconst CLARITY_SCRIPT_BASE = 'https://www.clarity.ms/tag/';\nconst CLARITY_LOAD_DELAY = 800;\n\ndeclare global {\n interface Window {\n clarity?: (...args: unknown[]) => void;\n }\n}\n\nfunction loadClarityScript() {\n try {\n const win = window as any;\n win.clarity =\n win.clarity ||\n function (...args: unknown[]) {\n (win.clarity.q = win.clarity.q || []).push(args);\n };\n\n const src = CLARITY_SCRIPT_BASE + CLARITY_PROJECT_ID;\n if (document.querySelector(`script[src=\"${src}\"]`)) return;\n\n const t = document.createElement('script');\n t.async = true;\n t.src = src;\n const y = document.getElementsByTagName('script')[0];\n y?.parentNode?.insertBefore(t, y);\n } catch {}\n}\n\nfunction identifyClarityUser(user: { id?: number; email?: string; name?: string; last_name?: string }) {\n try {\n if (!window.clarity) return;\n\n const fullName = `${user.name ?? ''} ${user.last_name ?? ''}`.trim();\n window.clarity('identify', String(user.id ?? ''), undefined, undefined, fullName || undefined);\n\n if (user.email) window.clarity('set', 'email', user.email);\n } catch {}\n}\n\nexport function ClarityEmbed() {\n const { user } = useAuth();\n const scriptLoadedRef = useRef(false);\n\n useEffect(() => {\n if (!user || scriptLoadedRef.current) return;\n\n const timeout = setTimeout(() => {\n try {\n loadClarityScript();\n scriptLoadedRef.current = true;\n } catch {}\n }, CLARITY_LOAD_DELAY);\n\n return () => clearTimeout(timeout);\n }, [user]);\n\n useEffect(() => {\n if (!user || !scriptLoadedRef.current) return;\n identifyClarityUser(user);\n }, [user]);\n\n return null;\n}\n"],"mappings":";AAEA,SAAS,WAAW,cAAc;AAClC,SAAS,eAAe;AAExB,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAQ3B,SAAS,oBAAoB;AAC3B,MAAI;AACF,UAAM,MAAM;AACZ,QAAI,UACF,IAAI,WACJ,YAAa,MAAiB;AAC5B,OAAC,IAAI,QAAQ,IAAI,IAAI,QAAQ,KAAK,CAAC,GAAG,KAAK,IAAI;AAAA,IACjD;AAEF,UAAM,MAAM,sBAAsB;AAClC,QAAI,SAAS,cAAc,eAAe,GAAG,IAAI,EAAG;AAEpD,UAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,MAAE,QAAQ;AACV,MAAE,MAAM;AACR,UAAM,IAAI,SAAS,qBAAqB,QAAQ,EAAE,CAAC;AACnD,OAAG,YAAY,aAAa,GAAG,CAAC;AAAA,EAClC,QAAQ;AAAA,EAAC;AACX;AAEA,SAAS,oBAAoB,MAA0E;AACrG,MAAI;AACF,QAAI,CAAC,OAAO,QAAS;AAErB,UAAM,WAAW,GAAG,KAAK,QAAQ,EAAE,IAAI,KAAK,aAAa,EAAE,GAAG,KAAK;AACnE,WAAO,QAAQ,YAAY,OAAO,KAAK,MAAM,EAAE,GAAG,QAAW,QAAW,YAAY,MAAS;AAE7F,QAAI,KAAK,MAAO,QAAO,QAAQ,OAAO,SAAS,KAAK,KAAK;AAAA,EAC3D,QAAQ;AAAA,EAAC;AACX;AAEO,SAAS,eAAe;AAC7B,QAAM,EAAE,KAAK,IAAI,QAAQ;AACzB,QAAM,kBAAkB,OAAO,KAAK;AAEpC,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ,gBAAgB,QAAS;AAEtC,UAAM,UAAU,WAAW,MAAM;AAC/B,UAAI;AACF,0BAAkB;AAClB,wBAAgB,UAAU;AAAA,MAC5B,QAAQ;AAAA,MAAC;AAAA,IACX,GAAG,kBAAkB;AAErB,WAAO,MAAM,aAAa,OAAO;AAAA,EACnC,GAAG,CAAC,IAAI,CAAC;AAET,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ,CAAC,gBAAgB,QAAS;AACvC,wBAAoB,IAAI;AAAA,EAC1B,GAAG,CAAC,IAAI,CAAC;AAET,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/embeds/ClarityEmbed.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { useAuth } from '../../providers/auth.provider';\n\nconst CLARITY_PROJECT_ID = 'rc99jr00nn';\nconst CLARITY_SCRIPT_BASE = 'https://www.clarity.ms/tag/';\nconst CLARITY_LOAD_DELAY = 800;\n\ndeclare global {\n interface Window {\n clarity?: (...args: unknown[]) => void;\n }\n}\n\nfunction loadClarityScript() {\n try {\n const win = window as any;\n win.clarity =\n win.clarity ||\n function (...args: unknown[]) {\n (win.clarity.q = win.clarity.q || []).push(args);\n };\n\n const src = CLARITY_SCRIPT_BASE + CLARITY_PROJECT_ID;\n if (document.querySelector(`script[src=\"${src}\"]`)) return;\n\n const t = document.createElement('script');\n t.async = true;\n t.src = src;\n document.head.appendChild(t);\n } catch {}\n}\n\nfunction identifyClarityUser(user: { id?: number; email?: string; name?: string; last_name?: string }) {\n try {\n if (!window.clarity) return;\n\n const fullName = `${user.name ?? ''} ${user.last_name ?? ''}`.trim();\n window.clarity('identify', String(user.id ?? ''), undefined, undefined, fullName || undefined);\n\n if (user.email) window.clarity('set', 'email', user.email);\n } catch {}\n}\n\nexport function ClarityEmbed() {\n const { user } = useAuth();\n const scriptLoadedRef = useRef(false);\n\n useEffect(() => {\n if (!user || scriptLoadedRef.current) return;\n\n const timeout = setTimeout(() => {\n try {\n loadClarityScript();\n scriptLoadedRef.current = true;\n } catch {}\n }, CLARITY_LOAD_DELAY);\n\n return () => clearTimeout(timeout);\n }, [user]);\n\n useEffect(() => {\n if (!user || !scriptLoadedRef.current) return;\n identifyClarityUser(user);\n }, [user]);\n\n return null;\n}\n"],"mappings":";AAEA,SAAS,WAAW,cAAc;AAClC,SAAS,eAAe;AAExB,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,MAAM,qBAAqB;AAQ3B,SAAS,oBAAoB;AAC3B,MAAI;AACF,UAAM,MAAM;AACZ,QAAI,UACF,IAAI,WACJ,YAAa,MAAiB;AAC5B,OAAC,IAAI,QAAQ,IAAI,IAAI,QAAQ,KAAK,CAAC,GAAG,KAAK,IAAI;AAAA,IACjD;AAEF,UAAM,MAAM,sBAAsB;AAClC,QAAI,SAAS,cAAc,eAAe,GAAG,IAAI,EAAG;AAEpD,UAAM,IAAI,SAAS,cAAc,QAAQ;AACzC,MAAE,QAAQ;AACV,MAAE,MAAM;AACR,aAAS,KAAK,YAAY,CAAC;AAAA,EAC7B,QAAQ;AAAA,EAAC;AACX;AAEA,SAAS,oBAAoB,MAA0E;AACrG,MAAI;AACF,QAAI,CAAC,OAAO,QAAS;AAErB,UAAM,WAAW,GAAG,KAAK,QAAQ,EAAE,IAAI,KAAK,aAAa,EAAE,GAAG,KAAK;AACnE,WAAO,QAAQ,YAAY,OAAO,KAAK,MAAM,EAAE,GAAG,QAAW,QAAW,YAAY,MAAS;AAE7F,QAAI,KAAK,MAAO,QAAO,QAAQ,OAAO,SAAS,KAAK,KAAK;AAAA,EAC3D,QAAQ;AAAA,EAAC;AACX;AAEO,SAAS,eAAe;AAC7B,QAAM,EAAE,KAAK,IAAI,QAAQ;AACzB,QAAM,kBAAkB,OAAO,KAAK;AAEpC,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ,gBAAgB,QAAS;AAEtC,UAAM,UAAU,WAAW,MAAM;AAC/B,UAAI;AACF,0BAAkB;AAClB,wBAAgB,UAAU;AAAA,MAC5B,QAAQ;AAAA,MAAC;AAAA,IACX,GAAG,kBAAkB;AAErB,WAAO,MAAM,aAAa,OAAO;AAAA,EACnC,GAAG,CAAC,IAAI,CAAC;AAET,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ,CAAC,gBAAgB,QAAS;AACvC,wBAAoB,IAAI;AAAA,EAC1B,GAAG,CAAC,IAAI,CAAC;AAET,SAAO;AACT;","names":[]}
@@ -50,12 +50,11 @@ function initFrillLoader() {
50
50
  function loadFrillScript() {
51
51
  try {
52
52
  if (document.querySelector(`script[src="${FRILL_SCRIPT_URL}"]`)) return;
53
- const anchor = document.getElementsByTagName("script")[0];
54
53
  const script = document.createElement("script");
55
54
  script.type = "text/javascript";
56
55
  script.async = true;
57
56
  script.src = FRILL_SCRIPT_URL;
58
- anchor?.parentNode?.insertBefore(script, anchor);
57
+ document.head.appendChild(script);
59
58
  } catch {
60
59
  }
61
60
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/embeds/FrillEmbed.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { useAuth } from '../../providers/auth.provider';\nimport { useIsDefaultWhitelabel, useWhitelabel } from '../../providers/whitelabel.provider';\nimport { useActiveSubscription } from '../../modules/subscriptions/hooks/find-active-subscription.hook';\n\nconst V4_WHITELABEL_ID = 367568;\n\nconst PROFILE_LABELS: Record<string, string> = {\n owner: 'Proprietário',\n admin: 'Administrador',\n editor: 'Colaborador',\n viewer: 'Visualizador',\n};\n\nconst FRILL_SCRIPT_URL = 'https://widget.frill.co/v2/container.js';\nconst FRILL_KEY = '2f77f232-a120-438e-8ef6-01912ffd1b99';\n\nconst SURVEYS = [{ key: '7f59dbf6-b665-458a-80e2-778de47efe1c' }];\nconst NOVIDADES_WIDGET_KEY = '4a5ba13b-1150-49fe-aa15-f9a2da0ba909';\nconst WIDGETS = [\n { key: NOVIDADES_WIDGET_KEY },\n { key: '720c0912-e6a4-495c-835e-3ff1f59d6dfc' },\n];\n\nfunction initFrillLoader() {\n try {\n const win = window as any;\n if (win.Frill) return;\n\n let counter = 0;\n const queue: Record<number, any> = {};\n\n win.Frill = function (action: string, params: any) {\n let instance: any;\n const id = counter++;\n const promise: any = new Promise((resolve, reject) => {\n queue[id] = {\n params: [action, params],\n resolve: (f: any) => {\n instance = f;\n resolve(f);\n },\n reject,\n };\n });\n promise.destroy = () => {\n delete queue[id];\n instance?.destroy();\n };\n return promise;\n };\n win.Frill.q = queue;\n } catch {}\n}\n\nfunction loadFrillScript() {\n try {\n if (document.querySelector(`script[src=\"${FRILL_SCRIPT_URL}\"]`)) return;\n const anchor = document.getElementsByTagName('script')[0];\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.src = FRILL_SCRIPT_URL;\n anchor?.parentNode?.insertBefore(script, anchor);\n } catch {}\n}\n\nexport function FrillEmbed() {\n const { user } = useAuth();\n const { whitelabel } = useWhitelabel();\n const { data: subscriptionData } = useActiveSubscription();\n const containerRef = useRef<any>(null);\n const novidadesWidgetRef = useRef<any>(null);\n\n const isMainWhitelabel = useIsDefaultWhitelabel();\n const subscription = subscriptionData?.data?.[0] ?? null;\n const isV4 = whitelabel?.id === V4_WHITELABEL_ID;\n\n useEffect(() => {\n if (!user || (!isMainWhitelabel && !isV4)) return;\n\n let containerPromise: any = null;\n let novidadesWidgetPromise: any = null;\n\n try {\n initFrillLoader();\n\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n loadFrillScript();\n } else {\n document.addEventListener('DOMContentLoaded', loadFrillScript);\n }\n\n const userData: Record<string, any> = {\n id: String(user.id ?? ''),\n };\n if (user.email) userData.email = user.email;\n if (user.name || user.last_name) {\n userData.name = `${user.name ?? ''} ${user.last_name ?? ''}`.trim();\n }\n userData.attributes = isV4\n ? { company: 'V4' }\n : { profile: PROFILE_LABELS[user.profile ?? ''] ?? user.profile ?? '', plan: subscription?.plan_name ?? '' };\n\n const config: Record<string, any> = { key: FRILL_KEY, user: userData };\n if (!isV4) {\n config.surveys = SURVEYS;\n config.widgets = WIDGETS;\n }\n\n const win = window as any;\n containerPromise = win.Frill('container', config);\n win.Frill('identify', userData);\n\n containerPromise.then((widget: any) => {\n containerRef.current = widget;\n (window as any).__frillContainer = widget;\n }).catch(() => {});\n\n if (!isV4) {\n novidadesWidgetPromise = win.Frill('widget', { key: NOVIDADES_WIDGET_KEY });\n novidadesWidgetPromise.then((widget: any) => {\n novidadesWidgetRef.current = widget;\n (window as any).__frillNovidadesWidget = widget;\n }).catch(() => {});\n }\n } catch {}\n\n return () => {\n try {\n // Destroy via promise — handles both pending and resolved containers\n containerPromise?.destroy();\n novidadesWidgetPromise?.destroy();\n containerRef.current = null;\n novidadesWidgetRef.current = null;\n (window as any).__frillContainer = null;\n (window as any).__frillNovidadesWidget = null;\n document.removeEventListener('DOMContentLoaded', loadFrillScript);\n } catch {}\n };\n }, [user, isMainWhitelabel, isV4, subscription?.plan_name]);\n\n return null;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/embeds/FrillEmbed.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef } from 'react';\nimport { useAuth } from '../../providers/auth.provider';\nimport { useIsDefaultWhitelabel, useWhitelabel } from '../../providers/whitelabel.provider';\nimport { useActiveSubscription } from '../../modules/subscriptions/hooks/find-active-subscription.hook';\n\nconst V4_WHITELABEL_ID = 367568;\n\nconst PROFILE_LABELS: Record<string, string> = {\n owner: 'Proprietário',\n admin: 'Administrador',\n editor: 'Colaborador',\n viewer: 'Visualizador',\n};\n\nconst FRILL_SCRIPT_URL = 'https://widget.frill.co/v2/container.js';\nconst FRILL_KEY = '2f77f232-a120-438e-8ef6-01912ffd1b99';\n\nconst SURVEYS = [{ key: '7f59dbf6-b665-458a-80e2-778de47efe1c' }];\nconst NOVIDADES_WIDGET_KEY = '4a5ba13b-1150-49fe-aa15-f9a2da0ba909';\nconst WIDGETS = [\n { key: NOVIDADES_WIDGET_KEY },\n { key: '720c0912-e6a4-495c-835e-3ff1f59d6dfc' },\n];\n\nfunction initFrillLoader() {\n try {\n const win = window as any;\n if (win.Frill) return;\n\n let counter = 0;\n const queue: Record<number, any> = {};\n\n win.Frill = function (action: string, params: any) {\n let instance: any;\n const id = counter++;\n const promise: any = new Promise((resolve, reject) => {\n queue[id] = {\n params: [action, params],\n resolve: (f: any) => {\n instance = f;\n resolve(f);\n },\n reject,\n };\n });\n promise.destroy = () => {\n delete queue[id];\n instance?.destroy();\n };\n return promise;\n };\n win.Frill.q = queue;\n } catch {}\n}\n\nfunction loadFrillScript() {\n try {\n if (document.querySelector(`script[src=\"${FRILL_SCRIPT_URL}\"]`)) return;\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.src = FRILL_SCRIPT_URL;\n document.head.appendChild(script);\n } catch {}\n}\n\nexport function FrillEmbed() {\n const { user } = useAuth();\n const { whitelabel } = useWhitelabel();\n const { data: subscriptionData } = useActiveSubscription();\n const containerRef = useRef<any>(null);\n const novidadesWidgetRef = useRef<any>(null);\n\n const isMainWhitelabel = useIsDefaultWhitelabel();\n const subscription = subscriptionData?.data?.[0] ?? null;\n const isV4 = whitelabel?.id === V4_WHITELABEL_ID;\n\n useEffect(() => {\n if (!user || (!isMainWhitelabel && !isV4)) return;\n\n let containerPromise: any = null;\n let novidadesWidgetPromise: any = null;\n\n try {\n initFrillLoader();\n\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n loadFrillScript();\n } else {\n document.addEventListener('DOMContentLoaded', loadFrillScript);\n }\n\n const userData: Record<string, any> = {\n id: String(user.id ?? ''),\n };\n if (user.email) userData.email = user.email;\n if (user.name || user.last_name) {\n userData.name = `${user.name ?? ''} ${user.last_name ?? ''}`.trim();\n }\n userData.attributes = isV4\n ? { company: 'V4' }\n : { profile: PROFILE_LABELS[user.profile ?? ''] ?? user.profile ?? '', plan: subscription?.plan_name ?? '' };\n\n const config: Record<string, any> = { key: FRILL_KEY, user: userData };\n if (!isV4) {\n config.surveys = SURVEYS;\n config.widgets = WIDGETS;\n }\n\n const win = window as any;\n containerPromise = win.Frill('container', config);\n win.Frill('identify', userData);\n\n containerPromise.then((widget: any) => {\n containerRef.current = widget;\n (window as any).__frillContainer = widget;\n }).catch(() => {});\n\n if (!isV4) {\n novidadesWidgetPromise = win.Frill('widget', { key: NOVIDADES_WIDGET_KEY });\n novidadesWidgetPromise.then((widget: any) => {\n novidadesWidgetRef.current = widget;\n (window as any).__frillNovidadesWidget = widget;\n }).catch(() => {});\n }\n } catch {}\n\n return () => {\n try {\n // Destroy via promise — handles both pending and resolved containers\n containerPromise?.destroy();\n novidadesWidgetPromise?.destroy();\n containerRef.current = null;\n novidadesWidgetRef.current = null;\n (window as any).__frillContainer = null;\n (window as any).__frillNovidadesWidget = null;\n document.removeEventListener('DOMContentLoaded', loadFrillScript);\n } catch {}\n };\n }, [user, isMainWhitelabel, isV4, subscription?.plan_name]);\n\n return null;\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greatapps/common",
3
- "version": "1.1.776",
3
+ "version": "1.1.777",
4
4
  "description": "Shared library for GreatApps frontend applications",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./src/index.ts",
@@ -28,8 +28,7 @@ function loadClarityScript() {
28
28
  const t = document.createElement('script');
29
29
  t.async = true;
30
30
  t.src = src;
31
- const y = document.getElementsByTagName('script')[0];
32
- y?.parentNode?.insertBefore(t, y);
31
+ document.head.appendChild(t);
33
32
  } catch {}
34
33
  }
35
34
 
@@ -58,12 +58,11 @@ function initFrillLoader() {
58
58
  function loadFrillScript() {
59
59
  try {
60
60
  if (document.querySelector(`script[src="${FRILL_SCRIPT_URL}"]`)) return;
61
- const anchor = document.getElementsByTagName('script')[0];
62
61
  const script = document.createElement('script');
63
62
  script.type = 'text/javascript';
64
63
  script.async = true;
65
64
  script.src = FRILL_SCRIPT_URL;
66
- anchor?.parentNode?.insertBefore(script, anchor);
65
+ document.head.appendChild(script);
67
66
  } catch {}
68
67
  }
69
68