@korsolutions/guidon 1.0.1 → 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 (143) hide show
  1. package/dist/commonjs/babel.config.js +15 -0
  2. package/dist/commonjs/babel.config.js.map +1 -0
  3. package/dist/commonjs/bob.config.js +11 -0
  4. package/dist/commonjs/bob.config.js.map +1 -0
  5. package/dist/commonjs/components/GuidonOverlay.js +206 -0
  6. package/dist/commonjs/components/GuidonOverlay.js.map +1 -0
  7. package/dist/commonjs/components/GuidonProvider.js +157 -0
  8. package/dist/commonjs/components/GuidonProvider.js.map +1 -0
  9. package/dist/commonjs/components/GuidonTarget.js +110 -0
  10. package/dist/commonjs/components/GuidonTarget.js.map +1 -0
  11. package/dist/commonjs/components/GuidonTooltip.js +422 -0
  12. package/dist/commonjs/components/GuidonTooltip.js.map +1 -0
  13. package/dist/commonjs/components/index.js +40 -0
  14. package/dist/commonjs/components/index.js.map +1 -0
  15. package/dist/commonjs/hooks/index.js +13 -0
  16. package/dist/commonjs/hooks/index.js.map +1 -0
  17. package/dist/commonjs/hooks/useGuidonRef.js +132 -0
  18. package/dist/commonjs/hooks/useGuidonRef.js.map +1 -0
  19. package/dist/commonjs/index.js +143 -0
  20. package/dist/commonjs/index.js.map +1 -0
  21. package/dist/commonjs/package.json +1 -0
  22. package/dist/commonjs/persistence/adapters.js +213 -0
  23. package/dist/commonjs/persistence/adapters.js.map +1 -0
  24. package/dist/commonjs/persistence/hooks.js +153 -0
  25. package/dist/commonjs/persistence/hooks.js.map +1 -0
  26. package/dist/commonjs/persistence/index.js +28 -0
  27. package/dist/commonjs/persistence/index.js.map +1 -0
  28. package/dist/commonjs/store.js +314 -0
  29. package/dist/commonjs/store.js.map +1 -0
  30. package/dist/commonjs/tsconfig.json +32 -0
  31. package/dist/commonjs/types.js +6 -0
  32. package/dist/commonjs/types.js.map +1 -0
  33. package/dist/module/babel.config.js +15 -0
  34. package/dist/module/babel.config.js.map +1 -0
  35. package/dist/module/bob.config.js +11 -0
  36. package/dist/module/bob.config.js.map +1 -0
  37. package/dist/module/components/GuidonOverlay.js +201 -0
  38. package/dist/module/components/GuidonOverlay.js.map +1 -0
  39. package/dist/module/components/GuidonProvider.js +152 -0
  40. package/dist/module/components/GuidonProvider.js.map +1 -0
  41. package/dist/module/components/GuidonTarget.js +106 -0
  42. package/dist/module/components/GuidonTarget.js.map +1 -0
  43. package/dist/module/components/GuidonTooltip.js +417 -0
  44. package/dist/module/components/GuidonTooltip.js.map +1 -0
  45. package/dist/module/components/index.js +7 -0
  46. package/dist/module/components/index.js.map +1 -0
  47. package/dist/module/hooks/index.js +4 -0
  48. package/dist/module/hooks/index.js.map +1 -0
  49. package/dist/module/hooks/useGuidonRef.js +129 -0
  50. package/dist/module/hooks/useGuidonRef.js.map +1 -0
  51. package/dist/module/index.js +17 -0
  52. package/dist/module/index.js.map +1 -0
  53. package/dist/module/package.json +1 -0
  54. package/dist/module/persistence/adapters.js +203 -0
  55. package/dist/module/persistence/adapters.js.map +1 -0
  56. package/dist/module/persistence/hooks.js +148 -0
  57. package/dist/module/persistence/hooks.js.map +1 -0
  58. package/dist/module/persistence/index.js +5 -0
  59. package/dist/module/persistence/index.js.map +1 -0
  60. package/dist/module/store.js +304 -0
  61. package/dist/module/store.js.map +1 -0
  62. package/dist/module/tsconfig.json +32 -0
  63. package/dist/module/types.js +4 -0
  64. package/dist/module/types.js.map +1 -0
  65. package/dist/typescript/commonjs/components/GuidonOverlay.d.ts +9 -0
  66. package/dist/typescript/commonjs/components/GuidonOverlay.d.ts.map +1 -0
  67. package/dist/typescript/commonjs/components/GuidonProvider.d.ts +14 -0
  68. package/dist/typescript/commonjs/components/GuidonProvider.d.ts.map +1 -0
  69. package/dist/typescript/commonjs/components/GuidonTarget.d.ts +7 -0
  70. package/dist/typescript/commonjs/components/GuidonTarget.d.ts.map +1 -0
  71. package/dist/typescript/commonjs/components/GuidonTooltip.d.ts +24 -0
  72. package/dist/typescript/commonjs/components/GuidonTooltip.d.ts.map +1 -0
  73. package/dist/typescript/commonjs/components/index.d.ts +5 -0
  74. package/dist/typescript/commonjs/components/index.d.ts.map +1 -0
  75. package/dist/typescript/commonjs/hooks/index.d.ts +2 -0
  76. package/dist/typescript/commonjs/hooks/index.d.ts.map +1 -0
  77. package/dist/typescript/commonjs/hooks/useGuidonRef.d.ts +35 -0
  78. package/dist/typescript/commonjs/hooks/useGuidonRef.d.ts.map +1 -0
  79. package/dist/typescript/commonjs/index.d.ts +7 -0
  80. package/dist/typescript/commonjs/index.d.ts.map +1 -0
  81. package/dist/typescript/commonjs/package.json +1 -0
  82. package/dist/typescript/commonjs/persistence/adapters.d.ts +57 -0
  83. package/dist/typescript/commonjs/persistence/adapters.d.ts.map +1 -0
  84. package/dist/typescript/commonjs/persistence/hooks.d.ts +29 -0
  85. package/dist/typescript/commonjs/persistence/hooks.d.ts.map +1 -0
  86. package/dist/typescript/commonjs/persistence/index.d.ts +3 -0
  87. package/dist/typescript/commonjs/persistence/index.d.ts.map +1 -0
  88. package/dist/typescript/commonjs/store.d.ts +89 -0
  89. package/dist/typescript/commonjs/store.d.ts.map +1 -0
  90. package/dist/{index-D_JFvCIg.d.mts → typescript/commonjs/types.d.ts} +40 -104
  91. package/dist/typescript/commonjs/types.d.ts.map +1 -0
  92. package/dist/typescript/module/components/GuidonOverlay.d.ts +9 -0
  93. package/dist/typescript/module/components/GuidonOverlay.d.ts.map +1 -0
  94. package/dist/typescript/module/components/GuidonProvider.d.ts +14 -0
  95. package/dist/typescript/module/components/GuidonProvider.d.ts.map +1 -0
  96. package/dist/typescript/module/components/GuidonTarget.d.ts +7 -0
  97. package/dist/typescript/module/components/GuidonTarget.d.ts.map +1 -0
  98. package/dist/typescript/module/components/GuidonTooltip.d.ts +24 -0
  99. package/dist/typescript/module/components/GuidonTooltip.d.ts.map +1 -0
  100. package/dist/typescript/module/components/index.d.ts +5 -0
  101. package/dist/typescript/module/components/index.d.ts.map +1 -0
  102. package/dist/typescript/module/hooks/index.d.ts +2 -0
  103. package/dist/typescript/module/hooks/index.d.ts.map +1 -0
  104. package/dist/typescript/module/hooks/useGuidonRef.d.ts +35 -0
  105. package/dist/typescript/module/hooks/useGuidonRef.d.ts.map +1 -0
  106. package/dist/typescript/module/index.d.ts +7 -0
  107. package/dist/typescript/module/index.d.ts.map +1 -0
  108. package/dist/typescript/module/package.json +1 -0
  109. package/dist/typescript/module/persistence/adapters.d.ts +57 -0
  110. package/dist/typescript/module/persistence/adapters.d.ts.map +1 -0
  111. package/dist/typescript/module/persistence/hooks.d.ts +29 -0
  112. package/dist/typescript/module/persistence/hooks.d.ts.map +1 -0
  113. package/dist/typescript/module/persistence/index.d.ts +3 -0
  114. package/dist/typescript/module/persistence/index.d.ts.map +1 -0
  115. package/dist/typescript/module/store.d.ts +89 -0
  116. package/dist/typescript/module/store.d.ts.map +1 -0
  117. package/dist/{index-D_JFvCIg.d.ts → typescript/module/types.d.ts} +40 -104
  118. package/dist/typescript/module/types.d.ts.map +1 -0
  119. package/package.json +25 -13
  120. package/src/babel.config.js +18 -0
  121. package/src/bob.config.js +14 -0
  122. package/src/components/GuidonOverlay.tsx +60 -4
  123. package/src/components/GuidonProvider.tsx +29 -1
  124. package/src/components/GuidonTarget.tsx +41 -25
  125. package/src/components/GuidonTooltip.tsx +143 -9
  126. package/src/hooks/index.ts +1 -0
  127. package/src/hooks/useGuidonRef.ts +154 -0
  128. package/src/index.ts +6 -0
  129. package/src/store.ts +68 -15
  130. package/src/tsconfig.json +32 -0
  131. package/src/types.ts +32 -2
  132. package/dist/index.d.mts +0 -128
  133. package/dist/index.d.ts +0 -128
  134. package/dist/index.js +0 -1097
  135. package/dist/index.js.map +0 -1
  136. package/dist/index.mjs +0 -1072
  137. package/dist/index.mjs.map +0 -1
  138. package/dist/persistence/index.d.mts +0 -2
  139. package/dist/persistence/index.d.ts +0 -2
  140. package/dist/persistence/index.js +0 -300
  141. package/dist/persistence/index.js.map +0 -1
  142. package/dist/persistence/index.mjs +0 -291
  143. package/dist/persistence/index.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","View","Text","StyleSheet","Dimensions","TouchableOpacity","Platform","ActivityIndicator","Animated","useAnimatedStyle","withTiming","withSpring","Easing","useSafeAreaInsets","useGuidonStore","useWaitingState","useIsFloatingStep","jsx","_jsx","jsxs","_jsxs","DEFAULT_THEME","tooltipBackgroundColor","tooltipBorderColor","tooltipBorderRadius","titleColor","descriptionColor","primaryColor","mutedColor","spotlightPadding","TOOLTIP_MARGIN","TOOLTIP_WIDTH","ESTIMATED_TOOLTIP_HEIGHT","calculateFloatingPosition","floatingPosition","screenWidth","screenHeight","tooltipWidth","insets","MARGIN","centerX","centerY","top","left","bottom","GuidonTooltip","theme","animationDuration","renderCustomTooltip","labels","width","height","get","isActive","state","config","currentStepIndex","targetMeasurements","next","previous","skip","isFloatingStep","waitingState","isWaiting","mergedTheme","mergedLabels","finish","stepOf","c","t","waitingDefault","currentStep","steps","totalSteps","length","isFirstStep","isLastStep","measurements","targetId","undefined","tooltipPosition","floatingPos","targetBottom","y","targetTop","position","spaceAbove","spaceBelow","Math","max","min","x","shouldShowTooltip","animatedStyle","opacity","duration","easing","inOut","ease","transform","translateY","damping","stiffness","style","styles","tooltipContainer","backgroundColor","borderColor","borderRadius","children","waitingContainer","color","waitingText","message","onPress","skipButton","skipText","step","currentIndex","onNext","onPrevious","onSkip","progressContainer","progressText","progressDots","Array","from","map","_","i","progressDot","content","title","description","customContent","buttonContainer","navButtons","navButton","backButton","backButtonText","nextButton","nextButtonText","create","zIndex","borderWidth","padding","select","ios","shadowColor","shadowOffset","shadowOpacity","shadowRadius","android","elevation","web","boxShadow","flexDirection","alignItems","justifyContent","marginBottom","fontSize","fontWeight","gap","lineHeight","paddingVertical","paddingHorizontal"],"sourceRoot":"../../../src","sources":["components/GuidonTooltip.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ export { GuidonTarget } from "./GuidonTarget.js";
4
+ export { GuidonOverlay } from "./GuidonOverlay.js";
5
+ export { GuidonTooltip } from "./GuidonTooltip.js";
6
+ export { GuidonProvider, useGuidonContext } from "./GuidonProvider.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GuidonTarget","GuidonOverlay","GuidonTooltip","GuidonProvider","useGuidonContext"],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,cAAc,EAAEC,gBAAgB,QAAQ,qBAAkB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { useGuidonRef } from "./useGuidonRef.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useGuidonRef"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,mBAAgB","ignoreList":[]}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef } from 'react';
4
+ import { Platform } from 'react-native';
5
+ import { useGuidonStore } from "../store.js";
6
+
7
+ /**
8
+ * Element type that can be measured
9
+ * Supports both web elements and React Native Views
10
+ */
11
+
12
+ /**
13
+ * Hook that returns a ref to attach to an element for guidon targeting.
14
+ * Alternative to the GuidonTarget wrapper component.
15
+ *
16
+ * @param targetId - The target ID that matches a step's targetId
17
+ * @returns A ref to attach to the target element
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * function MyComponent() {
22
+ * const buttonRef = useGuidonRef<View>('my-button');
23
+ * return <Button ref={buttonRef}>Click me</Button>;
24
+ * }
25
+ * ```
26
+ *
27
+ * @example Web usage
28
+ * ```tsx
29
+ * function MyComponent() {
30
+ * const divRef = useGuidonRef<HTMLDivElement>('my-div');
31
+ * return <div ref={divRef}>Highlight me</div>;
32
+ * }
33
+ * ```
34
+ */
35
+ export function useGuidonRef(targetId) {
36
+ const ref = useRef(null);
37
+ const measurementFrameRef = useRef(null);
38
+ const registerTarget = useGuidonStore(state => state.registerTarget);
39
+ const unregisterTarget = useGuidonStore(state => state.unregisterTarget);
40
+ const isActive = useGuidonStore(state => state.isActive);
41
+ const config = useGuidonStore(state => state.config);
42
+ const currentStepIndex = useGuidonStore(state => state.currentStepIndex);
43
+
44
+ // Check if this target is needed anywhere in the walkthrough
45
+ const isTargetNeeded = isActive && config?.steps.some(step => step.targetId === targetId);
46
+
47
+ // Check if this specific target is needed for the current step
48
+ const isCurrentTarget = config?.steps[currentStepIndex]?.targetId === targetId;
49
+ const measureElement = useCallback(() => {
50
+ if (!ref.current || !isTargetNeeded) return;
51
+ if (Platform.OS === 'web') {
52
+ // Web measurement using getBoundingClientRect
53
+ const element = ref.current;
54
+ if (element && typeof element.getBoundingClientRect === 'function') {
55
+ const rect = element.getBoundingClientRect();
56
+ const measurements = {
57
+ x: rect.left + window.scrollX,
58
+ y: rect.top + window.scrollY,
59
+ width: rect.width,
60
+ height: rect.height
61
+ };
62
+ registerTarget(targetId, measurements);
63
+ }
64
+ } else {
65
+ // Native measurement using measureInWindow
66
+ const nativeRef = ref.current;
67
+ if (nativeRef && typeof nativeRef.measureInWindow === 'function') {
68
+ nativeRef.measureInWindow((x, y, width, height) => {
69
+ if (width > 0 && height > 0) {
70
+ const measurements = {
71
+ x,
72
+ y,
73
+ width,
74
+ height
75
+ };
76
+ registerTarget(targetId, measurements);
77
+ }
78
+ });
79
+ }
80
+ }
81
+ }, [targetId, isTargetNeeded, registerTarget]);
82
+
83
+ // Measure when guidon becomes active or when this target becomes relevant
84
+ useEffect(() => {
85
+ if (!isTargetNeeded) return;
86
+
87
+ // Use requestAnimationFrame to ensure layout is complete
88
+ measurementFrameRef.current = requestAnimationFrame(() => {
89
+ measureElement();
90
+ });
91
+ return () => {
92
+ if (measurementFrameRef.current) {
93
+ cancelAnimationFrame(measurementFrameRef.current);
94
+ }
95
+ };
96
+ }, [isTargetNeeded, measureElement]);
97
+
98
+ // Re-measure when this target becomes the current step
99
+ useEffect(() => {
100
+ if (!isCurrentTarget) return;
101
+ const timer = setTimeout(() => {
102
+ measureElement();
103
+ }, 50);
104
+ return () => clearTimeout(timer);
105
+ }, [isCurrentTarget, measureElement]);
106
+
107
+ // Web: handle scroll and resize
108
+ useEffect(() => {
109
+ if (Platform.OS !== 'web' || !isTargetNeeded) return;
110
+ const handleScrollOrResize = () => {
111
+ measureElement();
112
+ };
113
+ window.addEventListener('scroll', handleScrollOrResize, true);
114
+ window.addEventListener('resize', handleScrollOrResize);
115
+ return () => {
116
+ window.removeEventListener('scroll', handleScrollOrResize, true);
117
+ window.removeEventListener('resize', handleScrollOrResize);
118
+ };
119
+ }, [isTargetNeeded, measureElement]);
120
+
121
+ // Unregister on unmount
122
+ useEffect(() => {
123
+ return () => {
124
+ unregisterTarget(targetId);
125
+ };
126
+ }, [targetId, unregisterTarget]);
127
+ return ref;
128
+ }
129
+ //# sourceMappingURL=useGuidonRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","Platform","useGuidonStore","useGuidonRef","targetId","ref","measurementFrameRef","registerTarget","state","unregisterTarget","isActive","config","currentStepIndex","isTargetNeeded","steps","some","step","isCurrentTarget","measureElement","current","OS","element","getBoundingClientRect","rect","measurements","x","left","window","scrollX","y","top","scrollY","width","height","nativeRef","measureInWindow","requestAnimationFrame","cancelAnimationFrame","timer","setTimeout","clearTimeout","handleScrollOrResize","addEventListener","removeEventListener"],"sourceRoot":"../../../src","sources":["hooks/useGuidonRef.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ // Components
4
+ export { GuidonTarget, GuidonOverlay, GuidonTooltip, GuidonProvider, useGuidonContext } from "./components/index.js";
5
+
6
+ // Hooks
7
+ export { useGuidonRef } from "./hooks/index.js";
8
+
9
+ // Store and API
10
+ export { useGuidonStore, Guidon, useGuidonActive, useGuidonStep, useGuidonProgress, useTargetMeasurements, useWaitingState, useIsFloatingStep } from "./store.js";
11
+
12
+ // Types
13
+
14
+ // Persistence adapters
15
+ export { createNoopAdapter, createMemoryAdapter, createLocalStorageAdapter, createAsyncStorageAdapter, createApiAdapter, createCompositeAdapter } from "./persistence/adapters.js";
16
+ export { useGuidonPersistence, useShouldShowGuidon } from "./persistence/hooks.js";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GuidonTarget","GuidonOverlay","GuidonTooltip","GuidonProvider","useGuidonContext","useGuidonRef","useGuidonStore","Guidon","useGuidonActive","useGuidonStep","useGuidonProgress","useTargetMeasurements","useWaitingState","useIsFloatingStep","createNoopAdapter","createMemoryAdapter","createLocalStorageAdapter","createAsyncStorageAdapter","createApiAdapter","createCompositeAdapter","useGuidonPersistence","useShouldShowGuidon"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SACEA,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,cAAc,EACdC,gBAAgB,QACX,uBAAc;;AAErB;AACA,SAASC,YAAY,QAAQ,kBAAS;;AAEtC;AACA,SACEC,cAAc,EACdC,MAAM,EACNC,eAAe,EACfC,aAAa,EACbC,iBAAiB,EACjBC,qBAAqB,EACrBC,eAAe,EACfC,iBAAiB,QACZ,YAAS;;AAEhB;;AAmBA;AACA,SACEC,iBAAiB,EACjBC,mBAAmB,EACnBC,yBAAyB,EACzBC,yBAAyB,EACzBC,gBAAgB,EAChBC,sBAAsB,QACjB,2BAAwB;AAE/B,SACEC,oBAAoB,EACpBC,mBAAmB,QACd,wBAAqB","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+
3
+ const STORAGE_KEY_PREFIX = '@guidon:';
4
+
5
+ /**
6
+ * No-op adapter that doesn't persist anything
7
+ * Useful for testing or when persistence is not needed
8
+ */
9
+ export const createNoopAdapter = () => ({
10
+ loadProgress: async () => null,
11
+ saveProgress: async () => {},
12
+ loadAllProgress: async () => ({}),
13
+ clearProgress: async () => {}
14
+ });
15
+
16
+ /**
17
+ * Memory adapter that stores progress in memory
18
+ * Data is lost when the app is closed
19
+ */
20
+ export const createMemoryAdapter = () => {
21
+ const store = {};
22
+ return {
23
+ loadProgress: async guidonId => store[guidonId] ?? null,
24
+ saveProgress: async progress => {
25
+ store[progress.guidonId] = progress;
26
+ },
27
+ loadAllProgress: async () => ({
28
+ ...store
29
+ }),
30
+ clearProgress: async guidonId => {
31
+ delete store[guidonId];
32
+ }
33
+ };
34
+ };
35
+
36
+ /**
37
+ * localStorage adapter for web
38
+ * Only works in browser environments
39
+ */
40
+ export const createLocalStorageAdapter = (keyPrefix = STORAGE_KEY_PREFIX) => ({
41
+ loadProgress: async guidonId => {
42
+ if (typeof window === 'undefined' || !window.localStorage) {
43
+ return null;
44
+ }
45
+ try {
46
+ const data = localStorage.getItem(`${keyPrefix}${guidonId}`);
47
+ return data ? JSON.parse(data) : null;
48
+ } catch {
49
+ return null;
50
+ }
51
+ },
52
+ saveProgress: async progress => {
53
+ if (typeof window === 'undefined' || !window.localStorage) {
54
+ return;
55
+ }
56
+ try {
57
+ localStorage.setItem(`${keyPrefix}${progress.guidonId}`, JSON.stringify(progress));
58
+ } catch {
59
+ // Silently fail if storage is full
60
+ }
61
+ },
62
+ loadAllProgress: async () => {
63
+ if (typeof window === 'undefined' || !window.localStorage) {
64
+ return {};
65
+ }
66
+ const result = {};
67
+ try {
68
+ for (let i = 0; i < localStorage.length; i++) {
69
+ const key = localStorage.key(i);
70
+ if (key?.startsWith(keyPrefix)) {
71
+ const data = localStorage.getItem(key);
72
+ if (data) {
73
+ const progress = JSON.parse(data);
74
+ result[progress.guidonId] = progress;
75
+ }
76
+ }
77
+ }
78
+ } catch {
79
+ // Silently fail
80
+ }
81
+ return result;
82
+ },
83
+ clearProgress: async guidonId => {
84
+ if (typeof window === 'undefined' || !window.localStorage) {
85
+ return;
86
+ }
87
+ try {
88
+ localStorage.removeItem(`${keyPrefix}${guidonId}`);
89
+ } catch {
90
+ // Silently fail
91
+ }
92
+ }
93
+ });
94
+
95
+ /**
96
+ * AsyncStorage adapter for React Native
97
+ * Requires @react-native-async-storage/async-storage to be installed
98
+ *
99
+ * @example
100
+ * import AsyncStorage from '@react-native-async-storage/async-storage';
101
+ * const adapter = createAsyncStorageAdapter(AsyncStorage);
102
+ */
103
+ export const createAsyncStorageAdapter = (asyncStorage, keyPrefix = STORAGE_KEY_PREFIX) => ({
104
+ loadProgress: async guidonId => {
105
+ try {
106
+ const data = await asyncStorage.getItem(`${keyPrefix}${guidonId}`);
107
+ return data ? JSON.parse(data) : null;
108
+ } catch {
109
+ return null;
110
+ }
111
+ },
112
+ saveProgress: async progress => {
113
+ try {
114
+ await asyncStorage.setItem(`${keyPrefix}${progress.guidonId}`, JSON.stringify(progress));
115
+ } catch {
116
+ // Silently fail
117
+ }
118
+ },
119
+ loadAllProgress: async () => {
120
+ const result = {};
121
+ try {
122
+ const allKeys = await asyncStorage.getAllKeys();
123
+ const relevantKeys = allKeys.filter(key => key.startsWith(keyPrefix));
124
+ const pairs = await asyncStorage.multiGet(relevantKeys);
125
+ for (const [, value] of pairs) {
126
+ if (value) {
127
+ const progress = JSON.parse(value);
128
+ result[progress.guidonId] = progress;
129
+ }
130
+ }
131
+ } catch {
132
+ // Silently fail
133
+ }
134
+ return result;
135
+ },
136
+ clearProgress: async guidonId => {
137
+ try {
138
+ await asyncStorage.removeItem(`${keyPrefix}${guidonId}`);
139
+ } catch {
140
+ // Silently fail
141
+ }
142
+ }
143
+ });
144
+
145
+ /**
146
+ * Create a custom API adapter for backend persistence
147
+ * This is a factory function that creates an adapter based on your API endpoints
148
+ *
149
+ * @example
150
+ * const adapter = createApiAdapter({
151
+ * loadProgress: async (guidonId) => {
152
+ * const response = await fetch(`/api/guidon/${guidonId}`);
153
+ * return response.json();
154
+ * },
155
+ * saveProgress: async (progress) => {
156
+ * await fetch(`/api/guidon/${progress.guidonId}`, {
157
+ * method: 'POST',
158
+ * body: JSON.stringify(progress),
159
+ * });
160
+ * },
161
+ * });
162
+ */
163
+ export const createApiAdapter = handlers => {
164
+ const noopAdapter = createNoopAdapter();
165
+ return {
166
+ loadProgress: handlers.loadProgress ?? noopAdapter.loadProgress,
167
+ saveProgress: handlers.saveProgress ?? noopAdapter.saveProgress,
168
+ loadAllProgress: handlers.loadAllProgress ?? noopAdapter.loadAllProgress,
169
+ clearProgress: handlers.clearProgress ?? noopAdapter.clearProgress
170
+ };
171
+ };
172
+
173
+ /**
174
+ * Combine multiple adapters (e.g., save to both local and API)
175
+ * Loads from the first adapter that returns data
176
+ * Saves to all adapters
177
+ */
178
+ export const createCompositeAdapter = adapters => ({
179
+ loadProgress: async guidonId => {
180
+ for (const adapter of adapters) {
181
+ const progress = await adapter.loadProgress(guidonId);
182
+ if (progress) return progress;
183
+ }
184
+ return null;
185
+ },
186
+ saveProgress: async progress => {
187
+ await Promise.all(adapters.map(adapter => adapter.saveProgress(progress)));
188
+ },
189
+ loadAllProgress: async () => {
190
+ const result = {};
191
+ for (const adapter of adapters) {
192
+ if (adapter.loadAllProgress) {
193
+ const data = await adapter.loadAllProgress();
194
+ Object.assign(result, data);
195
+ }
196
+ }
197
+ return result;
198
+ },
199
+ clearProgress: async guidonId => {
200
+ await Promise.all(adapters.map(adapter => adapter.clearProgress?.(guidonId)));
201
+ }
202
+ });
203
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["STORAGE_KEY_PREFIX","createNoopAdapter","loadProgress","saveProgress","loadAllProgress","clearProgress","createMemoryAdapter","store","guidonId","progress","createLocalStorageAdapter","keyPrefix","window","localStorage","data","getItem","JSON","parse","setItem","stringify","result","i","length","key","startsWith","removeItem","createAsyncStorageAdapter","asyncStorage","allKeys","getAllKeys","relevantKeys","filter","pairs","multiGet","value","createApiAdapter","handlers","noopAdapter","createCompositeAdapter","adapters","adapter","Promise","all","map","Object","assign"],"sourceRoot":"../../../src","sources":["persistence/adapters.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useState } from 'react';
4
+ /**
5
+ * Hook to manage guidon's walkthrough progress with a persistence adapter
6
+ */
7
+ export function useGuidonPersistence(adapter, guidonId) {
8
+ const [progress, setProgress] = useState(null);
9
+ const [isLoading, setIsLoading] = useState(true);
10
+ const [error, setError] = useState(null);
11
+
12
+ // Load progress on mount
13
+ useEffect(() => {
14
+ if (!adapter) {
15
+ setIsLoading(false);
16
+ return;
17
+ }
18
+ let mounted = true;
19
+ const loadProgress = async () => {
20
+ try {
21
+ setIsLoading(true);
22
+ setError(null);
23
+ const data = await adapter.loadProgress(guidonId);
24
+ if (mounted) {
25
+ setProgress(data);
26
+ }
27
+ } catch (err) {
28
+ if (mounted) {
29
+ setError(err instanceof Error ? err.message : 'Failed to load progress');
30
+ }
31
+ } finally {
32
+ if (mounted) {
33
+ setIsLoading(false);
34
+ }
35
+ }
36
+ };
37
+ loadProgress();
38
+ return () => {
39
+ mounted = false;
40
+ };
41
+ }, [adapter, guidonId]);
42
+ const saveProgress = useCallback(async newProgress => {
43
+ if (!adapter) return;
44
+ const fullProgress = {
45
+ ...newProgress,
46
+ guidonId
47
+ };
48
+ try {
49
+ setError(null);
50
+ await adapter.saveProgress(fullProgress);
51
+ setProgress(fullProgress);
52
+ } catch (err) {
53
+ setError(err instanceof Error ? err.message : 'Failed to save progress');
54
+ throw err;
55
+ }
56
+ }, [adapter, guidonId]);
57
+ const clearProgress = useCallback(async () => {
58
+ if (!adapter?.clearProgress) return;
59
+ try {
60
+ setError(null);
61
+ await adapter.clearProgress(guidonId);
62
+ setProgress(null);
63
+ } catch (err) {
64
+ setError(err instanceof Error ? err.message : 'Failed to clear progress');
65
+ throw err;
66
+ }
67
+ }, [adapter, guidonId]);
68
+ const markCompleted = useCallback(async () => {
69
+ const currentCount = progress?.completionCount ?? 0;
70
+ await saveProgress({
71
+ completed: true,
72
+ completedAt: new Date().toISOString(),
73
+ completionCount: currentCount + 1
74
+ });
75
+ }, [saveProgress, progress?.completionCount]);
76
+ const markStepViewed = useCallback(async stepIndex => {
77
+ await saveProgress({
78
+ completed: progress?.completed ?? false,
79
+ lastStepIndex: stepIndex,
80
+ completedAt: progress?.completedAt,
81
+ completionCount: progress?.completionCount
82
+ });
83
+ }, [saveProgress, progress]);
84
+ return {
85
+ progress,
86
+ isLoading,
87
+ error,
88
+ isCompleted: progress?.completed ?? false,
89
+ hasStarted: progress !== null,
90
+ saveProgress,
91
+ clearProgress,
92
+ markCompleted,
93
+ markStepViewed
94
+ };
95
+ }
96
+
97
+ /**
98
+ * Hook to check if a guidon should be shown
99
+ */
100
+ export function useShouldShowGuidon(adapter, guidonId, options) {
101
+ const {
102
+ progress,
103
+ isLoading
104
+ } = useGuidonPersistence(adapter, guidonId);
105
+ const [shouldShow, setShouldShow] = useState(false);
106
+ const [isChecking, setIsChecking] = useState(true);
107
+ useEffect(() => {
108
+ if (isLoading) return;
109
+ const checkCondition = async () => {
110
+ setIsChecking(true);
111
+
112
+ // If forceShow is true, always show
113
+ if (options?.forceShow) {
114
+ setShouldShow(true);
115
+ setIsChecking(false);
116
+ return;
117
+ }
118
+
119
+ // If already completed, don't show
120
+ if (progress?.completed) {
121
+ setShouldShow(false);
122
+ setIsChecking(false);
123
+ return;
124
+ }
125
+
126
+ // Check additional condition if provided
127
+ if (options?.additionalCondition) {
128
+ try {
129
+ const result = await options.additionalCondition();
130
+ setShouldShow(result);
131
+ } catch {
132
+ setShouldShow(true); // Default to showing on error
133
+ }
134
+ } else {
135
+ // Default: show if not completed
136
+ setShouldShow(true);
137
+ }
138
+ setIsChecking(false);
139
+ };
140
+ checkCondition();
141
+ }, [isLoading, progress?.completed, options?.forceShow, options?.additionalCondition]);
142
+ return {
143
+ shouldShow,
144
+ isChecking: isLoading || isChecking,
145
+ isCompleted: progress?.completed ?? false
146
+ };
147
+ }
148
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useState","useGuidonPersistence","adapter","guidonId","progress","setProgress","isLoading","setIsLoading","error","setError","mounted","loadProgress","data","err","Error","message","saveProgress","newProgress","fullProgress","clearProgress","markCompleted","currentCount","completionCount","completed","completedAt","Date","toISOString","markStepViewed","stepIndex","lastStepIndex","isCompleted","hasStarted","useShouldShowGuidon","options","shouldShow","setShouldShow","isChecking","setIsChecking","checkCondition","forceShow","additionalCondition","result"],"sourceRoot":"../../../src","sources":["persistence/hooks.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export * from "./adapters.js";
4
+ export * from "./hooks.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["persistence/index.ts"],"mappings":";;AAAA,cAAc,eAAY;AAC1B,cAAc,YAAS","ignoreList":[]}