@remkoj/optimizely-one-nextjs 1.0.3

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 (139) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +82 -0
  3. package/dist/api/graph-info-service.d.ts +14 -0
  4. package/dist/api/graph-info-service.js +37 -0
  5. package/dist/api/graph-info-service.js.map +1 -0
  6. package/dist/api/index.d.ts +20 -0
  7. package/dist/api/index.js +42 -0
  8. package/dist/api/index.js.map +1 -0
  9. package/dist/api/profile-api-service.d.ts +21 -0
  10. package/dist/api/profile-api-service.js +80 -0
  11. package/dist/api/profile-api-service.js.map +1 -0
  12. package/dist/api/responses.d.ts +2 -0
  13. package/dist/api/responses.js +2 -0
  14. package/dist/api/responses.js.map +1 -0
  15. package/dist/api/types.d.ts +18 -0
  16. package/dist/api/types.js +2 -0
  17. package/dist/api/types.js.map +1 -0
  18. package/dist/api.d.ts +5 -0
  19. package/dist/api.js +4 -0
  20. package/dist/api.js.map +1 -0
  21. package/dist/client-types.d.ts +133 -0
  22. package/dist/client-types.js +2 -0
  23. package/dist/client-types.js.map +1 -0
  24. package/dist/client.d.ts +3 -0
  25. package/dist/client.js +3 -0
  26. package/dist/client.js.map +1 -0
  27. package/dist/components/context.d.ts +88 -0
  28. package/dist/components/context.js +71 -0
  29. package/dist/components/context.js.map +1 -0
  30. package/dist/components/index.d.ts +4 -0
  31. package/dist/components/index.js +5 -0
  32. package/dist/components/index.js.map +1 -0
  33. package/dist/components/optimizely-one-gadget/audiences-panel.d.ts +7 -0
  34. package/dist/components/optimizely-one-gadget/audiences-panel.js +53 -0
  35. package/dist/components/optimizely-one-gadget/audiences-panel.js.map +1 -0
  36. package/dist/components/optimizely-one-gadget/exp-panel.d.ts +3 -0
  37. package/dist/components/optimizely-one-gadget/exp-panel.js +42 -0
  38. package/dist/components/optimizely-one-gadget/exp-panel.js.map +1 -0
  39. package/dist/components/optimizely-one-gadget/graph-panel.d.ts +7 -0
  40. package/dist/components/optimizely-one-gadget/graph-panel.js +27 -0
  41. package/dist/components/optimizely-one-gadget/graph-panel.js.map +1 -0
  42. package/dist/components/optimizely-one-gadget/ids-panel.d.ts +7 -0
  43. package/dist/components/optimizely-one-gadget/ids-panel.js +23 -0
  44. package/dist/components/optimizely-one-gadget/ids-panel.js.map +1 -0
  45. package/dist/components/optimizely-one-gadget/index.d.ts +33 -0
  46. package/dist/components/optimizely-one-gadget/index.js +39 -0
  47. package/dist/components/optimizely-one-gadget/index.js.map +1 -0
  48. package/dist/components/optimizely-one-gadget/interests-panel.d.ts +7 -0
  49. package/dist/components/optimizely-one-gadget/interests-panel.js +23 -0
  50. package/dist/components/optimizely-one-gadget/interests-panel.js.map +1 -0
  51. package/dist/components/optimizely-one-gadget/logo.d.ts +6 -0
  52. package/dist/components/optimizely-one-gadget/logo.js +19 -0
  53. package/dist/components/optimizely-one-gadget/logo.js.map +1 -0
  54. package/dist/components/page-activator.d.ts +4 -0
  55. package/dist/components/page-activator.js +32 -0
  56. package/dist/components/page-activator.js.map +1 -0
  57. package/dist/components/use-test-mode.d.ts +11 -0
  58. package/dist/components/use-test-mode.js +81 -0
  59. package/dist/components/use-test-mode.js.map +1 -0
  60. package/dist/env-vars.d.ts +13 -0
  61. package/dist/env-vars.js +15 -0
  62. package/dist/env-vars.js.map +1 -0
  63. package/dist/products/client-types.d.ts +3 -0
  64. package/dist/products/client-types.js +2 -0
  65. package/dist/products/client-types.js.map +1 -0
  66. package/dist/products/content-recs/api.d.ts +19 -0
  67. package/dist/products/content-recs/api.js +42 -0
  68. package/dist/products/content-recs/api.js.map +1 -0
  69. package/dist/products/content-recs/client.d.ts +10 -0
  70. package/dist/products/content-recs/client.js +29 -0
  71. package/dist/products/content-recs/client.js.map +1 -0
  72. package/dist/products/content-recs/helpers.d.ts +20 -0
  73. package/dist/products/content-recs/helpers.js +27 -0
  74. package/dist/products/content-recs/helpers.js.map +1 -0
  75. package/dist/products/content-recs/index.d.ts +2 -0
  76. package/dist/products/content-recs/index.js +3 -0
  77. package/dist/products/content-recs/index.js.map +1 -0
  78. package/dist/products/data-platform/api.d.ts +41 -0
  79. package/dist/products/data-platform/api.js +116 -0
  80. package/dist/products/data-platform/api.js.map +1 -0
  81. package/dist/products/data-platform/client.d.ts +14 -0
  82. package/dist/products/data-platform/client.js +59 -0
  83. package/dist/products/data-platform/client.js.map +1 -0
  84. package/dist/products/data-platform/helpers.d.ts +22 -0
  85. package/dist/products/data-platform/helpers.js +31 -0
  86. package/dist/products/data-platform/helpers.js.map +1 -0
  87. package/dist/products/data-platform/index.d.ts +10 -0
  88. package/dist/products/data-platform/index.js +10 -0
  89. package/dist/products/data-platform/index.js.map +1 -0
  90. package/dist/products/index.d.ts +3 -0
  91. package/dist/products/index.js +4 -0
  92. package/dist/products/index.js.map +1 -0
  93. package/dist/products/types.d.ts +2 -0
  94. package/dist/products/types.js +2 -0
  95. package/dist/products/types.js.map +1 -0
  96. package/dist/products/web-experimentation/client.d.ts +11 -0
  97. package/dist/products/web-experimentation/client.js +42 -0
  98. package/dist/products/web-experimentation/client.js.map +1 -0
  99. package/dist/products/web-experimentation/helpers.d.ts +13 -0
  100. package/dist/products/web-experimentation/helpers.js +14 -0
  101. package/dist/products/web-experimentation/helpers.js.map +1 -0
  102. package/dist/products/web-experimentation/index.d.ts +1 -0
  103. package/dist/products/web-experimentation/index.js +2 -0
  104. package/dist/products/web-experimentation/index.js.map +1 -0
  105. package/dist/server-components/index.d.ts +1 -0
  106. package/dist/server-components/index.js +2 -0
  107. package/dist/server-components/index.js.map +1 -0
  108. package/dist/server-components/scripts/footer.d.ts +6 -0
  109. package/dist/server-components/scripts/footer.js +11 -0
  110. package/dist/server-components/scripts/footer.js.map +1 -0
  111. package/dist/server-components/scripts/header.d.ts +6 -0
  112. package/dist/server-components/scripts/header.js +12 -0
  113. package/dist/server-components/scripts/header.js.map +1 -0
  114. package/dist/server-components/scripts/index.d.ts +18 -0
  115. package/dist/server-components/scripts/index.js +19 -0
  116. package/dist/server-components/scripts/index.js.map +1 -0
  117. package/dist/server-components/scripts/snippets/optimizely-content-recs.d.ts +6 -0
  118. package/dist/server-components/scripts/snippets/optimizely-content-recs.js +19 -0
  119. package/dist/server-components/scripts/snippets/optimizely-content-recs.js.map +1 -0
  120. package/dist/server-components/scripts/snippets/optimizely-data-patform.d.ts +5 -0
  121. package/dist/server-components/scripts/snippets/optimizely-data-patform.js +37 -0
  122. package/dist/server-components/scripts/snippets/optimizely-data-patform.js.map +1 -0
  123. package/dist/server-components/scripts/snippets/optimizely-web-experimentation.d.ts +5 -0
  124. package/dist/server-components/scripts/snippets/optimizely-web-experimentation.js +9 -0
  125. package/dist/server-components/scripts/snippets/optimizely-web-experimentation.js.map +1 -0
  126. package/dist/server.d.ts +6 -0
  127. package/dist/server.js +11 -0
  128. package/dist/server.js.map +1 -0
  129. package/dist/styles.css +1 -0
  130. package/dist/types.d.ts +2 -0
  131. package/dist/types.js +2 -0
  132. package/dist/types.js.map +1 -0
  133. package/dist/utils/env.d.ts +11 -0
  134. package/dist/utils/env.js +49 -0
  135. package/dist/utils/env.js.map +1 -0
  136. package/dist/utils/session.d.ts +11 -0
  137. package/dist/utils/session.js +28 -0
  138. package/dist/utils/session.js.map +1 -0
  139. package/package.json +78 -0
@@ -0,0 +1,71 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { createContext, useContext, useState, useMemo } from 'react';
4
+ import WebExperimenationService from '../products/web-experimentation/client';
5
+ import DataPlatformService from '../products/data-platform/client';
6
+ import ContentRecsService from '../products/content-recs/client';
7
+ function isActiveWithActivatePage(toTest) {
8
+ return (toTest.isActive && toTest.activatePage && typeof (toTest.activatePage) == 'function') ?? false;
9
+ }
10
+ function isActiveWithTrackPage(toTest) {
11
+ return (toTest.isActive && toTest.trackPage && typeof (toTest.trackPage) == 'function') ?? false;
12
+ }
13
+ function isActiveWithEventTracker(toTest) {
14
+ return (toTest.isActive && toTest.trackEvent && typeof (toTest.trackEvent) == 'function') ?? false;
15
+ }
16
+ const OptimizelyOneContext = createContext({ services: [], setDebug: () => { }, addService: () => { }, removeService: () => { } });
17
+ OptimizelyOneContext.displayName = "Optimizely One: Context";
18
+ function useOptimizelyOne() {
19
+ const ctx = useContext(OptimizelyOneContext);
20
+ const result = useMemo(() => {
21
+ return {
22
+ ...ctx,
23
+ getActivatePageServices: () => (ctx.services || []).filter(isActiveWithActivatePage),
24
+ getTrackPageServices: () => (ctx.services || []).filter(isActiveWithTrackPage),
25
+ getService: (code) => (ctx.services || []).filter(s => s.code == code)[0],
26
+ track: (event) => {
27
+ if (ctx.disableTracking) {
28
+ if (ctx.debug)
29
+ console.log('🔐 [Optimizely One] Tracking disabled, ignored event');
30
+ return;
31
+ }
32
+ if (ctx.debug) {
33
+ console.groupCollapsed(`📢 [Optimizely One] Tracking ${event.event} event`);
34
+ console.log('Event:', event);
35
+ }
36
+ (ctx.services || []).filter(isActiveWithEventTracker).forEach(service => service.trackEvent(event));
37
+ if (ctx.debug) {
38
+ console.groupEnd();
39
+ }
40
+ }
41
+ };
42
+ }, [ctx]);
43
+ return result;
44
+ }
45
+ const OptimizelyOneProvider = ({ value, children }) => {
46
+ const [ctxDebug, setCtxDebug] = useState(value?.debug ?? false);
47
+ const [services, setServices] = useState([
48
+ new WebExperimenationService(),
49
+ new DataPlatformService(),
50
+ new ContentRecsService(),
51
+ ...(value?.services || [])
52
+ ].sort((a, b) => a.order - b.order));
53
+ services.forEach(service => service.debug = ctxDebug);
54
+ return _jsx(OptimizelyOneContext.Provider, { value: {
55
+ disableAutotracking: value?.disableAutotracking,
56
+ disableTracking: value?.disableTracking,
57
+ services,
58
+ debug: ctxDebug,
59
+ setDebug: debugEnabled => { services.forEach(service => service.debug = debugEnabled); setCtxDebug(debugEnabled); },
60
+ addService: service => setServices(list => list.concat([service]).sort((a, b) => a.order - b.order)),
61
+ removeService: service => {
62
+ const idx = services.indexOf(service);
63
+ if (idx == -1)
64
+ return;
65
+ setServices(list => list.slice(0, idx).concat(list.slice(idx + 1)));
66
+ },
67
+ }, children: children });
68
+ };
69
+ OptimizelyOneProvider.displayName = "Optimizely One: State & Context provider";
70
+ export { OptimizelyOneProvider, useOptimizelyOne };
71
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/components/context.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { OptimizelyOneGadget } from './optimizely-one-gadget';
2
+ export { OptimizelyOneProvider, useOptimizelyOne } from './context';
3
+ export { PageActivator } from './page-activator';
4
+ export { useIsInTestMode } from './use-test-mode';
@@ -0,0 +1,5 @@
1
+ export { OptimizelyOneGadget } from './optimizely-one-gadget';
2
+ export { OptimizelyOneProvider, useOptimizelyOne } from './context';
3
+ export { PageActivator } from './page-activator';
4
+ export { useIsInTestMode } from './use-test-mode';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { type FunctionComponent } from 'react';
2
+ export type AudiencesPanelProps = {
3
+ servicePrefix?: string;
4
+ refreshInterval?: number;
5
+ };
6
+ export declare const AudiencesPanel: FunctionComponent<AudiencesPanelProps>;
7
+ export default AudiencesPanel;
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect } from 'react';
3
+ import { ArrowPathIcon, UserGroupIcon } from '@heroicons/react/20/solid';
4
+ import useSWRInfinite from 'swr/infinite';
5
+ const buildGetKey = (servicePrefix, pageSize) => {
6
+ const serviceURL = `${servicePrefix}?scope=audiences&limit=${pageSize}`;
7
+ const getKey = (pageIndex, previousPageData) => {
8
+ if (previousPageData && previousPageData.audiencesPageCount < pageIndex)
9
+ return null;
10
+ return `${serviceURL}&page=${pageIndex}`;
11
+ };
12
+ return getKey;
13
+ };
14
+ export const AudiencesPanel = ({ servicePrefix = '/api/me', refreshInterval = 0 }) => {
15
+ // Prepare data fetching
16
+ const pageSize = 50;
17
+ const getKey = buildGetKey(servicePrefix, pageSize);
18
+ const config = {
19
+ initialSize: 1,
20
+ revalidateAll: true,
21
+ revalidateOnMount: true,
22
+ revalidateIfStale: true,
23
+ refreshInterval: refreshInterval > 0 ? Math.max(refreshInterval, 10000) : 0, //Minimum refresh interval for audiences is 10 seconds
24
+ fetcher: async (key) => {
25
+ return fetch(key).then(r => {
26
+ if (!r.ok)
27
+ throw new Error(`${r.status}: ${r.statusText}`);
28
+ return r.json();
29
+ });
30
+ },
31
+ };
32
+ // Fetch results
33
+ const { data: profiles, isLoading, isValidating, error, size, setSize } = useSWRInfinite(getKey, config);
34
+ // Post-process the received values
35
+ const audiencePages = !profiles ? 1 : (profiles[0]?.audiencesPageCount || 1);
36
+ const audienceCount = !profiles ? 0 : (profiles[0]?.audiencesCount || 0);
37
+ const hasMore = size < audiencePages;
38
+ // Automatically correct to the correct size, based upon the response
39
+ useEffect(() => {
40
+ let newSize = !profiles ? -1 : (profiles[0]?.audiencesPageCount || -1);
41
+ if (newSize >= 1 && size != newSize)
42
+ setSize(newSize);
43
+ }, [size, profiles]);
44
+ // Handle error
45
+ if (error)
46
+ return _jsx("p", { className: 'oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: "There was an error loading your profile information" });
47
+ // Show list
48
+ return _jsxs(_Fragment, { children: [(isValidating && !isLoading) && _jsxs("p", { className: 'oo-text-[14px] oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: [_jsx(ArrowPathIcon, { className: 'oo-inline-block oo-h-4 oo-w-4 oo-ml-2 oo-animate-spin' }), " Refreshing audiences"] }), hasMore && _jsxs("p", { className: 'oo-text-[14px] oo-border oo-border-amber-800 oo-bg-amber-200 oo-text-amber-800 oo-p-1 oo-my-1 oo-rounded-md', children: ["Showing results for the first ", size * pageSize, " audiences of ", audienceCount, ", ", _jsx("span", { onClick: () => setSize(size + 1), className: "oo-cursor-pointer oo-underline oo-text-blue-800", children: "load more" })] }), isLoading && _jsxs("p", { className: 'oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: [_jsx(ArrowPathIcon, { className: 'oo-inline-block oo-h-4 oo-w-4 oo-mr-2 oo-animate-spin' }), "Loading the audiences..."] }), _jsx("ul", { className: 'oo-text-[14px] oo-grid oo-grid-cols-1 oo-divide-y oo-divide-slate-200', children: (profiles || []).map(profile => (profile?.audiences ?? []).map(a => {
49
+ return _jsxs("li", { className: 'oo-py-1', children: [_jsx(UserGroupIcon, { className: 'oo-inline-block oo-h-4 oo-w-4 oo-mr-2' }), a.name] }, "audience-" + a.id);
50
+ })).flat() }), hasMore && _jsx("p", { onClick: () => setSize(size + 1), className: 'oo-text-center oo-inline-block oo-cursor-pointer oo-px-2 oo-py-1 oo-border oo-border-b-0 oo-border-slate-300 oo-rounded-md oo-bg-blue-500 oo-text-white', children: "Load more" }), _jsxs("p", { className: 'oo-text-[12px] oo-m-2 oo-mt-3 oo-p-1 md:oo-p-2 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800', children: [_jsx("span", { className: 'oo-font-bold', children: "Please note:" }), " Interest based audiences are updated once per hour"] })] });
51
+ };
52
+ export default AudiencesPanel;
53
+ //# sourceMappingURL=audiences-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audiences-panel.js","sourceRoot":"","sources":["../../../src/components/optimizely-one-gadget/audiences-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAA0B,MAAM,OAAO,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,cAA4E,MAAM,cAAc,CAAA;AAQvG,MAAM,WAAW,GAAmF,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE;IAC5H,MAAM,UAAU,GAAG,GAAI,aAAc,0BAA2B,QAAS,EAAE,CAAA;IAC3E,MAAM,MAAM,GAAsC,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE;QAC9E,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,kBAAkB,GAAG,SAAS;YAAE,OAAO,IAAI,CAAA;QACpF,OAAO,GAAI,UAAW,SAAU,SAAU,EAAE,CAAA;IAChD,CAAC,CAAA;IACD,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAA4C,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE,eAAe,GAAG,CAAC,EAAC,EAAE,EAAE;IAEzH,wBAAwB;IACxB,MAAM,QAAQ,GAAG,EAAE,CAAA;IACnB,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;IACnD,MAAM,MAAM,GAA0C;QAClD,WAAW,EAAE,CAAC;QACd,aAAa,EAAE,IAAI;QACnB,iBAAiB,EAAE,IAAI;QACvB,iBAAiB,EAAE,IAAI;QACvB,eAAe,EAAE,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,sDAAsD;QACnI,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACnB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACvB,IAAI,CAAC,CAAC,CAAC,EAAE;oBACL,MAAM,IAAI,KAAK,CAAC,GAAI,CAAC,CAAC,MAAO,KAAM,CAAC,CAAC,UAAW,EAAE,CAAC,CAAA;gBACvD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;YACnB,CAAC,CAAC,CAAA;QACN,CAAC;KACJ,CAAA;IAED,gBAAgB;IAChB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CAAa,MAAM,EAAE,MAAM,CAAC,CAAA;IAEpH,mCAAmC;IACnC,MAAM,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,IAAI,CAAC,CAAC,CAAA;IAC5E,MAAM,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,CAAC,CAAA;IACxE,MAAM,OAAO,GAAG,IAAI,GAAG,aAAa,CAAA;IAEpC,qEAAqE;IACrE,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAA;QACtE,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO;YAC/B,OAAO,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC,EAAE,CAAE,IAAI,EAAE,QAAQ,CAAE,CAAC,CAAA;IAEtB,eAAe;IACf,IAAI,KAAK;QACL,OAAO,YAAG,SAAS,EAAC,iHAAiH,oEAAwD,CAAA;IAEjM,YAAY;IACZ,OAAO,8BACD,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,aAAG,SAAS,EAAC,gIAAgI,aAAC,KAAC,aAAa,IAAC,SAAS,EAAC,uDAAuD,GAAG,6BAAyB,EAC1R,OAAO,IAAI,aAAG,SAAS,EAAC,6GAA6G,+CAAiC,IAAI,GAAG,QAAQ,oBAAkB,aAAa,QAAI,eAAM,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,SAAS,EAAC,iDAAiD,0BAAiB,IAAI,EAChV,SAAS,IAAI,aAAG,SAAS,EAAC,iHAAiH,aAAC,KAAC,aAAa,IAAC,SAAS,EAAC,uDAAuD,GAAG,gCAA4B,EAC7P,aAAI,SAAS,EAAC,uEAAuE,YAC/E,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBACjE,OAAO,cAAI,SAAS,EAAC,SAAS,aAAwB,KAAC,aAAa,IAAC,SAAS,EAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC,IAAI,KAA7F,WAAW,GAAC,CAAC,CAAC,EAAE,CAAoF,CAAA;gBAC5I,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GACT,EACH,OAAO,IAAI,YAAG,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,SAAS,EAAC,yJAAyJ,0BAAc,EACnO,aAAG,SAAS,EAAC,8HAA8H,aAAC,eAAM,SAAS,EAAC,cAAc,6BAAoB,2DAAuD,IACtP,CAAA;AACP,CAAC,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { type FunctionComponent } from 'react';
2
+ export declare const ExpPanel: FunctionComponent<{}>;
3
+ export default ExpPanel;
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect } from 'react';
3
+ import Link from 'next/link';
4
+ import { useOptimizelyOne } from '../context';
5
+ export const ExpPanel = () => {
6
+ const opti = useOptimizelyOne();
7
+ const webEx = opti.getService('webex')?.getBrowserApi();
8
+ const data = webEx?.get ? webEx.get('data') : undefined;
9
+ const [pagesObject, setPagesObject] = useState({});
10
+ const [experimentStates, setExperimentStates] = useState({});
11
+ const [campaignStates, setCampaignStates] = useState({});
12
+ useEffect(() => {
13
+ setPagesObject(webEx?.get ? webEx?.get('state').getPageStates({ isActive: true }) : {});
14
+ setExperimentStates(webEx?.get ? webEx?.get('state').getExperimentStates({ isActive: true }) : {});
15
+ setCampaignStates(webEx?.get ? webEx?.get('state').getCampaignStates({ isActive: true }) : {});
16
+ const intervalId = setInterval(() => {
17
+ setPagesObject(webEx?.get ? webEx?.get('state').getPageStates({ isActive: true }) : {});
18
+ setExperimentStates(webEx?.get ? webEx?.get('state').getExperimentStates({ isActive: true }) : {});
19
+ setCampaignStates(webEx?.get ? webEx?.get('state').getCampaignStates({ isActive: true }) : {});
20
+ }, 2000);
21
+ return () => clearInterval(intervalId);
22
+ }, [webEx]);
23
+ // Process pages
24
+ const pagesArray = [];
25
+ for (const pageId of Object.getOwnPropertyNames(pagesObject))
26
+ pagesArray.push(pagesObject[pageId]);
27
+ // Process experimentns
28
+ const experimentsArray = [];
29
+ for (const experimentId of Object.getOwnPropertyNames(experimentStates))
30
+ experimentsArray.push(experimentStates[experimentId]);
31
+ // Process campaigns
32
+ const campaignsArray = [];
33
+ for (const campaignId of Object.getOwnPropertyNames(campaignStates))
34
+ campaignsArray.push(campaignStates[campaignId]);
35
+ const filteredCampaigns = campaignsArray.filter(c => {
36
+ const expIds = experimentsArray.map(ed => ed.id);
37
+ return !expIds.includes(c.experiment.id);
38
+ });
39
+ return _jsxs("dl", { className: 'oo-text-[14px]', children: [_jsx("dt", { className: 'oo-font-bold oo-pt-1', children: "Script information:" }), _jsxs("dd", { children: ["Account id: ", data?.accountId, "; Project id: ", _jsx(Link, { href: `https://app.optimizely.com/v2/projects/${data?.projectId ?? ''}`, target: "_blank", className: "oo-underline oo-text-blue-800", children: data?.projectId }), "; Revision: ", data?.revision] }), _jsx("dt", { className: 'oo-font-bold oo-pt-1', children: "Active page(s):" }), _jsx("dd", { children: _jsx("ul", { children: pagesArray.map(p => _jsx("li", { children: _jsx(Link, { href: `https://app.optimizely.com/v2/projects/${data?.projectId ?? ''}/implementation/pages/${p.id}`, target: "_blank", className: "oo-underline oo-text-blue-800", children: p.name || p.apiName }) }, `exp-page-${data?.projectId}-${p.id}`)) }) }), _jsx("dt", { className: 'oo-font-bold oo-pt-1', children: "Active experiment(s):" }), _jsx("dd", { children: _jsx("ul", { children: experimentsArray.map(e => _jsxs("li", { children: [_jsx(Link, { href: `https://app.optimizely.com/v2/projects/${data?.projectId ?? ''}/experiments/${e.id}`, target: "_blank", className: "oo-underline oo-text-blue-800", children: e.experimentName || e.id }), ", variant: ", _jsx(Link, { href: `https://app.optimizely.com/v2/projects/${data?.projectId ?? ''}/experiments/${e.id}/variations/${e.variation.id}`, target: "_blank", className: "oo-underline oo-text-blue-800", children: e.variation.name || e.variation.id })] }, `exp-${data?.projectId}-${e.id}`)) }) }), _jsx("dt", { className: 'oo-font-bold oo-pt-1', children: "Active Personalization Campaigns(s):" }), _jsx("dd", { children: _jsx("ul", { children: filteredCampaigns.map(e => _jsxs("li", { children: [_jsx(Link, { href: `https://app.optimizely.com/v2/projects/${data?.projectId ?? ''}/campaigns/${e.id}`, target: "_blank", className: "oo-underline oo-text-blue-800", children: e.campaignName || e.id }), "; Audience(s): ", e.audiences.map(a => _jsxs("span", { children: [_jsx(Link, { href: `https://app.optimizely.com/v2/projects/${data?.projectId ?? ''}/audiences/${a.id}`, target: "_blank", className: "oo-underline oo-text-blue-800", children: a.name }), ", "] }, "exp-pers-aud-" + a.id))] }, `campaign-${data?.projectId}-${e.id}`)) }) })] });
40
+ };
41
+ export default ExpPanel;
42
+ //# sourceMappingURL=exp-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exp-panel.js","sourceRoot":"","sources":["../../../src/components/optimizely-one-gadget/exp-panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type FunctionComponent } from 'react';
2
+ export type GraphPanelProps = {
3
+ servicePrefix?: string;
4
+ refreshInterval?: number;
5
+ };
6
+ export declare const GraphPanel: FunctionComponent<GraphPanelProps>;
7
+ export default GraphPanel;
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import useSWR from 'swr';
3
+ import Link from 'next/link';
4
+ export const GraphPanel = ({ servicePrefix = '/api/me', refreshInterval = 30000 }) => {
5
+ const id = `${servicePrefix}/graph`;
6
+ const { data, isLoading, error } = useSWR(id, {
7
+ revalidateOnMount: true,
8
+ refreshInterval,
9
+ fetcher: (key) => fetch(key).then(r => {
10
+ if (!r.ok)
11
+ throw new Error(`${r.status}: ${r.statusText}`);
12
+ return r.json();
13
+ })
14
+ });
15
+ if (isLoading)
16
+ return _jsx("p", { className: 'oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: "Loading Optimizely Graph information..." });
17
+ if (error)
18
+ return _jsx("p", { className: 'oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: "There was an error loading Optimizely Graph information" });
19
+ return _jsxs(_Fragment, { children: [_jsxs("dl", { className: 'oo-text-[14px]', children: [_jsx("dt", { className: 'oo-font-bold', children: "Publishing changes to:" }), _jsx("dd", { className: 'oo-pl-2', children: _jsx("ul", { children: (data?.hooks || []).map(hook => _jsxs("li", { children: [hook.method && _jsxs("span", { className: 'oo-text-amber-800', children: ["(", hook.method?.toLowerCase() ?? '', ") "] }), hook.url, hook.hasQueryParams && _jsx(_Fragment, { children: "?..." })] }, `webhook-${hook.url}`)) }) }), _jsx("dt", { className: 'oo-font-bold oo-pt-4', children: "Exposing content from:" }), _jsx("dd", { className: 'oo-pl-2', children: _jsx("ul", { children: (data?.sources || []).map(source => _jsxs("li", { children: [updateLabel(source.label), ", available languages: ", source.languages.join(", ")] }, `source-${source.label}`)) }) })] }), _jsx("p", { className: 'oo-pt-4 oo-text-[14px]', children: _jsx(Link, { className: 'oo-underline oo-text-blue-800', href: "https://cg.optimizely.com/app/portal/", target: '_new', children: "Login to Optimizely Graph" }) })] });
20
+ };
21
+ function updateLabel(label) {
22
+ if (label == "default")
23
+ return "Optimizely CMS";
24
+ return label;
25
+ }
26
+ export default GraphPanel;
27
+ //# sourceMappingURL=graph-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-panel.js","sourceRoot":"","sources":["../../../src/components/optimizely-one-gadget/graph-panel.tsx"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,KAAK,CAAA;AAExB,OAAO,IAAI,MAAM,WAAW,CAAA;AAO5B,MAAM,CAAC,MAAM,UAAU,GAAwC,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE,eAAe,GAAG,KAAK,EAAC,EAAE,EAAE;IAErH,MAAM,EAAE,GAAG,GAAI,aAAc,QAAQ,CAAA;IACrC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAc,EAAE,EAAE;QACvD,iBAAiB,EAAE,IAAI;QACvB,eAAe;QACf,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACL,MAAM,IAAI,KAAK,CAAC,GAAI,CAAC,CAAC,MAAO,KAAM,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;YACtD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,SAAS;QACT,OAAO,YAAG,SAAS,EAAC,iHAAiH,wDAA4C,CAAA;IAErL,IAAI,KAAK;QACL,OAAO,YAAG,SAAS,EAAC,iHAAiH,wEAA4D,CAAA;IAErM,OAAO,8BACH,cAAI,SAAS,EAAC,gBAAgB,aAC1B,aAAI,SAAS,EAAC,cAAc,uCAA4B,EACxD,aAAI,SAAS,EAAC,SAAS,YACnB,uBACM,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAoC,IAAI,CAAC,MAAM,IAAI,gBAAM,SAAS,EAAC,mBAAmB,kBAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAW,EAAG,IAAI,CAAC,GAAG,EAAI,IAAI,CAAC,cAAc,IAAI,qCAAS,KAA3K,WAAY,IAAI,CAAC,GAAI,EAAE,CAA0J,CAAC,GAC5N,GACJ,EACL,aAAI,SAAS,EAAC,sBAAsB,uCAA4B,EAChE,aAAI,SAAS,EAAC,SAAS,YACnB,uBACM,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,yBAAsC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA2B,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAA5G,UAAW,MAAM,CAAC,KAAK,EAAE,CAAyF,CAAC,GACjK,GACJ,IACJ,EACL,YAAG,SAAS,EAAC,wBAAwB,YAAC,KAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,uCAAuC,EAAC,MAAM,EAAC,MAAM,0CAAiC,GAAI,IACtL,CAAA;AACP,CAAC,CAAA;AAED,SAAS,WAAW,CAAC,KAAa;IAE9B,IAAI,KAAK,IAAI,SAAS;QAClB,OAAO,gBAAgB,CAAA;IAC3B,OAAO,KAAK,CAAA;AAChB,CAAC;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { type FunctionComponent } from 'react';
2
+ export type IdsPanelProps = {
3
+ servicePrefix?: string;
4
+ refreshInterval?: number;
5
+ };
6
+ export declare const IdsPanel: FunctionComponent<IdsPanelProps>;
7
+ export default IdsPanel;
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { usePathname } from 'next/navigation';
3
+ import useSWR from 'swr';
4
+ export const IdsPanel = ({ servicePrefix = '/api/me', refreshInterval = 2000 }) => {
5
+ const currentPath = usePathname();
6
+ const ids = `${servicePrefix}?scope=ids`;
7
+ const { data: profile, isLoading, error } = useSWR(ids, {
8
+ revalidateOnMount: true,
9
+ refreshInterval,
10
+ fetcher: () => fetch(ids).then(r => {
11
+ if (!r.ok)
12
+ throw new Error(`${r.status}: ${r.statusText}`);
13
+ return r.json();
14
+ })
15
+ });
16
+ if (isLoading)
17
+ return _jsx("p", { className: 'oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: "Loading your profile information..." });
18
+ if (error)
19
+ return _jsx("p", { className: 'oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: "There was an error loading your profile information" });
20
+ return _jsx(_Fragment, { children: _jsxs("dl", { className: 'oo-text-[14px]', children: [_jsx("dt", { className: 'oo-font-bold', children: "Frontend:" }), _jsx("dd", { children: profile?.ids.frontend ?? 'n/a' }), _jsx("dt", { className: 'oo-font-bold oo-pt-1', children: "Web Experimentation:" }), _jsx("dd", { children: profile?.ids.webExperimentation ?? 'n/a' }), _jsx("dt", { className: 'oo-font-bold oo-pt-1', children: "Content Intelligence:" }), _jsx("dd", { children: profile?.ids.contentIntelligence ?? 'n/a' }), _jsx("dt", { className: 'oo-font-bold oo-pt-1', children: "Data Platform:" }), _jsx("dd", { children: profile?.ids.dataPlatform ?? 'n/a' }), _jsx("dt", { className: 'oo-font-bold oo-pt-1', children: "Current path:" }), _jsx("dd", { children: currentPath })] }) });
21
+ };
22
+ export default IdsPanel;
23
+ //# sourceMappingURL=ids-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids-panel.js","sourceRoot":"","sources":["../../../src/components/optimizely-one-gadget/ids-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,MAAM,MAAM,KAAK,CAAA;AAQxB,MAAM,CAAC,MAAM,QAAQ,GAAsC,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE,eAAe,GAAG,IAAI,EAAC,EAAE,EAAE;IAEhH,MAAM,WAAW,GAAG,WAAW,EAAE,CAAA;IAEjC,MAAM,GAAG,GAAG,GAAI,aAAc,YAAY,CAAA;IAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAa,GAAG,EAAE;QAChE,iBAAiB,EAAE,IAAI;QACvB,eAAe;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC/B,IAAI,CAAC,CAAC,CAAC,EAAE;gBACL,MAAM,IAAI,KAAK,CAAC,GAAI,CAAC,CAAC,MAAO,KAAM,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;YACtD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC;KACL,CAAC,CAAA;IAEF,IAAI,SAAS;QACT,OAAO,YAAG,SAAS,EAAC,iHAAiH,oDAAwC,CAAA;IAEjL,IAAI,KAAK;QACL,OAAO,YAAG,SAAS,EAAC,iHAAiH,oEAAwD,CAAA;IAEjM,OAAO,4BACH,cAAI,SAAS,EAAC,gBAAgB,aAC1B,aAAI,SAAS,EAAC,cAAc,0BAAe,EAC3C,uBAAM,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK,GAAO,EAC3C,aAAI,SAAS,EAAC,sBAAsB,qCAA0B,EAC9D,uBAAM,OAAO,EAAE,GAAG,CAAC,kBAAkB,IAAI,KAAK,GAAO,EACrD,aAAI,SAAS,EAAC,sBAAsB,sCAA2B,EAC/D,uBAAM,OAAO,EAAE,GAAG,CAAC,mBAAmB,IAAI,KAAK,GAAO,EACtD,aAAI,SAAS,EAAC,sBAAsB,+BAAoB,EACxD,uBAAM,OAAO,EAAE,GAAG,CAAC,YAAY,IAAI,KAAK,GAAO,EAC/C,aAAI,SAAS,EAAC,sBAAsB,8BAAmB,EACvD,uBAAM,WAAW,GAAO,IACvB,GACN,CAAA;AACP,CAAC,CAAA;AAED,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { type FunctionComponent } from 'react';
2
+ import '../../styles.css';
3
+ export type OptimizelyOneGadgetProps = {
4
+ /**
5
+ * The API Route at which the companion API has been installed in your
6
+ * Next.JS Application.
7
+ *
8
+ * If not set, defaults to "/api/me"
9
+ */
10
+ servicePrefix?: string;
11
+ /**
12
+ * The interval, in milliseconds, between refreshes of the content in the
13
+ * debug panels.
14
+ *
15
+ * If not set, defaults to 0 (no auto refresh)
16
+ */
17
+ refreshInterval?: number;
18
+ /**
19
+ * If set, bypasses the enabled/disabled detection allowing the application
20
+ * to take control of the visibility of the gadget.
21
+ */
22
+ show?: boolean;
23
+ };
24
+ /**
25
+ * Add an Optimizely One Debug helper to the page, which can be triggered by
26
+ * the "test cookie" feature of the Optimizely Web Experimentation browser
27
+ * extension.
28
+ *
29
+ * @param param0 The component properties
30
+ * @returns The component JSX
31
+ */
32
+ export declare const OptimizelyOneGadget: FunctionComponent<OptimizelyOneGadgetProps>;
33
+ export default OptimizelyOneGadget;
@@ -0,0 +1,39 @@
1
+ 'use client';
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Popover, Tab } from '@headlessui/react';
4
+ import { ChevronUpIcon, UserGroupIcon, TagIcon, RocketLaunchIcon, IdentificationIcon, Square3Stack3DIcon } from '@heroicons/react/20/solid';
5
+ import OptiLogo from './logo';
6
+ import { useIsInTestMode } from '../use-test-mode';
7
+ // Import the Panel CSS
8
+ import '../../styles.css';
9
+ // Prepare panel imports
10
+ import dynamic from 'next/dynamic';
11
+ const Panels = {
12
+ Ids: dynamic(() => import('./ids-panel'), { ssr: false }),
13
+ Experiments: dynamic(() => import('./exp-panel'), { ssr: false }),
14
+ Interests: dynamic(() => import('./interests-panel'), { ssr: false }),
15
+ Audiences: dynamic(() => import('./audiences-panel'), { ssr: false }),
16
+ Graph: dynamic(() => import('./graph-panel'), { ssr: false })
17
+ };
18
+ /**
19
+ * Add an Optimizely One Debug helper to the page, which can be triggered by
20
+ * the "test cookie" feature of the Optimizely Web Experimentation browser
21
+ * extension.
22
+ *
23
+ * @param param0 The component properties
24
+ * @returns The component JSX
25
+ */
26
+ export const OptimizelyOneGadget = ({ servicePrefix = "/api/me", refreshInterval = 0, show = undefined }) => {
27
+ const inTestMode = useIsInTestMode();
28
+ const forceHidden = show != undefined && show == false;
29
+ const forceShown = show != undefined && show == true;
30
+ if (forceHidden || (!forceShown && !inTestMode))
31
+ return _jsx(_Fragment, {});
32
+ console.groupCollapsed(`🔎 [Optimizely One Gadget] Initializing Optimizely Demo Gadget`);
33
+ console.log(`Optimizely One Demo API: ${servicePrefix}`);
34
+ console.log(`Refresh interval: ${refreshInterval == 0 ? 'DISABLED' : refreshInterval + 'ms'}`);
35
+ console.groupEnd();
36
+ return _jsxs(Popover, { className: "oo-gadget md:oo-fixed md:oo-bottom-0 oo-z-[500]", children: [_jsxs(Popover.Button, { className: 'oo-fixed oo-bottom-0 oo-right-0 oo-w-full oo-h-[50px] oo-flex oo-flex-row oo-justify-between oo-p-2 oo-border-t oo-border-slate-500 oo-bg-slate-100 oo-text-slate-800 md:oo-w-[350px] md:oo-right-4 md:oo-rounded-t-md md:oo-border-x oo-z-[500] oo-p-[10px]', children: [_jsx(OptiLogo, { className: 'oo-w-auto oo-h-full' }), _jsx(ChevronUpIcon, { className: "oo-ui-open:oo-rotate-180 oo-ui-open:oo-transform oo-h-full oo-w-auto oo-inline-block" })] }), _jsxs(Popover.Panel, { className: "oo-fixed oo-bottom-[50px] oo-right-0 oo-w-full oo-top-0 md:oo-border md:oo-border-slate-300 oo-bg-white md:oo-right-4 md:oo-bottom-[55px] md:oo-w-[600px] oo-z-[501] oo-max-w-full oo-flex oo-flex-col oo-justify-stretch md:oo-h-[350px] md:oo-top-auto md:oo-rounded-md md:oo-shadow-xl md:oo-overflow-hidden", children: [_jsxs("div", { className: "oo-border-b oo-border-slate-300 oo-bg-slate-100 oo-text-slate-800 oo-text-[18px] oo-font-bold oo-p-1 oo-flex-none md:oo-p-2", children: [_jsx(IdentificationIcon, { className: 'oo-inline-block oo-h-[24px] oo-w-[24px] oo-mr-2 oo-text-blue-500' }), "My Profile"] }), _jsxs(Tab.Group, { children: [_jsxs(Tab.List, { className: "oo-flex-none oo-flex oo-justify-between md:oo-justify-start oo-gap-2 oo-p-1 md:oo-p-2 oo-pb-0 md:oo-pb-0 oo-border-b oo-border-slate-300 oo-text-[14px]", children: [_jsxs(Tab, { as: "div", className: 'oo-text-center oo-inline-block oo-cursor-pointer oo-px-2 oo-py-1 oo-border oo-border-b-0 oo-border-slate-300 oo-rounded-t-md oo-ui-selected:oo-bg-blue-500 oo-ui-selected:oo-text-white', children: [_jsx(TagIcon, { className: 'oo-inline-block oo-h-[18px] oo-w-[18px] oo-mr-2' }), "Interests"] }), _jsxs(Tab, { as: "div", className: 'oo-text-center oo-inline-block oo-cursor-pointer oo-px-2 oo-py-1 oo-border oo-border-b-0 oo-border-slate-300 oo-rounded-t-md oo-ui-selected:oo-bg-blue-500 oo-ui-selected:oo-text-white', children: [_jsx(UserGroupIcon, { className: 'oo-inline-block oo-h-[18px] oo-w-[18px] oo-mr-2' }), "Audiences"] }), _jsxs(Tab, { as: "div", className: 'oo-text-center oo-inline-block oo-cursor-pointer oo-px-2 oo-py-1 oo-border oo-border-b-0 oo-border-slate-300 oo-rounded-t-md oo-ui-selected:oo-bg-blue-500 oo-ui-selected:oo-text-white', children: [_jsx(RocketLaunchIcon, { className: 'oo-inline-block oo-h-[18px] oo-w-[18px] oo-mr-2' }), "Experiments"] }), _jsxs(Tab, { as: "div", className: 'oo-text-center oo-inline-block oo-cursor-pointer oo-px-2 oo-py-1 oo-border oo-border-b-0 oo-border-slate-300 oo-rounded-t-md oo-ui-selected:oo-bg-blue-500 oo-ui-selected:oo-text-white', children: [_jsx(IdentificationIcon, { className: 'oo-inline-block oo-h-[18px] oo-w-[18px] oo-mr-2' }), "Identifiers"] }), _jsxs(Tab, { as: "div", className: 'oo-text-center oo-inline-block oo-cursor-pointer oo-px-2 oo-py-1 oo-border oo-border-b-0 oo-border-slate-300 oo-rounded-t-md oo-ui-selected:oo-bg-blue-500 oo-ui-selected:oo-text-white', children: [_jsx(Square3Stack3DIcon, { className: 'oo-inline-block oo-h-[18px] oo-w-[18px] oo-mr-2' }), "Graph"] })] }), _jsxs(Tab.Panels, { className: "oo-flex-1 md:oo-h-24 oo-overscroll-contain oo-overflow-y-auto", children: [_jsx(Tab.Panel, { as: "div", className: 'oo-p-1 md:oo-p-2', children: _jsx(Panels.Interests, { servicePrefix: servicePrefix, refreshInterval: refreshInterval }) }), _jsx(Tab.Panel, { as: "div", className: 'oo-p-1 md:oo-p-2', children: _jsx(Panels.Audiences, { servicePrefix: servicePrefix, refreshInterval: refreshInterval }) }), _jsx(Tab.Panel, { as: "div", className: 'oo-p-1 md:oo-p-2', children: _jsx(Panels.Experiments, {}) }), _jsx(Tab.Panel, { as: "div", className: 'oo-p-1 md:oo-p-2', children: _jsx(Panels.Ids, { servicePrefix: servicePrefix, refreshInterval: refreshInterval }) }), _jsx(Tab.Panel, { as: "div", className: 'oo-p-1 md:oo-p-2', children: _jsx(Panels.Graph, { servicePrefix: servicePrefix }) })] })] })] })] });
37
+ };
38
+ export default OptimizelyOneGadget;
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/optimizely-one-gadget/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type FunctionComponent } from 'react';
2
+ export type InterestsPanelProps = {
3
+ servicePrefix?: string;
4
+ refreshInterval?: number;
5
+ };
6
+ export declare const InterestsPanel: FunctionComponent<InterestsPanelProps>;
7
+ export default InterestsPanel;
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { TagIcon, ArrowPathIcon } from '@heroicons/react/20/solid';
3
+ import useSWR from 'swr';
4
+ export const InterestsPanel = ({ servicePrefix = '/api/me', refreshInterval = 2000 }) => {
5
+ const topics = `${servicePrefix}?scope=topics`;
6
+ const { data: profile, isLoading, isValidating, error } = useSWR(topics, {
7
+ revalidateOnMount: true,
8
+ fetcher: () => fetch(topics).then(r => {
9
+ if (!r.ok)
10
+ throw new Error(`${r.status}: ${r.statusText}`);
11
+ return r.json();
12
+ }),
13
+ refreshInterval
14
+ });
15
+ if (error)
16
+ return _jsx("p", { className: 'oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: "There was an error loading your profile information" });
17
+ const contentTopics = (profile?.contentTopics ?? []).map(t => _jsxs("li", { className: 'oo-py-1', children: [_jsx(TagIcon, { className: 'oo-inline-block oo-h-[16px] oo-w-[16px] oo-mr-2' }), t] }, "topic-" + t));
18
+ if (contentTopics.length == 0)
19
+ contentTopics.push(_jsx("li", { className: 'oo-py-1', children: _jsx("div", { className: "oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2", children: "No topics inferred from behaviour" }) }, "no-topics"));
20
+ return _jsxs(_Fragment, { children: [(isValidating && !isLoading) && _jsxs("p", { className: 'oo-text-[14px] oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: [_jsx(ArrowPathIcon, { className: 'oo-inline-block oo-h-4 oo-w-4 oo-ml-2 oo-animate-spin' }), " Refreshing interests"] }), isLoading && _jsxs("p", { className: 'oo-m-2 md:oo-m-4 oo-rounded-md oo-bg-amber-200 oo-border oo-border-amber-800 oo-text-amber-800 oo-p-1 md:oo-p-2', children: [_jsx(ArrowPathIcon, { className: 'oo-inline-block oo-h-4 oo-w-4 oo-mr-2 oo-animate-spin' }), " Loading interests"] }), _jsx("ul", { className: 'oo-text-[14px] oo-grid oo-grid-cols-1 oo-divide-y oo-divide-slate-200', children: contentTopics })] });
21
+ };
22
+ export default InterestsPanel;
23
+ //# sourceMappingURL=interests-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interests-panel.js","sourceRoot":"","sources":["../../../src/components/optimizely-one-gadget/interests-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,MAAM,MAAM,KAAK,CAAA;AASxB,MAAM,CAAC,MAAM,cAAc,GAA4C,CAAC,EAAE,aAAa,GAAG,SAAS,EAAE,eAAe,GAAG,IAAI,EAAE,EAAE,EAAE;IAE7H,MAAM,MAAM,GAAG,GAAI,aAAc,eAAe,CAAA;IAChD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,CAAa,MAAM,EAAE;QACjF,iBAAiB,EAAE,IAAI;QACvB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACL,MAAM,IAAI,KAAK,CAAC,GAAI,CAAC,CAAC,MAAO,KAAM,CAAC,CAAC,UAAW,EAAE,CAAC,CAAA;YACvD,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC;QACF,eAAe;KAClB,CAAC,CAAA;IAEF,IAAI,KAAK;QACL,OAAO,YAAG,SAAS,EAAC,iHAAiH,oEAAwD,CAAA;IAEjM,MAAM,aAAa,GAAmB,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAI,SAAS,EAAC,SAAS,aAAkB,KAAC,OAAO,IAAC,SAAS,EAAC,iDAAiD,GAAG,EAAE,CAAC,KAAtF,QAAQ,GAAC,CAAC,CAAmF,CAAC,CAAA;IACzM,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC;QACzB,aAAa,CAAC,IAAI,CAAC,aAAI,SAAS,EAAC,SAAS,YAAiB,cAAK,SAAS,EAAC,iHAAiH,kDAAwC,IAApL,WAAW,CAA8K,CAAC,CAAA;IAE7O,OAAO,8BACD,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,aAAG,SAAS,EAAC,gIAAgI,aAAC,KAAC,aAAa,IAAC,SAAS,EAAC,uDAAuD,GAAG,6BAAyB,EAC1R,SAAS,IAAI,aAAG,SAAS,EAAC,iHAAiH,aAAC,KAAC,aAAa,IAAC,SAAS,EAAC,uDAAuD,GAAG,0BAAsB,EACvP,aAAI,SAAS,EAAC,uEAAuE,YAC/E,aAAa,GACd,IACN,CAAA;AACP,CAAC,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,6 @@
1
+ import React, { type FunctionComponent } from 'react';
2
+ export type OptimizelyLogoProps = React.SVGProps<SVGSVGElement> & {
3
+ title?: string;
4
+ };
5
+ export declare const OptimizelyLogo: FunctionComponent<OptimizelyLogoProps>;
6
+ export default OptimizelyLogo;
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ const defaultValues = {
3
+ xmlns: "http://www.w3.org/2000/svg",
4
+ viewBox: "0 0 162 38",
5
+ fill: 'none',
6
+ "aria-hidden": true
7
+ };
8
+ export const OptimizelyLogo = props => {
9
+ const title = props.title ?? 'Optimizely';
10
+ const svgProps = {
11
+ ...defaultValues,
12
+ ...props
13
+ };
14
+ if (svgProps.title)
15
+ delete svgProps.title;
16
+ return _jsxs("svg", { ...svgProps, children: [_jsx("title", { children: title }), _jsx("path", { d: "m12.8359 20.4556v4.485c3.4221-.004 6.7029-1.3235 9.1227-3.6691s3.781-5.5257 3.7852-8.8428h-4.627c-.0027 2.128-.8761 4.1682-2.4284 5.6729-1.5524 1.5048-3.6571 2.3513-5.8525 2.354z", fill: "#3be081" }), _jsx("path", { d: "m12.8346 32.8099c-2.1796 0-4.26989-.8393-5.81108-2.3332-1.5412-1.4939-2.40703-3.5201-2.40703-5.6328 0-2.1128.86583-4.1389 2.40703-5.6329 1.54119-1.4939 3.63148-2.3332 5.81108-2.3332v-4.452c-1.6831-.0023-3.35011.3167-4.90597.9389-1.55586.6221-2.97007 1.5353-4.16187 2.6872s-2.13786 2.5202-2.784159 4.0265c-.6463 1.5064-.98018355 3.1214-.98258792 4.7528s.32671792 3.2473.96857492 4.7555c.641862 1.5081 1.583882 2.8789 2.772282 4.0342 1.1884 1.1552 2.59991 2.0723 4.15393 2.6987 1.55402.6265 3.2201.9502 4.9032.9525h.0366z", fill: "#0037ff" }), _jsx("path", { d: "m12.8359 32.81v4.452c3.3991 0 6.659-1.3088 9.0625-3.6386s3.7538-5.4897 3.7538-8.7845h-4.5981c-.0014 2.1127-.8675 4.1387-2.4083 5.6331-1.5407 1.4944-3.6302 2.3353-5.8099 2.338z", fill: "#0cf" }), _jsx("path", { d: "m12.8359 7.9711v4.452c3.3991 0 6.659-1.3088 9.0625-3.63861 2.4035-2.32979 3.7538-5.48967 3.7538-8.78449h-4.5981c-.0014 2.11278-.8675 4.13871-2.4083 5.63314-1.5407 1.49444-3.6302 2.33527-5.8099 2.33796z", fill: "#861dff" }), _jsx("path", { d: "m25.7266 7.9711v4.452c3.3991 0 6.6589-1.3088 9.0624-3.63861 2.4036-2.32979 3.7538-5.48967 3.7538-8.78449h-4.5955c-.0014 2.11321-.8679 4.13953-2.4092 5.63404-1.5413 1.4945-3.6314 2.33504-5.8115 2.33706z", fill: "#ff8110" }), _jsxs("g", { fill: "#000", children: [_jsx("path", { d: "m59.9453 18.6016h2.3671l.5571 1.2119c.2958-.2624.6234-.4888.9756-.6744.367-.1821.7483-.3355 1.1404-.4589.4864-.1487.994-.2215 1.504-.2155.7879-.0044 1.5675.1556 2.286.469.7207.3117 1.3692.7609 1.9067 1.3209.5589.5872 1.0021 1.2686 1.3078 2.0106.6472 1.632.6472 3.4386 0 5.0706-.305.7423-.7483 1.4238-1.3078 2.0106-.5376.5605-1.1861 1.0106-1.9067 1.3234-.7179.3127-1.4964.4735-2.2834.4716-.4763.0087-.951-.0546-1.4072-.1876-.3583-.1107-.708-.2463-1.0462-.4057-.3215-.1723-.6209-.3808-.8919-.6211v5.3977h-3.2015zm6.1257 9.581c.4255.0097.8485-.0669 1.2417-.225.3932-.158.748-.394 1.0417-.6928.6155-.6118.9224-1.4307.9206-2.4567.0222-.4482-.0477-.8962-.2058-1.318-.158-.4218-.401-.8088-.7148-1.1387-.2995-.2904-.6551-.5208-1.0464-.6779-.3914-.1572-.8108-.2381-1.2344-.2381s-.8431.0809-1.2344.2381c-.3913.1571-.7469.3875-1.0464.6779-.612.6135-.9181 1.4324-.9181 2.4567s.3061 1.8432.9181 2.4567c.2936.2988.6485.5348 1.0417.6928.3932.1581.8161.2347 1.2417.225z" }), _jsx("path", { d: "m80.1341 31.1524c-.5958.0069-1.1874-.0981-1.742-.3093-.5182-.2008-.9843-.5099-1.3653-.9051-.3877-.4079-.6897-.8849-.8893-1.4046-.2229-.5875-.332-1.2098-.3217-1.8356v-5.2634h-1.9486v-2.5632h.8344c1.0218 0 1.5327-.4952 1.5327-1.4857v-1.7468h2.7856v2.9714h2.7829v2.832h-2.7829v5.1289c-.0176.2134.0084.4281.0765.6318s.1769.3924.3202.5553.3183.2969.515.3942c.1967.0974.4113.1562.6314.1732.0871.0073.1746.0073.2616 0 .1202.006.2407.006.361 0 .0881-.0068.1756-.0204.2615-.0406.0768-.0194.1513-.0466.2223-.0811v2.7001c-.1434.0585-.2923.1035-.4446.1344-.3562.0876-.7234.1261-1.0907.1141z" }), _jsx("path", { d: "m86.12 17.116c-.4308.0106-.852-.1247-1.1911-.3824-.3391-.2578-.575-.622-.6672-1.0301-.0922-.408-.0349-.8345.1621-1.206.1969-.3716.5212-.665.9172-.83.3959-.1649.8388-.191 1.2524-.0738.4137.1172.7723.3703 1.0143.716s.3522.7622.3117 1.1781c-.0404.4159-.2291.8052-.5335 1.1009-.1626.1671-.3588.3001-.5766.3908-.2177.0907-.4523.1371-.6893.1365zm-1.6713 1.4857h3.2014v12.4232h-3.2014z" }), _jsx("path", { d: "m90.7109 18.6018h2.3671l.5571 1.2119c.2625-.2537.5518-.4797.8632-.6745.3022-.1808.6209-.3344.952-.4588.4-.1477.825-.2208 1.2529-.2155.5683-.014 1.1346.0719 1.6713.2535.4011.1415.7839.3278 1.1404.5552.3195.2179.5941.4923.8081.8088.306-.3118.652-.5837 1.031-.8088.381-.22.782-.4058 1.198-.5552.49-.1737 1.008-.2597 1.53-.2535 1.394 0 2.505.4335 3.342 1.2955s1.253 2.1424 1.253 3.8334v7.4235h-3.206v-7.1522c.035-.6479-.19-1.2839-.628-1.7747-.166-.1864-.368-.3392-.595-.4497-.226-.1106-.473-.1767-.727-.1946-.253-.0179-.507.0128-.748.0903s-.464.2002-.656.3613c-.07.0604-.136.1247-.198.1927-.438.4905-.663 1.1269-.625 1.7747v7.1522h-3.2045v-7.1522c.0371-.6478-.1871-1.2842-.6252-1.7747-.1659-.1864-.3682-.3393-.5952-.4499s-.4742-.1767-.7276-.1946c-.2533-.0179-.5079.0128-.749.0903s-.4641.2004-.6562.3615c-.0699.0597-.1355.1241-.1962.1927-.4378.4908-.6627 1.1268-.6277 1.7747v7.1522h-3.2015z" }), _jsx("path", { d: "m113.268 17.1154c-.432.011-.855-.1242-1.195-.3826-.341-.2583-.578-.6235-.67-1.0329-.093-.4093-.036-.8371.162-1.21.197-.3728.523-.6672.92-.8327s.841-.1916 1.256-.0739.775.3718 1.017.7187c.243.3469.353.7649.312 1.1821s-.23.8076-.536 1.1039c-.163.1671-.359.3001-.577.3908-.217.0907-.452.1372-.689.1366zm-1.671 1.4857h3.209v12.4231h-3.209z" }), _jsx("path", { d: "m117.16 28.4513 5.569-6.8809h-5.569v-2.9688h9.607v2.5632l-5.563 6.8961h5.846v2.9689h-9.89z" }), _jsx("path", { d: "m135.131 31.1517c-.849.0031-1.689-.1698-2.464-.507-.761-.3248-1.451-.7878-2.032-1.3641-.589-.5809-1.062-1.2626-1.394-2.0105-.34-.7817-.514-1.6213-.514-2.4694s.174-1.6877.514-2.4694c.332-.7479.805-1.4296 1.394-2.0105.582-.5755 1.271-1.0384 2.032-1.364.761-.322 1.581-.4916 2.411-.4986.83-.0069 1.653.1488 2.42.458.732.3014 1.395.7419 1.948 1.2956.572.5808 1.021 1.2636 1.324 2.0105.332.8211.497 1.6966.486 2.5784.001.1399-.008.2796-.026.4183-.021.1344-.039.2663-.057.393-.019.1268-.037.2789-.055.4031h-8.911c.138.5976.47 1.1366.946 1.539.557.4387 1.262.6602 1.978.6211.362.0074.724-.0379 1.072-.1343.259-.0784.507-.1874.738-.3246.21-.1339.398-.2981.557-.4867h3.343c-.186.5008-.444.9737-.767 1.4045-.35.4804-.773.9076-1.253 1.2677-.509.3775-1.072.6823-1.671.9051-.645.2344-1.33.3513-2.019.3448zm3.063-7.2865c-.133-.6934-.512-1.3199-1.072-1.7708-.559-.4509-1.264-.6978-1.991-.6978-.728 0-1.432.2469-1.992.6978-.559.4509-.938 1.0774-1.071 1.7708z" }), _jsx("path", { d: "m143.621 14.0122h3.202v17.0045h-3.202z" }), _jsx("path", { d: "m151.686 35.4717c-.147 0-.291-.0051-.432-.0152-.117-.006-.233-.0196-.348-.0406-.113-.0132-.225-.0405-.332-.0811v-2.5632c.581.0371 1.157-.1254 1.627-.4589.387-.3115.688-.7103.879-1.1612l.277-.6744-4.873-11.8755h3.343l3.202 8.0953 2.934-8.0953h3.343c-.91 2.2666-1.737 4.3176-2.48 6.1532-.316.791-.627 1.5669-.933 2.3199-.306.7529-.578 1.4451-.822 2.0663-.243.6211-.444 1.1383-.612 1.5516-.167.4132-.261.6566-.306.7302-.269.6435-.58 1.2694-.934 1.8736-.264.4627-.597.8855-.988 1.255-.326.3084-.714.5476-1.141.7022-.451.1521-.926.2259-1.404.2181z" }), _jsx("path", { d: "m48.0864 12.4258c-1.9099 0-3.777.549-5.365 1.5775s-2.8257 2.4904-3.5566 4.2008-.9222 3.5925-.5496 5.4083c.3726 1.8157 1.2924 3.4836 2.6429 4.7927s3.0711 2.2006 4.9443 2.5617c1.8733.3612 3.8149.1759 5.5794-.5326s3.2727-1.9082 4.3338-3.4476c1.0611-1.5393 1.6274-3.349 1.6274-5.2004.0004-1.2293-.2492-2.4466-.7343-3.5824-.4852-1.1359-1.1965-2.1679-2.0933-3.0371-.8967-.8693-1.9614-1.5588-3.1332-2.0291-1.1717-.4703-2.4276-.7122-3.6958-.7118zm0 15.4655c-1.2486.0145-2.4734-.3304-3.5196-.9911-1.0461-.6607-1.8665-1.6075-2.3572-2.7204-.4907-1.113-.6297-2.342-.3993-3.5315.2304-1.1896.8197-2.2861 1.6934-3.1508.8737-.8646 1.9925-1.4585 3.2146-1.7065 1.2221-.2479 2.4927-.1388 3.6508.3136 1.1581.4525 2.1516 1.2278 2.8548 2.228.7032 1.0001 1.0844 2.18 1.0954 3.3903v.0709c.0055 1.6099-.6473 3.1563-1.8155 4.3006s-2.7567 1.7931-4.4174 1.8045z" })] })] });
17
+ };
18
+ export default OptimizelyLogo;
19
+ //# sourceMappingURL=logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../../src/components/optimizely-one-gadget/logo.tsx"],"names":[],"mappings":";AAIA,MAAM,aAAa,GAAG;IAClB,KAAK,EAAE,4BAA4B;IACnC,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,IAAI;CACtB,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAA4C,KAAK,CAAC,EAAE;IAE3E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,YAAY,CAAA;IACzC,MAAM,QAAQ,GAAyB;QACnC,GAAG,aAAa;QAChB,GAAG,KAAK;KACX,CAAA;IACD,IAAI,QAAQ,CAAC,KAAK;QACd,OAAO,QAAQ,CAAC,KAAK,CAAA;IAEzB,OAAO,kBAAS,QAAQ,aACpB,0BAAS,KAAK,GAAU,EACxB,eAAM,CAAC,EAAC,oLAAoL,EAAC,IAAI,EAAC,SAAS,GAAQ,EACnN,eAAM,CAAC,EAAC,ygBAAygB,EAAC,IAAI,EAAC,SAAS,GAAQ,EACxiB,eAAM,CAAC,EAAC,iLAAiL,EAAC,IAAI,EAAC,MAAM,GAAQ,EAC7M,eAAM,CAAC,EAAC,2MAA2M,EAAC,IAAI,EAAC,SAAS,GAAQ,EAC1O,eAAM,CAAC,EAAC,2MAA2M,EAAC,IAAI,EAAC,SAAS,GAAQ,EAC1O,aAAG,IAAI,EAAC,MAAM,aACV,eAAM,CAAC,EAAC,27BAA27B,GAAQ,EAC38B,eAAM,CAAC,EAAC,okBAAokB,GAAQ,EACplB,eAAM,CAAC,EAAC,4XAA4X,GAAQ,EAC5Y,eAAM,CAAC,EAAC,u3BAAu3B,GAAQ,EACv4B,eAAM,CAAC,EAAC,iVAAiV,GAAQ,EACjW,eAAM,CAAC,EAAC,4FAA4F,GAAQ,EAC5G,eAAM,CAAC,EAAC,g7BAAg7B,GAAQ,EACh8B,eAAM,CAAC,EAAC,wCAAwC,GAAQ,EACxD,eAAM,CAAC,EAAC,giBAAgiB,GAAQ,EAChjB,eAAM,CAAC,EAAC,m0BAAm0B,GAAQ,IACn1B,IACF,CAAA;AACV,CAAC,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { type FunctionComponent, type PropsWithChildren } from 'react';
2
+ export type PageActivatorProps = PropsWithChildren<{}>;
3
+ export declare const PageActivator: FunctionComponent<PageActivatorProps>;
4
+ export default PageActivator;
@@ -0,0 +1,32 @@
1
+ 'use client';
2
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
3
+ import { useEffect, useLayoutEffect } from 'react';
4
+ import { usePathname } from 'next/navigation';
5
+ import { useOptimizelyOne } from './context';
6
+ export const PageActivator = props => {
7
+ const path = usePathname();
8
+ const opti = useOptimizelyOne();
9
+ useLayoutEffect(() => {
10
+ if (opti.debug)
11
+ console.groupCollapsed(`📑 [Optimizely One] Applying layout effects for: ${path}`);
12
+ opti.getActivatePageServices().forEach(service => service.activatePage(path));
13
+ if (opti.debug)
14
+ console.groupEnd();
15
+ }, [path, opti]);
16
+ useEffect(() => {
17
+ if (opti.disableAutotracking) {
18
+ if (opti.debug)
19
+ console.log('🔐 [Optimizely One] Automatic page tracking disabled');
20
+ return;
21
+ }
22
+ if (opti.debug)
23
+ console.groupCollapsed(`📢 [Optimizely One] Tracking page view for: ${path}`);
24
+ opti.getTrackPageServices().forEach(service => service.trackPage(path));
25
+ if (opti.debug)
26
+ console.groupEnd();
27
+ }, [path, opti]);
28
+ return _jsx(_Fragment, { children: props.children });
29
+ };
30
+ PageActivator.displayName = "Optimizely One: (Layout) Effect processor";
31
+ export default PageActivator;
32
+ //# sourceMappingURL=page-activator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-activator.js","sourceRoot":"","sources":["../../src/components/page-activator.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,EAAE,SAAS,EAAE,eAAe,EAAkD,MAAM,OAAO,CAAA;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAI5C,MAAM,CAAC,MAAM,aAAa,GAA2C,KAAK,CAAC,EAAE;IAEzE,MAAM,IAAI,GAAG,WAAW,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAA;IAE/B,eAAe,CAAC,GAAG,EAAE;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,cAAc,CAAC,oDAAqD,IAAK,EAAE,CAAC,CAAA;QAEpG,IAAI,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;QAE7E,IAAI,IAAI,CAAC,KAAK;YACV,OAAO,CAAC,QAAQ,EAAE,CAAA;IAC1B,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IAEhB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;YACnF,OAAM;QACV,CAAC;QAED,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,cAAc,CAAC,+CAAgD,IAAK,EAAE,CAAC,CAAA;QAC/F,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;QACvE,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,QAAQ,EAAE,CAAA;IACtC,CAAC,EAAE,CAAE,IAAI,EAAE,IAAI,CAAE,CAAC,CAAA;IAElB,OAAO,4BAAI,KAAK,CAAC,QAAQ,GAAK,CAAA;AAClC,CAAC,CAAA;AACD,aAAa,CAAC,WAAW,GAAG,2CAA2C,CAAA;AACvE,eAAe,aAAa,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * React hook to determine if the Optimizely Web "test cookie" from the
3
+ * Optimizely Web Google Chrome add-on has been set. This can be used to
4
+ * trigger features based upon the adding/removing of this cookie.
5
+ *
6
+ * @param pollingInterval The frequency with which to check for
7
+ * changes.
8
+ * @returns true if the cookie exists; false otherwise
9
+ */
10
+ export declare function useIsInTestMode(pollingInterval?: number): boolean;
11
+ export default useIsInTestMode;