@digia-engage/core 2.0.3 → 2.2.0

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 (65) hide show
  1. package/DigiaEngageReactNative.podspec +1 -1
  2. package/android/.project +28 -0
  3. package/android/bin/.gradle/8.13/fileHashes/fileHashes.lock +0 -0
  4. package/android/bin/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  5. package/android/bin/.gradle/buildOutputCleanup/cache.properties +2 -0
  6. package/android/bin/.project +34 -0
  7. package/android/bin/build/generated/source/buildConfig/debug/com/digia/engage/rn/BuildConfig.class +0 -0
  8. package/android/bin/build/generated/source/codegen/java/com/digia/engage/rn/NativeDigiaEngageSpec.class +0 -0
  9. package/android/bin/build.gradle +97 -0
  10. package/android/bin/gradle/wrapper/gradle-wrapper.jar +0 -0
  11. package/android/bin/gradle/wrapper/gradle-wrapper.properties +5 -0
  12. package/android/bin/gradle.properties +2 -0
  13. package/android/bin/gradlew +185 -0
  14. package/android/bin/gradlew.bat +89 -0
  15. package/android/bin/local.properties +1 -0
  16. package/android/bin/settings.gradle +25 -0
  17. package/android/bin/src/main/AndroidManifest.xml +2 -0
  18. package/android/bin/src/main/java/com/digia/engage/rn/DigiaAnchorViewManager.kt +90 -0
  19. package/android/bin/src/main/java/com/digia/engage/rn/DigiaModule.kt +309 -0
  20. package/android/bin/src/main/java/com/digia/engage/rn/DigiaPackage.kt +70 -0
  21. package/android/bin/src/main/java/com/digia/engage/rn/DigiaSlotViewManager.kt +183 -0
  22. package/android/bin/src/main/java/com/digia/engage/rn/DigiaViewManager.kt +64 -0
  23. package/android/build.gradle +1 -1
  24. package/android/src/main/java/com/digia/engage/rn/DigiaModule.kt +37 -13
  25. package/ios/DigiaEngageModule.m +25 -26
  26. package/ios/DigiaModule.swift +71 -10
  27. package/lib/commonjs/Digia.js +13 -2
  28. package/lib/commonjs/Digia.js.map +1 -1
  29. package/lib/commonjs/DigiaAnchorView.js +7 -3
  30. package/lib/commonjs/DigiaAnchorView.js.map +1 -1
  31. package/lib/commonjs/DigiaGuideController.js.map +1 -1
  32. package/lib/commonjs/DigiaProvider.js +70 -26
  33. package/lib/commonjs/DigiaProvider.js.map +1 -1
  34. package/lib/commonjs/digiaAnchorRegistry.js +15 -1
  35. package/lib/commonjs/digiaAnchorRegistry.js.map +1 -1
  36. package/lib/commonjs/interpolate.js +41 -0
  37. package/lib/commonjs/interpolate.js.map +1 -0
  38. package/lib/module/Digia.js +13 -2
  39. package/lib/module/Digia.js.map +1 -1
  40. package/lib/module/DigiaAnchorView.js +7 -3
  41. package/lib/module/DigiaAnchorView.js.map +1 -1
  42. package/lib/module/DigiaGuideController.js.map +1 -1
  43. package/lib/module/DigiaProvider.js +72 -27
  44. package/lib/module/DigiaProvider.js.map +1 -1
  45. package/lib/module/digiaAnchorRegistry.js +15 -1
  46. package/lib/module/digiaAnchorRegistry.js.map +1 -1
  47. package/lib/module/interpolate.js +34 -0
  48. package/lib/module/interpolate.js.map +1 -0
  49. package/lib/typescript/Digia.d.ts +1 -0
  50. package/lib/typescript/Digia.d.ts.map +1 -1
  51. package/lib/typescript/DigiaGuideController.d.ts +2 -0
  52. package/lib/typescript/DigiaGuideController.d.ts.map +1 -1
  53. package/lib/typescript/DigiaProvider.d.ts.map +1 -1
  54. package/lib/typescript/digiaAnchorRegistry.d.ts +4 -0
  55. package/lib/typescript/digiaAnchorRegistry.d.ts.map +1 -1
  56. package/lib/typescript/interpolate.d.ts +4 -0
  57. package/lib/typescript/interpolate.d.ts.map +1 -0
  58. package/package.json +4 -5
  59. package/react-native.config.js +1 -1
  60. package/src/Digia.ts +15 -2
  61. package/src/DigiaAnchorView.tsx +8 -1
  62. package/src/DigiaGuideController.ts +2 -0
  63. package/src/DigiaProvider.tsx +185 -145
  64. package/src/digiaAnchorRegistry.ts +16 -1
  65. package/src/interpolate.ts +44 -0
@@ -0,0 +1,34 @@
1
+ const PLACEHOLDER_PATTERN = /\{\{\s*([A-Za-z_][A-Za-z0-9_]*)\s*\}\}/g;
2
+ export function interpolateVariables(text, variables) {
3
+ if (!variables) return text;
4
+ return text.replace(PLACEHOLDER_PATTERN, (match, name) => {
5
+ const value = variables[name];
6
+ return value === undefined ? '' : value;
7
+ });
8
+ }
9
+ export function parseVariableMap(raw) {
10
+ const source = parseVariableSource(raw);
11
+ if (!source) return undefined;
12
+ const variables = {};
13
+ for (const [key, value] of Object.entries(source)) {
14
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) continue;
15
+ if (typeof value === 'string') variables[key] = value;else if (typeof value === 'number' || typeof value === 'boolean') variables[key] = String(value);
16
+ }
17
+ return Object.keys(variables).length > 0 ? variables : undefined;
18
+ }
19
+ function parseVariableSource(raw) {
20
+ if (!raw) return undefined;
21
+ if (typeof raw === 'string') {
22
+ try {
23
+ const parsed = JSON.parse(raw);
24
+ return isPlainObject(parsed) ? parsed : undefined;
25
+ } catch {
26
+ return undefined;
27
+ }
28
+ }
29
+ return isPlainObject(raw) ? raw : undefined;
30
+ }
31
+ function isPlainObject(value) {
32
+ return !!value && typeof value === 'object' && !Array.isArray(value);
33
+ }
34
+ //# sourceMappingURL=interpolate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PLACEHOLDER_PATTERN","interpolateVariables","text","variables","replace","match","name","value","undefined","parseVariableMap","raw","source","parseVariableSource","key","Object","entries","test","String","keys","length","parsed","JSON","parse","isPlainObject","Array","isArray"],"sourceRoot":"../../src","sources":["interpolate.ts"],"mappings":"AAEA,MAAMA,mBAAmB,GAAG,yCAAyC;AAErE,OAAO,SAASC,oBAAoBA,CAChCC,IAAY,EACZC,SAAkC,EAC5B;EACN,IAAI,CAACA,SAAS,EAAE,OAAOD,IAAI;EAC3B,OAAOA,IAAI,CAACE,OAAO,CAACJ,mBAAmB,EAAE,CAACK,KAAK,EAAEC,IAAY,KAAK;IAC9D,MAAMC,KAAK,GAAGJ,SAAS,CAACG,IAAI,CAAC;IAC7B,OAAOC,KAAK,KAAKC,SAAS,GAAG,EAAE,GAAGD,KAAK;EAC3C,CAAC,CAAC;AACN;AAEA,OAAO,SAASE,gBAAgBA,CAACC,GAAY,EAA2B;EACpE,MAAMC,MAAM,GAAGC,mBAAmB,CAACF,GAAG,CAAC;EACvC,IAAI,CAACC,MAAM,EAAE,OAAOH,SAAS;EAE7B,MAAML,SAAsB,GAAG,CAAC,CAAC;EACjC,KAAK,MAAM,CAACU,GAAG,EAAEN,KAAK,CAAC,IAAIO,MAAM,CAACC,OAAO,CAACJ,MAAM,CAAC,EAAE;IAC/C,IAAI,CAAC,0BAA0B,CAACK,IAAI,CAACH,GAAG,CAAC,EAAE;IAC3C,IAAI,OAAON,KAAK,KAAK,QAAQ,EAAEJ,SAAS,CAACU,GAAG,CAAC,GAAGN,KAAK,CAAC,KACjD,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAEJ,SAAS,CAACU,GAAG,CAAC,GAAGI,MAAM,CAACV,KAAK,CAAC;EACpG;EACA,OAAOO,MAAM,CAACI,IAAI,CAACf,SAAS,CAAC,CAACgB,MAAM,GAAG,CAAC,GAAGhB,SAAS,GAAGK,SAAS;AACpE;AAEA,SAASI,mBAAmBA,CAACF,GAAY,EAAuC;EAC5E,IAAI,CAACA,GAAG,EAAE,OAAOF,SAAS;EAC1B,IAAI,OAAOE,GAAG,KAAK,QAAQ,EAAE;IACzB,IAAI;MACA,MAAMU,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACZ,GAAG,CAAC;MAC9B,OAAOa,aAAa,CAACH,MAAM,CAAC,GAAGA,MAAM,GAAGZ,SAAS;IACrD,CAAC,CAAC,MAAM;MACJ,OAAOA,SAAS;IACpB;EACJ;EACA,OAAOe,aAAa,CAACb,GAAG,CAAC,GAAGA,GAAG,GAAGF,SAAS;AAC/C;AAEA,SAASe,aAAaA,CAAChB,KAAc,EAAoC;EACrE,OAAO,CAAC,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACiB,KAAK,CAACC,OAAO,CAAClB,KAAK,CAAC;AACxE","ignoreList":[]}
@@ -94,6 +94,7 @@ declare class DigiaClass implements DigiaDelegate {
94
94
  private _extractApiResponse;
95
95
  private _emitSlotWidth;
96
96
  private _extractCampaignKey;
97
+ private _extractVariables;
97
98
  private _extractString;
98
99
  private _parseTemplateConfig;
99
100
  private _loadOrCreateDeviceId;
@@ -1 +1 @@
1
- {"version":3,"file":"Digia.d.ts","sourceRoot":"","sources":["../../src/Digia.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,OAAO,KAAK,EAGR,WAAW,EACX,aAAa,EAEb,WAAW,EAIX,YAAY,EACf,MAAM,SAAS,CAAC;AAgBjB,cAAM,UAAW,YAAW,aAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAG3D,OAAO,CAAC,kBAAkB,CAAS;IAGnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,mBAAmB,CAAmC;IAC9D,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAE3D;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BpD;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAgBnC;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI;IAMlD;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMpC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMpE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIzC;;;;OAIG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAOK,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAiF/D,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ/C;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,uBAAuB;IA8B/B,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,qBAAqB;IAqC7B,OAAO,CAAC,kBAAkB;YAOZ,qBAAqB;YAgCrB,QAAQ;IAmBtB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,oBAAoB;YAkBd,qBAAqB;YAiBrB,kBAAkB;IAI1B,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5D,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB5F,OAAO,CAAC,IAAI;CAMf;AAED,eAAO,MAAM,KAAK,YAAmB,CAAC"}
1
+ {"version":3,"file":"Digia.d.ts","sourceRoot":"","sources":["../../src/Digia.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH,OAAO,KAAK,EAGR,WAAW,EACX,aAAa,EAEb,WAAW,EAIX,YAAY,EACf,MAAM,SAAS,CAAC;AAgBjB,cAAM,UAAW,YAAW,aAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAG3D,OAAO,CAAC,kBAAkB,CAAS;IAGnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,mBAAmB,CAAmC;IAC9D,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAE3D;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BpD;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAgBnC;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI;IAMlD;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMpC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMpE,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIzC;;;;OAIG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAOK,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkF/D,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ/C;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,uBAAuB;IA8B/B,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,qBAAqB;IAqC7B,OAAO,CAAC,kBAAkB;YAOZ,qBAAqB;YAgCrB,QAAQ;IAmBtB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,oBAAoB;YAkBd,qBAAqB;YAiBrB,kBAAkB;IAI1B,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5D,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB5F,OAAO,CAAC,IAAI;CAMf;AAED,eAAO,MAAM,KAAK,YAAmB,CAAC"}
@@ -1,10 +1,12 @@
1
1
  import type { GuideLifecycleEvent } from './types';
2
2
  import type { TemplateConfig } from './templateTypes';
3
+ import type { VariableMap } from './interpolate';
3
4
  export interface DigiaGuideRequest {
4
5
  payloadId: string;
5
6
  campaignKey: string;
6
7
  /** Digia backend UUID for this campaign (from the campaign store _id field). */
7
8
  campaignId: string;
9
+ variables?: VariableMap;
8
10
  config: TemplateConfig;
9
11
  onExperienceEvent: (event: GuideLifecycleEvent) => void;
10
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DigiaGuideController.d.ts","sourceRoot":"","sources":["../../src/DigiaGuideController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,iBAAiB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC3D;AAED,KAAK,yBAAyB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;AAErE,cAAM,oBAAoB;IACtB,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,cAAc,CAAkC;IAExD,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAUnD,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAU1C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAS/B,OAAO,CAAC,aAAa;CAMxB;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
1
+ {"version":3,"file":"DigiaGuideController.d.ts","sourceRoot":"","sources":["../../src/DigiaGuideController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,iBAAiB,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC3D;AAED,KAAK,yBAAyB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;AAErE,cAAM,oBAAoB;IACtB,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,cAAc,CAAkC;IAExD,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAUnD,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAU1C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAS/B,OAAO,CAAC,aAAa;CAMxB;AAED,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DigiaProvider.d.ts","sourceRoot":"","sources":["../../src/DigiaProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAwuBxE,wBAAgB,SAAS,sBAExB"}
1
+ {"version":3,"file":"DigiaProvider.d.ts","sourceRoot":"","sources":["../../src/DigiaProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8E,MAAM,OAAO,CAAC;AAgxBnG,wBAAgB,SAAS,sBAExB"}
@@ -5,11 +5,15 @@ type AnchorLayout = {
5
5
  height: number;
6
6
  };
7
7
  type Listener = (layout: AnchorLayout) => void;
8
+ type MeasureCallback = () => void;
8
9
  export type { AnchorLayout };
9
10
  export declare const digiaAnchorRegistry: {
10
11
  setLayout: (key: string, layout: AnchorLayout) => void;
11
12
  getLayout: (key: string) => AnchorLayout | undefined;
12
13
  subscribe: (key: string, listener: Listener) => () => void;
13
14
  remove: (key: string) => void;
15
+ registerMeasure: (key: string, cb: MeasureCallback) => void;
16
+ unregisterMeasure: (key: string, cb: MeasureCallback) => void;
17
+ remeasure: (key: string) => void;
14
18
  };
15
19
  //# sourceMappingURL=digiaAnchorRegistry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"digiaAnchorRegistry.d.ts","sourceRoot":"","sources":["../../src/digiaAnchorRegistry.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AACnF,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;AAwB9C,YAAY,EAAE,YAAY,EAAE,CAAA;AAC5B,eAAO,MAAM,mBAAmB;qBApBR,MAAM,UAAU,YAAY;qBAK5B,MAAM,KAAG,YAAY,GAAG,SAAS;qBAEjC,MAAM,YAAY,QAAQ,KAAG,MAAM,IAAI;kBAO1C,MAAM;CAMmD,CAAA"}
1
+ {"version":3,"file":"digiaAnchorRegistry.d.ts","sourceRoot":"","sources":["../../src/digiaAnchorRegistry.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AACnF,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;AAC9C,KAAK,eAAe,GAAG,MAAM,IAAI,CAAA;AAsCjC,YAAY,EAAE,YAAY,EAAE,CAAA;AAC5B,eAAO,MAAM,mBAAmB;qBAjCR,MAAM,UAAU,YAAY;qBAK5B,MAAM,KAAG,YAAY,GAAG,SAAS;qBAEjC,MAAM,YAAY,QAAQ,KAAG,MAAM,IAAI;kBAO1C,MAAM;2BAMG,MAAM,MAAM,eAAe;6BAIzB,MAAM,MAAM,eAAe;qBAInC,MAAM;CAK+F,CAAA"}
@@ -0,0 +1,4 @@
1
+ export type VariableMap = Record<string, string>;
2
+ export declare function interpolateVariables(text: string, variables: VariableMap | undefined): string;
3
+ export declare function parseVariableMap(raw: unknown): VariableMap | undefined;
4
+ //# sourceMappingURL=interpolate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/interpolate.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAIjD,wBAAgB,oBAAoB,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,GAAG,SAAS,GACnC,MAAM,CAMR;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAWtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digia-engage/core",
3
- "version": "2.0.3",
3
+ "version": "2.2.0",
4
4
  "description": "React Native bridge for Digia Engage – renders native Android Compose UI inside React Native apps",
5
5
  "main": "src/index.ts",
6
6
  "module": "src/index.ts",
@@ -46,16 +46,15 @@
46
46
  "license": "MIT",
47
47
  "dependencies": {
48
48
  "@react-native-async-storage/async-storage": "^2.1.2",
49
- "react-native-uuid": "^2.0.3"
49
+ "react-native-uuid": "^2.0.3",
50
+ "@edwardloopez/react-native-coachmark": "^0.5.3",
51
+ "@floating-ui/core": "^1.0.0"
50
52
  },
51
53
  "peerDependencies": {
52
- "@floating-ui/core": "^1.0.0",
53
54
  "react-native-reanimated": ">=3.0.0",
54
55
  "react-native-svg": ">=13.0.0"
55
56
  },
56
57
  "devDependencies": {
57
- "@edwardloopez/react-native-coachmark": "^0.5.3",
58
- "@floating-ui/core": "^1.7.5",
59
58
  "@react-native/eslint-config": "^0.73.0",
60
59
  "@types/react": "^18.2.0",
61
60
  "@types/react-native": "^0.73.0",
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * react-native.config.js
3
3
  *
4
- * Configures React Native CLI auto-linking for @digia/engage-react-native.
4
+ * Configures React Native CLI auto-linking for @digia-engage/core.
5
5
  * This tells the RN CLI where to find the Android library module and the
6
6
  * iOS podspec so that `npx react-native link` / auto-linking works without
7
7
  * any manual steps in host app project files.
package/src/Digia.ts CHANGED
@@ -19,6 +19,7 @@ import { DeviceEventEmitter } from 'react-native';
19
19
  import { nativeDigiaModule } from './NativeDigiaEngage';
20
20
  import { digiaHealthReporter, HealthEventType } from './DigiaHealthReporter';
21
21
  import { digiaGuideController } from './DigiaGuideController';
22
+ import { parseVariableMap } from './interpolate';
22
23
  import { digiaActionHandler } from './actionHandler';
23
24
  import uuid from 'react-native-uuid';
24
25
  import { frequencyStore } from './frequencyStore';
@@ -234,6 +235,7 @@ class DigiaClass implements DigiaDelegate {
234
235
  payloadId: payload.id,
235
236
  campaignKey,
236
237
  campaignId: digiaId,
238
+ variables: this._extractVariables(payload),
237
239
  config,
238
240
  onExperienceEvent: (event) => this._onGuideLifecycleEvent(event, payload.id, campaignKey, digiaId),
239
241
  });
@@ -505,12 +507,12 @@ class DigiaClass implements DigiaDelegate {
505
507
  }
506
508
 
507
509
  private _extractCampaignKey(payload: InAppPayload): string | null {
508
- const fromContent = this._extractString(payload.content, 'digiaKey', 'campaign_key', 'campaignKey');
510
+ const fromContent = this._extractString(payload.content, 'digia_campaign_key', 'digiaKey', 'campaign_key', 'campaignKey');
509
511
  if (fromContent) return fromContent;
510
512
 
511
513
  const args = payload.content.args;
512
514
  if (args && typeof args === 'object' && !Array.isArray(args)) {
513
- const fromArgs = this._extractString(args as Record<string, unknown>, 'digiaKey', 'campaign_key', 'campaignKey');
515
+ const fromArgs = this._extractString(args as Record<string, unknown>, 'digia_campaign_key', 'digiaKey', 'campaign_key', 'campaignKey');
514
516
  if (fromArgs) return fromArgs;
515
517
  }
516
518
 
@@ -518,6 +520,17 @@ class DigiaClass implements DigiaDelegate {
518
520
  return null;
519
521
  }
520
522
 
523
+ private _extractVariables(payload: InAppPayload): Record<string, string> | undefined {
524
+ const fromContent = parseVariableMap(payload.content.variables);
525
+ if (fromContent) return fromContent;
526
+
527
+ const args = payload.content.args;
528
+ if (args && typeof args === 'object' && !Array.isArray(args)) {
529
+ return parseVariableMap((args as Record<string, unknown>).variables);
530
+ }
531
+ return undefined;
532
+ }
533
+
521
534
  private _extractString(data: Record<string, unknown>, ...keys: string[]): string | null {
522
535
  for (const key of keys) {
523
536
  const value = data[key];
@@ -37,7 +37,13 @@ function JsMeasureAnchor({ anchorKey, children, style, ...rest }: Props) {
37
37
  });
38
38
  }, [anchorKey]);
39
39
 
40
- useEffect(() => () => { nativeDigiaModule.unregisterAnchor(anchorKey); }, [anchorKey]);
40
+ useEffect(() => {
41
+ digiaAnchorRegistry.registerMeasure(anchorKey, measure);
42
+ return () => {
43
+ digiaAnchorRegistry.unregisterMeasure(anchorKey, measure);
44
+ nativeDigiaModule.unregisterAnchor(anchorKey);
45
+ };
46
+ }, [anchorKey, measure]);
41
47
 
42
48
  return (
43
49
  <View ref={ref} onLayout={measure} style={style} {...rest}>
@@ -45,3 +51,4 @@ function JsMeasureAnchor({ anchorKey, children, style, ...rest }: Props) {
45
51
  </View>
46
52
  );
47
53
  }
54
+
@@ -1,11 +1,13 @@
1
1
  import type { GuideLifecycleEvent } from './types';
2
2
  import type { TemplateConfig } from './templateTypes';
3
+ import type { VariableMap } from './interpolate';
3
4
 
4
5
  export interface DigiaGuideRequest {
5
6
  payloadId: string;
6
7
  campaignKey: string;
7
8
  /** Digia backend UUID for this campaign (from the campaign store _id field). */
8
9
  campaignId: string;
10
+ variables?: VariableMap;
9
11
  config: TemplateConfig;
10
12
  onExperienceEvent: (event: GuideLifecycleEvent) => void;
11
13
  }