@giovchat/react-native 0.2.0 → 0.3.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 (73) hide show
  1. package/README.md +66 -9
  2. package/dist/GiovChat.d.ts +35 -0
  3. package/dist/GiovChat.d.ts.map +1 -1
  4. package/dist/GiovChat.js +45 -8
  5. package/dist/GiovChat.js.map +1 -1
  6. package/dist/brandingStyle.d.ts +38 -0
  7. package/dist/brandingStyle.d.ts.map +1 -0
  8. package/dist/brandingStyle.js +71 -0
  9. package/dist/brandingStyle.js.map +1 -0
  10. package/dist/client.d.ts +38 -2
  11. package/dist/client.d.ts.map +1 -1
  12. package/dist/client.js +91 -1
  13. package/dist/client.js.map +1 -1
  14. package/dist/components/Branding.d.ts +24 -1
  15. package/dist/components/Branding.d.ts.map +1 -1
  16. package/dist/components/Branding.js +49 -6
  17. package/dist/components/Branding.js.map +1 -1
  18. package/dist/components/MessageBubble.d.ts +8 -1
  19. package/dist/components/MessageBubble.d.ts.map +1 -1
  20. package/dist/components/MessageBubble.js +19 -17
  21. package/dist/components/MessageBubble.js.map +1 -1
  22. package/dist/components/RatingCard.d.ts +23 -0
  23. package/dist/components/RatingCard.d.ts.map +1 -0
  24. package/dist/components/RatingCard.js +107 -0
  25. package/dist/components/RatingCard.js.map +1 -0
  26. package/dist/errors.d.ts +3 -1
  27. package/dist/errors.d.ts.map +1 -1
  28. package/dist/errors.js.map +1 -1
  29. package/dist/i18n.d.ts +23 -0
  30. package/dist/i18n.d.ts.map +1 -1
  31. package/dist/i18n.js +100 -0
  32. package/dist/i18n.js.map +1 -1
  33. package/dist/index.d.ts +12 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +19 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/protocol.d.ts.map +1 -1
  38. package/dist/protocol.js +5 -0
  39. package/dist/protocol.js.map +1 -1
  40. package/dist/rating.d.ts +41 -0
  41. package/dist/rating.d.ts.map +1 -0
  42. package/dist/rating.js +165 -0
  43. package/dist/rating.js.map +1 -0
  44. package/dist/ratingStore.d.ts +36 -0
  45. package/dist/ratingStore.d.ts.map +1 -0
  46. package/dist/ratingStore.js +55 -0
  47. package/dist/ratingStore.js.map +1 -0
  48. package/dist/styleOverrides.d.ts +10 -2
  49. package/dist/styleOverrides.d.ts.map +1 -1
  50. package/dist/styleOverrides.js +9 -0
  51. package/dist/styleOverrides.js.map +1 -1
  52. package/dist/types.d.ts +45 -0
  53. package/dist/types.d.ts.map +1 -1
  54. package/dist/useChatSession.d.ts +18 -1
  55. package/dist/useChatSession.d.ts.map +1 -1
  56. package/dist/useChatSession.js +178 -9
  57. package/dist/useChatSession.js.map +1 -1
  58. package/package.json +3 -2
  59. package/src/GiovChat.tsx +121 -11
  60. package/src/brandingStyle.ts +87 -0
  61. package/src/client.ts +92 -2
  62. package/src/components/Branding.tsx +66 -7
  63. package/src/components/MessageBubble.tsx +17 -1
  64. package/src/components/RatingCard.tsx +219 -0
  65. package/src/errors.ts +4 -1
  66. package/src/i18n.ts +123 -0
  67. package/src/index.ts +17 -0
  68. package/src/protocol.ts +5 -0
  69. package/src/rating.ts +169 -0
  70. package/src/ratingStore.ts +65 -0
  71. package/src/styleOverrides.ts +15 -2
  72. package/src/types.ts +51 -0
  73. package/src/useChatSession.ts +152 -6
package/dist/protocol.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.object = object;
4
4
  exports.parseMessage = parseMessage;
5
+ const rating_1 = require("./rating");
5
6
  const attachments_1 = require("./attachments");
6
7
  const identity_1 = require("./identity");
7
8
  function object(value) {
@@ -24,11 +25,15 @@ function parseMessage(value) {
24
25
  const isAutomated = role === "agent" && (typeof m.isAutomated === "boolean" ? m.isAutomated : m.is_automated === 1);
25
26
  const human = role === "agent" && !isBot && !isAutomated;
26
27
  const attachments = (0, attachments_1.parseAttachments)(m.attachmentId ?? m.attachment_id, m.attachmentPreviews ?? m.attachment_previews);
28
+ // Unknown block types are ignored (protocol versioning); only the rating card is drawn.
29
+ const rating = Array.isArray(m.blocks) ? m.blocks.map(rating_1.parseRatingBlock).find((block) => block !== null) : undefined;
27
30
  return {
28
31
  id: m.id, role, content: m.content, createdAt, isBot, isAutomated,
29
32
  senderName: role === "agent" && typeof m.senderName === "string" ? m.senderName : undefined,
30
33
  ...(human && (0, identity_1.safeImageUrl)(m.senderAvatar) ? { senderAvatar: (0, identity_1.safeImageUrl)(m.senderAvatar) } : {}),
31
34
  ...(attachments.length ? { attachments } : {}),
35
+ ...(rating ? { rating } : {}),
36
+ ...(isBot && (m.feedback === "up" || m.feedback === "down") ? { feedback: m.feedback } : {}),
32
37
  };
33
38
  }
34
39
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":";;AAIA,wBAEC;AAOD,oCAiBC;AA7BD,+CAAiD;AACjD,yCAA0C;AAE1C,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtH,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC;IAC9C,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,CAAC;QAC7E,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/G,uFAAuF;IACvF,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC5F,MAAM,WAAW,GAAG,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC;IACpH,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC;IACzD,MAAM,WAAW,GAAG,IAAA,8BAAgB,EAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACvH,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW;QACjE,UAAU,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3F,GAAG,CAAC,KAAK,IAAI,IAAA,uBAAY,EAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAA,uBAAY,EAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":";;AAKA,wBAEC;AAOD,oCAqBC;AAlCD,qCAA4C;AAC5C,+CAAiD;AACjD,yCAA0C;AAE1C,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;AACtH,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAc;IACzC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC;IAC9C,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,CAAC;QAC7E,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/G,uFAAuF;IACvF,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC5F,MAAM,WAAW,GAAG,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC;IACpH,MAAM,KAAK,GAAG,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC;IACzD,MAAM,WAAW,GAAG,IAAA,8BAAgB,EAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACvH,wFAAwF;IACxF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpH,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW;QACjE,UAAU,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC3F,GAAG,CAAC,KAAK,IAAI,IAAA,uBAAY,EAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAA,uBAAY,EAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { GiovFeedbackValue, GiovMessage, GiovRatingBlock, GiovRatingRequest, GiovRatingResult, GiovRatingScore } from "./types";
2
+ import { GiovChatError } from "./errors";
3
+ /** Pure rules for conversation ratings and the thumbs under GiovBot answers (docs/protocol, "Conversation ratings"). */
4
+ export declare const MAX_RATING_COMMENT = 1000;
5
+ export declare const MAX_FEEDBACK_REASON = 300;
6
+ /** A `rating` block from a message; null for any other (or malformed) block. */
7
+ export declare function parseRatingBlock(value: unknown): GiovRatingBlock | null;
8
+ /** The `rating` socket frame: the card changed (answered, changed or replaced). */
9
+ export interface GiovRatingFrame {
10
+ requestId: string;
11
+ messageId?: string;
12
+ closesAt: number;
13
+ score?: GiovRatingScore;
14
+ comment?: string;
15
+ state?: "replaced";
16
+ }
17
+ export declare function parseRatingFrame(value: unknown): GiovRatingFrame | null;
18
+ /** Sets the answer, deadline and state on the card a frame (or an answer) names; other messages stay as they are. */
19
+ export declare function patchRating(messages: GiovMessage[], frame: GiovRatingFrame): GiovMessage[];
20
+ /**
21
+ * One open card per conversation: an older card the visitor never answered is replaced by a newer
22
+ * one (also before the server's own `replaced` mark arrives). Answered cards keep their answer.
23
+ */
24
+ export declare function supersedeRatings(messages: GiovMessage[]): GiovMessage[];
25
+ /** "hidden" (replaced), "open" (can be answered or changed) or "closed" (read-only: the clock reached `closesAt`; the server decides). */
26
+ export declare function ratingPhase(block: Pick<GiovRatingBlock, "closesAt" | "state">, now: number): "hidden" | "open" | "closed";
27
+ /** The card the visitor can answer or change now, or null. */
28
+ export declare function pendingRatingRequest(messages: GiovMessage[], now: number): GiovRatingRequest | null;
29
+ /** A refusal for one card: `closed` makes it read-only now, `replaced` hides it. */
30
+ export declare function markRating(messages: GiovMessage[], requestId: string, kind: "closed" | "replaced", now?: number): GiovMessage[];
31
+ /** What a failed answer means for the card: read-only states, or a message to retry. */
32
+ export declare function ratingFailure(code: string): "closed" | "replaced" | "retry";
33
+ /** What tapping a thumb sends: the same thumb again takes the vote back. */
34
+ export declare const nextFeedback: (current: "up" | "down" | undefined, tapped: "up" | "down") => GiovFeedbackValue;
35
+ export declare function applyFeedback(messages: GiovMessage[], id: string, value: GiovFeedbackValue): GiovMessage[];
36
+ /** Thumbs go under finished GiovBot answers, never under the rating request itself. */
37
+ export declare const canVoteOn: (message: GiovMessage) => boolean;
38
+ /** The documented refusals of the rating and feedback routes, as typed errors. A 404 without a code is a server that lacks the routes. */
39
+ export declare function ratingError(status: number, body: unknown, retryAfter?: string | null): GiovChatError;
40
+ export declare function parseRatingResult(body: unknown, fallbackRequestId?: string): GiovRatingResult | null;
41
+ //# sourceMappingURL=rating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../src/rating.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EACtG,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAqB,MAAM,UAAU,CAAC;AAE5D,wHAAwH;AAExH,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAQvC,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAYvE;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAYvE;AAED,qHAAqH;AACrH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,eAAe,GAAG,WAAW,EAAE,CAiB1F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAWvE;AAED,0IAA0I;AAC1I,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAEzH;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAWnG;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,GAAG,SAAa,GAAG,WAAW,EAAE,CAMnI;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAE3E;AAED,4EAA4E;AAC5E,eAAO,MAAM,YAAY,GAAI,SAAS,IAAI,GAAG,MAAM,GAAG,SAAS,EAAE,QAAQ,IAAI,GAAG,MAAM,KAAG,iBAA2D,CAAC;AAErJ,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,WAAW,EAAE,CAM1G;AAED,uFAAuF;AACvF,eAAO,MAAM,SAAS,GAAI,SAAS,WAAW,KAAG,OACmF,CAAC;AAQrI,0IAA0I;AAC1I,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAUpG;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CASpG"}
package/dist/rating.js ADDED
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canVoteOn = exports.nextFeedback = exports.MAX_FEEDBACK_REASON = exports.MAX_RATING_COMMENT = void 0;
4
+ exports.parseRatingBlock = parseRatingBlock;
5
+ exports.parseRatingFrame = parseRatingFrame;
6
+ exports.patchRating = patchRating;
7
+ exports.supersedeRatings = supersedeRatings;
8
+ exports.ratingPhase = ratingPhase;
9
+ exports.pendingRatingRequest = pendingRatingRequest;
10
+ exports.markRating = markRating;
11
+ exports.ratingFailure = ratingFailure;
12
+ exports.applyFeedback = applyFeedback;
13
+ exports.ratingError = ratingError;
14
+ exports.parseRatingResult = parseRatingResult;
15
+ const errors_1 = require("./errors");
16
+ /** Pure rules for conversation ratings and the thumbs under GiovBot answers (docs/protocol, "Conversation ratings"). */
17
+ exports.MAX_RATING_COMMENT = 1000;
18
+ exports.MAX_FEEDBACK_REASON = 300;
19
+ const obj = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
20
+ const isScore = (value) => typeof value === "number" && Number.isInteger(value) && value >= 1 && value <= 5;
21
+ /** A `rating` block from a message; null for any other (or malformed) block. */
22
+ function parseRatingBlock(value) {
23
+ const b = obj(value);
24
+ if (b.type !== "rating" || typeof b.requestId !== "string" || !b.requestId ||
25
+ typeof b.closesAt !== "number" || !Number.isFinite(b.closesAt))
26
+ return null;
27
+ const score = isScore(b.score) ? b.score : undefined;
28
+ return {
29
+ requestId: b.requestId, closesAt: b.closesAt,
30
+ ...(typeof b.url === "string" && /^https:\/\//i.test(b.url) ? { url: b.url } : {}),
31
+ ...(score ? { score } : {}),
32
+ ...(score && typeof b.comment === "string" && b.comment ? { comment: b.comment } : {}),
33
+ ...(b.state === "replaced" ? { state: "replaced" } : {}),
34
+ };
35
+ }
36
+ function parseRatingFrame(value) {
37
+ const f = obj(value);
38
+ if (f.type !== "rating" || typeof f.requestId !== "string" || !f.requestId ||
39
+ typeof f.closesAt !== "number" || !Number.isFinite(f.closesAt))
40
+ return null;
41
+ const score = isScore(f.score) ? f.score : undefined;
42
+ return {
43
+ requestId: f.requestId, closesAt: f.closesAt,
44
+ ...(typeof f.messageId === "string" && f.messageId ? { messageId: f.messageId } : {}),
45
+ ...(score ? { score } : {}),
46
+ ...(score && typeof f.comment === "string" && f.comment ? { comment: f.comment } : {}),
47
+ ...(f.state === "replaced" ? { state: "replaced" } : {}),
48
+ };
49
+ }
50
+ /** Sets the answer, deadline and state on the card a frame (or an answer) names; other messages stay as they are. */
51
+ function patchRating(messages, frame) {
52
+ let changed = false;
53
+ const next = messages.map((message) => {
54
+ if ((frame.messageId && message.id !== frame.messageId) || message.rating?.requestId !== frame.requestId)
55
+ return message;
56
+ changed = true;
57
+ const { score: _s, comment: _c, state: _t, ...rest } = message.rating;
58
+ return {
59
+ ...message,
60
+ rating: {
61
+ ...rest, closesAt: frame.closesAt,
62
+ ...(frame.score ? { score: frame.score } : {}),
63
+ ...(frame.score && frame.comment ? { comment: frame.comment } : {}),
64
+ ...(frame.state ? { state: frame.state } : message.rating.state ? { state: message.rating.state } : {}),
65
+ },
66
+ };
67
+ });
68
+ return changed ? next : messages;
69
+ }
70
+ /**
71
+ * One open card per conversation: an older card the visitor never answered is replaced by a newer
72
+ * one (also before the server's own `replaced` mark arrives). Answered cards keep their answer.
73
+ */
74
+ function supersedeRatings(messages) {
75
+ let latest = -1;
76
+ messages.forEach((message, index) => { if (message.rating && message.rating.state !== "replaced")
77
+ latest = index; });
78
+ let changed = false;
79
+ const next = messages.map((message, index) => {
80
+ const card = message.rating;
81
+ if (!card || card.state === "replaced" || index === latest || card.score)
82
+ return message;
83
+ changed = true;
84
+ return { ...message, rating: { ...card, state: "replaced" } };
85
+ });
86
+ return changed ? next : messages;
87
+ }
88
+ /** "hidden" (replaced), "open" (can be answered or changed) or "closed" (read-only: the clock reached `closesAt`; the server decides). */
89
+ function ratingPhase(block, now) {
90
+ return block.state === "replaced" ? "hidden" : now < block.closesAt ? "open" : "closed";
91
+ }
92
+ /** The card the visitor can answer or change now, or null. */
93
+ function pendingRatingRequest(messages, now) {
94
+ const cards = supersedeRatings(messages).filter((message) => message.rating && ratingPhase(message.rating, now) === "open");
95
+ const message = cards[cards.length - 1];
96
+ const card = message?.rating;
97
+ if (!message || !card)
98
+ return null;
99
+ return {
100
+ requestId: card.requestId, messageId: message.id, closesAt: card.closesAt, answered: !!card.score,
101
+ ...(card.url ? { url: card.url } : {}),
102
+ ...(card.score ? { score: card.score } : {}),
103
+ ...(card.comment ? { comment: card.comment } : {}),
104
+ };
105
+ }
106
+ /** A refusal for one card: `closed` makes it read-only now, `replaced` hides it. */
107
+ function markRating(messages, requestId, kind, now = Date.now()) {
108
+ return messages.map((message) => {
109
+ const card = message.rating;
110
+ if (!card || card.requestId !== requestId)
111
+ return message;
112
+ return { ...message, rating: kind === "replaced" ? { ...card, state: "replaced" } : { ...card, closesAt: Math.min(card.closesAt, now) } };
113
+ });
114
+ }
115
+ /** What a failed answer means for the card: read-only states, or a message to retry. */
116
+ function ratingFailure(code) {
117
+ return code === "rating_closed" ? "closed" : code === "request_replaced" ? "replaced" : "retry";
118
+ }
119
+ /** What tapping a thumb sends: the same thumb again takes the vote back. */
120
+ const nextFeedback = (current, tapped) => (current === tapped ? "none" : tapped);
121
+ exports.nextFeedback = nextFeedback;
122
+ function applyFeedback(messages, id, value) {
123
+ return messages.map((message) => {
124
+ if (message.id !== id)
125
+ return message;
126
+ const { feedback: _f, ...rest } = message;
127
+ return value === "none" ? rest : { ...rest, feedback: value };
128
+ });
129
+ }
130
+ /** Thumbs go under finished GiovBot answers, never under the rating request itself. */
131
+ const canVoteOn = (message) => message.role === "agent" && message.isBot === true && !message.isStreaming && !message.id.startsWith("stream:") && !message.rating;
132
+ exports.canVoteOn = canVoteOn;
133
+ const CODES = {
134
+ invalid_rating: "invalid_rating", invalid_feedback: "invalid_feedback", request_not_found: "request_not_found",
135
+ message_not_found: "message_not_found", request_replaced: "request_replaced", rating_closed: "rating_closed",
136
+ too_many_changes: "too_many_changes",
137
+ };
138
+ /** The documented refusals of the rating and feedback routes, as typed errors. A 404 without a code is a server that lacks the routes. */
139
+ function ratingError(status, body, retryAfter) {
140
+ const data = obj(body);
141
+ const server = typeof data.error === "string" ? data.error : "";
142
+ const known = CODES[server];
143
+ const wait = (0, errors_1.retryAfterSeconds)(retryAfter);
144
+ if (known)
145
+ return new errors_1.GiovChatError(known, "Rating was refused.", status, wait);
146
+ if (status === 404 || status === 405 || status === 501)
147
+ return new errors_1.GiovChatError("unsupported", "This chat does not take ratings.", status);
148
+ if (status === 401 || status === 403)
149
+ return new errors_1.GiovChatError("invalid_session", "Chat session expired. Please start a new chat.", status);
150
+ if (status === 429)
151
+ return new errors_1.GiovChatError("rate_limited", "Too many requests. Please wait a moment.", status, wait);
152
+ return new errors_1.GiovChatError("server", "Chat is unavailable. Please try again.", status, wait);
153
+ }
154
+ function parseRatingResult(body, fallbackRequestId) {
155
+ const b = obj(body);
156
+ const requestId = typeof b.requestId === "string" ? b.requestId : fallbackRequestId;
157
+ if (!requestId || !isScore(b.score) || typeof b.closesAt !== "number" || !Number.isFinite(b.closesAt))
158
+ return null;
159
+ return {
160
+ requestId, score: b.score, closesAt: b.closesAt,
161
+ ...(typeof b.comment === "string" && b.comment ? { comment: b.comment } : {}),
162
+ ...(typeof b.ratedAt === "number" ? { ratedAt: b.ratedAt } : {}),
163
+ };
164
+ }
165
+ //# sourceMappingURL=rating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rating.js","sourceRoot":"","sources":["../src/rating.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { GiovFeedbackValue, GiovRatingRequest, GiovRatingResult } from "./types";
2
+ /**
3
+ * What `useGiovRating` returns: the rating card the visitor can answer now, and the calls to answer it
4
+ * or to open the built-in rating sheet. Each mounted `GiovChat` publishes its own entry under its tenant key.
5
+ */
6
+ export interface GiovRatingController {
7
+ /** The open rating card (answered or not) or null: nothing to rate right now. */
8
+ request: GiovRatingRequest | null;
9
+ /** False once the server turned out not to take ratings (an older server): hide your own controls. */
10
+ supported: boolean;
11
+ /** Rates the conversation; see `GiovChatHandle.submitRating`. */
12
+ submit(score: number, options?: {
13
+ comment?: string;
14
+ requestId?: string;
15
+ }): Promise<GiovRatingResult>;
16
+ /** Thumbs on a GiovBot answer; see `GiovChatHandle.submitAnswerFeedback`. */
17
+ submitFeedback(messageId: string, value: GiovFeedbackValue, options?: {
18
+ reason?: string;
19
+ }): Promise<void>;
20
+ /** Opens the built-in rating sheet for the open card; false when there is none. */
21
+ show(): boolean;
22
+ }
23
+ export declare function publishRating(owner: symbol, tenantKey: string, value: GiovRatingController): void;
24
+ export declare function forgetRating(owner: symbol): void;
25
+ export declare function readRating(tenantKey?: string): GiovRatingController;
26
+ /**
27
+ * Conversation rating for a host that draws its own prompt (turn the built-in card off with
28
+ * `ratingCard={false}`), or wants a button that opens the built-in sheet. Needs a mounted `GiovChat`.
29
+ *
30
+ * ```tsx
31
+ * const rating = useGiovRating();
32
+ * if (rating.request && !rating.request.answered) return <Button title="Rate us" onPress={rating.show} />;
33
+ * ```
34
+ */
35
+ export declare function useGiovRating(tenantKey?: string): GiovRatingController;
36
+ //# sourceMappingURL=ratingStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ratingStore.d.ts","sourceRoot":"","sources":["../src/ratingStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEtF;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,sGAAsG;IACtG,SAAS,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrG,6EAA6E;IAC7E,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1G,mFAAmF;IACnF,IAAI,IAAI,OAAO,CAAC;CACjB;AASD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAGjG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,oBAAoB,CASnE;AAOD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAEtE"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.publishRating = publishRating;
4
+ exports.forgetRating = forgetRating;
5
+ exports.readRating = readRating;
6
+ exports.useGiovRating = useGiovRating;
7
+ const react_1 = require("react");
8
+ const errors_1 = require("./errors");
9
+ const unavailable = () => Promise.reject(new errors_1.GiovChatError("disconnected", "No chat is mounted."));
10
+ const NONE = { request: null, supported: true, submit: unavailable, submitFeedback: unavailable, show: () => false };
11
+ const entries = new Map();
12
+ const listeners = new Set();
13
+ const notify = () => { for (const listener of listeners) {
14
+ try {
15
+ listener();
16
+ }
17
+ catch { /* Isolated. */ }
18
+ } };
19
+ function publishRating(owner, tenantKey, value) {
20
+ entries.set(owner, { tenantKey, value });
21
+ notify();
22
+ }
23
+ function forgetRating(owner) {
24
+ if (entries.delete(owner))
25
+ notify();
26
+ }
27
+ function readRating(tenantKey) {
28
+ let found = null;
29
+ for (const entry of entries.values()) {
30
+ if (tenantKey && entry.tenantKey !== tenantKey)
31
+ continue;
32
+ // The first mounted chat with a card wins; otherwise the first chat.
33
+ if (entry.value.request)
34
+ return entry.value;
35
+ found ?? (found = entry.value);
36
+ }
37
+ return found ?? NONE;
38
+ }
39
+ function subscribe(listener) {
40
+ listeners.add(listener);
41
+ return () => { listeners.delete(listener); };
42
+ }
43
+ /**
44
+ * Conversation rating for a host that draws its own prompt (turn the built-in card off with
45
+ * `ratingCard={false}`), or wants a button that opens the built-in sheet. Needs a mounted `GiovChat`.
46
+ *
47
+ * ```tsx
48
+ * const rating = useGiovRating();
49
+ * if (rating.request && !rating.request.answered) return <Button title="Rate us" onPress={rating.show} />;
50
+ * ```
51
+ */
52
+ function useGiovRating(tenantKey) {
53
+ return (0, react_1.useSyncExternalStore)(subscribe, () => readRating(tenantKey), () => NONE);
54
+ }
55
+ //# sourceMappingURL=ratingStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ratingStore.js","sourceRoot":"","sources":["../src/ratingStore.ts"],"names":[],"mappings":";;AA4BA,sCAGC;AAED,oCAEC;AAED,gCASC;AAgBD,sCAEC;AAhED,iCAA6C;AAC7C,qCAAyC;AAoBzC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,sBAAa,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;AACnG,MAAM,IAAI,GAAyB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AAE3I,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8D,CAAC;AACtF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;AACxC,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;IAAC,IAAI,CAAC;QAAC,QAAQ,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;AAAC,CAAC,CAAC,CAAC,CAAC;AAE7G,SAAgB,aAAa,CAAC,KAAa,EAAE,SAAiB,EAAE,KAA2B;IACzF,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC;AACX,CAAC;AAED,SAAgB,YAAY,CAAC,KAAa;IACxC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,CAAC;AACtC,CAAC;AAED,SAAgB,UAAU,CAAC,SAAkB;IAC3C,IAAI,KAAK,GAAgC,IAAI,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,IAAI,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,SAAS;QACzD,qEAAqE;QACrE,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC;QAC5C,KAAK,KAAL,KAAK,GAAK,KAAK,CAAC,KAAK,EAAC;IACxB,CAAC;IACD,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,SAAS,SAAS,CAAC,QAAoB;IACrC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,aAAa,CAAC,SAAkB;IAC9C,OAAO,IAAA,4BAAoB,EAAC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAClF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { TextStyle, ViewStyle } from "react-native";
2
+ import type { GiovChatBrandingStyle } from "./brandingStyle";
2
3
  /** Typography and colors only; text sizing and layout remain SDK-controlled. */
3
4
  export type GiovChatTextStyle = Pick<TextStyle, "fontFamily" | "fontWeight" | "fontStyle"> & {
4
5
  color?: string;
@@ -6,7 +7,7 @@ export type GiovChatTextStyle = Pick<TextStyle, "fontFamily" | "fontWeight" | "f
6
7
  export type GiovChatBackgroundStyle = {
7
8
  backgroundColor?: string;
8
9
  };
9
- /** Plain objects only. No arbitrary React Native styles or branding overrides. */
10
+ /** Plain objects only. No arbitrary React Native styles. */
10
11
  export interface GiovChatStyleOverrides {
11
12
  /** Default font family for all customizable text. Load the font in your app. */
12
13
  fontFamily?: string;
@@ -27,10 +28,17 @@ export interface GiovChatStyleOverrides {
27
28
  label?: GiovChatTextStyle;
28
29
  hint?: GiovChatTextStyle;
29
30
  errorText?: GiovChatTextStyle;
31
+ /**
32
+ * The "Powered by GiovChat" footer: font family, text colour, link colour and background. It follows
33
+ * your app, but stays on (only the plan removes it) and keeps 4.5:1 contrast. Layout, size and text are fixed.
34
+ */
35
+ branding?: GiovChatBrandingStyle;
30
36
  }
31
37
  declare const backgroundSlots: readonly ["container", "header", "agentBubble", "visitorBubble", "composer", "button", "form"];
32
38
  declare const textSlots: readonly ["headerTitle", "headerSubtitle", "agentText", "visitorText", "input", "buttonText", "formTitle", "label", "hint", "errorText"];
33
- export type ResolvedWidgetStyles = Record<(typeof backgroundSlots)[number], ViewStyle> & Record<(typeof textSlots)[number], TextStyle>;
39
+ export type ResolvedWidgetStyles = Record<(typeof backgroundSlots)[number], ViewStyle> & Record<(typeof textSlots)[number], TextStyle> & {
40
+ branding: GiovChatBrandingStyle;
41
+ };
34
42
  /** Rebuild every slot from an allowlist, including for untyped JavaScript callers. */
35
43
  export declare function resolveStyleOverrides(value: unknown): ResolvedWidgetStyles;
36
44
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"styleOverrides.d.ts","sourceRoot":"","sources":["../src/styleOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,kFAAkF;AAClF,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,KAAK,CAAC,EAAE,iBAAiB,GAAG,uBAAuB,CAAC;IACpD,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,QAAA,MAAM,eAAe,gGAEX,CAAC;AACX,QAAA,MAAM,SAAS,0IAGL,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,GACpF,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AAYhD,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CA8B1E"}
1
+ {"version":3,"file":"styleOverrides.d.ts","sourceRoot":"","sources":["../src/styleOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,YAAY,GAAG,WAAW,CAAC,GAAG;IAC3F,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IAAE,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,KAAK,CAAC,EAAE,iBAAiB,GAAG,uBAAuB,CAAC;IACpD,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;CAClC;AAED,QAAA,MAAM,eAAe,gGAEX,CAAC;AACX,QAAA,MAAM,SAAS,0IAGL,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,GACpF,MAAM,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG;IAAE,QAAQ,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAYtF,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAqC1E"}
@@ -49,6 +49,15 @@ function resolveStyleOverrides(value) {
49
49
  }
50
50
  result[slot] = style;
51
51
  }
52
+ const footer = record(input.branding);
53
+ const branding = {};
54
+ if (nonEmptyString(input.fontFamily))
55
+ branding.fontFamily = input.fontFamily;
56
+ for (const key of ["fontFamily", "color", "brandColor", "backgroundColor"]) {
57
+ if (nonEmptyString(footer[key]))
58
+ branding[key] = footer[key];
59
+ }
60
+ result.branding = branding;
52
61
  return result;
53
62
  }
54
63
  //# sourceMappingURL=styleOverrides.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styleOverrides.js","sourceRoot":"","sources":["../src/styleOverrides.ts"],"names":[],"mappings":";;AAsDA,sDA8BC;AApDD,MAAM,eAAe,GAAG;IACtB,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;CAC3E,CAAC;AACX,MAAM,SAAS,GAAG;IAChB,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY;IAClF,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW;CACjC,CAAC;AAKX,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAC,KAAgC;QAClC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,sFAAsF;AACtF,SAAgB,qBAAqB,CAAC,KAAc;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,EAA0B,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC;YACnD,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE;YAC7C,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,IAAI,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC;YAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAC1E,IAAI,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5E,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7D,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACnE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACrC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QACjC,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,MAAM;YAC1C,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACvF,KAAK,CAAC,UAAU,GAAG,MAAiC,CAAC;QACvD,CAAC;QACD,IAAI,IAAI,KAAK,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YAC/D,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QACjD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"styleOverrides.js","sourceRoot":"","sources":["../src/styleOverrides.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -103,6 +103,51 @@ export interface GiovMessage {
103
103
  clientMessageId?: string;
104
104
  /** Local only: a GiovBot reply still being written. */
105
105
  isStreaming?: boolean;
106
+ /** The conversation rating card this message carries (team or GiovBot "How did we do?" request). */
107
+ rating?: GiovRatingBlock;
108
+ /** The visitor's own thumb on this GiovBot answer. */
109
+ feedback?: "up" | "down";
110
+ }
111
+ /** A score from 1 (Very bad) to 5 (Great). */
112
+ export type GiovRatingScore = 1 | 2 | 3 | 4 | 5;
113
+ /** The `rating` block of a message (docs/protocol, "Conversation ratings"). */
114
+ export interface GiovRatingBlock {
115
+ requestId: string;
116
+ /** When the card stops accepting answers or changes (epoch ms; the server decides). */
117
+ closesAt: number;
118
+ /** A hosted rating page, when the API sent one. The SDK always answers with the visitor token instead. */
119
+ url?: string;
120
+ score?: GiovRatingScore;
121
+ comment?: string;
122
+ /** `"replaced"`: a newer card took its place; draw nothing. */
123
+ state?: "replaced";
124
+ }
125
+ /** The rating card the visitor can answer or change right now (see `useGiovRating`). */
126
+ export interface GiovRatingRequest {
127
+ requestId: string;
128
+ /** The message that carries the card. */
129
+ messageId: string;
130
+ closesAt: number;
131
+ url?: string;
132
+ /** True once the visitor has answered (the answer can still change until `closesAt`). */
133
+ answered: boolean;
134
+ score?: GiovRatingScore;
135
+ comment?: string;
136
+ }
137
+ /** The server's answer to a rating. */
138
+ export interface GiovRatingResult {
139
+ requestId: string;
140
+ score: GiovRatingScore;
141
+ comment?: string;
142
+ closesAt: number;
143
+ ratedAt?: number;
144
+ }
145
+ /** The visitor's vote on a GiovBot answer. */
146
+ export type GiovFeedbackValue = "up" | "down" | "none";
147
+ export interface GiovAnswerFeedback {
148
+ messageId: string;
149
+ value: GiovFeedbackValue;
150
+ reason?: string;
106
151
  }
107
152
  /** Callback invoked for every incoming message. */
108
153
  export type MessageHandler = (message: GiovMessage) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type GiovPushOptions, type GiovPushPlatform, type GiovPushRegistration
2
2
  import { GiovChatError } from "./errors";
3
3
  import { type OutboxEntry } from "./outbox";
4
4
  import { type GiovAttachment, type GiovChatPickedFile } from "./attachments";
5
- import type { GiovChatConnectionStatus, GiovChatContact, GiovChatSessionStorage, GiovMessage, GiovWidgetConfig, RequestUserInfo } from "./types";
5
+ import type { GiovAnswerFeedback, GiovChatConnectionStatus, GiovChatContact, GiovChatSessionStorage, GiovFeedbackValue, GiovMessage, GiovRatingRequest, GiovRatingResult, GiovWidgetConfig, RequestUserInfo } from "./types";
6
6
  export declare function missingContactFields(fields?: RequestUserInfo, contact?: GiovChatContact): RequestUserInfo;
7
7
  /**
8
8
  * The storage key of a visitor's session: the API, the workspace, the host's `sessionKey` and the
@@ -35,6 +35,12 @@ type Options = {
35
35
  onConnectionStatusChange?: (status: GiovChatConnectionStatus) => void;
36
36
  onConversationStart?: (conversationId: string) => void;
37
37
  onUnreadCountChange?: (count: number) => void;
38
+ /** A rating card the visitor has not answered arrived (live or in the history). Fires once per card. */
39
+ onRatingRequested?: (request: GiovRatingRequest) => void;
40
+ /** The visitor's rating was stored. */
41
+ onRatingSubmitted?: (result: GiovRatingResult) => void;
42
+ /** The visitor's vote on a GiovBot answer was stored. */
43
+ onAnswerFeedback?: (feedback: GiovAnswerFeedback) => void;
38
44
  };
39
45
  /**
40
46
  * `ready`: the chat can be used but no conversation exists yet. Per the visitor protocol a native
@@ -73,6 +79,17 @@ export declare function useChatSession(options: Options): {
73
79
  attachmentUrl: (url: string) => string;
74
80
  registerPushToken: (token: string, platform: GiovPushPlatform, options?: GiovPushOptions) => Promise<GiovPushRegistration>;
75
81
  unregisterPushToken: (token: string) => Promise<boolean>;
82
+ ratingRequest: GiovRatingRequest | null;
83
+ ratingsSupported: boolean;
84
+ submitRating: (score: number, options?: {
85
+ comment?: string;
86
+ requestId?: string;
87
+ }) => Promise<GiovRatingResult>;
88
+ submitAnswerFeedback: (messageId: string, value: GiovFeedbackValue, options?: {
89
+ reason?: string;
90
+ }) => Promise<void>;
91
+ closed: boolean;
92
+ startNew: () => Promise<void>;
76
93
  };
77
94
  export {};
78
95
  //# sourceMappingURL=useChatSession.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useChatSession.d.ts","sourceRoot":"","sources":["../src/useChatSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useChatSession.d.ts","sourceRoot":"","sources":["../src/useChatSession.ts"],"names":[],"mappings":"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"}