@korsolutions/guidon 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/dist/commonjs/babel.config.js +15 -0
- package/dist/commonjs/babel.config.js.map +1 -0
- package/dist/commonjs/bob.config.js +11 -0
- package/dist/commonjs/bob.config.js.map +1 -0
- package/dist/commonjs/components/GuidonOverlay.js +206 -0
- package/dist/commonjs/components/GuidonOverlay.js.map +1 -0
- package/dist/commonjs/components/GuidonProvider.js +157 -0
- package/dist/commonjs/components/GuidonProvider.js.map +1 -0
- package/dist/commonjs/components/GuidonTarget.js +108 -0
- package/dist/commonjs/components/GuidonTarget.js.map +1 -0
- package/dist/commonjs/components/GuidonTooltip.js +422 -0
- package/dist/commonjs/components/GuidonTooltip.js.map +1 -0
- package/dist/commonjs/components/index.js +40 -0
- package/dist/commonjs/components/index.js.map +1 -0
- package/dist/commonjs/hooks/index.js +13 -0
- package/dist/commonjs/hooks/index.js.map +1 -0
- package/dist/commonjs/hooks/useGuidonRef.js +132 -0
- package/dist/commonjs/hooks/useGuidonRef.js.map +1 -0
- package/dist/commonjs/index.js +143 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/package.json +1 -0
- package/dist/commonjs/persistence/adapters.js +213 -0
- package/dist/commonjs/persistence/adapters.js.map +1 -0
- package/dist/commonjs/persistence/hooks.js +153 -0
- package/dist/commonjs/persistence/hooks.js.map +1 -0
- package/dist/commonjs/persistence/index.js +28 -0
- package/dist/commonjs/persistence/index.js.map +1 -0
- package/dist/commonjs/store.js +305 -0
- package/dist/commonjs/store.js.map +1 -0
- package/dist/commonjs/tsconfig.json +32 -0
- package/dist/commonjs/types.js +6 -0
- package/dist/commonjs/types.js.map +1 -0
- package/dist/module/babel.config.js +15 -0
- package/dist/module/babel.config.js.map +1 -0
- package/dist/module/bob.config.js +11 -0
- package/dist/module/bob.config.js.map +1 -0
- package/dist/module/components/GuidonOverlay.js +201 -0
- package/dist/module/components/GuidonOverlay.js.map +1 -0
- package/dist/module/components/GuidonProvider.js +152 -0
- package/dist/module/components/GuidonProvider.js.map +1 -0
- package/dist/module/components/GuidonTarget.js +104 -0
- package/dist/module/components/GuidonTarget.js.map +1 -0
- package/dist/module/components/GuidonTooltip.js +417 -0
- package/dist/module/components/GuidonTooltip.js.map +1 -0
- package/dist/module/components/index.js +7 -0
- package/dist/module/components/index.js.map +1 -0
- package/dist/module/hooks/index.js +4 -0
- package/dist/module/hooks/index.js.map +1 -0
- package/dist/module/hooks/useGuidonRef.js +129 -0
- package/dist/module/hooks/useGuidonRef.js.map +1 -0
- package/dist/module/index.js +17 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/package.json +1 -0
- package/dist/module/persistence/adapters.js +203 -0
- package/dist/module/persistence/adapters.js.map +1 -0
- package/dist/module/persistence/hooks.js +148 -0
- package/dist/module/persistence/hooks.js.map +1 -0
- package/dist/module/persistence/index.js +5 -0
- package/dist/module/persistence/index.js.map +1 -0
- package/dist/module/store.js +295 -0
- package/dist/module/store.js.map +1 -0
- package/dist/module/tsconfig.json +32 -0
- package/dist/module/types.js +4 -0
- package/dist/module/types.js.map +1 -0
- package/dist/typescript/commonjs/components/GuidonOverlay.d.ts +9 -0
- package/dist/typescript/commonjs/components/GuidonOverlay.d.ts.map +1 -0
- package/dist/typescript/commonjs/components/GuidonProvider.d.ts +14 -0
- package/dist/typescript/commonjs/components/GuidonProvider.d.ts.map +1 -0
- package/dist/typescript/commonjs/components/GuidonTarget.d.ts +7 -0
- package/dist/typescript/commonjs/components/GuidonTarget.d.ts.map +1 -0
- package/dist/typescript/commonjs/components/GuidonTooltip.d.ts +24 -0
- package/dist/typescript/commonjs/components/GuidonTooltip.d.ts.map +1 -0
- package/dist/typescript/commonjs/components/index.d.ts +5 -0
- package/dist/typescript/commonjs/components/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/hooks/index.d.ts +2 -0
- package/dist/typescript/commonjs/hooks/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/hooks/useGuidonRef.d.ts +35 -0
- package/dist/typescript/commonjs/hooks/useGuidonRef.d.ts.map +1 -0
- package/dist/typescript/commonjs/index.d.ts +7 -0
- package/dist/typescript/commonjs/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/package.json +1 -0
- package/dist/typescript/commonjs/persistence/adapters.d.ts +57 -0
- package/dist/typescript/commonjs/persistence/adapters.d.ts.map +1 -0
- package/dist/typescript/commonjs/persistence/hooks.d.ts +29 -0
- package/dist/typescript/commonjs/persistence/hooks.d.ts.map +1 -0
- package/dist/typescript/commonjs/persistence/index.d.ts +3 -0
- package/dist/typescript/commonjs/persistence/index.d.ts.map +1 -0
- package/dist/typescript/commonjs/store.d.ts +89 -0
- package/dist/typescript/commonjs/store.d.ts.map +1 -0
- package/dist/{index-D_JFvCIg.d.mts → typescript/commonjs/types.d.ts} +40 -104
- package/dist/typescript/commonjs/types.d.ts.map +1 -0
- package/dist/typescript/module/components/GuidonOverlay.d.ts +9 -0
- package/dist/typescript/module/components/GuidonOverlay.d.ts.map +1 -0
- package/dist/typescript/module/components/GuidonProvider.d.ts +14 -0
- package/dist/typescript/module/components/GuidonProvider.d.ts.map +1 -0
- package/dist/typescript/module/components/GuidonTarget.d.ts +7 -0
- package/dist/typescript/module/components/GuidonTarget.d.ts.map +1 -0
- package/dist/typescript/module/components/GuidonTooltip.d.ts +24 -0
- package/dist/typescript/module/components/GuidonTooltip.d.ts.map +1 -0
- package/dist/typescript/module/components/index.d.ts +5 -0
- package/dist/typescript/module/components/index.d.ts.map +1 -0
- package/dist/typescript/module/hooks/index.d.ts +2 -0
- package/dist/typescript/module/hooks/index.d.ts.map +1 -0
- package/dist/typescript/module/hooks/useGuidonRef.d.ts +35 -0
- package/dist/typescript/module/hooks/useGuidonRef.d.ts.map +1 -0
- package/dist/typescript/module/index.d.ts +7 -0
- package/dist/typescript/module/index.d.ts.map +1 -0
- package/dist/typescript/module/package.json +1 -0
- package/dist/typescript/module/persistence/adapters.d.ts +57 -0
- package/dist/typescript/module/persistence/adapters.d.ts.map +1 -0
- package/dist/typescript/module/persistence/hooks.d.ts +29 -0
- package/dist/typescript/module/persistence/hooks.d.ts.map +1 -0
- package/dist/typescript/module/persistence/index.d.ts +3 -0
- package/dist/typescript/module/persistence/index.d.ts.map +1 -0
- package/dist/typescript/module/store.d.ts +89 -0
- package/dist/typescript/module/store.d.ts.map +1 -0
- package/dist/{index-D_JFvCIg.d.ts → typescript/module/types.d.ts} +40 -104
- package/dist/typescript/module/types.d.ts.map +1 -0
- package/package.json +25 -13
- package/src/babel.config.js +18 -0
- package/src/bob.config.js +14 -0
- package/src/components/GuidonOverlay.tsx +60 -4
- package/src/components/GuidonProvider.tsx +29 -1
- package/src/components/GuidonTarget.tsx +26 -16
- package/src/components/GuidonTooltip.tsx +143 -9
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useGuidonRef.ts +154 -0
- package/src/index.ts +6 -0
- package/src/store.ts +40 -0
- package/src/tsconfig.json +32 -0
- package/src/types.ts +32 -2
- package/dist/index.d.mts +0 -128
- package/dist/index.d.ts +0 -128
- package/dist/index.js +0 -1098
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -1073
- package/dist/index.mjs.map +0 -1
- package/dist/persistence/index.d.mts +0 -2
- package/dist/persistence/index.d.ts +0 -2
- package/dist/persistence/index.js +0 -300
- package/dist/persistence/index.js.map +0 -1
- package/dist/persistence/index.mjs +0 -291
- 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":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SACEC,IAAI,EACJC,IAAI,EACJC,UAAU,EACVC,UAAU,EACVC,gBAAgB,EAChBC,QAAQ,EACRC,iBAAiB,QACZ,cAAc;AACrB,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,EACVC,MAAM,QACD,yBAAyB;AAChC,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,cAAc,EAAEC,eAAe,EAAEC,iBAAiB,QAAQ,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAG9E,MAAMC,aAYL,GAAG;EACFC,sBAAsB,EAAE,SAAS;EACjCC,kBAAkB,EAAE,SAAS;EAC7BC,mBAAmB,EAAE,EAAE;EACvBC,UAAU,EAAE,SAAS;EACrBC,gBAAgB,EAAE,SAAS;EAC3BC,YAAY,EAAE,SAAS;EACvBC,UAAU,EAAE,SAAS;EACrBC,gBAAgB,EAAE;AACpB,CAAC;AAED,MAAMC,cAAc,GAAG,EAAE;AACzB,MAAMC,aAAa,GAAG,GAAG;AACzB,MAAMC,wBAAwB,GAAG,GAAG;;AAEpC;AACA;AACA;AACA,SAASC,yBAAyBA,CAChCC,gBAAkC,EAClCC,WAAmB,EACnBC,YAAoB,EACpBC,YAAoB,EACpBC,MAAoE,EACrC;EAC/B,MAAMC,MAAM,GAAG,EAAE;EAEjB,MAAMC,OAAO,GAAG,CAACL,WAAW,GAAGE,YAAY,IAAI,CAAC;EAChD,MAAMI,OAAO,GAAG,CAACL,YAAY,GAAGJ,wBAAwB,IAAI,CAAC;EAE7D,QAAQE,gBAAgB;IACtB,KAAK,QAAQ;MACX,OAAO;QAAEQ,GAAG,EAAED,OAAO;QAAEE,IAAI,EAAEH;MAAQ,CAAC;IAExC,KAAK,KAAK;MACR,OAAO;QACLE,GAAG,EAAEJ,MAAM,CAACI,GAAG,GAAGH,MAAM;QACxBI,IAAI,EAAEH;MACR,CAAC;IAEH,KAAK,QAAQ;MACX,OAAO;QACLE,GAAG,EAAEN,YAAY,GAAGJ,wBAAwB,GAAGM,MAAM,CAACM,MAAM,GAAGL,MAAM;QACrEI,IAAI,EAAEH;MACR,CAAC;IAEH,KAAK,UAAU;MACb,OAAO;QACLE,GAAG,EAAEJ,MAAM,CAACI,GAAG,GAAGH,MAAM;QACxBI,IAAI,EAAEJ;MACR,CAAC;IAEH,KAAK,WAAW;MACd,OAAO;QACLG,GAAG,EAAEJ,MAAM,CAACI,GAAG,GAAGH,MAAM;QACxBI,IAAI,EAAER,WAAW,GAAGE,YAAY,GAAGE;MACrC,CAAC;IAEH,KAAK,aAAa;MAChB,OAAO;QACLG,GAAG,EAAEN,YAAY,GAAGJ,wBAAwB,GAAGM,MAAM,CAACM,MAAM,GAAGL,MAAM;QACrEI,IAAI,EAAEJ;MACR,CAAC;IAEH,KAAK,cAAc;MACjB,OAAO;QACLG,GAAG,EAAEN,YAAY,GAAGJ,wBAAwB,GAAGM,MAAM,CAACM,MAAM,GAAGL,MAAM;QACrEI,IAAI,EAAER,WAAW,GAAGE,YAAY,GAAGE;MACrC,CAAC;IAEH;MACE,OAAO;QAAEG,GAAG,EAAED,OAAO;QAAEE,IAAI,EAAEH;MAAQ,CAAC;EAC1C;AACF;AAuBA,OAAO,SAASK,aAAaA,CAAC;EAC5BC,KAAK,GAAG,CAAC,CAAC;EACVC,iBAAiB,GAAG,GAAG;EACvBC,mBAAmB;EACnBC,MAAM,GAAG,CAAC;AACQ,CAAC,EAAE;EACrB,MAAMX,MAAM,GAAGzB,iBAAiB,CAAC,CAAC;EAClC,MAAM;IAAEqC,KAAK,EAAEf,WAAW;IAAEgB,MAAM,EAAEf;EAAa,CAAC,GAAGhC,UAAU,CAACgD,GAAG,CAAC,QAAQ,CAAC;EAE7E,MAAMC,QAAQ,GAAGvC,cAAc,CAAEwC,KAAkB,IAAKA,KAAK,CAACD,QAAQ,CAAC;EACvE,MAAME,MAAM,GAAGzC,cAAc,CAAEwC,KAAkB,IAAKA,KAAK,CAACC,MAAM,CAAC;EACnE,MAAMC,gBAAgB,GAAG1C,cAAc,CAAEwC,KAAkB,IAAKA,KAAK,CAACE,gBAAgB,CAAC;EACvF,MAAMC,kBAAkB,GAAG3C,cAAc,CAAEwC,KAAkB,IAAKA,KAAK,CAACG,kBAAkB,CAAC;EAC3F,MAAMC,IAAI,GAAG5C,cAAc,CAAEwC,KAAkB,IAAKA,KAAK,CAACI,IAAI,CAAC;EAC/D,MAAMC,QAAQ,GAAG7C,cAAc,CAAEwC,KAAkB,IAAKA,KAAK,CAACK,QAAQ,CAAC;EACvE,MAAMC,IAAI,GAAG9C,cAAc,CAAEwC,KAAkB,IAAKA,KAAK,CAACM,IAAI,CAAC;;EAE/D;EACA,MAAMC,cAAc,GAAG7C,iBAAiB,CAAC,CAAC;EAC1C,MAAM8C,YAAY,GAAG/C,eAAe,CAAC,CAAC;EACtC,MAAMgD,SAAS,GAAGD,YAAY,EAAEC,SAAS,IAAI,KAAK;EAElD,MAAMC,WAAW,GAAG;IAAE,GAAG3C,aAAa;IAAE,GAAGyB;EAAM,CAAC;EAClD,MAAMmB,YAAY,GAAG;IACnBP,IAAI,EAAET,MAAM,CAACS,IAAI,IAAI,MAAM;IAC3BC,QAAQ,EAAEV,MAAM,CAACU,QAAQ,IAAI,MAAM;IACnCC,IAAI,EAAEX,MAAM,CAACW,IAAI,IAAI,MAAM;IAC3BM,MAAM,EAAEjB,MAAM,CAACiB,MAAM,IAAI,QAAQ;IACjCC,MAAM,EAAElB,MAAM,CAACkB,MAAM,KAAK,CAACC,CAAS,EAAEC,CAAS,KAAK,GAAGD,CAAC,OAAOC,CAAC,EAAE,CAAC;IACnEC,cAAc,EAAErB,MAAM,CAACqB,cAAc,IAAI;EAC3C,CAAC;EAED,MAAMC,WAAW,GAAGhB,MAAM,EAAEiB,KAAK,CAAChB,gBAAgB,CAAC;EACnD,MAAMiB,UAAU,GAAGlB,MAAM,EAAEiB,KAAK,CAACE,MAAM,IAAI,CAAC;EAC5C,MAAMC,WAAW,GAAGnB,gBAAgB,KAAK,CAAC;EAC1C,MAAMoB,UAAU,GAAGpB,gBAAgB,KAAKiB,UAAU,GAAG,CAAC;EAEtD,MAAMI,YAA4C,GAAGN,WAAW,EAAEO,QAAQ,GACtErB,kBAAkB,CAACc,WAAW,CAACO,QAAQ,CAAC,GACxCC,SAAS;;EAEb;EACA,MAAMC,eAAe,GAAGhF,OAAO,CAAC,MAAM;IACpC;IACA,IAAI6D,cAAc,EAAE;MAClB,MAAMoB,WAAW,GAAGV,WAAW,EAAErC,gBAAgB,IAAI,QAAQ;MAC7D,OAAOD,yBAAyB,CAC9BgD,WAAW,EACX9C,WAAW,EACXC,YAAY,EACZL,aAAa,EACbO,MACF,CAAC;IACH;;IAEA;IACA,IAAI,CAACuC,YAAY,EAAE;MACjB,OAAO;QAAEnC,GAAG,EAAEN,YAAY,GAAG,CAAC,GAAGJ,wBAAwB,GAAG,CAAC;QAAEW,IAAI,EAAER,WAAW,GAAG,CAAC,GAAGJ,aAAa,GAAG;MAAE,CAAC;IAC5G;IAEA,MAAMmD,YAAY,GAAGL,YAAY,CAACM,CAAC,GAAGN,YAAY,CAAC1B,MAAM,GAAGa,WAAW,CAACnC,gBAAgB;IACxF,MAAMuD,SAAS,GAAGP,YAAY,CAACM,CAAC,GAAGnB,WAAW,CAACnC,gBAAgB;;IAE/D;IACA,IAAIwD,QAAyB,GAAGd,WAAW,EAAES,eAAe,IAAI,MAAM;IAEtE,IAAIK,QAAQ,KAAK,MAAM,EAAE;MACvB;MACA,MAAMC,UAAU,GAAGF,SAAS,GAAG9C,MAAM,CAACI,GAAG;MACzC,MAAM6C,UAAU,GAAGnD,YAAY,GAAG8C,YAAY,GAAG5C,MAAM,CAACM,MAAM;MAE9DyC,QAAQ,GAAGE,UAAU,IAAI,GAAG,GAAG,QAAQ,GAAGD,UAAU,IAAI,GAAG,GAAG,KAAK,GAAG,QAAQ;IAChF;IAEA,IAAI5C,GAAW;IACf,IAAIC,IAAY,GAAG6C,IAAI,CAACC,GAAG,CACzB3D,cAAc,EACd0D,IAAI,CAACE,GAAG,CACNb,YAAY,CAACc,CAAC,GAAGd,YAAY,CAAC3B,KAAK,GAAG,CAAC,GAAGnB,aAAa,GAAG,CAAC,EAC3DI,WAAW,GAAGJ,aAAa,GAAGD,cAChC,CACF,CAAC;IAED,IAAIuD,QAAQ,KAAK,KAAK,EAAE;MACtB3C,GAAG,GAAG0C,SAAS,GAAGtD,cAAc,GAAG,GAAG,CAAC,CAAC;IAC1C,CAAC,MAAM;MACLY,GAAG,GAAGwC,YAAY,GAAGpD,cAAc;IACrC;;IAEA;IACAY,GAAG,GAAG8C,IAAI,CAACC,GAAG,CAACnD,MAAM,CAACI,GAAG,GAAGZ,cAAc,EAAE0D,IAAI,CAACE,GAAG,CAAChD,GAAG,EAAEN,YAAY,GAAG,GAAG,GAAGE,MAAM,CAACM,MAAM,CAAC,CAAC;IAE9F,OAAO;MAAEF,GAAG;MAAEC,IAAI;MAAE0C;IAAS,CAAC;EAChC,CAAC,EAAE,CAACR,YAAY,EAAE1C,WAAW,EAAEC,YAAY,EAAEE,MAAM,EAAEiC,WAAW,EAAES,eAAe,EAAET,WAAW,EAAErC,gBAAgB,EAAE8B,WAAW,CAACnC,gBAAgB,EAAEgC,cAAc,CAAC,CAAC;;EAEhK;EACA;EACA,MAAM+B,iBAAiB,GAAGvC,QAAQ,IAAIkB,WAAW,KAAKM,YAAY,IAAIhB,cAAc,IAAIE,SAAS,CAAC;;EAElG;EACA,MAAM8B,aAAa,GAAGpF,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MACLqF,OAAO,EAAEpF,UAAU,CAACkF,iBAAiB,GAAG,CAAC,GAAG,CAAC,EAAE;QAC7CG,QAAQ,EAAEhD,iBAAiB;QAC3BiD,MAAM,EAAEpF,MAAM,CAACqF,KAAK,CAACrF,MAAM,CAACsF,IAAI;MAClC,CAAC,CAAC;MACFC,SAAS,EAAE,CACT;QACEC,UAAU,EAAEzF,UAAU,CAACiF,iBAAiB,GAAG,CAAC,GAAG,EAAE,EAAE;UACjDS,OAAO,EAAE,EAAE;UACXC,SAAS,EAAE;QACb,CAAC;MACH,CAAC;IAEL,CAAC;EACH,CAAC,EAAE,CAACV,iBAAiB,EAAE7C,iBAAiB,CAAC,CAAC;EAE1C,IAAI,CAACM,QAAQ,IAAI,CAACkB,WAAW,EAAE;IAC7B,OAAO,IAAI;EACb;;EAEA;EACA,IAAIR,SAAS,EAAE;IACb,oBACE3C,KAAA,CAACZ,QAAQ,CAACP,IAAI;MACZsG,KAAK,EAAE,CACLC,MAAM,CAACC,gBAAgB,EACvB;QACE/D,GAAG,EAAEsC,eAAe,CAACtC,GAAG;QACxBC,IAAI,EAAEqC,eAAe,CAACrC,IAAI;QAC1BO,KAAK,EAAEnB,aAAa;QACpB2E,eAAe,EAAE1C,WAAW,CAAC1C,sBAAsB;QACnDqF,WAAW,EAAE3C,WAAW,CAACzC,kBAAkB;QAC3CqF,YAAY,EAAE5C,WAAW,CAACxC;MAC5B,CAAC,EACDqE,aAAa,CACb;MAAAgB,QAAA,gBAEFzF,KAAA,CAACnB,IAAI;QAACsG,KAAK,EAAEC,MAAM,CAACM,gBAAiB;QAAAD,QAAA,gBACnC3F,IAAA,CAACX,iBAAiB;UAACwG,KAAK,EAAE/C,WAAW,CAACrC;QAAa,CAAE,CAAC,eACtDT,IAAA,CAAChB,IAAI;UAACqG,KAAK,EAAE,CAACC,MAAM,CAACQ,WAAW,EAAE;YAAED,KAAK,EAAE/C,WAAW,CAACtC;UAAiB,CAAC,CAAE;UAAAmF,QAAA,EACxE/C,YAAY,EAAEmD,OAAO,IAAIhD,YAAY,CAACK;QAAc,CACjD,CAAC;MAAA,CACH,CAAC,eACPpD,IAAA,CAACb,gBAAgB;QAAC6G,OAAO,EAAEtD,IAAK;QAAC2C,KAAK,EAAEC,MAAM,CAACW,UAAW;QAAAN,QAAA,eACxD3F,IAAA,CAAChB,IAAI;UAACqG,KAAK,EAAE,CAACC,MAAM,CAACY,QAAQ,EAAE;YAAEL,KAAK,EAAE/C,WAAW,CAACpC;UAAW,CAAC,CAAE;UAAAiF,QAAA,EAC/D5C,YAAY,CAACL;QAAI,CACd;MAAC,CACS,CAAC;IAAA,CACN,CAAC;EAEpB;;EAEA;EACA,IAAI,CAACC,cAAc,IAAI,CAACgB,YAAY,EAAE;IACpC,OAAO,IAAI;EACb;;EAEA;EACA,IAAI7B,mBAAmB,EAAE;IACvB,oBACE9B,IAAA,CAACV,QAAQ,CAACP,IAAI;MACZsG,KAAK,EAAE,CACLC,MAAM,CAACC,gBAAgB,EACvB;QACE/D,GAAG,EAAEsC,eAAe,CAACtC,GAAG;QACxBC,IAAI,EAAEqC,eAAe,CAACrC,IAAI;QAC1BO,KAAK,EAAEnB;MACT,CAAC,EACD8D,aAAa,CACb;MAAAgB,QAAA,EAED7D,mBAAmB,CAAC;QACnBqE,IAAI,EAAE9C,WAAW;QACjB+C,YAAY,EAAE9D,gBAAgB;QAC9BiB,UAAU;QACV8C,MAAM,EAAE7D,IAAI;QACZ8D,UAAU,EAAE7D,QAAQ;QACpB8D,MAAM,EAAE7D;MACV,CAAC;IAAC,CACW,CAAC;EAEpB;;EAEA;EACA,oBACExC,KAAA,CAACZ,QAAQ,CAACP,IAAI;IACZsG,KAAK,EAAE,CACLC,MAAM,CAACC,gBAAgB,EACvB;MACE/D,GAAG,EAAEsC,eAAe,CAACtC,GAAG;MACxBC,IAAI,EAAEqC,eAAe,CAACrC,IAAI;MAC1BO,KAAK,EAAEnB,aAAa;MACpB2E,eAAe,EAAE1C,WAAW,CAAC1C,sBAAsB;MACnDqF,WAAW,EAAE3C,WAAW,CAACzC,kBAAkB;MAC3CqF,YAAY,EAAE5C,WAAW,CAACxC;IAC5B,CAAC,EACDqE,aAAa,CACb;IAAAgB,QAAA,gBAGFzF,KAAA,CAACnB,IAAI;MAACsG,KAAK,EAAEC,MAAM,CAACkB,iBAAkB;MAAAb,QAAA,gBACpC3F,IAAA,CAAChB,IAAI;QAACqG,KAAK,EAAE,CAACC,MAAM,CAACmB,YAAY,EAAE;UAAEZ,KAAK,EAAE/C,WAAW,CAACpC;QAAW,CAAC,CAAE;QAAAiF,QAAA,EACnE5C,YAAY,CAACE,MAAM,CAACX,gBAAgB,GAAG,CAAC,EAAEiB,UAAU;MAAC,CAClD,CAAC,eACPvD,IAAA,CAACjB,IAAI;QAACsG,KAAK,EAAEC,MAAM,CAACoB,YAAa;QAAAf,QAAA,EAC9BgB,KAAK,CAACC,IAAI,CAAC;UAAEpD,MAAM,EAAED;QAAW,CAAC,CAAC,CAACsD,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBAC3C/G,IAAA,CAACjB,IAAI;UAEHsG,KAAK,EAAE,CACLC,MAAM,CAAC0B,WAAW,EAClB;YACExB,eAAe,EACbuB,CAAC,KAAKzE,gBAAgB,GAClBQ,WAAW,CAACrC,YAAY,GACxBqC,WAAW,CAACpC,UAAU;YAC5BkE,OAAO,EAAEmC,CAAC,KAAKzE,gBAAgB,GAAG,CAAC,GAAG;UACxC,CAAC;QACD,GAVGyE,CAWN,CACF;MAAC,CACE,CAAC;IAAA,CACH,CAAC,eAGP7G,KAAA,CAACnB,IAAI;MAACsG,KAAK,EAAEC,MAAM,CAAC2B,OAAQ;MAAAtB,QAAA,gBAC1B3F,IAAA,CAAChB,IAAI;QAACqG,KAAK,EAAE,CAACC,MAAM,CAAC4B,KAAK,EAAE;UAAErB,KAAK,EAAE/C,WAAW,CAACvC;QAAW,CAAC,CAAE;QAAAoF,QAAA,EAC5DtC,WAAW,CAAC6D;MAAK,CACd,CAAC,eACPlH,IAAA,CAAChB,IAAI;QAACqG,KAAK,EAAE,CAACC,MAAM,CAAC6B,WAAW,EAAE;UAAEtB,KAAK,EAAE/C,WAAW,CAACtC;QAAiB,CAAC,CAAE;QAAAmF,QAAA,EACxEtC,WAAW,CAAC8D;MAAW,CACpB,CAAC,EACN9D,WAAW,CAAC+D,aAAa;IAAA,CACtB,CAAC,eAGPlH,KAAA,CAACnB,IAAI;MAACsG,KAAK,EAAEC,MAAM,CAAC+B,eAAgB;MAAA1B,QAAA,gBAClC3F,IAAA,CAACb,gBAAgB;QAAC6G,OAAO,EAAEtD,IAAK;QAAC2C,KAAK,EAAEC,MAAM,CAACW,UAAW;QAAAN,QAAA,eACxD3F,IAAA,CAAChB,IAAI;UAACqG,KAAK,EAAE,CAACC,MAAM,CAACY,QAAQ,EAAE;YAAEL,KAAK,EAAE/C,WAAW,CAACpC;UAAW,CAAC,CAAE;UAAAiF,QAAA,EAC/D5C,YAAY,CAACL;QAAI,CACd;MAAC,CACS,CAAC,eAEnBxC,KAAA,CAACnB,IAAI;QAACsG,KAAK,EAAEC,MAAM,CAACgC,UAAW;QAAA3B,QAAA,GAC5B,CAAClC,WAAW,iBACXzD,IAAA,CAACb,gBAAgB;UACf6G,OAAO,EAAEvD,QAAS;UAClB4C,KAAK,EAAE,CAACC,MAAM,CAACiC,SAAS,EAAEjC,MAAM,CAACkC,UAAU,CAAE;UAAA7B,QAAA,eAE7C3F,IAAA,CAAChB,IAAI;YAACqG,KAAK,EAAE,CAACC,MAAM,CAACmC,cAAc,EAAE;cAAE5B,KAAK,EAAE/C,WAAW,CAACrC;YAAa,CAAC,CAAE;YAAAkF,QAAA,EACvE5C,YAAY,CAACN;UAAQ,CAClB;QAAC,CACS,CACnB,eACDzC,IAAA,CAACb,gBAAgB;UACf6G,OAAO,EAAExD,IAAK;UACd6C,KAAK,EAAE,CACLC,MAAM,CAACiC,SAAS,EAChBjC,MAAM,CAACoC,UAAU,EACjB;YAAElC,eAAe,EAAE1C,WAAW,CAACrC;UAAa,CAAC,CAC7C;UAAAkF,QAAA,eAEF3F,IAAA,CAAChB,IAAI;YAACqG,KAAK,EAAEC,MAAM,CAACqC,cAAe;YAAAhC,QAAA,EAChCjC,UAAU,GAAGX,YAAY,CAACC,MAAM,GAAGD,YAAY,CAACP;UAAI,CACjD;QAAC,CACS,CAAC;MAAA,CACf,CAAC;IAAA,CACH,CAAC;EAAA,CACM,CAAC;AAEpB;AAEA,MAAM8C,MAAM,GAAGrG,UAAU,CAAC2I,MAAM,CAAC;EAC/BrC,gBAAgB,EAAE;IAChBpB,QAAQ,EAAE,UAAU;IACpB0D,MAAM,EAAE,IAAI;IACZC,WAAW,EAAE,CAAC;IACdC,OAAO,EAAE,EAAE;IACX,GAAG3I,QAAQ,CAAC4I,MAAM,CAAC;MACjBC,GAAG,EAAE;QACHC,WAAW,EAAE,MAAM;QACnBC,YAAY,EAAE;UAAEnG,KAAK,EAAE,CAAC;UAAEC,MAAM,EAAE;QAAE,CAAC;QACrCmG,aAAa,EAAE,IAAI;QACnBC,YAAY,EAAE;MAChB,CAAC;MACDC,OAAO,EAAE;QACPC,SAAS,EAAE;MACb,CAAC;MACDC,GAAG,EAAE;QACHC,SAAS,EAAE;MACb;IACF,CAAC;EACH,CAAC;EACDjC,iBAAiB,EAAE;IACjBkC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,eAAe;IAC/BC,YAAY,EAAE;EAChB,CAAC;EACDpC,YAAY,EAAE;IACZqC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDrC,YAAY,EAAE;IACZgC,aAAa,EAAE,KAAK;IACpBM,GAAG,EAAE;EACP,CAAC;EACDhC,WAAW,EAAE;IACXhF,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,CAAC;IACTyD,YAAY,EAAE;EAChB,CAAC;EACDuB,OAAO,EAAE;IACP4B,YAAY,EAAE;EAChB,CAAC;EACD3B,KAAK,EAAE;IACL4B,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBF,YAAY,EAAE;EAChB,CAAC;EACD1B,WAAW,EAAE;IACX2B,QAAQ,EAAE,EAAE;IACZG,UAAU,EAAE;EACd,CAAC;EACD5B,eAAe,EAAE;IACfqB,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACD3C,UAAU,EAAE;IACViD,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE;EACrB,CAAC;EACDjD,QAAQ,EAAE;IACR4C,QAAQ,EAAE;EACZ,CAAC;EACDxB,UAAU,EAAE;IACVoB,aAAa,EAAE,KAAK;IACpBM,GAAG,EAAE;EACP,CAAC;EACDzB,SAAS,EAAE;IACT2B,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,EAAE;IACrBzD,YAAY,EAAE;EAChB,CAAC;EACD8B,UAAU,EAAE;IACVhC,eAAe,EAAE;EACnB,CAAC;EACDiC,cAAc,EAAE;IACdqB,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDrB,UAAU,EAAE,CAAC,CAAC;EACdC,cAAc,EAAE;IACd9B,KAAK,EAAE,SAAS;IAChBiD,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE;EACd,CAAC;EACDnD,gBAAgB,EAAE;IAChB8C,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBI,GAAG,EAAE,EAAE;IACPE,eAAe,EAAE,CAAC;IAClBL,YAAY,EAAE;EAChB,CAAC;EACD/C,WAAW,EAAE;IACXgD,QAAQ,EAAE,EAAE;IACZG,UAAU,EAAE;EACd;AACF,CAAC,CAAC","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 @@
|
|
|
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":";;AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAGxD;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAClCC,OAA6C,EAC7CC,QAAgB,EAChB;EACA,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGL,QAAQ,CAAwB,IAAI,CAAC;EACrE,MAAM,CAACM,SAAS,EAAEC,YAAY,CAAC,GAAGP,QAAQ,CAAC,IAAI,CAAC;EAChD,MAAM,CAACQ,KAAK,EAAEC,QAAQ,CAAC,GAAGT,QAAQ,CAAgB,IAAI,CAAC;;EAEvD;EACAD,SAAS,CAAC,MAAM;IACd,IAAI,CAACG,OAAO,EAAE;MACZK,YAAY,CAAC,KAAK,CAAC;MACnB;IACF;IAEA,IAAIG,OAAO,GAAG,IAAI;IAElB,MAAMC,YAAY,GAAG,MAAAA,CAAA,KAAY;MAC/B,IAAI;QACFJ,YAAY,CAAC,IAAI,CAAC;QAClBE,QAAQ,CAAC,IAAI,CAAC;QACd,MAAMG,IAAI,GAAG,MAAMV,OAAO,CAACS,YAAY,CAACR,QAAQ,CAAC;QACjD,IAAIO,OAAO,EAAE;UACXL,WAAW,CAACO,IAAI,CAAC;QACnB;MACF,CAAC,CAAC,OAAOC,GAAG,EAAE;QACZ,IAAIH,OAAO,EAAE;UACXD,QAAQ,CAACI,GAAG,YAAYC,KAAK,GAAGD,GAAG,CAACE,OAAO,GAAG,yBAAyB,CAAC;QAC1E;MACF,CAAC,SAAS;QACR,IAAIL,OAAO,EAAE;UACXH,YAAY,CAAC,KAAK,CAAC;QACrB;MACF;IACF,CAAC;IAEDI,YAAY,CAAC,CAAC;IAEd,OAAO,MAAM;MACXD,OAAO,GAAG,KAAK;IACjB,CAAC;EACH,CAAC,EAAE,CAACR,OAAO,EAAEC,QAAQ,CAAC,CAAC;EAEvB,MAAMa,YAAY,GAAGlB,WAAW,CAC9B,MAAOmB,WAA6C,IAAK;IACvD,IAAI,CAACf,OAAO,EAAE;IAEd,MAAMgB,YAA4B,GAAG;MACnC,GAAGD,WAAW;MACdd;IACF,CAAC;IAED,IAAI;MACFM,QAAQ,CAAC,IAAI,CAAC;MACd,MAAMP,OAAO,CAACc,YAAY,CAACE,YAAY,CAAC;MACxCb,WAAW,CAACa,YAAY,CAAC;IAC3B,CAAC,CAAC,OAAOL,GAAG,EAAE;MACZJ,QAAQ,CAACI,GAAG,YAAYC,KAAK,GAAGD,GAAG,CAACE,OAAO,GAAG,yBAAyB,CAAC;MACxE,MAAMF,GAAG;IACX;EACF,CAAC,EACD,CAACX,OAAO,EAAEC,QAAQ,CACpB,CAAC;EAED,MAAMgB,aAAa,GAAGrB,WAAW,CAAC,YAAY;IAC5C,IAAI,CAACI,OAAO,EAAEiB,aAAa,EAAE;IAE7B,IAAI;MACFV,QAAQ,CAAC,IAAI,CAAC;MACd,MAAMP,OAAO,CAACiB,aAAa,CAAChB,QAAQ,CAAC;MACrCE,WAAW,CAAC,IAAI,CAAC;IACnB,CAAC,CAAC,OAAOQ,GAAG,EAAE;MACZJ,QAAQ,CAACI,GAAG,YAAYC,KAAK,GAAGD,GAAG,CAACE,OAAO,GAAG,0BAA0B,CAAC;MACzE,MAAMF,GAAG;IACX;EACF,CAAC,EAAE,CAACX,OAAO,EAAEC,QAAQ,CAAC,CAAC;EAEvB,MAAMiB,aAAa,GAAGtB,WAAW,CAAC,YAAY;IAC5C,MAAMuB,YAAY,GAAGjB,QAAQ,EAAEkB,eAAe,IAAI,CAAC;IACnD,MAAMN,YAAY,CAAC;MACjBO,SAAS,EAAE,IAAI;MACfC,WAAW,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACrCJ,eAAe,EAAED,YAAY,GAAG;IAClC,CAAC,CAAC;EACJ,CAAC,EAAE,CAACL,YAAY,EAAEZ,QAAQ,EAAEkB,eAAe,CAAC,CAAC;EAE7C,MAAMK,cAAc,GAAG7B,WAAW,CAChC,MAAO8B,SAAiB,IAAK;IAC3B,MAAMZ,YAAY,CAAC;MACjBO,SAAS,EAAEnB,QAAQ,EAAEmB,SAAS,IAAI,KAAK;MACvCM,aAAa,EAAED,SAAS;MACxBJ,WAAW,EAAEpB,QAAQ,EAAEoB,WAAW;MAClCF,eAAe,EAAElB,QAAQ,EAAEkB;IAC7B,CAAC,CAAC;EACJ,CAAC,EACD,CAACN,YAAY,EAAEZ,QAAQ,CACzB,CAAC;EAED,OAAO;IACLA,QAAQ;IACRE,SAAS;IACTE,KAAK;IACLsB,WAAW,EAAE1B,QAAQ,EAAEmB,SAAS,IAAI,KAAK;IACzCQ,UAAU,EAAE3B,QAAQ,KAAK,IAAI;IAC7BY,YAAY;IACZG,aAAa;IACbC,aAAa;IACbO;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASK,mBAAmBA,CACjC9B,OAA6C,EAC7CC,QAAgB,EAChB8B,OAKC,EACD;EACA,MAAM;IAAE7B,QAAQ;IAAEE;EAAU,CAAC,GAAGL,oBAAoB,CAACC,OAAO,EAAEC,QAAQ,CAAC;EACvE,MAAM,CAAC+B,UAAU,EAAEC,aAAa,CAAC,GAAGnC,QAAQ,CAAC,KAAK,CAAC;EACnD,MAAM,CAACoC,UAAU,EAAEC,aAAa,CAAC,GAAGrC,QAAQ,CAAC,IAAI,CAAC;EAElDD,SAAS,CAAC,MAAM;IACd,IAAIO,SAAS,EAAE;IAEf,MAAMgC,cAAc,GAAG,MAAAA,CAAA,KAAY;MACjCD,aAAa,CAAC,IAAI,CAAC;;MAEnB;MACA,IAAIJ,OAAO,EAAEM,SAAS,EAAE;QACtBJ,aAAa,CAAC,IAAI,CAAC;QACnBE,aAAa,CAAC,KAAK,CAAC;QACpB;MACF;;MAEA;MACA,IAAIjC,QAAQ,EAAEmB,SAAS,EAAE;QACvBY,aAAa,CAAC,KAAK,CAAC;QACpBE,aAAa,CAAC,KAAK,CAAC;QACpB;MACF;;MAEA;MACA,IAAIJ,OAAO,EAAEO,mBAAmB,EAAE;QAChC,IAAI;UACF,MAAMC,MAAM,GAAG,MAAMR,OAAO,CAACO,mBAAmB,CAAC,CAAC;UAClDL,aAAa,CAACM,MAAM,CAAC;QACvB,CAAC,CAAC,MAAM;UACNN,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB;MACF,CAAC,MAAM;QACL;QACAA,aAAa,CAAC,IAAI,CAAC;MACrB;MAEAE,aAAa,CAAC,KAAK,CAAC;IACtB,CAAC;IAEDC,cAAc,CAAC,CAAC;EAClB,CAAC,EAAE,CAAChC,SAAS,EAAEF,QAAQ,EAAEmB,SAAS,EAAEU,OAAO,EAAEM,SAAS,EAAEN,OAAO,EAAEO,mBAAmB,CAAC,CAAC;EAEtF,OAAO;IACLN,UAAU;IACVE,UAAU,EAAE9B,SAAS,IAAI8B,UAAU;IACnCN,WAAW,EAAE1B,QAAQ,EAAEmB,SAAS,IAAI;EACtC,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["persistence/index.ts"],"mappings":";;AAAA,cAAc,eAAY;AAC1B,cAAc,YAAS","ignoreList":[]}
|